/************************************************************************************ * * Copyright (C) 2004-2005 SCADA Control Technology Co., Ltd. * All rights reserved. * * 文件名称:buban103.h * 文件标识:部颁103规约 * 摘 要:103规约的处理的结构、宏还有函数定义 * * 当前版本:1.0 * 作 者:aaawen * 完成日期:2005/04/22 * * 取代版本:1.0 * 原作者 : * 完成日期: * * 说 明:数据定义规则 * u8 --- BYTE(usigned char) * ch --- char * w --- WORD(u_short, usigned short) * sh --- short * b --- BOOL(bool) * i --- int * l --- long * u32 --- u_32 * ui --- unsigned int(u_int) * ul --- unsigned long(u_long) * f --- float * db --- double * c --- class * s --- struct * sta --- static * g --- 全局变量 * Array --- 数组 * a --- 数组 * m_ --- 数据成员 * p --- 指针 * str --- 字符串 * 全部大写 --- 常量 * 首字节必须大写--- 类名称,结构,函数 **************************************************************************************/ // buban103.h: interface for the buban103 class. // ////////////////////////////////////////////////////////////////////// #if !defined(_BUBAN103_H_200504221547__INCLUDED_) #define _BUBAN103_H_200504221547__INCLUDED_ #ifdef OS_LINUX #include "baohulib/common.h" #else #include "common.h" #endif ////////////////////////////////////////////////////////////////////////// // 宏定义 // // WEN 2001.03.09 // ////////////////////////////////////////////////////////////////////////// /*! \brief 保护信息转发返回码 */ #define RII_PROV_ID 0xFF /*! \brief 遥测量起始点号 */ #define INF_AI_START 92 /*! \brief 遥测量数量 */ #define INF_AI_NUM 57 /*! \brief 遥信量起始点号 */ #define INF_DI_START 149 /*! \brief 遥信量数量 */ #define INF_DI_NUM 89 /*! \brief 电度量起始点号 */ #define INF_PI_START 6 /*! \brief 电度量数量 */ #define INF_PI_NUM 26 /*! \brief 遥控点起始点号 */ #define INF_YK_START 48 /*! \brief 遥控点数量 */ #define INF_YK_NUM 28 /*! \brief 遥调点起始点号 */ #define INF_YT_START 48 /*! \brief 遥调点数量 */ #define INF_YT_NUM 28 /*! \brief 每个装置配置的最大组号 */ #define GROUPNUM 16 /*! \brief 文件名称长度 */ #define FILENAME_LEN 256 /*! \brief 装置模拟量最大组数 */ #define DEV_AI_MAXNUM 7 /*! \brief 字符串最大长度 */ #define MAXSTRINGLEN 64 /*! \brief 定时召唤命令最大数目 */ #define BUBAN103_TIMER_CMD_NUM 5 // 应用服务数据单元ASDU的常量定义 // 监视方向的类型标识 #define M_TM_TA_3 1 //带时标的报文 #define M_TMR_TA_3 2 //具有相对时间的带时标的报文 #define M_MEI_NA_3 3 //被测值I #define M_TME_TA_3 4 //具有相对时间的带时标的被测值 #define M_IRC_NA_3 5 //标识 #define M_SYN_TA_3 6 //时间同步 #define M_TGI_NA_3 8 //总查询(总召唤)终止 #define M_MEII_NA_3 9 //被测值II #define M_GD_NTA_3 10 //通用分类数据 #define M_GI_NTA_3 11 //通用分类标识 #define M_LRD_TA_3 23 //被记录的扰动表 #define M_RTD_TA_3 26 //扰动数据传输准备就绪 #define M_RTC_NA_3 27 //被记录的通道传输准备就绪 #define M_RTT_NA_3 28 //带标志的状态变位传输准备就绪 #define M_TOT_TA_3 29 //传送带标志的状态变位 #define M_TOV_NA_3 30 //传送扰动值 #define M_EOT_TA_3 31 //传送结束 #define M_MEIII_TA_3 32 //带时标的被测值Ⅲ #define M_MEIV_TA_3 33 //带时标的被测值Ⅳ #define M_MEV_TA_3 34 //带时标的被测值Ⅴ #define M_MEVI_TA_3 35 //带时标的被测值Ⅵ #define M_MEVII_NA_3 50 //被测值Ⅶ #define M_IT_NA_3 36 //电能脉冲计数值 #define M_IT_TA_3 37 //带时标的电能脉冲计数值 #define M_ST_NA_3 38 //步位置信息 #define M_ST_TA_3 39 //带时标的步位置信息 #define M_SP_NA_3 40 //单点状态信息 #define M_SP_TA_3 41 //带时标的单点状态信息 #define M_DP_NA_3 42 //双点状态信息 #define M_DP_TA_3 43 //带时标的双点状态信息 #define M_SS_NA_3 44 //单点状态和状态变位检出 #define M_SS_TA_3 45 //带时标的单点状态和状态变位检出 #define M_DS_NA_3 46 //双点状态和状态变位检出 #define M_DS_TA_3 47 //带时标的双点状态和状态变位检出 #define M_WL_TA_3 48 //水位 #define M_DC_NA_3 64 //控制断路器命令 #define M_RC_NA_3 65 //升降命令 #define M_SE_NA_3 66 //设定命令 #define M_CC_NA_3 67 //控制命令 #define M_EX_PI_3 205 //电度命令(SIEMENS公司) // 控制方向的类型标识 #define C_SYN_TA_3 6 //时间同步 #define C_TGI_NA_3 7 //总查询(总召唤) #define C_GD_NA_3 10 //通用分类数据 #define C_GRC_NA_3 20 //一般命令 #define C_GC_NA_3 21 //通用分类命令 #define C_ODT_NA_3 24 //扰动数据传输的命令 #define C_ADT_NA_3 25 //扰动数据传输的认可 #define C_DC_NA_3 64 //控制断路器命令 #define C_RC_NA_3 65 //升降命令 #define C_SE_NA_3 66 //设定命令 #define C_CC_NA_3 67 //控制命令 #define C_CI_NA_3 88 //电能脉冲计数召唤命令 // 链路规约数据单元LDPU的常量定义 // 监视方向的控制域功能码 #define M_CON_NA_3 0 //确认帧 #define M_BY_NA_3 1 //忙帧(确认帧) #define M_DATA_NA_3 8 //以数据响应请求帧 #define M_NV_NA_3 9 //无所要求的数据帧回答 #define M_LKR_NA_3_1 11 //链路状态响应帧--链路工作正常 #define M_LKR_NA_3_2 14 //链路状态响应帧--链路服务未工作 #define M_LKR_NA_3_3 15 //链路状态响应帧--链路服务未实现 // 控制方向的控制功能码 #define C_RFB_NA_3 7 //复位帧计数 #define C_RCU_NA_3 0 //复位通讯单元 #define C_PL1_NA_3 10 //召唤一级用户数据 #define C_PL2_NA_3 11 //召唤二级用户数据 #define C_RLK_NA_3 9 //请求链路状态 #define C_SD1_NA_3 3 //传送数据(发送/确认帧) #define C_SD2_NA_3 4 //传送数据(发送/无回答帧) // 功能类型 #define FUNC_DISTANCEPROTECT 128 // 距离保护 #define FUNC_OVERCURRENTPROTECT 160 // 过流保护 #define FUNC_TRANSFORMERPROTECT 176 // 变压器差动保护 #define FUNC_LINEPROTECT 192 // 线路差动保护 #define FUNC_GENERALSORT 254 // 通用分类功能 #define FUNC_GLOBAL 255 // 全局功能类型 // 命令类型 #define ORDER_FAULTSELECT 1 // 故障的选择 #define ORDER_REQUESTDATA 2 // 请求扰动数据 #define ORDER_STOPDATA 3 // 终止扰动数据 #define ORDER_REQUESTSTATUSWITHFLAG 16 // 请求带标志的状态变位 #define ORDER_STOPSTATUSWITHFLAG 17 // 终止带标志的状态变位 #define ORDER_REQUESTRECORDTABLE 24 // 请求被记录的扰动表 // 在监视方向的通用分类功能的信息序号 #define M_INF_READGROUPTITLE 240 // 读组标题 #define M_INF_READGROUPALLITEMS 241 // 读一个组的全部条目的值或属性 #define M_INF_READDIROFSINGLEITEM 243 // 读单个条目的目录 #define M_INF_READATTROFISNGLEITEM 244 // 读单个条目的值或属性 #define M_INF_STOPQUERYGENERAL 245 // 对通用分类数据总查询中止 #define M_INF_WRITEITEMWITHACK 249 // 带确认的写条目 #define M_INF_WRITEITEMWITHEXEC 250 // 带执行的写条目 #define M_INF_WRITEITEMWITHSTOP 251 // 带终止的写条目 // 在控制方向的通用分类功能的信息序号 #define C_INF_READGROUPTITLE 240 // 读组标题 #define C_INF_READGROUPALLITEMS 241 // 读一个组的全部条目的值或属性 #define C_INF_READDIROFSINGLEITEM 243 // 读单个条目的目录 #define C_INF_READATTROFISNGLEITEM 244 // 读单个条目的值或属性 #define C_INF_QUERYGENERAL 245 // 对通用分类数据总查询 #define C_INF_WRITEITEM 248 // 写条目 #define C_INF_WRITEITEMWITHACK 249 // 带确认的写条目 #define C_INF_WRITEITEMWITHEXEC 250 // 带执行的写条目 #define C_INF_STOPWRITEITEM 251 // 写条目终止 // 信息组号 #define GROUP_SYSTEM0 0x00 // 系统类(所有保护及自动装置的系统参数及功能、定值区切换) #define GROUP_SYSTEM1 0x01 // 系统类 #define GROUP_FIXVALUE0 0x02 // 定值类 #define GROUP_FIXVALUE1 0x03 // 定值类 #define GROUP_EVENT0 0x04 // 事件类(动作及状态事件) #define GROUP_EVENT1 0x05 // 事件类(如告警事件) #define GROUP_AIVALUE0 0x06 // 遥测类(保护测量值) #define GROUP_AIVALUE1 0x07 // 遥测类(如电流、电压、功率、频率、水位、温度等) #define GROUP_DISOE 0x08 // 遥信类(如刀闸、开关、信号、状态等) 遥信SOE #define GROUP_DIVALUE0 0x09 // 遥信类 #define GROUP_PIVALUE 0x0a // 电量类 #define GROUP_YKSWITCH 0x0b // 遥控开关类(跳/合) #define GROUP_YKDANGWEI 0x0c // 遥控分头类(升/降) #define GROUP_YTDAOUT 0x0d // 遥调类(DA输出) #define GROUP_YKYABAN 0x0e // 遥控压板类(保护功能投/退) #define GROUP_DEBUGANDOPERATE 0x0f // 调试及操作信息类(用于装置的调试及操作记录) #define GROUP_DIVALUE1 0x18 // 遥信类(如刀闸、开关、信号、状态等) 遥信状态 // 传送原因 // 监视方向 #define M_CAUSE_AUTOSEND 1 // 自发(突发) #define M_CAUSE_CYCLE 2 // 循环 #define M_CAUSE_RESET_FCB 3 // 复位帧计数位(FCB) #define M_CAUSE_RESET_CU 4 // 复位通信单元(CU) #define M_CAUSE_START 5 // 启动/重新启动 #define M_CAUSE_POWERON 6 // 电源合上 #define M_CAUSE_TEST 7 // 测试模式 #define M_CAUSE_CHECKTIME 8 // 时间同步 #define M_CAUSE_QUERY 9 // 总查询 #define M_CAUSE_STOPQUERY 10 // 总查询停止 #define M_CAUSE_LOCAL 11 // 当地操作 #define M_CAUSE_REMOTE 12 // 远方操作 #define M_CAUSE_ACK 20 // 命令的肯定认可 #define M_CAUSE_NAK 21 // 命令的否定认可 #define M_CAUSE_DSITURBANCEDATA 31 // 扰动数据的传送 #define M_CAUSE_WRITEACK 40 // 通用分类写命令的肯定认可 #define M_CAUSE_WRITENAK 41 // 通用分类写命令的否定认可 #define M_CAUSE_READWITHVALIDDATA 42 // 对通用分类读命令有效数据响应 #define M_CAUSE_READWITHINVALIDDATA 43 // 对通用分类读命令无效数据响应 #define M_CAUSE_WRITECONFIRM 44 // 通用分类写确认 // 控制方向 #define C_CAUSE_CYCLE 2 // 循环 #define C_CAUSE_CHECKTIME 8 // 时间同步 #define C_CAUSE_QUERY 9 // 总查询 #define C_CAUSE_COMMAND 20 // 一般命令 #define C_CAUSE_DSITURBANCEDATA 31 // 扰动数据的传送 #define C_CAUSE_WRITEWITHVALIDDATA 40 // 通用分类写命令 #define C_CAUSE_READWITHVALIDDATA 42 // 通用分类读命令 // 数据ID #define DATAID_NO 0 // 无数据 #define DATAID_OS8ASCII 1 // 8位ASCII #define DATAID_BSTRING 2 // 字符串 #define DATAID_UI 3 // 无符号整数 #define DATAID_INT 4 // 整数 #define DATAID_UFLOAT 5 // 无符号浮点数 #define DATAID_FLOAT 6 // 浮点数 #define DATAID_754SHORT 7 // R32.23 IEEE 标准754短实数 #define DATAID_754REAL 8 // R64.53 IEEE 标准754实数 #define DATAID_DOUBLE 9 // 双点信息 #define DATAID_SINGLE 10 // 单点信息 #define DATAID_13BITS 12 // 带品质描述的被测值(13BITS) #define DATAID_SORTIDNO 15 // 通用分类标识序号 #define DATAID_WITHTIME 18 // 带时标的报文 #define DATAID_WITHTIMESPACE 19 // 带相对时标的报文 #define DATAID_STRUCT 23 // 数据结构 #define DATAID_EXDATA_0X24 0x24 // 北京四方扩展数据类型 // 描述类别 #define KOD_NOSPECIFIED 0 // 无所指定的描述类别 #define KOD_ACTUALVALUE 1 // 实际值 #define KOD_DEFAULTVALUE 2 // 缺省值 #define KOD_RANGE 3 // 量程(最大值、最小值、步长) #define KOD_BACKUP1 4 // 备用 #define KOD_PRECISION 5 // 精度(n,m) #define KOD_FACTOR 6 // 因子 #define KOD_REFERENCE 7 // 参比 #define KOD_ENUMERATION 8 // 列表 #define KOD_DIMENSION 9 // 量纲 #define KOD_DESCRIPTION 10 // 描述 #define KOD_BACKUP2 11 // 备用 #define KOD_PASSWORD 12 // 口令条目 #define KOD_READONLY 13 // 只读 #define KOD_WRITEONLY 14 // 只写 #define KOD_BACKUP3 15 // 备用 #define KOD_BACKUP4 16 // 备用 #define KOD_BACKUP5 17 // 备用 #define KOD_BACKUP6 18 // 备用 #define KOD_CORFUNCANDINF 19 // 相应的功能类型和信息序号 #define KOD_COREVENT 20 // 相应的事件 #define KOD_ENUMTEXTARRAY 21 // 列表的文本阵列 #define KOD_ENUMVALUEARRAY 22 // 列表的值阵列 #define KOD_RELATEDENTRIES 23 // 相关联的条目 /////////////////////////////结构定义///////////////////////////////// /*! \struct PROV_ALLITEMOFGROUPPARAM \brief 转发条目参数定义 \par 快速参考 buban103.h */ typedef struct{ /*! \var PROV_ALLITEMOFGROUPPARAM::m_u8RII \brief 主站信息返回值 \note 取值范围:[0---255]\n */ unsigned char m_u8RII; /*! \var PROV_ALLITEMOFGROUPPARAM::m_u8Group \brief 信息组号 \note 取值范围:[0---255]\n */ unsigned char m_u8Group; /*! \var PROV_ALLITEMOFGROUPPARAM::m_u8ItemNo \brief 信息条目号 \note 取值范围:[0---255]\n */ unsigned char m_u8ItemNo; /*! \var PROV_ALLITEMOFGROUPPARAM::m_u8ItemAttr \brief 条目属性 \note (实际值、缺省值、量程... ...) \note 取值范围:[1、3、9、10]\n */ unsigned char m_u8ItemAttr; /*! \var PROV_ALLITEMOFGROUPPARAM::m_bFinished \brief 数据读取完成标识 \note 取值范围:[TRUE/FALSE]\n */ BOOL m_bFinished; }PROV_ALLITEMOFGROUPPARAM; /*! \struct DEVPARAMDEF \brief 设备结构 \par 快速参考 buban103.h */ typedef struct{ /*! \var DEVPARAMDEF::m_szDevName \brief 装置名称 \note 取值范围:[有效的ASCII码字符串,最大长度为64]\n */ char m_szDevName[66]; /*! \var DEVPARAMDEF::m_u8DevAddr \brief 保护装置地址 \note 取值范围:[1-254,255为广播地址]\n */ u_char m_u8DevAddr; /*! \var DEVPARAMDEF::m_iCfgGroupNum \brief 保护装置组配置数量 \note 取值范围: [0--GROUPNUM]\n */ i_32 m_iCfgGroupNum; /*! \var DEVPARAMDEF::m_saGroupDef[] \brief 保护装置类型 \par 快速参考 GROUPDEF结构 \note 取值范围: 无\n */ GROUPDEF m_saGroupDef[GROUPNUM]; /*! \var DEVPARAMDEF::m_szType[] \brief 间隔(保护装置)类型 \note 取值范围:[有效的ASCII码字符串,最大长度为64]\n "LFP984B", "RCS921A", "RCS931A", "LFP965B"等\n */ char m_szType[64]; /*! \var DEVPARAMDEF::m_szDatFileName[] \brief 间隔(保护装置)数据信息配置文件名称 \note 取值范围:[有效的ASCII码字符串,最大长度为256]\n */ //char m_szDatFileName[FILENAME_LEN]; /*! \var DEVPARAMDEF::m_sAiDBOrientation \brief 基本模拟测量量在数据库中定位 \note 数据包括七组测量值 */ DBORIENTATION m_sAiDBOrientation[DEV_AI_MAXNUM]; /*! \var DEVPARAMDEF::m_sDiDBOrientation \brief 基本模拟测量量在数据库中定位 \note 数据包括单点和双点遥信量 */ DBORIENTATION m_sDiDBOrientation; /*! \var DEVPARAMDEF::m_sPiDBOrientation \brief 基本模拟测量量在数据库中定位 */ DBORIENTATION m_sPiDBOrientation; /*! \var DEVPARAMDEF::m_sStepDBOrientation \brief 步位置信息测量量在数据库中定位 \note 数据写入模拟量数据库 */ DBORIENTATION m_sStepDBOrientation; /*! \var DEVPARAMDEF::m_sYkDBOrientation \brief 遥控信息量在数据库中定位 \note 数据不写入数据库 */ DBORIENTATION m_sYkDBOrientation; /*! \var DEVPARAMDEF::m_sSyncTimeInfo \brief 时间同步信息 */ DBINFO m_sSyncTimeInfo; /*! \var DEVPARAMDEF::m_iProvAddr \brief 转发保护地址 \note 用于端口与单个装置的通讯 \note 取值范围:[-1, 非负整数]\n */ i_32 m_iProvAddr; /*! \var DEVPARAMDEF::m_u32FuncCode \brief 保护命令功能码生成记忆 \note 用于数据返回时,生成交互指令 \note 取值范围:hREADFIX : 读取定值\n hREADFIXNO : 读取定值区号\n hREADPAI : 读取保护模拟量\n hREADPDI : 读取保护开关量\n hREADPWAVE : 读取保护波形数据\n hQUERYFAULT : 读取指定故障报告\n hQUERYSELFCHECK : 读取指定的自检报告\n hWRITEALLFIX : 修改保护定值\n hWRITESPECIALFIX : 修改指定的保护定值\n hWRITEFIXNO : 修改保护定值区\n hRESETPROTECT : 保护信号复归\n hCHECKTIME : 单个装置对时\n hBROADCASTCHECKTIME : 保护装置广播对时\n hCANCEL : 保护操作取消\n */ u_32 m_u32FuncCode; /*! \var DEVPARAMDEF::m_iYkStartPnt \brief 遥控起始点号 \note 用于端口与单个装置的通讯 \note 取值范围:[-1, 非负整数]\n */ i_32 m_iYkStartPnt; /*! \var DEVPARAMDEF::m_iYtStartPnt \brief 遥调起始点号 \note 用于端口与单个装置的通讯 \note 取值范围:[-1, 非负整数]\n */ i_32 m_iYtStartPnt; BYTE m_u8SCN; /*! \var DEVPARAMDEF::m_u8CPUNo \brief 当前CPU号 \note 用于端口与单个装置的通讯 \note 取值范围:[1, ... ,255]\n \note 其中255为当前CPU号,对于多组定值来说,cpu号和组号一一对应\n */ BYTE m_u8CPUNo; /*! \var DEVPARAMDEF::m_u8FixNo \brief 定值区号 \note 用于端口与单个装置的通讯 \note 取值范围:[1, ... ,255]\n \note 其中255为当前定值区号 */ BYTE m_u8FixNo; /*! \var DEVPARAMDEF::m_iFaultNo \brief 故障序号 \note 仅用于扰动数据上送时 */ i_32 m_iFaultNo; }DEVPARAMDEF; /*! \struct PROVDEVPARAMDEF \brief 设备结构 \par 快速参考 buban103.h */ typedef struct { /*! \var DEVPARAMDEF::m_sProvGroupParam \brief 转发组数据参数 \note 仅用于转发组所有数据时,一帧无法完成的情况 */ PROV_ALLITEMOFGROUPPARAM m_sProvGroupParam; /*! \var PROVDEVPARAMDEF::m_sProvSoe \brief 转发SOE数据参数 \note 用于历史记录的转发事件 */ DEVPROVSOE m_sProvSoe; }PROVDEVPARAMDEF; typedef struct { i_32 m_iCmdTimerCnt; //命令时间计数 i_32 m_iCmdTimerConst; //命令时间常量 } BUBAN103CMDDEF; // wen 2003.10.27 保存扰动数据故障序号等参数 typedef struct { BYTE m_u8FUN; //功能类型(FUN) BYTE m_u8Res1; //未用 BYTE m_u8Res2; //未用 BYTE m_u8TOV; //扰动值类型(TOV) WORD m_wFAN; //故障序号(FAN) WORD m_wNOF; //电网故障序号(NOF) BYTE m_u8NOC; //通道数目 WORD m_wNOE; //一个通道信息元素的数目 WORD m_wINT; //信息元素间的间隔 WORD m_wHour; //时 WORD m_wMinute; //分 WORD m_wSecond; //秒 WORD m_wMilliseconds; //毫秒 WORD m_wYear; //年 WORD m_wMonth; //月 WORD m_wDay; //日 BOOL m_bRecvRight; //接收是否正确 BYTE m_u8ACC; //通道号 int m_iNum; //缓冲区psValue 数量 int m_iDataNum; //缓冲区psValue 扰动值的数量 short *m_pshValue; //扰动值 } BUBAN103DISTURBANCEDEF; typedef struct tagDISTURBANCEDIDATA { int m_iNo; // 序号 int m_iNum; // 数量 int m_iTap; // 偏移 BYTE m_u8Fun; // 功能类型 BYTE m_u8Inf; // 信息序号 short m_shValue; // 数值 struct tagDISTURBANCEDIDATA *m_psCurUse; // 正在使用的指针 struct tagDISTURBANCEDIDATA *m_psRight; // 右指针 struct tagDISTURBANCEDIDATA *m_psBottom; // 下指针 }DISTURBANCEDIDATA, *pDISTURBANCEDIDATA; typedef struct tagDISTURBANCEAIDATA { int m_iACCNo; // 通道号 int m_iTOV; // 扰动值类型 double m_dbRPV; // 额定一次值 double m_dbRSV; // 额定二次值 double m_dbfRFA; // 参比因子 int m_iNOE; // 采样值数量 int m_iNOC; // 模拟量数量 short *m_pshValue; // 模拟量值 }DISTURBANCEAIDATA, *pDISTURBANCEAIDATA; /*应用服务数据单元的报文结构定义*/ typedef struct { //WORD m_wGIN; //通用分类标识序号 BYTE m_u8Grp; //组号 BYTE m_u8Itm; //条目号 BYTE m_u8KOD; //类型描述 }GEN_DATAGROUP; //通用分类数据组 //监视方向的应用服务数据单元结构 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nDPI; //双点信息 unsigned char nTIME[4]; //四个八位位组二进制时间 unsigned char nSIN; //附加信息 }MASDU1;//带时标的报文,nTYP=M_TM_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nDPI; //双点信息 unsigned short nRET; //相对时间 unsigned short nFAN; //故障序号 unsigned char nTIME[4]; //四个八位位组二进制时间 unsigned char nSIN; //附加信息 }MASDU2;//带相对时间的时标报文,nTYP=M_TMR_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned short nMEA1; //B相电流 unsigned short nMEA2; //AB相电压 unsigned short nMEA3; //有功功率 unsigned short nMEA4; //无功功率 }MASDU3;//被测值I报文,nTYP=M_MEI_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 u_32 nSCL; //短路位置 unsigned short nRET; //相对时间 unsigned short nFAN; //故障序号 unsigned char nTIME[4]; //四个八位位组二进制时间 }MASDU4;//带相对时间的有时标被测值报文,nTYP=M_TME_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nCOL; //兼容级别 unsigned char nASC[8]; //ASCII字符 unsigned char nREV; //制造厂内部软件标识符,自由赋值 }MASDU5;//标识报文,nTYP=M_IRC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned short nFAN; //故障序号 unsigned char nTIME[7]; //七个八位位组二进制时间 }MASDU6;//时间同步报文,nTYP=M_SYN_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nSCN; //扫描序号 }MASDU8;//总查询(总召唤)终止报文,nTYP=M_TGI_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned short nMEA1; //A相电流Il1 unsigned short nMEA2; //B相电流Il2 unsigned short nMEA3; //C相电流Il3 unsigned short nMEA4; //A相电压Ul1e unsigned short nMEA5; //B相电压Ul2e unsigned short nMEA6; //C相电压Ul3e unsigned short nMEA7; //有功功率P unsigned short nMEA8; //无功功率Q unsigned short nMEA9; //频率f }MASDU9;//被测值II报文,nTYP=M_MEII_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nRII; //返回标识符 unsigned char nNGD; //通用分类数据集数目 unsigned char* nDATASET;//数据集 //GEN_DATASET nDATASET[]; 数据集 }MASDU10;//通用分类数据报文,nTYP=M_GD_N(T)A_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nRII; //返回标识符 unsigned char nGIN; //通用分类标识序号 unsigned short nNDE; //描述元素的数目 unsigned char* nDEL; //描述元素 //GEN_DEL nDEL; //描述元素 }MASDU11;//通用分类标识报文,nTYP=M_GI_N(T)A_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用其值应为0 unsigned char* nDATASET;//数据集 //DIS_DATASET nDATASET[]; //数据集 }MASDU23;//被记录扰动表报文,nTYP=M_LRD_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nRES; //保留值,未用 unsigned char nTOV; //扰动值的类型 unsigned short nFAN; //故障序号 unsigned short nNOF; //电网故障序号 unsigned char nNOC; //通道数目 unsigned short nNOE; //一个通道信息元素的数目 unsigned short nINT; //信息元素间的间隔 unsigned char nTIME[4]; //四个八位位组二进制时间 }MASDU26;//扰动数据传输准备就绪报文,nTYP=M_RTD_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nRES; //保留值,未用 unsigned char nTOV; //扰动值类型 unsigned short nFAN; //故障序号 unsigned char nACC; //实际通道号 u_32 nRPV; //一次额定值 u_32 nRSV; //二次额定值 u_32 nRFA; //参比因子 }MASDU27;//被记录的通道传输就序报文,nTYP=M_RTC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nRES1; //保留值1,未用 unsigned char nRES2; //保留值2,未用 unsigned char nRES3; //保留值3,未用 unsigned short nFAN; //故障序号 }MASDU28;//带标志的状态变位的传输准备就绪报文,nTYP=M_RTT_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned short nFAN; //故障序号 unsigned char nNOT; //带标志的状态位的数目 unsigned short nTAP; //标志的位置 struct{ unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nDPI; //双点信息 } nSTATUS; //状态变位 }MASDU29;//带标志的状态变位传输报文,nTYP=M_TOT_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nRES; //保留值,未用 unsigned char nTOV; //扰动值类型 unsigned short nFAN; //故障序号 unsigned char nACC; //实际通道序号 unsigned short nNDV; //每个应用服务数据单元有关扰动值的数目 unsigned short nNFE; //每个应用服务数据单元的第一个信息元素的序号 unsigned short* nSDV; //单个扰动值 }MASDU30;//传输扰动值报文,nTYP=M_TOV_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nTOO; //命令类型 unsigned char nTOV; //扰动值类型 unsigned short nFAN; //故障序号 unsigned char nACC; //实际通道 }MASDU31;//传输结束报文,nTYP=M_EOT_TA_3 //控制方向上的应用服务数据单元结构 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nTIME[7]; //七个八位位组二进制时间 }CASDU6;//时间同步报文,nTYP=C_SYN_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nSCN; //扫描序号 }CASDU7;//总查询(总召唤)启动报文,nTYP=C_IGI_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nRII; //返回信息标识符 unsigned char nNGD; //通用分类数据数目 unsigned char* nDATASET; //通用分类数据集 //GEN_DATASET nDATASET[]; //通用分类数据集 }CASDU10;//通用分类数据报文,nTYP=C_GD_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nDCO; //双命令 unsigned char nRII; //返回信息标识符 }CASDU20;//一般命令报文,nTYP=C_GRC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nRII; //返回信息标识符 unsigned char nNOG; //通用分类标识数目 GEN_DATAGROUP* nDATAGROUP; //数据集 }CASDU21;//通用分类命令报文,nTYP=C_GC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nTOO; //命令类型 unsigned char nTOV; //扰动值的类型 unsigned short nFAN; //故障序号 unsigned char nACC; //实际通道序号 }CASDU24;//扰动数据传输的命令报文,nTYP=C_SYN_TA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号,未用 unsigned char nTOO; //命令类型 unsigned char nTOV; //扰动值的类型 unsigned short nFAN; //故障序号 unsigned char nACC; //实际通道号 }CASDU25;//扰动数据传输的认可报文,nTYP=C_ADT_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nQCC; //电能脉冲计数量召唤命令的限定词 unsigned char nRII; //返回信息标识符 }CASDU88;//电能脉冲计数量的召唤命令,nTYP=C_CI_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nDCC; //控制断路器 unsigned char nRII; //返回信息标识符 }CASDU64;//控制断路器命令,nTYP=C_DC_NA_3 / C_EXDC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nRCC; //升降命令 unsigned char nRII; //返回信息标识符 }CASDU65;//控制断路器命令,nTYP=C_RC_NA_3 / C_EXRC_NA_3 typedef struct { unsigned char nTYP; //类型标识 unsigned char nVSQ; //可变结构限定词 unsigned char nCOT; //传送原因 unsigned char nADDR; //应用服务数据单元公共地址 unsigned char nFUN; //功能类型 unsigned char nINF; //信息序号 unsigned char nCCC; //控制命令 unsigned char nRII; //返回信息标识符 }CASDU67;//控制断路器命令,nTYP=C_DC_NA_3 / C_EXDC_NA_3 /*链路层传输帧格式结构*/ //控制方向 typedef struct { unsigned char nSTART1;//启动字符=68H unsigned char nLEN1;//帧长=控制域+地址域+用户数据区 unsigned char nLEN2;//帧长=控制域+地址域+用户数据区 unsigned char nSTART2;//启动字符=68H unsigned char nCONTROL;//控制域 unsigned char nADDR;//地址域 }CLPDU_VARR;//控制方向上的链路规约数据单元结构,可变帧长 typedef struct{ unsigned char nSTART;//启动字符=10H unsigned char nCONTROL;//控制域 unsigned char nADDR;//地址域 unsigned char nCS;//帧效验和 unsigned char nEnd;//结束字符=16H }CLPDU_FIX;//控制方向上的链路规约数据单元结构,固定帧长 typedef struct { /*! \brief 初始化标志 \note =TRUE 收到结束帧 =FALSE 未收到结束帧 第一次总查询结束后置位,以后保持不变 */ BOOL m_bInitdata; /*! \brief 总召唤数据标识 \note =TRUE 总召唤数据结束,收到总召唤结束帧或者超时 =FALSE 总召唤数据未结束 */ BOOL m_bAllQueryOk; /*! \brief 召唤计数,用于控制召唤不到期望的值时跳出死循环 */ u_32 m_u32CallCnt; /*! \brief 返回码 */ u_char m_u8RII; /*! \brief 保存扰动数据故障序号等参数 */ BUBAN103DISTURBANCEDEF m_sDisturbanceParam; /*! \brief 中间信息存储的临时文件名称 */ char m_chArrayTmpFileName[FILENAME_LEN]; /*! \brief 设备定义,包括名称和地址 */ DEVPARAMDEF m_sDevParam; }DEVDEF; typedef struct tagPROVDEVDEF { /*! \brief 设备定义,包括名称和地址 */ //PROVDEVPARAMDEF m_sDevParam; /*! \brief 总查询进行中(=TRUE) */ BOOL m_bProvQuery; i_32 m_iQueryPntNo; /*! \brief 总查询进行步骤中 */ i_32 m_iProvQueryStepWithASDU; /*! \brief 产生Asdu5的原因 */ i_32 m_iProvAsdu5Cause; /*! \brief 装置的实际端口号 */ i_32 m_iRealCommid; /*! \brief 装置的转发地址(唯一确定一个装置) */ i_32 m_iProvAddr; /*! \brief 转发SOE数据参数 \note 用于历史记录的转发事件(应该是没有作用,已经遗弃) */ DEVPROVSOE m_sProvSoe; /*! \var PROVDEVDEF::m_sProvGroupParam \brief 转发组数据参数 \note 仅用于转发组所有数据时,一帧无法完成的情况 */ PROV_ALLITEMOFGROUPPARAM m_sProvGroupParam; i_32 m_iStatusStn; i_32 m_iStatusPnt; DBORIENTATION m_sYxInfo; DBORIENTATION m_sYcInfo; DBORIENTATION m_sYmInfo; i_32 m_iAsdu10Num; SINGLELIST m_sBaoHuData; }PROVDEVDEF; #define MAX_PROV_DEVICE_NUM 64 // 转发保护装置最大数量 // wen 2005.10.08 修改控制字结构 typedef struct tagBUBAN103LINKCTRL { /*! \brief 从站初始化标志 \note =1 ok =0 no */ BOOL m_bLinkOk; /*! \brief 链接正常计数 */ u_32 m_u32LinkOkCnt; /*! \brief 控制信息 */ u_char m_u8CtlByte; }BUBAN103LINKCTRL, *pBUBAN103LINKCTRL; // wen 2003.10.27 增加全局参数定义 typedef struct tagBUBAN103LINKDEF { /*! \var BUBAN103LINKDEF::m_szLinkName \brief 链路名称 \note 取值范围:[有效的ASCII码字符串,最大长度为64]\n */ char m_szLinkName[66]; /*! \brief 主站发送总召唤、通用分类总召唤标志 \note 初始化时=FALSE,已发送命令后OK */ BOOL m_bRstLinkOk; /*! \brief 是否转换到下一个装置 \note 在装置总召唤完成后,是否指向下一个装置 */ BOOL m_bGotoNext; /*! \brief 从站初始化标志 \note =1 ok =0 no */ BOOL *m_pbLinkOk; /*! \brief 链接正常计数 */ u_32 *m_pu32LinkOkCnt; /*! \brief 控制信息 */ u_char *m_pu8CtlByte; // wen 2005.10.08 将以上3个动态分配成员指针修改为结构统一分配 //BUBAN103LINKCTRL *m_pLinkCtrl; /*! \brief 超时时间间隔 */ u_32 m_u32TimeOutConst; /*! \brief 当前指令索引 */ short m_shCurCmdIdx; /*! \brief 轮询指令生成时间 */ BUBAN103CMDDEF m_sArrayCmdTime[BUBAN103_TIMER_CMD_NUM]; /*! 链路间隔装置数量 */ i_32 m_iDevNum; /*! 设备地址索引 */ i_32 m_iDevIdx; /*! 一类数据的问询次数计算 */ i_32 m_iQueryNum_CLASS1_Const; i_32 m_iQueryNum_CLASS1_Count; /*! 一类数据已经查询地址,分时给别的装置查询数据 */ i_32 m_iQueryedAddr_CLASS1; /*! \var BUBAN103LINKDEF::m_iProvAddrOffset \brief 转发保护地址 \note 用于端口与多个装置的通讯,总线方式 \note 取值范围:[非负整数]\n */ i_32 m_iProvAddrOffset; /*! \var BUBAN103LINKDEF::m_iInputPort \brief 输入厂站端口号 \note 用于确定该厂站的通讯厂站端口 \note 取值范围:[非负整数]\n \note 0为本厂站端口,其它数值为通讯厂站端口 */ i_32 m_iInputPort; /*! \var BUBAN103LINKDEF::m_chArrayTempletFileName[] \brief 模板文件名称 \note 取值范围:[有效的ASCII码字符串,最大长度为256]\n */ char m_chArrayTempletFileName[FILENAME_LEN]; // wen 2004.01.15 增加链路地址以适用于ASDU与链路地址不同的情况 /*! \var BUBAN103LINKDEF::m_uchLinkAddr \brief 链路地址 \note 用于银山科技103子站 \note 取值范围:[非负整数]\n */ BYTE m_uchLinkAddr; /*! \var BUBAN103LINKDEF::m_iMaskNoMatchString \brief 屏蔽未配置事件点信息 \note 取值范围:[0---255]\n */ i_32 m_iMaskNoMatchString; // wen 2004.07.26 增加保护装置的状态处理 /*! \var BUBAN103LINKDEF::m_iInputStationOfDevStatus \brief 保护装置状态输入厂站端口号 \note 取值范围:[ >= 0 ]\n */ i_32 m_iInputStationOfDevStatus; /*! \var BUBAN103LINKDEF::m_iInputStartPntOfDevStatus \brief 保护装置状态输入厂站起始点号 \note 取值范围:[ >= 0 ]\n */ i_32 m_iInputStartPntOfDevStatus; /*! \var BUBAN103LINKDEF::m_iJudgeAsduNo \brief 是否判断asdu号 \note 取值范围:[0---255]\n */ i_32 m_iJudgeAsduNo; /*! \var BUBAN103LINKDEF::m_iDisTransDataProcess \brief 是否处理扰动数据 \note 取值范围:[0---255]\n */ i_32 m_iDisTransDataProcess; /*! \var BUBAN103LINKDEF::m_psDev \brief 该链路支持的装置指针 \note 该成员动态分配,数量=m_iDevNum */ DEVDEF *m_psDev; // 以下为转发时用参数 /*! \var BUBAN103LINKDEF::m_psProvDev \brief 该链路支持的转发装置指针 \note 该成员动态分配,数量=m_iDevNum */ PROVDEVDEF *m_psProvDev; /*! \var BUBAN103LINKDEF::m_sBaoHuCmdParam \brief 调度命令参数 \note 用作数据的回馈时的处理 */ BAOHUPROVPARAM m_sBaoHuCmdParam; } BUBAN103LINKDEF, *pBUBAN103LINKDEF; typedef struct tagBUBAN103PORTPARAM { /*! \var BUBAN103PORTDEF::m_iLinkNum \brief 链路数量 */ i_32 m_iLinkNum; /*! \var BUBAN103PORTDEF::m_achRecvBuf \brief 接收数据缓冲区 \note 缓冲区最大不超过 300 bytes\n */ char m_achRecvBuf[300]; /*! \var BUBAN103PORTDEF::m_iRecvLen \brief 接收数据长度 */ int m_iRecvLen; /*! \var BUBAN103PORTDEF::m_iLinkIdx \brief 链路索引 */ int m_iLinkIdx; /*! \var BUBAN103PORTDEF::m_iPortOk \brief 端口ok */ int m_iPortOk; /*! \var BUBAN103PORTDEF::m_bSendChangeDi \brief 是否上送变化遥信 */ BOOL m_bSendChangeDi; /*! \var BUBAN103PORTDEF::m_psLink \brief 端口支持的链路指针 \note 该成员动态分配,数量=m_iLinkNum */ BUBAN103LINKDEF *m_psLink; /*! \brief 该规约的端口数据指针 */ SIO_PARAM_BAOHU_DEF *m_psBaoHu; }BUBAN103PORTPARAM, *pBUBAN103PORTPARAM; typedef struct tagVALUEDEF { union VALUE { /*! \var VALUE::m_uValue \brief 无符号长整型 */ u_32 m_uValue; /*! \var VALUE::m_iValue \brief 整型 */ i_32 m_iValue; /*! \var VALUE::m_fValue \brief 浮点数 */ double m_fValue; /*! \var VALUE::m_dwValue \brief 双字 */ DWORD m_dwValue; }m_unValue; /*! \var VALUEDEF::m_szValue \brief 字符串 */ char m_szValue[MAXSTRINGLEN]; /*! \var VALUEDEF::m_iDataType \brief 数据类型 \note 取值范围如下\ =0, 全无效\ =1, 无符号整型\ =2, 整型数\ =3, 浮点数\ =4, 字符串\ =5, 数字量\ =6, 控制字 */ i_32 m_iDataType; /*! \var VALUEDEF::m_iDataNum \brief 数字量占用位数 \note 仅对数字量和控制字和字符串有效 */ i_32 m_iDataNum; }VALUEDEF, *pVALUEDEF; /////////////////////////以下为通用函数接口/////////////////////////// /*! \brief 读取配置函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n */ void Buban103ReadConfig(int commid); // 初始化处理 /*! \brief 读取端口数据函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n \param buf -- 数据源缓冲区指针 \param len -- 数据源长度 */ void Buban103RecvData(int commid, u_char *buf, int len);// 规约读数据处理 /*! \brief 规约数据处理定时器函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n */ void Buban103Timer(int commid); // 定时器处理 /*! \brief 遥控遥调数据处理函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n \param buf -- 数据源缓冲区指针 \param len -- 数据源长度 */ void Buban103YkYtProcess(int commid, u_char *buf, int len); // 遥控遥调处理 /*! \brief 系统下发对时函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n */ void Buban103SendSystemTime(int commid); // 系统对时 /*! \brief 系统退出时规约处理函数 \param commid -- 端口号 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n */ void Buban103Exit(int commid); // 规约退出 /*! \brief 保护命令处理函数 \param commid -- 端口号 \param rtumsg -- 下发的保护命令指针 \note 取值范围:0 -- MaxSerialPortNum + MaxNetPortNum -1\n */ void Buban103BaoHuCmdProcess(int commid, RTUMSG *rtumsg, BOOL bUpData); /*! \brief 取保护数据库指针函数 \param commid -- 端口号 \param iProvAddr -- 统一编排的保护转发地址 \param ppBaoHuDB -- 存放保护数据指针的指针 \retval -- 返回该装置保护数据组数 */ int Buban103GetBaohuDataBase(int commid, int iProvAddr, GROUPDEF **ppBaoHuDB); /////////////////////////通用函数接口结束/////////////////////////////// /////////////////////////以下为通用函数支持接口///////////////////////// void Buban103ProvMakeYkYtCommand(int commid, u_char *buf, int len); /////////////////////////通用函数支持接口结束/////////////////////////// ///////////////////////////以下为配置函数接口/////////////////////////// BOOL InitBuban103InfoFromTempletFile(int commid,\ char *ptrTemplate,\ BUBAN103LINKDEF *psLink); BOOL InitBuban103InfoFromTempletFileEx(int commid,\ char *ptrTemplate,\ BUBAN103LINKDEF *psLink,\ BOOL bMaster); BOOL GetParamItem(char *pSour, char **ppDest); BOOL GetParamItemEx(char *pSour, char **ppDest, const char *pSplit); BOOL GetLinkParamFromTemplateFile(int commid, HDSFILE hFile,\ BUBAN103LINKDEF *psLink); BOOL GetDevParamFromTemplateFile(int commid, HDSFILE hFile,\ BUBAN103LINKDEF *psLink); BOOL GetProvDevParamFromTemplateFile(int commid, HDSFILE hFile,\ BUBAN103LINKDEF *psLink); BOOL GetInfoData(char *pInfo, int iPntNo, DBORIENTATION *psDB); BOOL GetSyncTimeInfoData(char *pInfo, DBINFO *psSyncInfo); BOOL GetGroupInfoData(char *pInfo, int iPntNo, DEVPARAMDEF *psDevParam); void SetProtectDevStatus(BUBAN103LINKDEF *psLinkParam, int iDevNo, BOOL bStatus); void InitDevParam(DEVPARAMDEF *psDevParam); BOOL InitBuban103InfoFromDat(int commid, BUBAN103LINKDEF *psLink); void InitGroupParam(GROUPDEF *psGroupParam, char *szDatFileName); void InitBuban103CmdBuf(int commid, BUBAN103PORTPARAM *psPortParam); void InitBuban103LinkCmdBuf(BUBAN103LINKDEF *psLinkParam); void InitBuban103DevCmdBuf(BUBAN103LINKDEF *psLinkParam, int iDevNo); void ReCalcDevPntStart(int commid, BUBAN103PORTPARAM *psPortParam); /////////////////////////////配置函数接口结束/////////////////////////// /////////////////////以下为POLLING规约常规函数接口////////////////////// void Buban103FindNextCmd(int commid); BOOL Buban103FindNextCmdEx(int commid); void Buban103CalcNextDev(int commid, BOOL bFlag); void Buban103SendCmdFormPollCmdBuf(int commid); //////////////////////POLLING规约常规函数接口结束/////////////////////// /////////////////////////buban103公共函数接口/////////////////////////// BOOL IsDevLinkOk(BUBAN103LINKDEF *psLinkParam, int iDevNo); void ClearLinkCnt(BUBAN103LINKDEF *psLinkParam, int iDevNo); void SetDevLinkOk(BUBAN103LINKDEF *psLinkParam, int iDevNo, BOOL bFlagOk); BYTE GetLinkAddr(BUBAN103LINKDEF *psLinkParam, int iDevNo); BYTE *GetLinkCtrl(BUBAN103LINKDEF *psLinkParam, int iDevNo); BOOL IsLinkTimeOut(BUBAN103LINKDEF *psLinkParam, int iDevNo); BYTE CalBuban103Lpc(BYTE *msg, u_32 len); BOOL Buban103Check(char *pData, int iDataLen); BOOL FindProtectDev(BUBAN103PORTPARAM *psPortParam, DEVADDRPARAM *psAddrParam, BOOL bJudgeLinkOnly); BOOL FindProtectDevFromProvAddr(BUBAN103PORTPARAM *psPortParam, DEVADDRPARAM *psAddrParam, int iProvAddr); BOOL FindProtectDevFromPntNo(BUBAN103PORTPARAM *psPortParam, DEVADDRPARAM *psAddrParam, DBINFO *psDBInfo, int iPntNo, int itype); BOOL FindProtectDevFromYkYtPnt(BUBAN103PORTPARAM *psPortParam, DEVADDRPARAM *psAddrParam, int iYkYtPnt); int FindYkPointFromDev(DBORIENTATION *psYkYtDBUnit, BYTE u8Fun, BYTE u8Inf); BOOL GetSpecialPtr(int commid, DEVADDRPARAM *psDevAddrParam,\ BUBAN103PORTPARAM **ppsPortParam,\ BUBAN103LINKDEF **ppsLinkParam, DEVDEF **ppsDevParam); BOOL GetSpecialProvPtr(int commid, DEVADDRPARAM *psDevAddrParam,\ BUBAN103PORTPARAM **ppsPortParam,\ BUBAN103LINKDEF **ppsLinkParam, PROVDEVDEF **ppsProvDevParam); BOOL GetPortParamPtr(int commid, BUBAN103PORTPARAM **ppsPortParam); BOOL GetOneValueOfASDU10(BYTE *pu8SourData, VALUEDEF *psValue, BYTE u8DataType, BYTE u8DataLen); int FindAiGroupIdx(DBORIENTATION *pAiDB, int iMaxNum, BYTE u8Asdu, BYTE u8Fun, BYTE u8Inf); /////////////////////////buban103公共函数接口结束/////////////////////// //===========================以下为指令生成函数======================= //生成 Buban103 命令? void MakeBuban103LinkCommand(u_32 commid, BYTE bLinkAddr, u_char link_cmd_idx, u_char* msg, u_32 len, u_32 cmdtype); //生成时间同步命令 void MakeTimeSyn_CAsdu6(u_32 commid, CMDPARAM *psCmdParam); //生成总查询启动命令 void MakeAllQuery_CAsdu7(u_32 commid, CMDPARAM *psCmdParam); //生成通用分类数据命令 void MakeGenIdentData_CAsdu10(u_32 commid, CMDPARAM *psCmdParam, u_char *dataset, u_char ngd); void MakeGenIdentData_CAsdu10Ex(u_32 commid, CMDPARAM *psCmdParam, u_char *dataset, u_char ngd, u_32 cmdtype); //生成一般命令 void MakeGenCommand_CAsdu20(u_32 commid, CMDPARAM *psCmdParam, bool cmd); //生成通用分类命令 void MakeGenIdentCommand_CAsdu21(u_32 commid, CMDPARAM *psCmdParam, GEN_DATAGROUP* datagroup, u_char nog); //生成扰动数据传输命令 void MakeDisTrans_CAsdu24(u_32 commid, CMDPARAM *psCmdParam, u_char too, u_char tov, u_short fan, u_char acc); //生成扰动数据传输的认可命令 void MakeDisTrans_CAsdu25(u_32 commid, CMDPARAM *psCmdParam, u_char too, u_char tov, u_short fan, u_char acc); //生成脉冲电度的查询命令 void MakeQCC_CAsdu88(u_32 commid, CMDPARAM *psCmdParam); //Buban103 生成一类数据问询指令 void MakeBuban103_PL1_NA_3_Cmd(int commid, DEVADDRPARAM *psAddrParam); /*! \brief 生成标准的103定时轮询指令 \param commid -- 厂站端口号 \param iBuIdx -- 保护装置(间隔)索引 \param CmdIdx -- 指令索引号 \sa \ref 0 时间同步过程 \ref 1 模拟量查询 \ref 2 状态量查询 \retval 指令生成成功标识 \note 无\n */ void MakeBuban103PollingCmd(int commid, BUBAN103LINKDEF *psLinkParam, i_32 CmdIdx); //===========================指令生成函数结束========================= ///////////////////////以下为规约处理函数接口/////////////////////////// void Buban103ProcessData(int commid, BUBAN103PORTPARAM *psPortParam, BOOL bProcess); void Buban103shortprocess(RTUMSG *rtumsg); void Buban103longprocess(RTUMSG *rtumsg); // wen 2003.10.27 增加函数 // 其他报文数据处理开始 // 带时标的报文 void Buban103TMprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标的报文 void Buban103TMprocessOfSoe(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标的报文 //void Buban103TMprocessOfPEvent(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带相对时间的时标报文 void Buban103TMRprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带相对时间的时标报文 void Buban103TMRprocessOfSoe(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带相对时间的时标报文 //void Buban103TMRprocessOfPEvent(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值I报文 void Buban103MEIprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带相对时间的有时标的被测值报文 void Buban103TMEprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 标识报文 void Buban103IRCprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值II报文 void Buban103MEIINAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值III报文 void Buban103MEIIITAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值IV报文 void Buban103MEIVTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值V报文 void Buban103MEVTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值VI报文 void Buban103MEVITAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 被测值VII报文 void Buban103MEVIINAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 步位置信息报文 void Buban103STNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 单点信息状态帧 void Buban103SPNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标单点信息状态帧 void Buban103SPTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标单点信息状态帧 void Buban103SPTAprocessOfSoe(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标单点信息状态帧 //void Buban103SPTAprocessOfPEvent(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 双点信息状态帧 void Buban103DPNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标双点信息状态帧 void Buban103DPTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标双点信息状态帧 void Buban103DPTAprocessOfSoe(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标双点信息状态帧 //void Buban103DPTAprocessOfPEvent(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 单点状态和状态变化信息状态帧 void Buban103SSNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标单点状态和状态变化信息状态帧 void Buban103SSTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 双点状态和状态变化信息状态帧 void Buban103DSNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 带时标双点状态和状态变化信息状态帧 void Buban103DSTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 水位 void Buban103WLTAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 电能脉冲计数值 void Buban103ITNAprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 通用分类数据报文 void Buban103GDprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 遥控命令应答 void Buban103YkAck(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 遥调命令应答 void Buban103YtAck(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 通用分类数据报文模拟量处理 \param rtumsg -- 数据源缓冲区 \param psDevAddrParam -- 保护装置地址参数指针 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithAI(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文开关量处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithDI(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文电度量处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithPI(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文保护模拟量处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithPAI(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文保护开关量处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithPDI(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文保护定值处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithPFIX(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); //void Buban103GDprocessWithPFIXNew(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); //void Buban103GDprocessWithPFIXNewEx(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); /*! \brief 通用分类数据报文保护事件处理 \param rtumsg -- 数据源缓冲区 \param iBuIdx -- 保护装置(间隔)索引 \note 取值范围:0 -- MAX_POLL_ADDRESS_NUM-1\n \param iGroupIdx -- 通用分类数据组索引 \note 取值范围:0 -- GROUPNUM-1\n */ void Buban103GDprocessWithPEVENT(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); // 通用分类标识报文 void Buban103GIprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 对时程序 void Buban103SynTime(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 电度数据处理(SIEMENS 公司保护专用) void Buban103EXPIprocess(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); // 其他报文数据处理结束 // 扰动数据处理开始 // 扰动数据表处理 void Buban103LRDprocess(RTUMSG *rtumsg); // 扰动数据传输准备就绪 void Buban103RTDprocess(RTUMSG *rtumsg); // 带标志的状态变位传输准备就绪 void Buban103RTTprocess(RTUMSG *rtumsg); // 带标志的状态变位传输 void Buban103TOTprocess(RTUMSG *rtumsg); // 被记录的通道传输准备就绪 void Buban103RTCprocess(RTUMSG *rtumsg); // 传送扰动值 void Buban103TOVprocess(RTUMSG *rtumsg); // 带标志的状态变位、通道、扰动数据传输结束 void Buban103EOTprocess(RTUMSG *rtumsg); // 扰动数据处理结束 // 写通道扰动数据到文件中 BOOL Buban103WriteACCDatatoFile(RTUMSG *rtumsg); // 读录波数据文件头 void Buban103GetFileHead(char *ptrDataHead, size_t *piNOF, size_t *piNOC, size_t *piNOE, size_t *piINT); // 读录波数据记录时间 //void Buban103GetTime(char *ptrDataHead, SYSTEMTIME *ptrtm); // 读录波数据模拟量头 void Buban103ProcessAiHead(char *ptrDataHead, DISTURBANCEAIDATA *pAiData); // 转换临时文件为可用文件 void Buban103tmpFileChangetodatFile(char *sztmpFileName); // 生成CFG文件 //void Buban103MakeCFGFile(int iStationNo, pDISTURBANCEDIDATA ptrDi, pDISTURBANCEAIDATA ptrAi, FILE *fp, char *szInfFile, SYSTEMTIME *tm); // 生成DAT文件 void Buban103MakeDATFile(pDISTURBANCEDIDATA ptrDi, pDISTURBANCEAIDATA ptrAi, FILE *fp); // 转发函数处理 /*! \brief 插入SOE数据 \param commid -- 厂站端口号 \param selidx -- 端口索引号 \param iBuIdx -- 保护装置(间隔)索引 \param pSoeMsg -- SOE数据指针 \retval 插入SOE数据时是否覆盖(缓冲区是否已满) \note 无\n */ BOOL ProvInsertSoe(u_32 commid, DEVADDRPARAM *psDevAddrParam, SOE_DEF *pSoeMsg); /*! \brief 从缓冲区取并且删除SOE数据 \param commid -- 厂站端口号 \param selidx -- 端口索引号 \param iBuIdx -- 保护装置(间隔)索引 \param pSoeMsg -- SOE数据指针 \retval 获取SOE数据是否成功 \note 无\n */ BOOL ProvGetAndDelSoe(u_32 commid, DEVADDRPARAM *psDevAddrParam, SOE_DEF *pSoeMsg); /*! \brief 从缓冲区取第X项SOE数据 \param commid -- 厂站端口号 \param psDevAddrParam -- 端口索引号 \param iNo -- 第i个soe记录 \note iNo=0为最新的事件记录,1为次之,以此类推 \param pSoeMsg -- SOE数据指针 \retval 获取SOE数据是否成功 \note 无\n */ BOOL ProvGetNoXSoe(u_32 commid, DEVADDRPARAM *psDevAddrParam, int iNo, SOE_DEF *pSoeMsg); /*! \brief 是否有一类数据存在 \param commid -- 厂站端口号 \param iBuIdx -- 保护装置(间隔)索引 \param bCheckDiChange -- 检测遥信变位标识 \retval 一类数据存在标识 \note 无\n */ BOOL ProvHaveClassOne(u_32 commid, DEVADDRPARAM *psDevAddrParam, BOOL bCheckDiChange); /*! \brief 转发初始化 \param commid -- 厂站端口号 \retval 无 \note 无\n */ void ProvInit(u_32 commid); /*! \brief 转发链路指令的生成 \param commid -- 厂站端口号 \param addr -- 间隔设备地址 \param cmdidx -- 指令索引号 \param bACD -- 一类数据存在标识 \retval 无 \note 无\n */ void ProvMakeLinkCommand(u_32 commid, u_char addr, u_char cmdidx, BOOL bACD); /*! \brief 转发链路指令的生成 \param commid -- 厂站端口号 \param addr -- 间隔设备地址 \param cmdidx -- 指令索引号 \param bACD -- 一类数据存在标识 \param bClearRecvBuf -- 是否清除接收缓冲区 \param cmdtype-- 指令缓冲区类型 \retval 无 \note 无\n */ void ProvMakeLinkCommandEx(u_32 commid, u_char addr, u_char cmdidx, BOOL bACD, BOOL bClearRecvBuf, u_32 cmdtype); /*! \brief 转发数据指令的生成 \param commid -- 厂站端口号 \param addr -- 间隔设备地址 \param cmdidx -- 指令索引号 \param bACD -- 一类数据存在标识 \param bCause -- 传送原因 \param cmdtype-- 指令缓冲区类型 \retval 无 \note 无\n */ void ProvMakeVarCommand(u_32 commid, u_char linkaddr, u_char addr, u_char cmdidx, BOOL bACD, BYTE bCause, u_32 cmdtype); /*! \brief 转发命令处理 \param portidx -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \retval 无 \note 无\n */ void ProvRtuProtocolDataProcess(int commid, RTUMSG *rtumsg); /*! \brief 保护命令数据处理函数 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvSendCmdToPort(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 短帧数据转发处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \retval 无 \note 无\n */ void Provshortprocess(u_32 commid, RTUMSG *rtumsg); /*! \brief 转发一类数据处理 \param commid -- 厂站端口号 \param addr -- 间隔设备地址 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvPL1process(u_32 commid, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发二类数据处理 \param commid -- 厂站端口号 \param addr -- 间隔设备地址 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvPL2process(u_32 commid, DEVADDRPARAM *psDevAddrParam); /*! \brief 长帧数据转发处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \retval 无 \note 无\n */ void Provlongprocess(u_32 commid, RTUMSG *rtumsg); /*! \brief 转发时间同步处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \retval 无 \note 无\n */ void ProvSYNprocess(u_32 commid, RTUMSG *rtumsg); /*! \brief 转发总查询(总召唤)处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvTGIprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发通用分类数据处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvGDprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发一般命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvGRCprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发通用分类命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvGCprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发扰动数据传输的命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvODTprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发扰动数据传输的认可处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvADTprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发控制断路器命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvDCprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发升降命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvRCprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发设定命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvSEprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发控制命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvCCprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发电能脉冲计数召唤命令处理 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ void ProvCIprocess(u_32 commid, RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam); /*! \brief 转发全部组标题 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ BOOL ProvMakeTitleOfGroups(u_32 commid, RTUMSG *rtumsg, PROVDEVDEF *pProvDevParam, GROUPDEF *pBaoHuDB, int iNum); /*! \brief 转发一个组的全部条目的值或属性 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \param bContinue- 未传送的保护数据继续 \retval 无 \note 无\n */ BOOL ProvMakeAttrOfAllItemInGroup(u_32 commid, RTUMSG *rtumsg,\ PROVDEVDEF *pProvDevParam,\ GROUPDEF *pBaoHuDB, int iNum); /*! \brief 转发一个条目的目录 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ BOOL ProvMakeDirOfItem(u_32 commid, RTUMSG *rtumsg, PROVDEVDEF *pProvDevParam, GROUPDEF *pBaoHuDB, int iNum); /*! \brief 转发一个条目的值或属性 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ BOOL ProvMakeAttrOfItem(u_32 commid, RTUMSG *rtumsg, PROVDEVDEF *pProvDevParam, GROUPDEF *pBaoHuDB, int iNum); /*! \brief 转发遥信变位 \param commid -- 厂站端口号 \param rtumsg -- 接收到的数据信息 \param iBuIdx -- 保护装置(间隔)索引 \retval 无 \note 无\n */ BOOL ProvSendChangedDi(u_32 commid, DEVADDRPARAM *psDevAddrParam); /*! \brief 单个定值的打包 \param pbDestBuf -- 目的缓冲区指针 \param uMaxBufLen -- 目的缓冲区最大长度 \param bDataFormat -- 数据格式 \param uDataType -- 数据类型 \param uDataLen -- 源数据长度 \param pbSourData -- 源数据缓冲区指针 \retval 无 \note 无\n */ i_32 PackOneValueIntoPackage(BYTE *pbDestBuf, u_32 uMaxBufLen, BYTE bDataFormat, u_32 uDataType, u_32 uDataLen, BYTE *pbSourData); // 部颁103和斯凯达内部规约间的格式转换 void Buban103ScadaCmdchange(int commid, RTUMSG *rtumsg); void Buban103ScadaDatachange(int commid, RTUMSG *rtumsg); void Buban103ScadaProtocolExchange(int commid, RTUMSG *rtumsg); void Buban103GDprocessWithPAIToScada(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); void Buban103GDprocessWithPDIToScada(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); void Buban103GDprocessWithPFIXToScada(RTUMSG *rtumsg, DEVADDRPARAM *psDevAddrParam, i_32 iGroupIdx); // 调试信息显示 void Buban103DispConfig(int commid, BUBAN103PORTPARAM *psPortParam); void Buban103DispMalloc(int commid, int iSize); /////////////////////////规约处理函数接口结束/////////////////////////// #endif // !defined(_BUBAN103_H_200504221547__INCLUDED_)