⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9311pad.h

📁 详细介绍了arm7-at91r40008,的开发全过程
💻 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 + -