fast/Plugin/Plc/CommDataDef.h
2025-01-20 10:30:01 +08:00

302 lines
6.9 KiB
C

#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 ()