You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

299 lines
10 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/****************************************************************************
** 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