#if !defined(_INCLUDE_HEAD_H) #define _INCLUDE_HEAD_H #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include // Modbus Ascii 设备Dll错误代码定义 enum __ERRO_CODE_MODBUS_ASC { ERR_CODE_MODBUS_TCP_NET_FAULT =20401 , // Modbus TCP设备通信故障 ERR_CODE_MODBUS_TCP_NET_BUSY , // Modbus TCP设备通信忙 ERR_CODE_MODBUS_TCP_NET_READ_NO_DATA , // Modbus TCP设备没有读到数据 ERR_CODE_MODBUS_TCP_NET_READ_LEN_OVER , // Modbus TCP设备读到数据长度超时限制 ERR_CODE_MODBUS_TCP_NET_LRC_LOST , // Modbus TCP设备lrc校验失败 EER_CODE_MODBUS_TCP_NET_WRITE_DATA , // Modbus TCP设备写错误 EER_CODE_MODBUS_TCP_NET_REGNUM , // Modbus TCP设备寄存器数 }; //错误应答代码 enum __ERR_CODE_RES { ERR_CODE_TCP_REGADDR = 0x0081, //寄存器地址错误(无效的寄存器地址) ERR_CODE_TCP_INVALIDFUNCODE = 0x0082, //无效的功能码 ERR_CODE_TCP_REGNOREAD = 0x0083, //寄存器不可读 ERR_CODE_TCP_REGNOWRITE = 0x0084, //寄存器不可写 }; #pragma pack(push) //保存对齐状态 #pragma pack(1) //设定为4字节对齐 typedef struct tagPORTPARAM { BYTE PortNo; //Com端口 DWORD BaudRate; //波特率 BYTE ByteSize; /* Number of bits/byte, 4-8 */ BYTE Parity; /* 校验位 0-4=None,Odd,Even,Mark,Space */ BYTE StopBits; /* 结束位 0,1,2 = 1, 1.5, 2 */ BYTE StartAddr; //起止地址 int Interval; //间隔时间 tagPORTPARAM() { PortNo=3; BaudRate=CBR_9600; ByteSize=8; Parity=NOPARITY; StopBits=ONESTOPBIT; StartAddr=1; Interval=1000; } }PORTPARAM,*PPORTPARAM; //协议头: typedef struct __HEADER { WORD TranProcessID; // 事务处理标识 2字节 WORD ProtocolID; // 协议标识 2字节(0标识MODBUS协议) WORD ByteNum; // 后面字节数 2字节 BYTE EquipAddr; // 单元标识,即从设备地址 1字节,内容为0-0xff BYTE FuncCode; // 功能码 1字节,内容为3 }HEADER, *PHEADER; //读从设备寄存器数据 typedef struct __REQUESTPARAM { HEADER Header; // 协议头 WORD StartAddr; // 起始寄存器地址 WORD RegNum; // 寄存器个数 }REQUESTPARAM, *pREQUESTPARAM; //从站应答,操作正常时报文 typedef struct __RESPONSE_STRUCT { HEADER Header; //协议头 BYTE DataLen; //数据长度 BYTE StrRtnMsg[80]; //数据 //int iVarlid; int nReadResult; //读数据结果 }RESPONSE_STRUCT, *PRESPONSE_STRUCT; //从站应答, 操作异常时报文 typedef struct __FAILRESPONSE { HEADER Header; BYTE DataLen; // 数据长度 1字节,内容为2,高字节在前 WORD ErrorCode; // 错误代码 0x0081 寄存器地址错误(无效的寄存器地址) // 0x0082 无效的功能码 // 0x0083 寄存器不可读 // 0x0084 寄存器不可写 }FAILRESPONSE, *PFAILRESPONSE; //写从设备寄存器数据 typedef struct __REQUESTWRPARAM { HEADER Header; WORD StartAddr; //起止地址 WORD RegNum; //寄存器个数 BYTE DataLen; //数据长度 WORD RegValue; //数据,寄存器个数×2字节,每个数据高字节在前 int nWriteResult; //读数据结果 }REQUESTWRPARAM, *pREQUESTWRPARAM; typedef struct __WRITESUCCESSRESPONSE { HEADER Header; WORD StartAddr; //寄存器起始地址 WORD RegNum; //寄存器个数 }WRITESUCCESSRESPONSE, *PWRITESUCCESSRESPONSE; //设置的通讯协议基本参数 typedef struct __SETBASEPARAM { int nAddr;//地址码 int nStartAddr;//起始地址 int nRegNum;//读取的寄存器个数 BYTE FuncCode;//功能码 }SETBASEPARAM, *pSETBASEPARAM; #pragma pack(pop)//恢复对齐状态 #define IS_USE_EVENT 0 #endif //!defined(_INCLUDE_HEAD_H)