📄 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)的应用服务数据单元的一位计数器位,计数器位初始值为0 BYTE 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];}CP56Time2a;typedef union tagCCtrlDomain{ struct _tagCtrlToDev { BYTE FunCode :4;//功能码 FUNTYPE BYTE FCV :1;//帧计数有效位,在FunCode=3、10、11有效 BYTE FCB :1;//帧计数位 BYTE PRM :1;//启动报文, 控制系统-->保护设备时为 1 。 BYTE res :1;//保留位 }; struct _tagCtrlToDev CtrlToDev; //控制系统-->保护设备 BYTE byte; //替换操作数据字节}CCtrlDomain;//控制域typedef union tagDCtrlDomain{ struct _tagDevToCtrl { BYTE FunCode :4;//功能码 FUNTYPE BYTE DFC :1;//数据流控制位 BYTE ACD :1;//要求访问位 BYTE PRM :1;//启动报文, 保护设备-->控制系统时为 0 。 BYTE res :1;//保留位 }; struct _tagDevToCtrl DevToCtrl; //保护设备-->控制系统 BYTE byte; //替换操作数据字节}DCtrlDomain;//控制域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; 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{ CCtrlDomain CCD;//控制域 DCtrlDomain DCD;//控制域 BYTE SendAddress;//链路层地址 BYTE AsduAddress;//ASDU地址 int CpuNo;//CPU号 int FunCode; bool bInit; bool bLinkStatus;//链路状态,正常是TRUE,否则为FALSE bool bLinkBusy;//链路忙}CommParam;//通用分类服务数据集#pragma pack()#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -