|
|
/****************************************************************************
|
|
|
** File name : HTHP104Table.h
|
|
|
** Description : define data struct
|
|
|
** Create date : 2018.09.01
|
|
|
** Auther by : Liuyx
|
|
|
** Version info : V1.0.01
|
|
|
** Copyright (C) 2002-2018 xi'an huatek, Inc Co., Ltd
|
|
|
** Update record:
|
|
|
** DATE AUTHER DESC
|
|
|
** -------------------------------------------------------------------------
|
|
|
** 2018.09.01 Liuyx first build
|
|
|
****************************************************************************/
|
|
|
#ifndef __HP104_TABLE
|
|
|
#define __HP104_TABLE
|
|
|
|
|
|
static const char IEC_CONFIMG_FILE[] = "../etc/ht_iec104.conf";
|
|
|
|
|
|
#pragma pack (push ,1)
|
|
|
|
|
|
// 一个单元的信息体
|
|
|
typedef struct {
|
|
|
int count; // 索引,0开始
|
|
|
unsigned int objaddr; // 信息对象地址(3)
|
|
|
unsigned int objval; // 值域
|
|
|
}ST_OBJVAL;
|
|
|
|
|
|
typedef struct {
|
|
|
unsigned char stype; // 类型
|
|
|
time_t dtime;
|
|
|
unsigned int sadr; // 信息对象地址(3)
|
|
|
union { // 值域
|
|
|
unsigned int ival;
|
|
|
float fval;
|
|
|
};
|
|
|
}IEC_OBJVAL_NEW;
|
|
|
|
|
|
typedef struct tagIEC_DEVICE
|
|
|
{
|
|
|
unsigned int site_id; // 站点ID
|
|
|
unsigned int sensor_id; // 装置ID
|
|
|
unsigned char eqm_code[DEF_EQM_CODE_SIZE]; // eqm_code,主设备ID,对应busi_site_tree.id
|
|
|
unsigned char sys_code[DEF_EQM_CODE_SIZE]; // sys_code,主设备ID,对应iec_sites.system_code
|
|
|
unsigned char tableName[DEF_EQM_CODE_SIZE * 2]; // 阈值字段名称,transformer_runing_status_threshold表字段
|
|
|
unsigned char devidFieldName[DEF_EQM_CODE_SIZE * 2]; // 数据表sensor id字段名称
|
|
|
unsigned char dtimeFieldName[DEF_EQM_CODE_SIZE * 2]; // 数据表采集时间字段名称
|
|
|
unsigned char one_dtime;
|
|
|
}IEC_DEVICE;
|
|
|
|
|
|
typedef struct tagIEC_FIELD
|
|
|
{
|
|
|
std::string name;
|
|
|
float value;
|
|
|
time_t ts;
|
|
|
} IEC_FIELD;
|
|
|
|
|
|
typedef struct tagIEC_POINT
|
|
|
{
|
|
|
unsigned int sadr; // 信息体地址,map.key
|
|
|
unsigned char stype; // 地址类型 1:遥信 2:遥测
|
|
|
unsigned int sensor_id; // 装置ID
|
|
|
unsigned char fieldName[DEF_EQM_CODE_SIZE * 2]; // 阈值字段名称,transformer_runing_status_threshold表字段
|
|
|
unsigned char isget; // 评测字段提取标志,YX:{1=总开关状态 2=发电状态 3=抽水状态 4=事故状态} YC:{1=提取 0:不提取}
|
|
|
unsigned short unit; // 104协议数据单位
|
|
|
unsigned short sysunit; // 系统固定的字段单位,参与评测数据
|
|
|
double devrate; // 偏差率,当值在±之间时,保存数据
|
|
|
unsigned char eqm_type; // 设备类型 1:主变 2:GIS 3:测温 4:避雷器
|
|
|
unsigned char warnFlag; // 告警判断, =1:>预警值时告警 =2:<预警值时告警(压力) 油位如何告警(最低/高)?
|
|
|
time_t dtime; // 告警时间
|
|
|
unsigned char wstate; // 工作状态:1-发电状态 2:抽水状态 3:空闲状态
|
|
|
unsigned char bfault; // 主变事故状态:0-正常 1-事故状态
|
|
|
// unsigned char poidesc[DEF_BUFFER_256]; // 点表字段描述
|
|
|
}IEC_POINT;
|
|
|
|
|
|
|
|
|
// 变压器设备唯一编码
|
|
|
typedef struct _BYQ_EQM_CODE {
|
|
|
unsigned char szEqmCode[DEF_EQM_CODE_SIZE]; // 设备编码,16位
|
|
|
unsigned int uiHighVoltage; //发电状态: 主变高压侧电压点位
|
|
|
unsigned int uiHighCurrent; //发电状态: 主变高压侧电流点位
|
|
|
unsigned int uiLowVoltage; //抽水、空闲状态: 主变低压侧电压点位
|
|
|
unsigned int uiLowCurrent; //抽水、空闲状态: 主变低压侧电流点位
|
|
|
|
|
|
unsigned int uiCoolWaterPressEntry; //主变冷却水进口压力点位
|
|
|
unsigned int uiCoolWaterPressOuter; //主变冷却水出口压力点位
|
|
|
unsigned int uiCoolWaterTempEntry; //主变冷却水进口温度点位
|
|
|
unsigned int uiCoolWaterTempOuter; //主变冷却水出口温度点位
|
|
|
|
|
|
unsigned int uiOilPressEntry; //主变油进口压力点位
|
|
|
unsigned int uiOilPressOuter; //主变油出口压力点位
|
|
|
unsigned int uiOilTempEntry; //主变油进口温度点位
|
|
|
unsigned int uiOilTempOuter; //主变油出口温度点位
|
|
|
|
|
|
unsigned int uiOilTemperature; //主变本体油温点位
|
|
|
unsigned int uiOilPosition; //主变本体油位点位
|
|
|
unsigned int uiOilTopTemp; //主变顶层油温点位
|
|
|
unsigned int uiOilPillowLevel; //主变油枕油位点位
|
|
|
unsigned int uiWindingTemp; //主变绕组温度点位
|
|
|
|
|
|
time_t stime;
|
|
|
time_t etime;
|
|
|
}ST_BYQ_EQM_CODE;
|
|
|
|
|
|
// 设备工作时间及状态记录
|
|
|
typedef struct _DEVICE_TIME_STAT {
|
|
|
unsigned char sys_code[DEF_EQM_CODE_SIZE]; // sys_code,主设备ID,对应busi_site_tree.system_code
|
|
|
unsigned char desct[DEF_BUFFER_256]; // sys_code,主设备ID,对应busi_site_tree.system_code
|
|
|
time_t usTime; // 最近一次记录时间
|
|
|
unsigned char wstate; // 工作状态:1-发电状态 2:抽水状态 3:空闲状态
|
|
|
}ST_DEVICE_TIME_STAT;
|
|
|
|
|
|
// 断路器设备唯一编码
|
|
|
typedef struct _BREAK_EQM_CODE {
|
|
|
unsigned char szEqmCodeA[DEF_EQM_CODE_SIZE]; // 设备编码,16位
|
|
|
unsigned char szEqmCodeB[DEF_EQM_CODE_SIZE]; // 设备编码,16位
|
|
|
unsigned char szEqmCodeC[DEF_EQM_CODE_SIZE]; // 设备编码,16位
|
|
|
unsigned int uiStateSadr; //断开状态点位地址 对应值含义=1:合 0:开
|
|
|
unsigned int uiAbortVoltage; //断开电压点位
|
|
|
unsigned int uiAbortCurrent; //断开电流点位
|
|
|
}ST_BREAK_EQM_CODE;
|
|
|
|
|
|
|
|
|
// IEC104协议基础配置信息
|
|
|
typedef struct _IEC104_CONF
|
|
|
{
|
|
|
unsigned int save_internal; // 104时间保存间隔时间(s)
|
|
|
unsigned int iec_byq_count; // 变压器数量
|
|
|
unsigned int iec_break_count; // 断路器数量
|
|
|
unsigned char site_id[DEF_EQM_CODE_SIZE]; // 站点ID
|
|
|
unsigned short iec_global_addr; // 公共地址
|
|
|
unsigned int yx_start_addr; // YX 0x0001- 遥信起始地址, 十进制数
|
|
|
unsigned int yx_stop_addr; // YX 0x1000- 遥信结束地址, 十进制数
|
|
|
unsigned int jb_start_addr; // JB 0x1001- 继电保护起始地址, 十进制数
|
|
|
unsigned int jb_stop_addr; // JB 0x4000- 继电保护结束地址, 十进制数
|
|
|
unsigned int yc_start_addr; // YC 0x4001- 遥测起始地址, 十进制数
|
|
|
unsigned int yc_stop_addr; // YC 0x5000- 遥测起始地址, 十进制数
|
|
|
ST_BYQ_EQM_CODE *pstByqCode; // 变压器设备系统唯一编码
|
|
|
ST_BREAK_EQM_CODE *pstBrkCode; // 断路器设备系统唯一编码
|
|
|
}ST_IEC104_CONF;
|
|
|
|
|
|
|
|
|
// 点表地址匹配关系
|
|
|
typedef struct {
|
|
|
unsigned int group; // 组号
|
|
|
unsigned int btype; // 电流、电压......
|
|
|
unsigned int sadr; // 相关联的其他sadr列表
|
|
|
}ST_MATCH_LIST;
|
|
|
typedef struct{
|
|
|
//unsigned char eqm_code[DEF_EQM_CODE_SIZE]; // 设备编码
|
|
|
unsigned char eqm_type; // 1:主变 2:GIS 3:测温 4:避雷器
|
|
|
unsigned int count; // *psadr的数量
|
|
|
ST_MATCH_LIST *psadr; //ST_MATCH_LIST[]
|
|
|
}ST_SADR_MATCH;
|
|
|
|
|
|
// 解析104报文的值缓存区、点表配置信息,表iec_point_conf
|
|
|
typedef struct _IECPOINT_TABLE
|
|
|
{
|
|
|
unsigned char stype; // 地址类型 1:遥信 2:遥测
|
|
|
unsigned char cval; // 遥信值
|
|
|
unsigned int sno; // 起始地址偏移量
|
|
|
unsigned int sadr; // 信息体地址,map.key
|
|
|
double fval; // 遥测值
|
|
|
unsigned char site_id[DEF_EQM_CODE_SIZE]; // 站点ID
|
|
|
unsigned char eqm_code[DEF_EQM_CODE_SIZE]; // eqm_code,主设备ID,对应busi_site_tree.id
|
|
|
unsigned char sys_code[DEF_EQM_CODE_SIZE]; // sys_code,主设备ID,对应busi_site_tree.system_code
|
|
|
unsigned char fieldname[DEF_EQM_CODE_SIZE * 2]; // 阈值字段名称,transformer_runing_status_threshold表字段
|
|
|
unsigned char isget; // 评测字段提取标志,YX:{1=总开关状态 2=发电状态 3=抽水状态 4=事故状态} YC:{1=提取 0:不提取}
|
|
|
unsigned short unit; // 104协议数据单位
|
|
|
unsigned short sysunit; // 系统固定的字段单位,参与评测数据
|
|
|
double devrate; // 偏差率,当值在±之间时,保存数据
|
|
|
unsigned char eqm_type; // 设备类型 1:主变 2:GIS 3:测温 4:避雷器
|
|
|
unsigned char warnFlag; // 告警判断, =1:>预警值时告警 =2:<预警值时告警(压力) 油位如何告警(最低/高)?
|
|
|
time_t dtime; // 告警时间
|
|
|
unsigned char wstate; // 工作状态:1-发电状态 2:抽水状态 3:空闲状态
|
|
|
unsigned char bfault; // 主变事故状态:0-正常 1-事故状态
|
|
|
unsigned char poidesc[DEF_BUFFER_256]; // 点表字段描述
|
|
|
}ST_IECPOINT_TABLE;
|
|
|
|
|
|
/* isget:
|
|
|
1:冷却水进口压力 2:冷却水出口压力 3:冷却水进口温度 4:冷却水出口温度
|
|
|
5:油泵进口油温 6:油泵出口油温 7:高压侧上层油温 8:主变绕组温度
|
|
|
9:主变本体油位 10:主变油枕油位 11:主变高/低压出口电压 12:主变高/低压出口电流
|
|
|
13:机组出口相电压 14:机组出口相电流 15:GIS电缆电压 16:GIS电缆电流 17:机组电气事故
|
|
|
18:变压器运行负荷 19: GIS负荷
|
|
|
|
|
|
// unit:
|
|
|
1:kV(千伏) 2:V(伏) 3:kA(千安) 4:A(安) 5:mA(毫安) 6:℃(度) 7:Pa(帕) 8:KPa(千帕) 9:MPa(兆帕) 10:pF(皮法)
|
|
|
11:pC(皮库仑) 12:dB(分贝) 13:μL(微升) 14:L(升) 15:m/s(米/秒) 16:rpm&r/min(转/分钟)
|
|
|
*/
|
|
|
|
|
|
#pragma pack (pop)
|
|
|
#endif // end
|
|
|
|