增加控制功能

This commit is contained in:
zjk
2025-05-17 11:21:34 +08:00
parent 8585f0dd51
commit fb23554408
5 changed files with 532 additions and 4 deletions
+53
View File
@@ -346,6 +346,38 @@ public:
float emergency1BusbarVoltage;
} instrument_bus_status;
struct COMMON_STATUS
{
//超时状态
bool isTimeout;
//最后更新时间
double lastUpdateTime;
};
struct DeviceCommonStatus
{
COMMON_STATUS ccu_status;
COMMON_STATUS dis_hv_c1;
COMMON_STATUS dis_hv_c2;
COMMON_STATUS dis_lv_c1;
COMMON_STATUS dis_lv_c2;
} device_common_status;
struct DeviceOnlineStatus
{
//在线状态
//0x00: 未上线
//0x01: 在线
//0x02: 上线后掉线
uint8_t ins_online_state; //仪表锂电在线标志位
uint8_t dyn_online_state; //动力锂电在线标志位
uint8_t fuel_online_state; //燃电锂电在线标志位
uint8_t high_voltage_online_state; //高压配电板在线标志位
uint8_t low_voltage_online_state; //低压配电板在线标志位
uint8_t composite_online_state; //复合管控主机在线标志位
uint8_t composite_backup_online_state; //复合管控备机在线标志位
} device_online_status;
public:
SystemData(){
//初始化变量全部为0
@@ -353,6 +385,17 @@ public:
};
~SystemData();
void updateCommonStatus(double time_out=3){
//更新时间
double currentTime = MOOSTime();
//判断是否超时
device_common_status.ccu_status.isTimeout = (currentTime - device_common_status.ccu_status.lastUpdateTime) > time_out;
device_common_status.dis_hv_c1.isTimeout = (currentTime - device_common_status.dis_hv_c1.lastUpdateTime) > time_out;
device_common_status.dis_hv_c2.isTimeout = (currentTime - device_common_status.dis_hv_c2.lastUpdateTime) > time_out;
device_common_status.dis_lv_c1.isTimeout = (currentTime - device_common_status.dis_lv_c1.lastUpdateTime) > time_out;
device_common_status.dis_lv_c2.isTimeout = (currentTime - device_common_status.dis_lv_c2.lastUpdateTime) > time_out;
};
void updateSystemData(ccuState data){
fc_mode = data.fc_mode;
fc_status = data.fc_status;
@@ -481,6 +524,16 @@ public:
//设备在线状态
device_online_flag1 = data.device_online_flag1;
device_online_flag2 = data.device_online_flag2;
//更新设备在线状态
device_online_status.ins_online_state = (data.device_online_flag1 >> 0) & 0xFF; // byte0:仪表锂电在线标志位
device_online_status.dyn_online_state = (data.device_online_flag1 >> 8) & 0xFF; // byte1:动力锂电在线标志位
device_online_status.fuel_online_state = (data.device_online_flag1 >> 16) & 0xFF; // byte2:燃电锂电在线标志位
device_online_status.high_voltage_online_state = (data.device_online_flag1 >> 24) & 0xFF; // byte3:高压配电板在线标志位
device_online_status.low_voltage_online_state = (data.device_online_flag2 >> 0) & 0xFF; // byte0:低压配电板在线标志位
device_online_status.composite_online_state = (data.device_online_flag2 >> 8) & 0xFF; // byte1:复合管控主机在线标志位
device_online_status.composite_backup_online_state = (data.device_online_flag2 >> 16) & 0xFF; // byte2:复合管控备机在线标志位
//心跳计数器
heartbeat = data.heartbeat;