📄 104def.h
字号:
/*------------------------------------------------------------------*/
/*模块名称:104Def.h */
/*模块功能:IEC870-5-104:2000从站 */
/*编写日期:2005年6月 */
/*编写者: dingding */
/*------------------------------------------------------------------*/
#ifndef P101DEF_H
#define P101DEF_H
/*------------------------------------------------------------------*/
/*-------------------------默认参数定义-----------------------------*/
/*------------------------------------------------------------------*/
//应用层特定参数
#undef COTByte
#undef PUBADDRBYTE
#define BROADCASTADDR 0xFFFF
#define INFOADDR3BYTE
//维护软件输入
#define ALLDATATIMER 30 //30分钟一次全数据
#define COUNTERTIMER 60 //60分钟一次电度量
#define CLOCKTIMER 5
#define LIMITTIMER 5
//t2<t1 t3>t1
#define T0 30
#define T1 15 //No Ack CloseTCP
#define T2 5 //Send S
#define T3 30 //Send Test U
/*------------------------------------------------------------------*/
/*-------------------------基本内容定义-----------------------------*/
/*------------------------------------------------------------------*/
#define NEXTFRAME 0x01
#define APDULEN 255
#define ASDULEN 249
#define K 12
#define W 8
//类型标识
#define M_SP_NA 1 //不带时标的单点信息
#define M_SP_TA 2 //带时标的单点信息
#define M_DP_NA 3 //不带时标的双点信息
#define M_DP_TA 4 //带时标的双点信息
#define M_ST_NA 5 //步位置信息
#define M_ST_TA 6 //带时标的步位置信息
#define M_BO_NA 7 //子站远动终端状态
#define M_ME_NA 9 //测量值,规一化值
#define M_ME_TA 10 //带时标的测量值,规一化值
#define M_ME_NB 11 //测量值,标度化值——新标准中,我们目前应使用的类型。替代原来的M_ME_NA
#define M_ME_TB 12 //带时标的测量值,标度化值
#define M_ME_NC 13 //测量值,短浮点数
#define M_ME_TC 14 //带时标测量值,短浮点数
#define M_IT_NA 15 //电能脉冲记数量
#define M_IT_TA 16 //带时标的电能脉冲记数量
#define M_EP_TA 17 //带时标的继电保护或重合闸设备单个事件
#define M_EP_TB 18 //带时标的继电保护装置成组启动事件
#define M_EP_TC 19 //带时标的继电保护装置成组输出电路信息事件
#define M_PS_NA 20 //具有状态变位检出的成组单点信息
#define M_ME_ND 21 //不带品质描述的测量值,规一化值
#define M_SP_TB 30 //带长时标的单点信息
#define M_DP_TB 31 //带长时标的双点信息
#define M_ST_TB 32 //带长时标的步位置信息
#define M_BO_TB 33 //带长时标的32位位串
#define M_ME_TD 34 //带长时标的测量值
#define M_EI_NA 70 //初始化结束
#define M_BD_NA 232 //BCD码值
#define C_SC_NA 45 //单点遥控命令
#define C_DC_NA 46 //双点遥控命令
#define C_RC_NA 47 //升降命令
#define C_SE_NA 48 //设定命令
#define C_BO_NA 51 //32位的位串
#define C_IC_NA 100 //召唤命令
#define C_CI_NA 101 //电能脉冲召唤命令
#define C_RD_NA 102 //读数据命令
#define C_CS_NA 103 //时钟同步命令
#define C_TS_NA 104 //测试命令
#define C_RP_NA 105 //复位进程命令
#define C_CD_NA 106 //延时获得命令
#define P_ME_NA 110 //装载参数命令,规一化值
#define P_ME_NB 111 //装载参数命令,标度化值
#define P_ME_NC 112 //装载参数命令,短浮点数
#define P_AC_NA 113 //激活参数
#define F_FR_NA 120 //文件已准备好
#define F_SR_NA 121 //节已准备好
#define F_SC_NA 122 //召唤目录﹑选择文件﹑召唤文件﹑召唤节
#define F_LS_NA 123 //最后的节﹑最后的段
#define F_AF_NA 124 //确认文件﹑确认节
#define F_SG_NA 125 //段
#define F_DR_NA 126 //目录
#define F_FY_NA 141 //文件传输
#define M_FA_TB 142 //故障处理结果信息
//传送原因:
#define PERCYC 1 //周期/循环
#define BACK 2 //背景扫描
#define SPONT 3 //突发
#define INIT_101 4 //初始化
#define REQ 5 //请求或被请求
#define ACT 6 //激活
#define ACTCON 7 //激活确认
#define DEACT 8 //停止激活
#define DEACTCON 9 //停止激活确认
#define ACTTERM 10 //激活结束
#define RETREM 11 //远程命令引起的返送信息
#define RETLOC 12 //当地命令引起的返送信息
#define FILE_101 13 //文件传送
#define INTROGEN 20 //响应总召唤
#define INTRO1 21 //响应第1组召唤
#define INTRO2 22 //响应第2组召唤
#define INTRO3 23 //响应第3组召唤
#define INTRO4 24 //响应第4组召唤
#define INTRO5 25 //响应第5组召唤
#define INTRO6 26 //响应第6组召唤
#define INTRO7 27 //响应第7组召唤
#define INTRO8 28 //响应第8组召唤
#define INTRO9 29 //响应第9组召唤
#define INTRO10 30 //响应第10组召唤
#define INTRO11 31 //响应第11组召唤
#define INTRO12 32 //响应第12组召唤
#define INTRO13 33 //响应第13组召唤
#define INTRO14 34 //响应第14组召唤
#define INTRO15 35 //响应第15组召唤
#define INTRO16 36 //响应第16组召唤
#define REQCOGCN 37 //响应计数量总召唤
#define REQCO1 38 //响应第1组计数量召唤
#define REQCO2 39 //响应第2组计数量召唤
#define REQCO3 40 //响应第3组计数量召唤
#define REQCO4 41 //响应第4组计数量召唤
#define UNKNOWNTYPEID 44 //未知的类型标识
#define UNKNOWNCOT 45 //未知的传送原因
#define UNKNOWNPUBADDR 46 //未知的应用服务数据单元公共地址
#define UNKNOWNTINFOADDR 47 //未知的信息对象地址
//信息体地址
#define LBI 0x01
#define HBI 0x1000
#define LAI 0x4001
#define HAI 0x5000
#define LBO 0x6001
#define HBO 0x6200
#define LBCR 0x6401
#define HBCR 0x6600
#define LSPI 0x6601
#define HSPI 0x6700
#define LBCD 0x6701
#define HBCD 0x6800
#define RTUSTATUS 0x6801
//链路层接收状态
enum DLRXDSTATUS
{
RXDSTART=0, //寻找起始标志状态
RXDHEAD, //寻找报文头
RXDCONTINUE //接收后续报文
};
/*------------------------------------------------------------------*/
/*-------------------------通讯操作定义-----------------------------*/
/*------------------------------------------------------------------*/
//链路层始发站命令定义
#define DLRESETRDL 0 //复位远方链路
#define DLRESETUSE 1 //复位用户过程
#define DLTESTDL 2 //测试链路功能
#define DLSENDCON 3 //发送确认命令
#define DLSENDNOCON 4 //发送不确认命令
#define DLREQACD 8 //请求响应确定访问状态
#define DLREQSTATUS 9 //召唤链路状态
#define DLREQDATA1 10 //召唤1级用户数据
#define DLREQDATA2 11 //召唤2级用户数据
#define MAINTSWITCH 12 //切换到维护规约
//链路层从动站命令定义
#define DLCON 0 //确认
#define DLBUSYCON 1 //确认链路忙未接收报文
#define DLRESDATA 8 //以数据响应请求帧
#define DLNODATA 9 //无所召唤的数据
#define DLSTATUSOK 11 //响应链路状态或回答请求帧
#define DLNOWORK 14 //链路未工作
#define DLNOFIN 15 //链路未完成
//链路层到应用层的命令(WORD)DLCommand内容
#define DL_CALLDATA 1 //I数据针
#define DL_APPCON 2 //S确认针
#define DL_WORK 3
#define DL_NOWORK 4
//应用层到链路层的命令(WORD)AppCommand
#define APP_APPCON 0 //应用层对收到的数据做应答
#define APP_RESETUSE 1 //复位用户进程
#define APP_TESTDLINK 2 //测试链路
#define APP_SENDCON 3 //发送03命令
#define APP_SENDNOCON 4 //发送04命令
#define APP_NODATA 5 //应用层无数据,子站非平衡
#define APP_SENDDATA 8 //发送08命令
#define APP_REQSTATUS 9 //询问链路状态
#define APP_CALLDATA1 10 //请求一级数据
#define APP_CALLDATA2 11 //请求二级数据
#define APP_ALLDEVNOUSE 12 //应用层所有设备不可用
#define APP_NOJOB 13 //应用层无任务//主站平衡模式有效
#define APP_APPDIABALE 14 //应用层无效
#define APP_HAVEDATA1 0x8000 //该位置1说明应用层有一级数据,否则为0;子站非平衡、平衡模式总召唤、对钟
#define QRPRESET 1 //进程总复位
#define QRPSOEIND 2 //复位事件缓冲区等待处理的带时标的信息
#define QRPCOLD 128 //冷复位
/*------------------------------------------------------------------*/
/*-------------------------基本结构定义-----------------------------*/
/*------------------------------------------------------------------*/
__packed struct PASDUHead
{
INT8U TypeID;
INT8U VSQ;
#ifdef COTByte
INT8U COT;
#else
INT16U COT;
#endif
#ifdef PUBADDRBYTE
INT8U PubAddr;
#else
INT16U PubAddr;
#endif
#ifdef INFOADDR3BYTE
INT16U InfoAddr;
INT8U InfoAddrHigh;
#else
INT16U InfoAddr;
#endif
};
//其它结构定义
//控制域
#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_SQ 0x80
#define P101_VSQ 0x7F
//传送原因
#define P101_REASON 0x3F
#define P101_PN 0x40
#define P101_TEST 0x80
//信息元素
#define P101_BL 0x10 //是否被封锁
#define P101_SB 0x20 //是否被取代
#define P101_NT 0x40 //是否为当前值
#define P101_IV 0x80 //是否有效
#define SPI 0x01 //带品质描述的单点信息
#define DPI 0x03 //带品质描述的双点信息
#define VTI_VALUE 0x7F //带瞬变状态指示的值
#define VTI_T 0x80
#define P101_OV 0x01 //品质描述
#define BCR_SQ 0x1F //二进制计数器读数
#define BCR_CY 0x20
#define BCR_CA 0x40
#define BCR_IV 0x80
//遥控命令限定词
#define DCO_DCS 0x03
#define DCO_QU 0x7C
#define DCO_SE 0x80
__packed struct PASDU
{
struct PASDUHead Head;
INT8U Data[ASDULEN-sizeof(struct PASDUHead)];
};
__packed struct SOECP24Time{ //短时标SOE结构
INT16U No;
INT8U Status;
INT16U Msecond;
INT8U Minute;
};
__packed struct SCDYX{ //SCD遥信结构
INT16U ST;
INT16U CD;
INT8U QDS;
};
struct AppMsg{
INT16U Cmd;
INT16U ConNum;
INT8U* pData;
INT16U Len;
};
/*------------------------------------------------------------------*/
/*-------------------------通讯操作定义-----------------------------*/
/*------------------------------------------------------------------*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -