/**************************************************************************** ** File name : HTDataStruct.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 __HT_DATA_STRUCT_H #define __HT_DATA_STRUCT_H #include #include "HTConst.h" #include "iec61850_client.h" #include "iec61850_model.h" #include "iec61850_dynamic_model.h" #include "iec61850_config_file_parser.h" #pragma pack (push ,1) #define HT_COMTRADE_REDOWN 1 // 待下载 #define HT_COMTRADE_DOWNED 2 // 下载完成,待解析入库 // 地址装置关系 typedef struct { char szMID[DEF_BUFFER_32+1]; // 主变ID char szSID[DEF_BUFFER_32 + 1]; // 装置ID char szSysCode[DEF_BUFFER_32 + 1]; // 装置编码,唯一 char szSersorID[DEF_BUFFER_32 + 1]; // 装置编码,唯一 char szMDevName[DEF_BUFFER_128]; // 主变名称 char szSubName[DEF_BUFFER_128]; // 装置名称 char cSlaveID; // Modbus地址,对应一个装置的ID char cDevType; // 装置类别 1:振动装置 2:噪声装置 3:中心点装置 char cSide; // 原副边 P: 原边 S:副边,仅当device_type=1时有效 char cPhase; // 相位 A:A相 B:B相 C:C相 O:全相;,仅当device_type=1时有效 char cInOut; // 上次侧或进出侧 I:上侧/进口侧 O:下侧/出口侧; 仅当device_type=1时有效 }ST_DEVICE_INFO; // 设备阈值配置信息 typedef struct { char szMID[DEF_BUFFER_32+1]; // 主变设备ID char szSysCode[DEF_BUFFER_32+1]; // 主变设备system_code char szMDevName[DEF_BUFFER_128]; // 主变名称 char szSubID[DEF_BUFFER_32 + 1]; // 传感器ID char szSensorID[DEF_BUFFER_32]; // 传感器SersorID char szSDevName[DEF_BUFFER_128]; // 传感器名称 char bDevType; // 1:振动装置 2:噪声装置 3:中心点装置 //ST_THRESHOLD_ATTR stThresAttr; // 阈值属性 char bSide; // P:原边 S:副边 char bPhase; // 相位 A、B、C、O char bInOut; // 进口-上侧/出口-下侧 char szFrequency[4+1]; // 频率,50Hz~1200Hz double dThreshold; // 告警值 }ST_THRES_CONF; // 振动装置实时数据体 typedef struct { // 原边振动监测值 double AccPri1; // 原边A相上侧50Hz double AccPri2; // 原边A相下侧50Hz double AccPri3; double AccPri4; double AccPri5; double AccPri6; double AccPri7; double AccPri8; double AccPri9; double AccPri10; double AccPri11; double AccPri12; double AccPri13; double AccPri14; double AccPri15; double AccPri16; double AccPri17; double AccPri18; double AccPri19; // 副边振动监测值 double AccSec1; // 副边A相上侧100Hz double AccSec2; double AccSec3; double AccSec4; double AccSec5; double AccSec6; double AccSec7; // 副边A相上侧700Hz double EnvNoiPri; // 噪声监测值(dB) double NeuCur; // 中心点监测值(A) }ST_MONI_DATA; // 传感器控制参数 typedef struct { char szMID[DEF_BUFFER_32 + 1]; // 主变设备ID char szSysCode[DEF_BUFFER_32 + 1]; // 主变设备system_code char szSubID[DEF_BUFFER_32 + 1]; // 传感器ID char szSensorID[DEF_BUFFER_32]; // 传感器SersorID char szSubName[DEF_BUFFER_128]; // 传感器名称 // 控制参数-下设IED参数 bool isEnable; // TRUE:启动传感器工作 FLASE: 禁用工作 bool alone; // 独立测试, true:yes false: no int SmpProd; // 采集频率(KHz) int SmpInt; // 采样间隔(小时) int StartTime; // 起始时间 }ST_CONTROL_CONF; // 告警分量信息体 typedef struct { // 传感器及通信告警 bool MoDevConf; // IED与监测设备通讯异常 bool MoDevDetF; // 传感器自检异常 bool MoDevSigF; // 传感器信号异常 bool MoDevPowF; // 传感器供电异常 bool EnvNoiPriAlm;// 原边环境噪声告警 bool NeuCurAlm; // 中性点电流告警 // 原边告警分量 bool AccPriAlm1; // 原边50Hz告警分量 bool AccPriAlm2; bool AccPriAlm3; bool AccPriAlm4; bool AccPriAlm5; bool AccPriAlm6; bool AccPriAlm7; bool AccPriAlm8; bool AccPriAlm9; bool AccPriAlm10; bool AccPriAlm11; bool AccPriAlm12; bool AccPriAlm13; bool AccPriAlm14; bool AccPriAlm15; bool AccPriAlm16; bool AccPriAlm17; bool AccPriAlm18; bool AccPriAlm19; // 副边告警分量 bool AccSecAlm1; bool AccSecAlm2; bool AccSecAlm3; bool AccSecAlm4; bool AccSecAlm5; bool AccSecAlm6; bool AccSecAlm7; }ST_WARN_ALARM; // 传感器阈值属性 typedef struct { char bSide; // P:原边 S:副边 char bPhase; // 相位 A、B、C、O char bInOut; // 进口-上侧/出口-下侧 int iFrequency; // 频率,50Hz~1200Hz double dThreshold; // 告警值 }ST_THRESHOLD_ATTR; // 链接管理结构体 typedef struct { char ied_addr[32]; int ied_port; IedConnection hConnHandle; // 链接句柄 bool bIsConnect; // 链接状态, true:connected flase:disconnect bool bWarn; // time_t iLastTime; // 最近一次链接时间 time_t iLastActionTime;// 最近一次活动时间 time_t iLastAlaarmTime; // 最近一次链接告警时间 IedModel *tIedModel; // 模型句柄 }ST_IED_CONN_HANDLE; // iec61850 录播文件属性定义 typedef struct _comtrad_files_attrib { char bstat; // 1:待下载 2:下载完成 short sNo; // 文件序号,系统自编 int iFileSize; // 文件长度 char szFileName[_MAX_DIR]; // 文件路径名+文件名称 }ST_FILES_ATTRIB; // 录播文件格式定义 typedef struct { int sno; // 序号 int tme; // 时间,ms short A1; // 震动装置原边A项上侧 short A2; // 震动装置原边A项下侧 short B1; // 震动装置原边B项上侧 short B2; // 震动装置原边B项下侧 short C1; // 震动装置原边C项上侧 short C2; // 震动装置原边C项下侧 short a1; // 震动装置副边A项上侧 short a2; // 震动装置副边A项下侧 short b1; // 震动装置副边B项上侧 short b2; // 震动装置副边B项下侧 short c1; // 震动装置副边C项上侧 short c2; // 震动装置副边C项下侧 short nsi; // 噪声(dB) short crt; // 中心点电流(A) }ST_COMTRAD_DATA; // icd配置节点绑定关系 typedef struct { // 传感器组号,节点组号 01=原边A上 02=原边A下 03=原边B上 04=原边B下 05=原边C上 06=原边C下 // 07=副边A上 08=副边A下 09=副边B上 10=副边B下 11=副边C上 12=副边C下 int nodeid; // 节点/传感器ID char szFrequency[5]; //频率 char sensorid[DEF_BUFFER_32 + 1]; // sensor_code char nodename[128]; // 节点名称 char nodetype[4]; // 节点类型 MX,ST,SE char monitype; // 监测类型: 1=振动监测值 2=振动告警 3=噪声监测值 4=噪声告警 5=中心点监测 6=中心点告警 }ST_PARAM_BIND; // IED返回数据体 typedef struct { double MX_f; // MX监测值,振动值、噪声、中心点 bool ST_val; // ST监测值,各项告警值 int SE_Val; // SE设定值,下设参数 time_t t; // 时间值 }ST_IED_VALUES; // 传感器基本信息 typedef struct { char szSubID[DEF_BUFFER_32 + 1]; // 传感器ID char szSensorID[DEF_BUFFER_32]; // 传感器SersorID char szSDevName[DEF_BUFFER_128]; // 传感器名称 char bDevType; // 1:振动装置 2:噪声装置 3:中心点装置 ST_CONTROL_CONF stControl; // 控制参数下设 map map_stThres; // 阈值属性, map map_stParamBind; // icd配置节点绑定关系,key=nodename // 实时监测数据 ST_MONI_DATA stMoni; // 传感器实时监测数据 ST_WARN_ALARM stAlarm; // 传感器告警监测数据 ST_FILES_ATTRIB stComtradFile; // 录播文件属性 ST_COMTRAD_DATA stComtradeContext;// 录播文件解析数据 }ST_BASE_DEVICE_INFO; // 校时配置 typedef struct { int sntp_port; // port char sntp_s_ip[32]; // sntp_server address bool manual; // true: 手动 }ST_SNTP_CONF; // 振动装置表结构 typedef struct { char file_id[DEF_BUFFER_32+1]; // 录播文件ID char m_id[DEF_BUFFER_32 + 1]; // 主变ID char s_id[DEF_BUFFER_32 + 1]; // 传感器ID char szSensorID[DEF_BUFFER_32 + 1]; // SensorID char szDevType; // 1:振动装置 2 : 噪声装置 3 : 中心点装置 char szFrequency[5]; // 频率 char side; // 原副边P:原边 S:副边 char phase; // 相位 char in_out; // 上下侧 U:上侧 D:下侧 double value; // 幅值,噪声,中心点 time_t dtime; // 监测时间 }ST_DB_BODY; // 报警表结构 typedef struct { char s_id[DEF_BUFFER_32 + 1]; // 传感器ID char valunit[8]; // 采样值单位:dB,A,mm/s2 char szDesc[128]; // 告警描述 char warn_type; // 告警分类 1:通信异常告警 2:装置自检异常告警 3:信号异常告警 4:供电异常告警 5:振动阈值告警 // 6:噪声阈值告警 7:中心点阈值告警 8:日增长率告警 9:月增长率告警 10:月偏差率告警 // 11: 服务器与IED通信异常 // 12:传感器振动告警 13:传感器噪声告警 14:传感器中心点告警 char level; // 告警级别 0:高 1:中 2:低 char state; // 处理状态 0:已处理 1:未处理 double value; // 幅值,噪声,中心点 time_t almtime; // 告警时间 }ST_DB_WARN; // IEC61850设备配置信息 typedef struct { char szMID[DEF_BUFFER_32 + 1]; // 主变设备ID char szSysCode[DEF_BUFFER_32 + 1]; // 主变设备system_code char szMDevName[DEF_BUFFER_128]; // 主变名称 ST_BASE_DEVICE_INFO stBaseInfo; // 传感器基本信息 ST_IED_CONN_HANDLE stConnect; // IED链接参数 ST_SNTP_CONF stSntp; // 校时配置 }ST_HT_IEC61850; #pragma pack (pop) #endif // end