| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- #ifndef IEC104TYPES_H
- #define IEC104TYPES_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #pragma pack(push, 1)
- enum class FixAreaCommandType{
- FixAreaCommandType_Preset = 0,
- FixAreaCommandType_Execut = 1,
- FixAreaCommandType_Revoke = 2
- };
- typedef struct {
- unsigned char start;
- unsigned char len;
- unsigned char field1;
- unsigned char field2;
- unsigned char field3;
- unsigned char field4;
- } APCI;
- typedef struct {
- unsigned char type;
- unsigned char qual;
- unsigned char tx_cause_1;
- unsigned char tx_cause_2;
- unsigned char commom_asdu_1;
- unsigned char commom_asdu_2;
- } ASDU_header;
- typedef struct {
- ASDU_header header;
- unsigned char data[243];
- } ASDU;
- typedef struct {
- APCI apci;
- ASDU asdu;
- } APDU;
- typedef struct {
- unsigned char spi : 1;
- unsigned char rs1 : 1;
- unsigned char rs2 : 1;
- unsigned char rs3 : 1;
- unsigned char bl : 1;
- unsigned char sb : 1;
- unsigned char nt : 1;
- unsigned char iv : 1;
- } SIQ104;
- typedef struct {
- unsigned char ov : 1;
- unsigned char rs1 : 1;
- unsigned char rs2 : 1;
- unsigned char rs3 : 1;
- unsigned char bl : 1;
- unsigned char sb : 1;
- unsigned char nt : 1;
- unsigned char iv : 1;
- } QDS104;
- typedef struct {
- unsigned char addr0;
- unsigned char addr1;
- unsigned char addr2;
- SIQ104 siq;
- } SP104;
- typedef struct {
- unsigned char addr0;
- unsigned char addr1;
- unsigned char addr2;
- SIQ104 siq;
- unsigned char time[7];
- } SP104_T;
- typedef struct {
- unsigned char addr0;
- unsigned char addr1;
- unsigned char addr2;
- unsigned char val[4];
- QDS104 qds;
- } SFP104;
- typedef struct {
- unsigned char addr0;
- unsigned char addr1;
- unsigned char addr2;
- unsigned char val[4];
- QDS104 qds;
- unsigned char time[7];
- } SFP104_T;
- typedef struct {
- ASDU_header addr0;
- unsigned char addr1;
- } ER104;
- typedef struct {
- ASDU_header head;
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char eqpmtadder1; // 装置地址
- unsigned char eqpmtadder2;
- unsigned char addr1; //信息序号
- unsigned char addr2;
- unsigned char dpvalue; // 双点信息
- unsigned char dsTime1; // 相对时间
- unsigned char dsTime2;
- unsigned char erid1; //故障序号
- unsigned char erid2;
- unsigned char time[7];
- unsigned char num;
- } ER140_Head;
- typedef struct {
- unsigned char Num1;
- unsigned char Num2;
- unsigned char ERType;
- //unsigned char value[];
- } ER140_Data;
- typedef struct {
- ASDU_header head;
- unsigned char msgadder1;
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char eqpmtadder1;
- unsigned char eqpmtadder2;
- unsigned char addr1;
- unsigned char addr2;
- unsigned char evetnum;
- unsigned char time[7];
- unsigned char ernum;
- } ER142_Head;
- typedef struct {
- unsigned char Num1;
- unsigned char Num2;
- unsigned char ERType;
- //unsigned char value[];
- } ER142_Data;
- typedef struct {
- ASDU_header head;
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char eqpmtadder1; //装置地址
- unsigned char eqpmtadder2;
- unsigned char addr1; //故障序号
- unsigned char addr2;
- unsigned char ngd;//大数量
- } ER143_Head;
- typedef struct {
- unsigned char nTime[2];
- unsigned char nNumber;
- //unsigned char value[];
- } ER143_SData;
- typedef struct {
- unsigned char nTime[4];
- unsigned char nNumber;
- //unsigned char value[];
- } ER143_LData;
- typedef struct {
- unsigned char Num1;
- unsigned char Num2;
- unsigned char ERType;
- //unsigned char value[];
- } ER143_Data;
- enum FixValueType
- {
- GetFixAll=241, //召唤定值/返回
- SetFixValue=249, //修改定制预制/返回
- RunFixValue=250, //修改定值执行
- CancelFixValue=251, //撤销修改
- };
- //定值基础包
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char eqpmtadder1; //装置地址
- unsigned char eqpmtadder2;
- unsigned char msgID; //信息序号
- unsigned char rii; //返回标示
- unsigned char NGD; //通用分类数据集数目
- //unsigned char value[];
- } P_EP_145;
- //定值数据
- typedef struct {
- unsigned char GIN; //信息对象地址
- unsigned char GINnum;
- unsigned char KOD; //描述类别(KOD) = 0
- unsigned char FixValueType; //定值类型
- unsigned char FixValueSize; //定值大小
- unsigned char FixValueNo; //定值序号
- //unsigned char value[];值数据
- } P_145_Area;
- // 文件传输类型标识
- enum FileTransferType {
- F_FR_NA_1 = 120, // 文件准备就绪
- F_SR_NA_1 = 121, // 节准备就绪
- F_SC_NA_1 = 122, // 召唤目录,选择文件,召唤文件,召唤节
- F_LS_NA_1 = 123, // 最后的节,最后的段
- F_AF_NA_1 = 124, // 认可文件,认可段
- F_SG_NA_1 = 125, // 段
- F_DR_NA_1 = 126 // 目录
- };
- // 文件传输限定词
- enum FileTransferQualifier {
- FTRQ_SelectFile = 1, // 选择文件
- FTRQ_RequestFile = 2, // 请求文件
- FTRQ_SelectSection = 3, // 选择节
- FTRQ_RequestSection = 4, // 请求节
- FTRQ_Directory = 5, // 目录
- FTRQ_LastSection = 6, // 最后的节
- FTRQ_AckFile = 7, // 认可文件
- FTRQ_AckSection = 8 // 认可段
- };
- enum SCQFile{
- SCQ_Null=0, //<0>:=缺省
- SCQ_SelectFile=1, //<1>:=选择文件
- SCQ_RequestFile=2, //<2>:=请求文件
- SCQ_StopSelect=3, //<3>:=停止激活文件
- SCQ_DeleteFile=4, //<4>:=删除文件
- SCQ_SelectSection=5, //<5>:=选择节
- SCQ_RequesSection=6, //<6>:=请求节
- SCQ_StopSection=7, //<7>:=停止激活节
- };
- // 文件传输状态
- enum FileTransferStatus {
- FTS_Success = 0, // 成功
- FTS_InvalidName = 1, // 无效的文件名
- FTS_NotReady = 2, // 文件未准备好
- FTS_ChecksumError = 3, // 校验和错误
- FTS_UnexpectedSection = 4, // 意外的节
- FTS_NoSuchFile = 5, // 文件不存在
- FTS_AccessDenied = 6 // 访问被拒绝
- };
- // 文件准备就绪 (F_FR_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名(NOF)1
- unsigned char name2; // 文件名(NOF)2
- unsigned char length1; // 文件名长度(LOF)
- unsigned char length2; // 文件名长度(LOF)
- unsigned char length3; // 文件名长度(LOF)
- unsigned char ready_status; // 准备状态FRQ限定词
- } FileReady;
- // 节准备就绪 (F_SR_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名(NOF)1
- unsigned char name2; // 文件名(NOF)2
- unsigned char section_name; // 节名字(NOS)
- unsigned char length1; // 节长度(LOF)
- unsigned char length2; // 节长度(LOF)
- unsigned char length3; // 节长度(LOF)
- unsigned char ready_status; // 准备状态SRQ限定词
- } SectionReady;
- // 文件召唤/选择 (F_SC_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名(NOF)1
- unsigned char name2; // 文件名(NOF)2
- unsigned char section_name; // 节名NOS
- unsigned char qualifier; // 限定词
- } FileCall;
- // 最后的节/段 (F_LS_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名1
- unsigned char name2; // 文件名2
- unsigned char section_name; // 节名
- unsigned char last_section; // 最后的节 //限定词
- unsigned char checksum; // 校验和
- } LastSection;
- // 认可文件/段 (F_AF_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名1
- unsigned char name2; // 文件名2
- unsigned char section_name; // 节名
- unsigned char ack_status; // 认可状态
- } FileAck;
- // 段 (F_SG_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名1
- unsigned char name2; // 文件名2
- unsigned char section_name; // 节名
- unsigned char segment_len; // 段长度
- unsigned char segment_data[240]; // 段数据
- } FileSegment;
- // 目录 (F_DR_NA_1)
- typedef struct {
- unsigned char msgadder1; //信息对象地址
- unsigned char msgadder2;
- unsigned char msgadder3;
- unsigned char name1; // 文件名1
- unsigned char name2; // 文件名2
- unsigned char file_size1; // 文件大小1
- unsigned char file_size2; // 文件大小2
- unsigned char file_size3; // 文件大小3
- unsigned char file_Status; // 文件状态
- } FileDirectory;
- // 双点信息品质描述词
- typedef struct {
- unsigned char dpi : 2; // 双点信息值 (0,1,2,3)
- unsigned char res1 : 1; // 保留位
- unsigned char bl : 1; // 封锁
- unsigned char sb : 1; // 取代
- unsigned char res2 : 1; // 保留位
- unsigned char iv : 1; // 无效
- } DIQ104;
- // 双点信息(不带时标)
- typedef struct {
- unsigned char addr0; // 地址低字节
- unsigned char addr1; // 地址中字节
- unsigned char addr2; // 地址高字节
- DIQ104 diq; // 双点信息品质描述词
- } DP104;
- // 带时标的标度化测量值
- typedef struct {
- unsigned char addr0; // 地址低字节
- unsigned char addr1; // 地址中字节
- unsigned char addr2; // 地址高字节
- unsigned char value_low; // 标度化值低字节
- unsigned char value_high; // 标度化值高字节
- QDS104 qds; // 品质描述词
- unsigned char time[7]; // CP56Time2a时标
- } ScaledValueWithTime;
- #pragma pack(pop)
- #ifdef __cplusplus
- }
- #endif
- #endif // IEC104TYPES_H
|