📄 103struct.h
字号:
////////////////103Struct.h////////////////////#ifndef STRUCT103_H#define STRUCT103_H#include "mytype.h"#pragma pack(1)typedef union tag103NDE{ struct {BYTE No : 6;//UI[1~6]<1~63>:数目BYTE Count : 1;/*BS1[7]<0~1>:具有相同的通用分类标识序号(RII)和相同的通用分类标识序号(GIN)的应用服务数据单元 通用分类标识的一位计数器位,计数器位初始值为0*/BYTE Cont : 1;/*BS1[8]<0~1>:0:后面未跟随具有相同的返回标志符(RII)和相同的通用分类标识序号(GIN)的应用服务数据单元。 1:后面跟随具有相同的返回标志符(RII)和相同的通用分类标识序号(GIN)的应用服务数据单元。*/ } nde; BYTE byte;}NDE;//描述元素的数目(NDG):CP8{数目(No),计数器位(Count),后继位(Cont)}typedef union tag103NGD{ struct tagngd {BYTE No : 6;//UI[1~6]<1~63>:数目BYTE Count : 1;//BS1[7]<0~1>:具有相同的通用分类标识序号(RII)的应用服务数据单元的一位计数器位,计数器位初始值为0BYTE Cont : 1;/*BS1[8]<0~1>:0:后面未跟随具有相同的返回标志符(RII)的应用服务数据单元。 1:后面跟随具有相同的返回标志符(RII)的应用服务数据单元。*/ }; tagngd ngd; BYTE byte;}NGD;//通用分类数据集数目(NGD):CP8{数目(No),计数器位(Count),后续状态位(Cont)}typedef union tag103GDD{ struct taggdd {// P22 7.2.6.32 BYTE DataType; //数据类型(DATATYPE) BYTE DataSize; //数据宽度(DATASIZE)BYTE Number : 7; //数目(NUMBER)BYTE Cont : 1; //后续状态位(CONT) }; taggdd gdd; BYTE byte[3];}GDD;//通用分类数据描述(GDD):CP24{数据类型(DATATYPE),数据宽度(DATASIZE),数目(NUMBER),后续状态位(CONT)}typedef union tagCP32TIME{ struct tagTime { WORD Milliseconds; BYTE Minutes;BYTE Hours : 5;BYTE Weeks : 3; }; tagTime Time; BYTE byte[4];}CP32Time2a;typedef union tagCP56TIME{ struct tagDataTime { WORD Milliseconds; BYTE Minutes;BYTE Hours : 5;BYTE Weeks : 3;BYTE DaysOfMonth : 5;BYTE DaysOfWeek : 3;BYTE Months : 4;BYTE res3 : 4;BYTE Years : 7;BYTE res4 : 1; } Time; BYTE byte[7]; bool operator==(const tagCP56TIME& rhs)const { for(int i=0;i<7;i++) { if(byte[i]!=rhs.byte[i]) { return false; } } return true; } bool operator!=(const tagCP56TIME& rhs)const { return *this==rhs?false:true; }}CP56Time2a;typedef union tagVSQ{ struct _tagVSQ {BYTE num : 7;//数目BYTE sq : 1;//0:寻址一个信息体内的顺序的信息元素,1:寻址单个信息元素或综合信息元素 } vsq; BYTE byte;}VSQ;//可变结构限定词typedef union tagDPI{ struct _tagDPI {BYTE dpi : 2;//1:开(OFF),2:合(ON)BYTE res : 6; } dpi; BYTE byte;}DPI;//双点信息(P18,7.2.6.5节)typedef struct tagGIN{ BYTE GROUP;//组号 BYTE ENTRY;//条目}GIN;//通用分类标识序号-7.2.6.31typedef union tagMEA{ struct _tagMEA {WORD OV : 1;//溢出位:0无溢出,1溢出WORD ER : 1;//差错位:0被测值(MVAL)有效,1无效WORD res : 1;//未用WORD MVAL : 13;//被测值 } mea; WORD word;}MEA;typedef union tagSOF{ struct _tagSOF {BYTE TP : 1;//0:被记录的故障未跳闸,1:被记录的故障跳闸BYTE TM : 1;//0:扰动数据等待传输,1:扰动数据正在传输BYTE TEST : 1;//0:在正常操作时被记录的扰动数据,1:在测试模式下被记录的扰动数据BYTE OTEV : 1;//0:由启动/检出故障触发被记录的扰动数据,1:由其他事件触发被记录的扰动数据BYTE RES : 4;//未用 } sof; BYTE byte;}SOF;//故障的状态(SOF)(P20,7.2.6.24)typedef union tagSwitchData{ struct { WORD TAP; //标志的位置 BYTE FUN; //功能类型 BYTE INF; //信息序号 BYTE DPI; //在7.2.5.2中定义 } data; BYTE byte[5];}SwitchData;//带标志的状态变位,参见ASDU29(带标志的状态变位传输)typedef struct tagChannelData{ BYTE ACC; //实际通道序号 WORD* NDV; //每个应用服务数据单元有关扰动值的数目 WORD* NFE; //应用服务数据单元的第一个信息元素的序号 WORD* SDV; //单个扰动值}ChannelData;//通道数据,参见ASDU27(被记录的通道传输准备就绪),ASDU30(传输扰动值)typedef struct tagDistrubDataTable{ BYTE addr; BYTE acc; WORD FAN; //故障序号 WORD NOF; //电网故障序号 BYTE SOF; //故障状态 CP56Time2a Cp56Time;//故障时间}DistrubDataTable;//扰动数据表的信息typedef struct tagACCInfo{ BYTE ACC; //实际通道号 float RPV; //一次额定值 float RSV; //二次额定值 float RFA; //参比因子}ACCInfo;//通道信息,参见ASDU27(被记录的通道传输准备就绪)typedef struct tagDataSet{ GIN gin; BYTE kod; GDD gdd; CByteArray gid;}DataSet;//通用分类服务数据集typedef struct tagCommParam{ BYTE AsduAddress;//ASDU地址 int CpuNo;//CPU号 int FunCode; bool bInit; char szLastWaveTime[20];}CommParam;//通用分类服务数据集typedef struct tagCmdParam{ BYTE type; BYTE cot; BYTE addr; BYTE fun; BYTE inf; BYTE too; BYTE tov; BYTE acc; WORD fanno; BYTE num;//DataSet个数}CmdParam;//通用分类服务数据集#pragma pack()#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -