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.
iec104/include/HTMemCacheData.h

117 lines
4.9 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 : HTMemCacheData.h
** Description : define memory 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_MEM_CACHE_DATA_H
#define __HT_MEM_CACHE_DATA_H
#pragma pack (push ,1)
// 变压器三种工作状态下的阈值,运行工况阈值的字典
typedef struct
{
double value; // 阈值
char field[64]; // 阈值字段名称,对应阈值表中的字段名称
}ST_STAT_FIELD;
#define MAX_RUN_STATUS_COUNT 15 // 一个主变的最大运行工况阈值数量
typedef struct {
int fnum; // 阈值个数
ST_STAT_FIELD stField[MAX_RUN_STATUS_COUNT];
}ST_STAT_THRESHOLD;
// 变压器运行工况阈值缓存信息体
typedef struct{
unsigned char site_id[DEF_EQM_CODE_SIZE]; // 站点ID
unsigned char eqm_code[DEF_EQM_CODE_SIZE]; // 主设备ID,对应表busi_site_tree.id,map.key
unsigned char system_code[DEF_EQM_CODE_SIZE]; // 系统设备编码,strkey
unsigned char dev_name[DEF_EQM_CODE_SIZE * 2]; // 设备名称
unsigned char wstate; // 当前设备工作状态 1-发电状态 2抽水状态 3空闲状态
ST_STAT_THRESHOLD stThreashod[3]; // 0-发电状态 1抽水状态 2空闲状态
}ST_BYQ_RUN_STATE_THRESHOLD;
// 主变与其他主设备关联关系
typedef struct{
unsigned char site_id[DEF_EQM_CODE_SIZE]; // 站点ID
unsigned char m_eqm_code[DEF_EQM_CODE_SIZE]; // 主设备ID,对应表busi_site_tree.id.
unsigned char s_eqm_code[DEF_EQM_CODE_SIZE]; // 主设备ID,对应表busi_site_tree.idmap.key
unsigned char s_sys_code[DEF_EQM_CODE_SIZE]; // 从设备ID,对应表busi_site_tree.idmap.key
unsigned char s_eqm_type; // 设备类型 1:主变 2:GIS 3:测温 4:避雷器
unsigned char wstate; // 主变+GIS,工作状态 1-发电状态 2抽水状态 3空闲状态
unsigned char bClose; // GIS的开合状态0:分 1:合
unsigned char bfault; // 主变事故状态0-正常 1-事故状态
}ST_DEV_RELATION;
// 主变id工作状态列表
typedef struct{
unsigned char site_id[DEF_EQM_CODE_SIZE]; // 站点ID
unsigned char eqm_code[DEF_EQM_CODE_SIZE]; // 主设备ID,对应表busi_site_tree.id.
unsigned char eqm_name[DEF_BUFFER_128]; // 设备名称
unsigned char wstate; // 主变+GIS,工作状态 1-发电状态 2抽水状态 3空闲状态
unsigned char bfault; // 主变事故状态0-正常 1-事故状态
}ST_BYQWORK_STATUS;
// 是否有报警
//bool isWarnning(unsigned char *site_id, unsigned char *sys_code, int state, unsigned int saddr, double val);
bool isWarnning(ST_IECPOINT_TABLE &stPointt, double val);
// 获取系统设定的阈值
double getThresholdValuse(const char *eqm_code, const char *pFiledName, int jobState);
// 根据s_eqm_code获取对应的主变设备编码
bool bGetMasterEqmCodeBySubEqmCode(unsigned char *site_id, unsigned char *s_eqm_code, unsigned char *m_eqm_code);
// 刷新主变设备/GIS/避雷器运行状态
void flushDevWorkState(unsigned char *site_id, unsigned char *m_eqm_code, unsigned char state);
//刷新主变设备机组事故状态 state=false:正常 true:事故
bool flushFaultState(unsigned char *site_id, unsigned char *m_eqm_code, unsigned char state);
// 刷新GIS开关状态
bool flushDevCloseState(unsigned char *site_id, unsigned char *s_eqm_code, unsigned char state);
// 获取GIS的开关状态
unsigned char getGisOpenCloseState(unsigned char *site_id, unsigned char *s_eqm_code);
//从隶属关系map中获取设备工作状态
//返回0无效状态-没有找到该设备/设备无关联关系存在
unsigned char cGetCurrentWorkState(/*unsigned char *pszSite_id,*/ unsigned char *pszEqm_code);
/*************************************************************************/
// 设置主变工作状态
void vSetByqDeviceState(unsigned char *pszEqm_code, unsigned char state);
// 获取工作状态
unsigned char cGetByqDeviceState(unsigned char *pszEqm_code);
// 设置主变事故状态
void vSetByqDeviceFaultState(unsigned char *pszEqm_code, unsigned char state);
// 获取事故状态
unsigned char cGetByqDeviceFaultState(unsigned char *pszEqm_code);
void SethDevTimeStat(unsigned char *sys_code, unsigned char ws);
time_t GetDevTimeStat(unsigned char *sys_code, unsigned char *ws);
void ResetAllCachedDeviceData();
void ResetCachedDeviceData(CACHED_DEV_DATA& cachedDev);
std::string BuildSqlForDeviceData(CACHED_DEV_DATA& cachedDev);
bool AssignValueToDeviceData(CACHED_DEV_DATA& cachedDev, const IEC_OBJVAL_NEW& val);
#pragma pack (pop)
#endif // end