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

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