📄 iec101def.h
字号:
#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 + -