#pragma once #pragma pack (1) //自定义消息 #define WM_THREAD_RECV WM_USER + 1000 #define WM_SERTHREAD_RECV WM_USER + 2000 #define WP_WPARA_RECV 1001 #define WP_WPARA_CLOSE 1002 //socket关闭 #define WP_WPARA_THREAD_QUIT 1005 //线程关闭 #define WP_WPARA_SERVER_RECV 2001 #define WP_WPARA_SERVER_CLOSE 2002 //socket关闭 #define WP_WPARA_SERTHREAD_QUIT 2005 //线程关闭 //寄存器总个数 #define DUSTDEV_REGNUM 14 //采集寄存器的总个数 //采集数据 typedef struct __dustDevPara{ double fDCVolt; double fDCCurr; double fPSVolt; double fPSCurr; WORD wPsFreq; double fEnvTempr; double fEnvHumity; double fDcIgbtTemp; double fPulseIgbtTemp; __dustDevPara(){ fDCVolt =0.0; fDCCurr =0.0; fPSVolt =0.0; fPSCurr =0.0; wPsFreq =0; fEnvTempr =0.0; fEnvHumity =0.0; fDcIgbtTemp =0.0; fPulseIgbtTemp =0.0; } }ST_DUSTDEV_WOORKPARA; //Modbus功能码枚举值 typedef enum __enumFuncCode{ EN_MODBUS_READ_SINGLECOIL =0x01, //读线圈 EN_MODBUS_READ_PERSISREG =0x03, //读寄存器 EN_MODBUS_WRITE_SINGLECOIL =0x05, //写单个线圈 EN_MODBUS_WRITE_SINGLEREG =0x06, //写单个寄存器 EN_MODBUS_WRITE_MULTIREG =0x10, EN_MODBUS_READ_SINGLECOIL_RSPERR =0x81, EN_MODBUS_READ_PERSISREG_RSPERR =0x83, EN_MODBUS_WRITE_SINGLECOIL_RSPERR =0x85, EN_MODBUS_WRITE_SINGLEREG_RSPERR =0x86, EN_MODBUS_WRITE_MULTIREG_RSPERR =0x90 }EN_NUM_MODBUS_FUNCCODE; //寄存器枚举值(*10表示寄存器的值为实际值得倍数) typedef enum __enumRegAddr{ EN_REGADDR_DCVOLTH =0x0000, //直流电压高 EN_REGADDR_DCVOLTL =0x0001, //直流电压低 EN_REGADDR_DCCURR =0x0002, //直流电流 *10.0 EN_REGADDR_PULSEVOLTH =0x0003, //脉冲电压高 EN_REGADDR_PULSEVOLTL =0x0004, //脉冲电压低 EN_REGADDR_PULSECURR =0x0005, //脉冲电流 *10.0 EN_REGADDR_PULSEFREQ =0x0006, //脉冲频率 *10.0 EN_REGADDR_ENVTEMP =0x0007, //环境温度 *10.0 EN_REGADDR_ENVHUMITY =0x0008, //环境湿度 *10.0 EN_REGADDR_SUPPLYVOLT =0x0009, //市电电压 *10.0 EN_REGADDR_SUPPLYCURR =0x000A, //市电电流 *10.0 EN_REGADDR_ACTODCVOLT =0x000B, //直流部分交流整流后的直流电压 *10.0 EN_REGADDR_DCIGBTTEMP =0x000C, //直流部分IGBT工作温度 *10.0 EN_REGADDR_PULSEIGBTTEMP=0x000D //脉冲部分IGBT工作温度 *10.0 }EN_NUM_REGADDR; //MBAP报文头 typedef struct __modbusMbapHeader{ WORD wTransFlag; WORD wProtocolFlag; WORD wLen; BYTE bUnitFlag; __modbusMbapHeader(){ wTransFlag =0; wProtocolFlag =0; wLen =0; bUnitFlag =0; } }ST_MODBUS_MBAP_HEADER; //发送请求读单个线圈/多个寄存器报文---Cient端 typedef struct __clientRqtReadFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; WORD wStartAddr; WORD wRegNum; __clientRqtReadFrame() { bFuncConde =0x0; wStartAddr =0; wRegNum =0; } }ST_MODBUS_CLIENT_RQTREAD_FRAME; //发送写单个线圈报文---Cient端 typedef struct __clientRqtWrtCoilFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; WORD wAddr; WORD wOutVal; __clientRqtWrtCoilFrame() { bFuncConde =0x05; wAddr =0; wOutVal =0; } }ST_MODBUS_CLIENT_RQTWRTCOIL_FRAME; //发送写单个寄存器报文 typedef struct __serverRqtWrtRegFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; WORD wAddr; WORD wOutVal; __serverRqtWrtRegFrame() { bFuncConde =0x06; wAddr =0; wOutVal =0; } }ST_MODBUS_SERVER_RQTWRTREG_FRAME; //发送写多个寄存器报文---Cient端 typedef struct __clientRqtWrtMultiRegFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; WORD wStartAddr; WORD wRegNum; BYTE bLen; BYTE bRegVal[255]; __clientRqtWrtMultiRegFrame() { bFuncConde =0x10; wStartAddr =0; wRegNum =0; bLen =0; memset(bRegVal,0,255); } }ST_MODBUS_CLIENT_RQTWRTMULTIREG_FRAME; //响应读单个线圈/多个保持寄存器报文--Server 端 typedef struct __serveRspReadFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; BYTE bLen; BYTE bRtnData[255]; }ST_MODBUS_SERVER_RSPREAD_FRAME; //响应写单个线圈/多个保持寄存器报文--Server 端 typedef struct __serveRspWrtFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; WORD wStartAddr; WORD wRegNum; }ST_MODBUS_SERVER_RSPWRT_FRAME; //错误响应帧 typedef struct __serverRspErrFrame{ ST_MODBUS_MBAP_HEADER stMbapHeader; BYTE bFuncConde; BYTE bErrCode; }ST_MODBUS_SERVER_RSPERR_FRAME; ////=========================================================================================================== //------------以下定义与PC通信相关 //命令码枚举 typedef enum __enumpcCommFuncCode{ EN_PCCOMM_TRANSDATA =0x51, //HMI--->PC EN_PCCOMM_WORKPARASET =0x52, //PC---->HMI EN_PCCOMM_SAMPLEPARASET =0x53, //PC---->HMI EN_PCCOMM_DEVSTARTSTOP =0x54, //PC---->HMI EN_PCCOMM_HISTORYDATARQT =0x55, //PC---->HMI EN_PCCOMM_TRANSDATA_RSP =0x61, //PC---->HMI EN_PCCOMM_WORKPARASET_RSP =0x62, //HMI--->PC EN_PCCOMM_SAMPLEPARASET_RSP =0x63, //HMI--->PC EN_PCCOMM_DEVSTARTSTOP_RSP =0x64 //HMI--->PC }EN_NUM_PCCOMM_FUNCCODE; //采集数据结构体 typedef struct __devSampleData{ int iDevID; DWORD dwIPAddr; WORD wPulseFreq; float fDcVolt; float fDcCurr; float fPulseVolt; float fPulseCurr; float fEnvTemprature; float fEnvHumidity; float fSupplyVolt; float fSupplyCurr; float fRectiferDC; float fDcIgbtTemp; float fPsIgbtTemp; BYTE bSampleTime[6]; __devSampleData(){ iDevID =0; dwIPAddr =0; wPulseFreq =0; fDcVolt =0; fDcCurr =0; fPulseVolt =0; fPulseCurr =0; fEnvHumidity=0; fEnvTemprature =0; fSupplyVolt =0; fSupplyCurr =0; fRectiferDC =0; fDcIgbtTemp =0; fPsIgbtTemp =0; memset(bSampleTime,0,6); } }ST_DEVSAMPLE_DATA; //工作参数 typedef struct __devWorkParaFromPC{ int iDevID; DWORD dwIPAddr; WORD wPulseFreq; float fDcVolt; float fDcCurr; float fPulseVolt; float fPulseCurr; char szDevName[32]; char szDevIPAddr[32]; __devWorkParaFromPC(){ iDevID =0; dwIPAddr =0; wPulseFreq =0; fDcVolt =0; fDcCurr =0; fPulseVolt =0; fPulseCurr =0; szDevName[0] ='\0'; szDevIPAddr[0] ='\0'; } __devWorkParaFromPC& operator=(const __devWorkParaFromPC &rhs) { this->iDevID = rhs.iDevID; this->dwIPAddr = rhs.dwIPAddr; this->wPulseFreq= rhs.wPulseFreq; this->fDcVolt = rhs.fDcVolt; this->fDcCurr = rhs.fDcCurr; this->fPulseVolt= rhs.fPulseVolt; this->fPulseCurr= rhs.fPulseCurr; strcpy(this->szDevName,rhs.szDevName); strcpy(this->szDevIPAddr,rhs.szDevIPAddr); return (*this); } }ST_DEVWORKPARA_FROMPC,*PST_DEVWORKPARA_FROMPC; //采集参数 typedef struct __devSampleParaFromPC{ WORD wSampleIntver; BYTE bIsSavePcOnline; __devSampleParaFromPC(){ wSampleIntver =0; bIsSavePcOnline =0; } }ST_SAMPLEPARA_FROMPC; //设备启停 typedef struct __devStartStopFromPC{ int iDevID; DWORD dwIPAddr; BYTE bIsStart; __devStartStopFromPC(){ iDevID =0; dwIPAddr =0; bIsStart =0; } }ST_DEVSTARTSTOP_FROMPC; //历史数据请求 typedef struct __historyRqtFromPC{ int iDevID; DWORD dwIPAddr; BYTE bStartTime[6]; BYTE bStopTime[6]; __historyRqtFromPC(){ iDevID =0; dwIPAddr =0; memset(bStartTime,0,6); memset(bStopTime,0,6); } }ST_HISTORYRQT_FROMPC; #pragma pack ()