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