/**************************************************************************** ** 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.id,map.key unsigned char s_sys_code[DEF_EQM_CODE_SIZE]; // 从设备ID,对应表busi_site_tree.id,map.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