/**************************************************************************** ** 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" //#include "modbus/modbus.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:中心点装置 4:环境监测 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 cDevType; // 1:振动装置 2:噪声装置 3:中心点装置 4:环境监测装置 //ST_THRESHOLD_ATTR stThresAttr; // 阈值属性 char bSide; // P:原边 S:副边 char bPhase; // 相位 A、B、C、O char bInOut; // 进口-上侧/出口-下侧 char szFrequency[4+1]; // 频率,50Hz~1200Hz double dThreshold; // 告警值,cDevType=4时,温度告警值 double dHumidValue; // 告警值,cDevType=4时,湿度告警值 }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]; // 传感器名称 //char szChannel[DEF_BUFFER_128]; // IED通道参数 // IED 地址和端口 char szIedIP[DEF_BUFFER_32 + 1]; // IED地址 int iPort; // IED端口 // 控制参数-下设IED参数 char side; // P:原边 S:副边 char phase; // 相位,A,B,C,O char in_out; // U:上侧 D:下侧 char cDevType; // 1:振动装置 2:噪声装置 3:中心点装置 4:环境监测装置 bool isEnable; // TRUE:启动传感器工作 FLASE: 禁用工作 bool alone; // 独立测试, true:yes false: no int SmpProd; // 采集频率(KHz) int SmpInt; // 采样间隔(小时) int StartTime; // 起始时间 bool isUpdate; // 是否修改 0:未更新 1:更新 }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 mID[32 + 1]; // Mid char szChannel[DEF_BUFFER_128]; // IED通道参数 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; // 最近一次链接告警时间 time_t iLastGetDCTime; // 最近一次获取数据时间 //IedModel *IedModel; // 模型句柄 int hModbusHandle; // modbus handle time_t iCtrlTime; // 最近一次定时更新控制参数时间 time_t iGetModbusLastTime; // 当前modbus采集时间 bool isCtrlUpdate; // 是否更新控制参数 }ST_IED_CONN_HANDLE; // iec61850 录播文件属性定义 typedef struct _comtrad_files_attrib { char bstat; // 1:待下载 2:下载完成 short sNo; // 文件序号,系统自编 int iFileSize; // 文件长度 char szFileName[MAX_PATH]; // 远程文件路径名+文件名称 //char szLocalFileName[MAX_PATH]; // 本地文件路径名+文件名称 }ST_FILES_ATTRIB; // 录播文件格式定义 typedef struct { int sno; // 序号 int tme; // 时间,ms short nsi; // 噪声(dB),10000个数,每个数2字节,以下同 short crt; // 中心点电流(A) 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项下侧 }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 bindid; // 参数绑定ID int nodeid; // 节点/传感器ID char mID[DEF_BUFFER_32 + 1]; // Mid 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=中心点告警 7=环境监测 8=环境监测告警 char file_id[DEF_BUFFER_32 + 1]; // 录播文件ID bool bAlm; // 告警位 true=告警 time_t dtime; // 采集时间 double dvalue; //监测值 }ST_PARAM_BIND; // Modbus寄存器绑定关系 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下 char szFileID[DEF_BUFFER_32 + 1]; // 录播文件ID char mID[DEF_BUFFER_32 + 1]; // Mid char sub_id[DEF_BUFFER_32 + 1]; // sid char sencode[DEF_BUFFER_32 + 1]; // sensor_code unsigned short addr; // 寄存器地址 char szDesc[128]; // 节点名称 char cDevType; // 1:振动装置 2 : 噪声装置 3 : 中心点装置 4: 环境监测装置 char szFrequency[5]; // 频率 char side; // 原副边P:原边 S:副边 char phase; // 相位 char in_out; // 上下侧 U:上侧 D:下侧 char nodetype[4]; // 节点类型 MX,ST,SE char monitype; // 监测类型: 1=振动监测值 2=振动告警 3=噪声监测值 4=噪声告警 5=中心点监测 6=中心点告警 double value; // 幅值,噪声,中心点 time_t lastime; // 监测时间 }ST_MODBUS_REG_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 cDevType; // 1:振动装置 2:噪声装置 3:中心点装置 4:环境监测装置 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 cDevType; // 1:振动装置 2 : 噪声装置 3 : 中心点装置 4:环境监测装置 char szFrequency[5]; // 频率 char side; // 原副边P:原边 S:副边 char phase; // 相位 char in_out; // 上下侧 U:上侧 D:下侧 double value; // 幅值,噪声,中心点 double dhumiValue; // cDevType=4,湿度监测值 time_t dtime; // 监测时间 }ST_DB_BODY; #define WARN_SELF_MoDevConf "振动传感器通信异常" // #define WARN_SELF_MoDevDetF "环境噪声_中性点传感器通信异常" //"传感器自检异常" #define WARN_SELF_MoDevSigF "振动传感器故障" //"传感器信号异常" #define WARN_SELF_MoDevPowF "环境噪声_中性点传感器故障" //"传感器供电异常" #define WARN_SELF_EnvNoiPriAlm "传感器噪声告警" #define WARN_SELF_NeuCurAlm "传感器中性点电流告警" #define WARN_SELF_AmpliteAlm "传感器振动告警" #define WARM_SELF_EnviAlm "传感器环境告警" #define WARN_CHEK_UTILALM "未知传感器监测单元" #define WARN_CHEK_BOARD1 "采样板1通信异常" #define WARN_CHEK_BOARD2 "采样板2通信异常" #define WARN_CHEK_BOARD3 "采样板12通信异常" #define WARN_CHEK_BOARD4 "采样板3通信异常" #define WARN_CHEK_BOARD5 "采样板13通信异常" #define WARN_CHEK_BOARD6 "采样板23通信异常" #define WARN_CHEK_BOARD7 "采样板123通信异常" #define WARN_CHEK_FAULT1 "采样板1传感器故障异常" #define WARN_CHEK_FAULT2 "采样板2传感器故障异常" #define WARN_CHEK_FAULT3 "采样板12传感器故障异常" #define WARN_CHEK_FAULT4 "采样板3传感器故障异常" #define WARN_CHEK_FAULT5 "采样板13传感器故障异常" #define WARN_CHEK_FAULT6 "采样板23传感器故障异常" #define WARN_CHEK_FAULT7 "采样板123传感器故障异常" #define WARN_CHEK_UNKONE "未知异常" #define IED_CONNECT_ERRMSG "链接异常" // 报警表结构 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; // 幅值,噪声,中心点 double defval; // 阈值 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; // 临时控制参数文件格式定义 //共18字节 //采样频率(K) 采样间隔 起始时间 使能信号 噪声通道号 中性电流通道号 原边A相上侧 原边A相下侧 原边B相上侧 原边B相下侧 原边C相上侧 原边C相下侧 副边A相上侧 副边A相下侧 副边B相上侧 副边B相下侧 副边C相上侧 副边C相下侧 //0A 01 08 01 01 03 09 0A 0B 0C 0D 0E 11 12 13 14 15 typedef struct { char plv; // 采样频率(K) char gtm; // 采样间隔 char stm; // 起始时间 char enb; // 使能信号 char nos; // 噪声通道号 char crt; // 中心点电流(A) char A1; // 震动装置原边A项上侧 char A2; // 震动装置原边A项下侧 char B1; // 震动装置原边B项上侧 char B2; // 震动装置原边B项下侧 char C1; // 震动装置原边C项上侧 char C2; // 震动装置原边C项下侧 char a1; // 震动装置副边A项上侧 char a2; // 震动装置副边A项下侧 char b1; // 震动装置副边B项上侧 char b2; // 震动装置副边B项下侧 char c1; // 震动装置副边C项上侧 char c2; // 震动装置副边C项下侧 }ST_TEMPCTRL_CONF; #pragma pack (pop) #endif // end