/**************************************************************************** ** 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 #include 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 fval; time_t ts; } IEC_FIELD; typedef struct tagCACHED_DEV_DATA { IEC_DEVICE* device; time_t firstTs; size_t assignedFields; std::map > fields; }CACHED_DEV_DATA; 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 orgin_data_save_internal; // 104原始数据保存时间(s) unsigned int action_interval; // 总召间隔时间(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