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

204 lines
3.4 KiB

#ifndef _ECATMAIN_H_
#define _ECATMAIN_H_
#include <string.h>
#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