123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #if !defined(_INCLUDE_HEAD_H)
- #define _INCLUDE_HEAD_H
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include <afxtempl.h>
- // 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)
|