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

📄 iec101def.h

📁 详细介绍了arm7-at91r40008,的开发全过程
💻 H
📖 第 1 页 / 共 2 页
字号:
#define	 READCOUNTER	0

#define COUNTERINTERVAL 60    //pre 1m

#define ALLDATAGROUPNUM  16
#define COUNTERGROUPNUM 4

#define TIMEOUT   1
#define TAIL_2      2
#define CRCERROR  3

/*以下链路层相关数据定义*/

/*链路层从动站的运行状态,目前没使用*/
enum	DLSECSTATUS
{
	SECDISABLE =0,	//从动站链路层没复位
	SECENABLE,	//从动站链路层可以使用
	SECDLSTATUS,	//
	SECDLBUSY 	//从动站链路层忙
};


/*链路层启动站的运行状态*/
enum	DLPRISTATUS
{
	PRIDISABLE =0,	//启动站链路层没复位
	PRIWAITSTATUS,	//启动站链路层等待回答链路状态
	PRIWAITRSCON,	//启动站链路层等待复位链路确认
	PRIWAITINITEND,	//主站等待子站初始化结束帧???
	PRIENABLE,	//启动站链路层可以使用
	PRISENDCON,	//启动站链路层等待数据确认
	PRIREQRES,	//启动站链路层等待请求响应
	PRIDLBUSY 	//启动站链路层忙
};

/*链路层的通讯状态统计*/
struct	DLCOMSTATUS
{
	unsigned ADDCheckErr;		//校验和统计
	unsigned TimeOutCount;		//超时次数
	unsigned OtherError;		//其它错误统计
	unsigned SendAPPNum;		//向对方链路发送的应用层包数
	unsigned RecAPPNum;		//接收的应用层包数
	unsigned RecMISIErr;
};

/*发送进程状态记忆*/
enum	DLTXDSTATUS
{
	TXDSEND,	//发送报文第一帧状态
	TXDWAIT		//发送报文第一帧状态
};

/*链路层接收状态*/
enum	DLRXDSTATUS
{
	RXDSTART=0,	//寻找起始标志状态
	RXDHEAD,	//寻找报文头
	RXDCONTINUE 	//接收后续报文
};

/*链路层定义结束*/

/*以下为应用层相关定义*/

#define VSQ_SQ 0x80
#define VSQ_NUM 0x7f
#define COT_REASON 0x3F
#define COT_PONO 0x40
#define COT_TEST 0x80

#define DCO_DCS 0x03
#define DCO_QU  0x7C
#define DCO_SE  0x80

#define SCO_SCS 0x01
#define SCO_QU  0x7C
#define SCO_SE  0x80

#define RCO_DCS 0x03
#define RCO_QU  0x7C
#define RCO_SE  0x80

#define QCC_RQT 0x3F
#define QCC_FRZ 0xC0

//固定帧长结构
#define P101_FUNCODE 0x0F
#define P101_FCV     0x10
#define P101_DFC     0x10
#define P101_FCB     0x20
#define P101_ACD     0x20
#define P101_PRM     0x40
#define P101_DIR     0x80

#define P101_BL 0x10  //是否被封锁
#define P101_SB 0x20  //是否被取代
#define P101_NT 0x40  //是否为当前值
#define P101_IV 0x80  //是否有效

#define SPI 0x01
__packed struct SIQ		//带品质描述的单点信息
{
  	INT8U Siq;
};

#define DPI 0x03
__packed struct DIQ		//带品质描述的双点信息
{
  	INT8U Diq;
};


#define P101_OV 0x01
__packed struct QDS	//品质描述
{
  	INT8U qds;
};

__packed struct BSI
{
  	INT32U	BS32;
};

__packed struct IQ
{
  	INT8U iq;
};

__packed struct BO		//远动终端状态
{
  	struct BSI Bsi;		//32位位串
  	struct IQ  Iq;		//品质描述
};

__packed struct NVA	//模拟量
{
  	short	VALUE;	//值
};

__packed struct NVAF
{
  	short	VALUE	;	 //值
  	struct QDS Qds;
};

__packed struct SCDYX{	//SCD遥信结构
	INT16U	InfoAddr;
	INT16U	ST;
	INT16U	CD;
	INT8U	QDS;
};

#define BCR_SQ 0x1F
#define BCR_CY 0x20
#define BCR_CA 0x40
#define BCR_IV 0x80

__packed struct BCR				//二进制计数器读数
{
  	INT32U	COUNTER;		//值
  	INT8U  BCQ;//顺序记号,0——31不够?应该0——63。
};

__packed struct WATERVAL			//水位
{
  	INT8U VALL;			  //水位低字节
  	INT16U VALH;			  //水位高字
  	struct QDS Qds;
};

__packed struct QRP				//复位进程命令限定词
{
  	INT16U VALUE;			//限定词信息
};


__packed struct SCD				//状态和状态变化检出
{
  	INT16U STEP;			//状态位
  	INT16U CD;			//状态变化检出位
};

//File

#define MAXFILETRANLEN 240

//Command
#define FILE_READINIT   0
#define FILE_READ       1
#define FILE_WRITEINIT  2
#define FILE_WRITE      3
#define FILE_DELETE     4
#define FILE_RENAME     5

//Type
#define TYPE_FILE       0
#define TYPE_DIR        0x80

//Status
#define STA_OK          0
#define STA_END         1
#define STA_INEXIST     2
#define STA_BUSY        3
#define STA_CHECKERR    4
#define STA_ERROR       5

#define QFT_CMD 0x7F
#define QFT_TYP 0x80
__packed struct QFT
{
  	INT8U CAT;
  	INT8U Status;
};

#define SOF_STATUS 0x1F
#define SOF_RES    0x20
#define SOF_FOR    0x40
#define SOF_FA     0x80
__packed struct SOF
{
  	INT8U sof;
};


__packed struct	NOF//文件名称;对应扰动数据的故障序号
{
	INT16U filename;
};

__packed struct	NOS//节名称
{
	INT16U	sectionname;
};

__packed struct	LOF//文件或节的长度;共24位,别扭
{
	INT32U lof24;

};

__packed struct	LOS//段的长度;在234和240之间
{
	INT8U los;
};

__packed struct	FILEUNIT
{
	INT8U  SendFlag;//发送标志,0未发送,ff已经发送
	INT16U  Name;
	INT32U Length;
	INT8U  Status;
	INT16U  InfoAddr;
	struct	IEC101Time_t Time;
};

__packed struct  DIRUNIT
{
	INT16U FileNum;
	INT16U ReadPtr;
	INT16U WritePtr;

	struct FILEUNIT File[48];
};

#define FILELENGTH  (128*9)   //9个周波,每周波64点128字节。
#define LUBOINFOADDR 0x6901
#define LUBOFLAG 0x8000

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -