|
|
/************************************************************************************
|
|
|
*
|
|
|
* 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_)
|