|
|
/****************************************************************************
|
|
|
** 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 <map>
|
|
|
#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 *IedModel; // 模型句柄
|
|
|
}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<int, ST_THRESHOLD_ATTR> map_stThres; // 阈值属性,
|
|
|
map<string, ST_PARAM_BIND> 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
|
|
|
|