📄 define.h
字号:
#ifndef __DEFINE__H
#define __DEFINE__H
//////////////////////////////////////////////////////////////////
// 系统容量定义
#define MAX_CHANNEL_NUM 64
#define MAX_RTU_NUM 64
#define TX_BUF_LEN 1024
#define REC_BUF_LEN 4096
#define RTU_MAX_YC_NUM 256
#define RTU_MAX_YX_NUM 512
#define RTU_MAX_YXW_NUM 32
#define RTU_MAX_SOE_NUM 1024
#define RTU_MAX_KWH_NUM 128
#define RTU_MAX_WATER_NUM 6
#define RTU_MAX_CDT_INFOWORD_NUM 100
#define MAX_EVENT_NUM 1024
#define EVENT_LEN 16
#define NET_RECBUF_LEN 1024
#define NET_TRANBUF_LEN 1024
#define NET_RECBUF_NUM 10
#define NET_TRANBUF_NUM 1
#define DATAGRAM_LEN 512
////////////////////网络命令类型定义/////////////////////////////////
#define REGISTER 0
#define SST 1
#define YXDRF 2
#define YCDRF 3
#define WTRDRF 4
#define FRQDRF 5
#define SOE 6
#define KWHDRF 7
#define YK 8
#define YT 9
#define FERTPARA 10
#define CALLPARA 11
#define SYSSTATE 12
#define SENDRTUPARA 13
#define RTUSTATE 14
#define ATB 15
#define SETCLK 16
#define SETIN 17
#define SETPRTIME 18
#define PRTABLE 19
#define COPYSCREEN 20
#define YXS 21
#define PDATP 23
#define MODID 24
#define CANCEL 25
#define SENDPARA 26
#define FRESHTIME 27
#define LINEREPAIR 28
#define MODQXDATA 29
#define MODSAVEYCDATA 30
#define MODSAVEKWHDATA 31
#define PLREPLACE 32
#define RTULOCK 33
#define SENDNETEVENT 34
#define SENDSYSPARA 35
#define FERTYXPARA 36
#define CHANNELPARA 37
#define ZFYCPARA 38
#define ZFYXPARA 39
#define ZFKWHPARA 40
#define COMMSTATE 41
#define RET 43
#define SENDZFYC 48
#define SENDZFYX 49
#define SENDZFKWH 50
//////////////////////////////
typedef struct
{
SYSTEMTIME SoeTime;
//sc-1801
BYTE CaoNo;
BYTE ZuNo;
BYTE ChangeFlag;//6点
BYTE YxValue;//6点
//CDT
WORD YxNo;
BYTE YxState;
}RtuSoeData;
class RTU
{
public:
char ModifyFlag; //修改标志
BYTE Flag; //使用标志
//bit0:0.未使用 1.使用
//bit1.1.封锁
BYTE Attr; //D0=0--YC BCD
// 1--YC BINARY
//D1=0--KWH BCD
// 1--KWH BINARY
BYTE RtuChNo; //RTU对应的通道
WORD YcNum; //YC
WORD YxNum; //YX
WORD KwhNum; //KWH
BYTE Addr;
char Name[20]; //RTU名字
BYTE SynWord[7];//byte0: 0 select 1 custom , byte01-06 SynWord;(CDT)
BYTE Protocol;
BYTE RTUStatus;//bit6: err(1)/true(0)
DWORD RTU_CDTStatus;
//专门用于转发RTU
RtuSoeData SoeEvent[64];
BYTE SoePtr;
BYTE SoeSendPtr;
//
float Water[RTU_MAX_WATER_NUM];//水位
float Freq[2];
float YcBase[RTU_MAX_YC_NUM];//zf use
float YcValue[RTU_MAX_YC_NUM];// Modify WORD to float on 2000.3.6
float YcValueOld[RTU_MAX_YC_NUM];//ZF USE
BYTE YcChangeFlag[RTU_MAX_YC_NUM];//zf use
BYTE YxValue[RTU_MAX_YX_NUM];
BYTE YxValueOld[RTU_MAX_YX_NUM];//ZF USE
BYTE YxChangeFlag[RTU_MAX_YX_NUM];//zf use
DWORD KwhValue[RTU_MAX_KWH_NUM];
WORD YxwNum;//
BYTE FreqNum; // //FREQUENCE
BYTE WaterNum; // //WATER LEVEL
WORD OtherNum;
int SoeNum;
BYTE SoeOnYxFlag;//0 否 1 是
bool bReceiveCanDisp;//接收可显示
bool bSendCanDisp; //发送可显示
BYTE ReSendTimeFlag;//重发时间到
BYTE AnswerWaitTime;//等待回答命令时间(s)
bool bWorking;//是否在工作
bool bFault;//是否故障
char TimeForbit;//RTU走时不准
WORD RecFullYx;//是否收到YX全数据;
BYTE NoDataTime;//无数据时间(s)
DWORD FaultTime;//故障时间(s)
DWORD ErrFrameSum; //累计BCH校验错误次数
DWORD RecFrameSum; //累计收到的帧数
DWORD ErrFrameSumOld; //累计BCH校验错误次数
DWORD RecFrameSumOld; //累计收到的帧数
float ErrRate[25];//24-当前误码率;0-23整点时计算的本小时内误码率
BYTE RecBuf[REC_BUF_LEN];
BYTE TXBuf[TX_BUF_LEN];
int RecBufPtr;
int TXBufPtr;
int RecLen;
int TXLen;
int RecSum;
int TXSum;
BYTE WaitTime;
BYTE DeadArea;
BYTE ProtocolStamp[10];//0:YCStart,1:YXStart,2:KWHStart,3:符号位,4:数值进制 5:高低交换
//6:补码遥测,7: 变位中断,8:SOE对象号在后 9:规约号
bool CommandSendFlag[0x100];//是否需要发 下标为命令码
BYTE CurSendFrameType;//当前发送帧类别
BYTE RRC[16];
SYSTEMTIME CDT_CallUpSysTime;//(CDT)
SYSTEMTIME CDT_CurTime;//(CDT)
DWORD CDT_ChildTime;//(CDT)
BYTE CDT_SOEInfo[6];//(CDT DCF-5)SOE连续保留 SOE 的对象号 与 合分(byte 9-10)
bool IsWait;//是否命令发送后等待数据 (SC1801)
bool bRet;
};
class CHANNEL
{
public:
bool bWorking;
// BOOL ModifyFlag; //修改标志
BYTE Flag; //使用标志
BYTE SorA; //同步.异步
BYTE Baud; //波特率
BYTE WorkType; //工作方式 0前置机 1旁听 2 RTU 3通道误码测试
BYTE EndBit; //停止位
BYTE ParityBit; //奇偶性
BYTE CheckBit; //校验位
BYTE DataBit; //数据位
WORD SynWord; //同步字
BYTE ChRtuNo[8]; //通道对应的RTU号
BYTE ChRtuNum; //通道对应的RTU个数
BYTE Protocol; //通道规约 0 CDT91 1 SC1801 2 CDT85 3 CDT85-1 4 转发CDT91 5 转发SC1801....
WORD ChStatus; //通道状态
//bit15---搜索同步字标志
//bit14---接收一帧标志
//bit13---第一个信息字标志
//bit12---主站有遥控命令标志
//bit3---连续同步字次数超限
//bit2---连续字符无效次数超限
//bit1---连续BCH校验错计数超限
//bit0---通道使用
// WORD ErrBchNum; //连续BCH校验错误次数
WORD SynstrCount; //连续同步字次数
BYTE ReviseTimeFlag;//bit0=1:要全数据 BIT1=1:脉冲值清零
BYTE FileHead[6];
char CurSendRtuNo; //SC1801 Fu Lu
BYTE MoxaReadBuffer[REC_BUF_LEN];//从MOXA卡中读入数据的缓冲区
WORD MoxaStart;
WORD MoxaEnd;
WORD MoxaShowStart;
//以下变量为通道测试专用
time_t StartTime;
time_t EndTime;
BYTE OnTest;// 0 no 1 yes
ULONG GroupCount;
ULONG CodeCount;
ULONG ErrGroupCount;
ULONG ErrCodeCount;
ULONG Err0CodeNum;
ULONG Err1CodeNum;
long TestId;
BYTE TestData[15];
HANDLE hFile;
bool bReInit;
};
typedef struct
{
HANDLE g_hThreadCDTProtocolProcess;
HANDLE g_EventEndCDTProtocolProcess;
HANDLE g_hThreadUdpRX;
HANDLE g_hEndEventUdpRX;
HANDLE g_hThreadUdpRXProc;
HANDLE g_hEndEventUdpRXProc;
HANDLE g_hThreadNetSendFrame;
HANDLE g_hEndEventNetSendFrame;
HANDLE g_hThreadNetSendFlag;
HANDLE g_hEndEventNetSendFlag;
HANDLE g_hThreadEventPro;
HANDLE g_hEndEventPro;
HANDLE g_hThreadGpsPro;
HANDLE g_hEndEventGpsPro;
HANDLE g_hThreadChannelPro;
HANDLE g_hEndEventChannelPro;
HANDLE g_hThreadMoxaReadProc;
HANDLE g_hEndEventMoxaReadProc;
HANDLE g_hThreadMnRtuProc;
HANDLE g_hEndEventMnRtuProc;
DWORD dwThreadID[10];
// bool CDT_ReviseTimeFlag;//校正时钟时间是否到(CDT)
}RecSendThread;
class FERTEVENT
{
public:
BYTE cause;
BYTE type;
BYTE rtuno;
WORD yxno;
BYTE state;
// BYTE reserved[5];
WORD year;
BYTE month;
BYTE day;
BYTE hour;
BYTE minute;
BYTE seconds;
BYTE hundms;
BYTE ms;
BYTE Recday;
BYTE Rechour;
BYTE Recminute;
BYTE Recseconds;
BYTE Rechundms;
BYTE Recms;
};
class EVENT
{
public:
WORD EventNum;
WORD EventSendNum;
FERTEVENT EventBuf[MAX_EVENT_NUM];
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -