#ifndef _ECATMAIN_H_ #define _ECATMAIN_H_ #include #include "./config.h" #include "./network.h" #include "./pcc.h" #define NET_STATUS_OP 8 #define NET_TIMEOUT 300 #define NET_TIMES 3 #define SLAVE_NUM_MAX 128 #define PCC_NUM_MAX 16 #define EAU_NUM_MAX 16 #define CCU_NUM_MAX 64 #define PCS_NUM_MAX 4 typedef union _CCM_ENABLE_ { uint16_t value; struct { uint16_t remote :1; uint16_t ccs :1; uint16_t ffr :1; uint16_t fvr :1; uint16_t fpu :1; // 备用 uint16_t bak :11; }sub; }uCCMEnable; typedef union _SYS_ENABLE__ { uint16_t value; struct { //精切负荷(FPU)功能投入允许 uint16_t fpu_enable :1; //精切负荷(FPU)功能投入 uint16_t fpu_is_enable :1; //精切负荷(FPU)信号单双接点模式 uint16_t fpu_is_double_signal :1; //精切负荷(FPU)指令脉冲 uint16_t fpu_command_pulse :1; //精切负荷(FPU)动作 uint16_t fpu_is_action :1; //一次调频(FFR)功能投入允许 uint16_t ffr_enable :1; //一次调频(FFR)功能投入 uint16_t ffr_is_enable :1; //一次调频(FFR)动作 uint16_t ffr_is_action :1; //一次调频测试(FFR_S)投入/退出 uint16_t ffr_test_enable :1; //一次调频模拟(FFR_S)频率测试 uint16_t ffr_test_analog_frequency :1; //一次调频特性参数测试(一次调频特性曲线模式(FFR_WT) uint16_t ffr_test_start :1; //一次调频增负荷测试中 uint16_t ffr_test_load_add :1; //一次调频减负荷测试中 uint16_t ffr_test_load_dec :1; uint16_t bak :3; }Bits; }uSysEnable; typedef union _SYS_STATUS__ { uint16_t value; struct { //CCM总故障状态 uint16_t ccm_total_error :1; //CCM总告警状态 uint16_t ccm_total_warn :1; //CCM自检故障 uint16_t ccm_self_test_error :1; //ECM通讯故障 uint16_t ecm_connect_error :1; //EAU通讯故障 uint16_t eau_connect_error :1; //CCU通讯故障 uint16_t ccu_connect_error :1; //PCS通讯故障 uint16_t pcs_connect_error :1; //CCM硬允许状态 uint16_t ccm_hard_enable :1; //CCM主备机状态 uint16_t ccm_is_host :1; //CCS使能状态 uint16_t ccs_enable :1; //CCS就绪状态 uint16_t ccs_is_ready :1; //EAU有DI断开 uint16_t eau_di_cut :1; uint16_t bak :4; }Bits; }uSysStatus; typedef enum __TASK_STATUS__ { T_NONE = 0, T_EMS, T_FFR, T_FVR, T_FPU, T_EXIT }eTaskStatus; typedef struct __ECAT_DATA__ { sCCSConfig cfg ; int ptct ; //STM32 uint16_t another_heart ; uint16_t ccm_mode ; uint16_t ccm_type ; uCCMEnable enable ; uint16_t fpu_signal_mask ; uSysStatus sys_status; uSysEnable sys_enable; int32_t t_pcs_active_power; int32_t t_pcs_reactive_power; int32_t t_pcs_active_power_cmd; int32_t t_pcs_reactive_power_cmd; eTaskStatus task_status; uint16_t pcc_mode[PCC_NUM_MAX]; NetNode netNode[SLAVE_NUM_MAX] ; sPCC *pccHead ; uint16_t pccIndex ; sPCC *pccArray[16] ; uint16_t eauIndex ; sEAU *eauArray[16] ; uint16_t ccuIndex ; sCCU *ccuArray[64] ; }sECatData; typedef struct __RESET_TASK_ { int timeout; uint32_t timestart; bool enable; }sResetNode; class ECatMain{ public : ECatMain() ; ~ECatMain() ; int loadConfig(const char *xml); sECatData *getData(void); sEAU *getEAUByAddress(int para_addr); sCCU *getCCUByAddress(int para_addr); private : sECatData mData ; }; #endif