📄 9311pad.h
字号:
/*------------------------------------------------------------------*/
/*模块名称:9311prot.h */
/*模块功能:维护软件输入的各种规约面板格式 */
/*编写日期:2005年2月 */
/*编写者: dingding */
/*------------------------------------------------------------------*/
#ifndef DF9311PAD_H
#define DF9311PAD_H
//端口规约属性
#define DNPSEC 1
#define DNPPRI 2
#define CDTSEC 3
#define CDTPRI 4
#define CDT85SEC 5
#define CDT85PRI 6
#define SC1801SEC 7
#define SC1801PRI 8
#define MB88SEC 9
#define IEC101_1997SEC 10
#define IEC101_1997PRI 11
#define IEC101_2002SEC 12
#define IEC101_2002PRI 13
#define IEC870_5_103SEC 14
#define DLT645PRI 15
#define DF9200CELL 16
#define MAINTSEC 17
#define COMTESTPRI 18
#define COMTESTSEC 19
#define NRWLSEC 20
#define NRWLPRI 21
#define IEC104DRAFTSEC 22
#define IEC104DRAFTPRI 23
#define XZJCQ 24
#define MODBUSPRI 25
#define MODBUSSEC 26
#define XT9702SEC 27
#define XT9702PRI 28
#define SIEMENS101SEC 29
#define SIEMENS101PRI 30
#define NET2COM 31
#define GPS 32
#define JBUSPRI 33
#define JBUSSEC 34
#define IEC104SEC 38
#define IEC104PRI 39
//基本属性定义
#define BALANCE 0x0001 //平衡式
#define YKPERMIT 0x01
#define SETSECTIME 0x02
#define ALLDATAPROC 0x04
#define COUNTERPROC 0x08
#define BROADCASTTIME 0x10
//规约面板基本结构
__packed struct PadTimer_t{
INT16U AllData; //召唤全数据间隔 (主站方),单位:分(minute)
//发送全数据间隔 (从站方)
INT16U SetClock; //对钟间隔(主站方),单位:分(minute)
INT16U Counter; //召唤电度间隔(主站方),单位:分(minute)
//发送电度间隔(从站方)
INT16U CtrlTimeOut; //控制命令超时等待时间修正值(主站方) 单位:100ms //103
INT16U ScanData2; //二级数据扫描间隔(从站方),单位:秒(Second)
INT16U ActSendCollWaitTime; //主动上报冲突等待时间 单位:100ms
INT16U TimeoutValue1; //超时值1, unit: 10ms
};
__packed struct ProtocolPadBase_t{
INT16U DriverID;
INT16U CmdControl; /*D0=1:遥控允许 //103
D1=1:对钟允许 //103
D2=1:定时召唤全数据(主站方) //103
定时发送全数据(从站方)
D3=1:定时召唤电度(主站方)
定时发送电度(从站方)
D4=1:广播对钟
D5~D15 保留*/
INT16U ProtocolControl; //D0=1平衡式
//D1=1主动上报允许
//dnppri: D2=1: 遥控预置执行之间不插报文
//D2~D15 保留
INT16U MaxALLen; //应用层报文最大长度
INT16U MaxDLLen; //链路层报文最大长度
INT8U RetryCount; //链路层报文重发次数
INT8U MaxErrCount;//最大错误次数,写通讯中断事项
INT16U CtrlResultReqCount; //控制操作结果询问次数
INT16U ActSendRetryCount; //主动上报重试次数
INT16U AIDeadValue;//遥测死区值 单位:千分比
struct PadTimer_t Timer;
INT16U Rsv[12];
};
/*------------------------------------------------------------------*/
/*-------------------------------DNP--------------------------------*/
/*------------------------------------------------------------------*/
__packed struct PPriDnpPad{
struct ProtocolPadBase_t PBase;
INT16U Rsv[20];
};
enum DNPOBJ{nothing=0, Diand,Changyx,Changyc,Changdata,Yxandyc,duishi,Soe,Faudata,FauandCos};
__packed struct PSecDnpPad
{
struct ProtocolPadBase_t PBase;
INT32U Class1Data;//1类数据的组态
INT32U Class2Data;//2类数据的组态
INT32U Class3Data;//3类数据的组态
INT16U Rsv[20];
};
/*------------------------------------------------------------------*/
/*----------------------------101-1997------------------------------*/
/*------------------------------------------------------------------*/
__packed struct PPri101Pad{
struct ProtocolPadBase_t PBase;
INT16U Control;/*D0: IEC标准
D1: 召唤或发送电度时带复位
D2: 公共地址使用站地址
D3: 使用快速校验过程
D4: 使用标准时钟格式
//D5可以扩展为长时标标志位。1为长时标。
//增加:D6:"对钟使用广播命令"选中为1
*/
INT16U PubAddr;
INT16U Rsv[20];
};
__packed struct Type101{
INT8U TSP; //单点遥信的类型标志
INT8U TDP; //双点遥信的类型标志
INT8U TAI; //遥测的类型标志
INT8U TCO; //电度的类型标志
};
__packed struct PSec101Pad{
struct ProtocolPadBase_t PBase;
INT16U Control; /*D0: IEC标准
D1: 召唤或发送电度时带复位
D2: 公共地址使用站地址
D3: CDT方式有效
D4: 使用标准时钟格式
*/
INT16U PubAddrBase; //自定义的公共地址基址,<=255; 若D2=1, 则无效填0
INT16U CdtModeTime; //cdt时间;unit:minute
struct Type101 Type; //类型标志
INT16U Rsv[20];
};
__packed struct MeterAddr
{
INT8U ADDR[6];
INT32U UserName; //设备ID号
};
#define USESTANDARDCLOCKFORMAT 0x10 //使用标准时钟格式
/*------------------------------------------------------------------*/
/*----------------------------101-2002------------------------------*/
/*------------------------------------------------------------------*/
__packed struct PSec101_2002Pad{
struct ProtocolPadBase_t PBase;
INT16U Control; /*D0: IEC标准
D1: 召唤或发送电度时带复位
D2: 公共地址使用站地址
D3: CDT方式有效
D4: 使用标准时钟格式
*/
INT16U PubAddrBase; //自定义的公共地址基址,<=255; 若D2=1, 则无效填0
INT16U CdtModeTime; //cdt时间;unit:minute
struct Type101 Type; //类型标志
unsigned short LINKAddrSize;//缺省为2
unsigned short COTSize;//缺省为1
unsigned short PUBAddrSize;//缺省为2
unsigned short INFOAddrSize;//缺省为2
INT16U Rsv[16];
INT16U BackScanTime; //背景数据扫描间隔(分);缺省20
INT16U CycScanTime; //周期循环数据扫描间隔(秒);缺省20
INT8U TypeID[20]; //1--16组的类型标识;0到7缺省为20;8到11缺省为11;12为0;13为11;14为5;其他为0
INT16U GroupNum[20]; //每组信息数量;缺省为512。
unsigned short HistoryDDTime;
};
#define MAXMETERNUM 10
__packed struct PPri645Pad
{
INT16U ProtocolId;
INT16U CmdControl; /*D0=1:对钟允许 D1=1:定时召唤全数据 D2=1:定时召唤电度D3=1:广播对钟
D4~D15 保留*/
INT16U AllData; //召唤全数据间隔 单位:分(minute)
INT16U SetClock; //对钟间隔 单位:分(minute)
INT16U Counter; //召唤电度间隔 单位:分(minute)
INT16U DelayVal; //超时值 单位:10ms
INT16U Reserve[6];
INT16U MeterCount;
struct MeterAddr AddrList[MAXMETERNUM];
};
/*------------------------------------------------------------------*/
/*----------------------------104-2002------------------------------*/
/*------------------------------------------------------------------*/
__packed struct PPri104Pad{
struct ProtocolPadBase_t PBase;
INT16U Control; /*D0=1召唤或发送电度时带复位
D2~D15 保留*/
INT8U TickValue[4]; //s
INT16U Rsv[20];
};
__packed struct Type104
{
INT8U TSP; //单点遥信的类型标识
INT8U TDP; //双点遥信的类型标识
INT8U TAI; //遥测的类型标识
INT8U TCO; //电度量的类型标识
};
__packed struct PSec104Pad{
struct ProtocolPadBase_t PBase;
INT16U Control; /*D0=1召唤或发送电度时带复位 D1: 使用标准时钟格式*/
INT8U TickValue[4]; //s
struct Type104 Type; //类型标识
INT16U Rsv[20];
};
#define USESTANDARDCLOCKFORMAT104 0x02 //使用标准时钟格式
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -