777 lines
43 KiB
C++
777 lines
43 KiB
C++
#ifndef SYSTEMDATA_H
|
|
#define SYSTEMDATA_H
|
|
#include "pmSysvariable.h"
|
|
#include "sqlit3/SQLite.h"
|
|
#include <set>
|
|
#define DEBUFG
|
|
class SystemData
|
|
{
|
|
private:
|
|
SQLite* m_db;
|
|
public:
|
|
//燃料电池系统参数
|
|
uint8_t fc_mode; // 燃料电池系统运行模式:00H-无效, 01H-调试, 02H-自动, 03H-补给
|
|
uint8_t fc_status; // 燃料电池状态:00H-无效, 01H-初始化, ..., 0DH-维护完成
|
|
uint8_t fc_fault_level; // 燃料电池故障等级:00H-无故障, 10H-一级, 20H-二级, 30H-三级, 40H-四级
|
|
|
|
//功率和时间参数
|
|
float output_power_limit; // 系统输出功率限制值,单位:W
|
|
float total_generation_time; // 系统累计发电时间,单位:0.1小时
|
|
float total_generation_power; // 系统累计发电总功率,单位:W
|
|
|
|
//故障信息
|
|
uint16_t fc_fault_level_1; // 一级故障位
|
|
uint16_t fc_fault_level_2; // 二级故障位
|
|
uint16_t fc_fault_level_3; // 三级故障位
|
|
uint16_t fc_fault_level_4; // 四级故障位
|
|
|
|
//燃料容量
|
|
float hydrogen_capacity; // 储氢罐剩余容量百分比,单位:%
|
|
float liquid_oxygen_capacity; // 液氧罐剩余容量百分比,单位:%
|
|
|
|
//温度压力参数
|
|
float palladium_temp; // 钯膜最高温度,单位:℃
|
|
float main_pipe_pressure; // 主水路压力,单位:0.01kPa
|
|
float aux_pipe_pressure; // 辅水路压力,单位:0.01kPa
|
|
|
|
//舱室环境参数
|
|
float cabin_pressure1; // 舱室1压力,单位:0.01kPa
|
|
float cabin_pressure2; // 舱室2压力,单位:0.01kPa
|
|
float cabin_temp1; // 舱室1温度,单位:0.01℃
|
|
float cabin_temp2; // 舱室2温度,单位:0.01℃
|
|
float cabin_humidity1; // 舱室1湿度,单位:0.01%RH
|
|
float cabin_humidity2; // 舱室2湿度,单位:0.01%RH
|
|
|
|
//火焰探测器
|
|
uint8_t flame_detector1; // 火焰探测器1状态:00H-无效, 01H-报警, 02H-故障
|
|
uint8_t flame_detector2; // 火焰探测器2状态:00H-无效, 01H-报警, 02H-故障
|
|
|
|
//气体浓度
|
|
float h2_concentration1; // 舱室H2浓度1,单位:0.01% LEL
|
|
float h2_concentration2; // 舱室H2浓度2,单位:0.01% LEL
|
|
float h2_concentration3; // 舱室H2浓度3,单位:0.01% LEL
|
|
float o2_concentration1; // 舱室O2浓度1,单位:0.01% LEL
|
|
float o2_concentration2; // 舱室O2浓度2,单位:0.01% LEL
|
|
float ch3oh_concentration1; // 舱室甲醇气体浓度1,单位:0.01% LEL
|
|
float ch3oh_concentration2; // 舱室甲醇气体浓度2,单位:0.01% LEL
|
|
|
|
//保留字段
|
|
float reserved1[10]; // 保留字段
|
|
float cabin_ox_concentration; // 仪表舱内氧气浓度,单位:0.1%
|
|
float cabin_temperature; // 仪表舱内温度,单位:0.1℃
|
|
float cabin_humidity; // 仪表舱内湿度,单位:0.1%RH
|
|
float cabin_pressure; // 仪表舱内大气压,单位:0.2kPa
|
|
|
|
//动力舱参数
|
|
float power_cabin_ox_concentration; // 动力舱内氧气浓度,单位:0.1%
|
|
float power_cabin_temperature; // 动力舱内温度,单位:0.1℃
|
|
float power_cabin_humidity; // 动力舱内湿度,单位:0.1%RH
|
|
float power_cabin_pressure; // 动力舱内大气压,单位:0.2kPa
|
|
uint8_t reserved2[2]; // 保留字段
|
|
|
|
//电池报警标志
|
|
uint8_t dyn_alarm_flag[6]; // 动力锂电池报警标志
|
|
uint8_t ins_alarm_flag[6]; // 仪表锂电池报警标志
|
|
|
|
//继电器状态
|
|
uint8_t ins_relay_status1; // 仪表电池继电器状态
|
|
uint8_t ins_relay_status2; // 仪表电池预充继电器和负极继电器状态
|
|
uint8_t dyn_relay_status1; // 动力电池正极与充电继电器状态
|
|
uint8_t dyn_relay_status2; // 动力电池预充与负极继电器状态
|
|
|
|
//仪表电池继电器状态
|
|
uint8_t ins_pos_relay_status; // 仪表电池正极继电器状态 (X0H:无效 X1H:接通 X2H:断开)
|
|
uint8_t ins_charge_relay_status; // 仪表电池充电继电器状态 (0XH:无效 1XH:接通 2XH:断开)
|
|
uint8_t ins_precharge_relay_status; // 仪表电池预充继电器状态 (X0H:无效 X1H:接通 X2H:断开)
|
|
uint8_t ins_neg_relay_status; // 仪表电池负极继电器状态 (0XH:无效 1XH:接通 2XH:断开)
|
|
|
|
//动力电池继电器状态
|
|
uint8_t dyn_pos_relay_status; // 动力电池正极继电器状态 (X0H:无效 X1H:接通 X2H:断开)
|
|
uint8_t dyn_charge_relay_status; // 动力电池充电继电器状态 (0XH:无效 1XH:接通 2XH:断开)
|
|
uint8_t dyn_precharge_relay_status; // 动力电池预充继电器状态 (X0H:无效 X1H:接通 X2H:断开)
|
|
uint8_t dyn_neg_relay_status; // 动力电池负极继电器状态 (0XH:无效 1XH:接通 2XH:断开)
|
|
|
|
//电池功率参数
|
|
float ins_max_discharge_power; // 仪表电池最大允许放电功率,单位:0.05kW
|
|
float dyn_max_discharge_power; // 动力电池最大允许放电功率,单位:0.05kW
|
|
|
|
//电池SOC
|
|
int ins_soc; // 仪表锂电池荷电状态SOC,范围:0~100
|
|
int dyn_soc; // 动力锂电池荷电状态SOC,范围:0~100
|
|
|
|
//电池能量
|
|
float ins_total_energy; // 仪表电池总能量,单位:0.1kWh
|
|
float dyn_total_energy; // 动力电池总能量,单位:0.1kWh
|
|
|
|
//电池输入功率
|
|
float ins_power_input; // 仪表电池输入功率,单位:0.1kW
|
|
float dyn_power_input; // 动力电池输入功率,单位:0.1kW
|
|
|
|
//电池充放电状态
|
|
uint8_t ins_charge_status; // 仪表电池充放电状态:00H-无效,10H-充电,20H-放电
|
|
uint8_t dyn_charge_status; // 动力电池充放电状态:00H-无效,10H-充电,20H-放电
|
|
|
|
//电池电压电流
|
|
float ins_voltage_link; // 仪表电池LINK端电压,单位:0.01V
|
|
float ins_voltage_pack; // 仪表电池PACK端电压,单位:0.01V
|
|
float ins_current; // 仪表电池电流,单位:0.01A
|
|
float ins_resistance_pos; // 仪表电池正极绝缘电阻,单位:kΩ
|
|
float ins_resistance_neg; // 仪表电池负极绝缘电阻,单位:kΩ
|
|
float dyn_voltage_link; // 动力电池LINK端电压,单位:0.01V
|
|
float dyn_voltage_pack; // 动力电池PACK端电压,单位:0.01V
|
|
float dyn_current; // 动力电池电流,单位:0.05A
|
|
float dyn_resistance_pos; // 动力电池正极绝缘电阻,单位:kΩ
|
|
float dyn_resistance_neg; // 动力电池负极绝缘电阻,单位:kΩ
|
|
|
|
//紧急状态
|
|
uint8_t ins_emergency_status; // 仪表电池紧急状态
|
|
uint8_t dyn_emergency_status; // 动力电池紧急状态
|
|
|
|
//保留字段
|
|
uint8_t reserved3[2]; // 保留字段
|
|
float ins_soc_threshold1; // 仪表电池1 SOC门限
|
|
float ins_soc_threshold2; // 仪表电池2 SOC门限
|
|
float ins_soc_threshold3; // 仪表电池3 SOC门限
|
|
float dyn_soc_threshold1; // 动力电池1 SOC门限
|
|
float dyn_soc_threshold2; // 动力电池2 SOC门限
|
|
float dyn_soc_threshold3; // 动力电池3 SOC门限
|
|
float ins_power_limit1; // 仪表电池1功率限制值
|
|
float ins_power_limit2; // 仪表电池2功率限制值
|
|
float dyn_power_limit1; // 动力电池1功率限制值
|
|
float dyn_power_limit2; // 动力电池2功率限制值
|
|
|
|
//设备在线状态
|
|
uint32_t device_online_flag1; // 设备在线状态标志1
|
|
uint32_t device_online_flag2; // 设备在线状态标志2
|
|
|
|
//其他锂电池状态
|
|
uint8_t dyn_charge_level; // 动力电池充电状态:01H-1级(不限), 02H-2级(限功率), 03H-3级(关闭)
|
|
uint8_t dyn_water_leak_status; // 动力漏水状态:0XH-正常, 1XH-异常漏水
|
|
uint8_t ins_water_leak_dcdc_status; // 仪表漏水状态与DCDC状态:低4位-漏水状态(0XH正常,1XH异常),高4位-DCDC状态(X0H正常,X1H故障)
|
|
uint8_t reserved4;
|
|
|
|
unsigned char water_leak_status_from_insbat; // 仪表漏水状态
|
|
unsigned char water_leak_status_from_dynbat; // 动力漏水状态
|
|
unsigned char dcdc_status_from_insbat; // 仪表DCDC状态
|
|
|
|
//保留字段
|
|
// uint32_t reserved4; // 保留字段
|
|
uint32_t heartbeat; // 主机心跳计数器
|
|
|
|
//锂电池故障字段
|
|
unsigned char powfaultCode;
|
|
unsigned char insfaultCode;
|
|
//配电系统故障码
|
|
std::set<unsigned int> distributeFaultCode;
|
|
|
|
// MOOSD 状态
|
|
bool moosd_status;
|
|
//配电系统状态
|
|
|
|
//动力母线状态
|
|
struct POWER_BUS_STATUS
|
|
{
|
|
// 5: 燃料电池断路器 0 断开 1 闭合 2 故障
|
|
unsigned char fuelCellCircuitBreaker;
|
|
// 6: 动力锂电池断路器 0 断开 1 闭合 2 故障
|
|
unsigned char powerLithiumBatteryCircuitBreaker;
|
|
// 7: 推进电机断路器 0 断开 1 闭合 2 故障
|
|
unsigned char propulsionMotorCircuitBreaker;
|
|
// 8: 锂电池组仪表断路器 0 断开 1 闭合 2 故障
|
|
unsigned char lithiumBatteryGroupInstrumentCircuitBreaker;
|
|
// 9: DC/DC5模块断路器 0 断开 1 闭合 2 故障
|
|
unsigned char dcDc5ModuleCircuitBreaker;
|
|
// 10: 艏部高压配电箱断路器 0 断开 1 闭合 2 故障
|
|
unsigned char bowHighVoltageDistributionBoxCircuitBreaker;
|
|
// 11: 艉部FT装置4/5断路器 0 断开 1 闭合 2 故障
|
|
unsigned char sternFTDevice45CircuitBreaker;
|
|
// 12: 艉舵开关1断路器 0 断开 1 闭合 2 故障
|
|
unsigned char sternRudderSwitch1CircuitBreaker;
|
|
// 13: 艉舵开关2断路器 0 断开 1 闭合 2 故障
|
|
unsigned char sternRudderSwitch2CircuitBreaker;
|
|
// 14: FB预留断路器 0 断开 1 闭合 2 故障
|
|
unsigned char fbReservedCircuitBreaker;
|
|
// 15: TYZ预留断路器 0 断开 1 闭合 2 故障
|
|
unsigned char tyzReservedCircuitBreaker;
|
|
// 16: 预留断路器 0 断开 1 闭合 2 故障
|
|
unsigned char reservedCircuitBreaker;
|
|
// 17: DC/DC5模块状态 0 未运行;1 运行;2 DC/DC模块过温关机;3 输出过流;4 输出过压;5 输出欠压;6 输入过压;7 输入欠压;8 输出短路保护;9 内部故障
|
|
unsigned char dcDcModuleStatus;
|
|
// 18:冷却系统状态 0 未运行 1 运行 2 冷却泵1故障 3 冷却泵2故障 4 冷却水泄露
|
|
unsigned char coolingSystemStatus;
|
|
// 19: 动力母排绝缘状态 0 正常 1 绝缘低
|
|
unsigned char powerBusInsulationStatus;
|
|
// 20: A汇流排绝缘状态 0 正常 1 绝缘低
|
|
unsigned char aBusInsulationStatus;
|
|
// 21: 仪表电源状态 0 正常 1 故障
|
|
unsigned char meterPowerLossSignal;
|
|
// 22: 应急电源状态 0 正常 1 故障
|
|
unsigned char emergencyPowerLossSignal;
|
|
// 22: dc/dc温度
|
|
float dcDcTemperature;
|
|
// 23: 动力汇流排电压
|
|
float powerBusVoltage;
|
|
// 24: DC/DC5模块电流
|
|
float dcDc5ModuleCurrent;
|
|
// 25: 动力汇流排电流
|
|
float powerBusCurrent;
|
|
// 26: A汇流排电压
|
|
float busbarAVoltage;
|
|
// 27: 推进电机控制箱电流
|
|
float propulsionMotorControlBoxCurrent;
|
|
// 28: A汇流排电流
|
|
float busbarACurrent;
|
|
// 29: 锂电池组(仪表)电流
|
|
float lithiumBatteryGroupMeterCurrent;
|
|
// 30: 艏部高压配电箱电流
|
|
float bowHighVoltageDistributionBoxCurrent;
|
|
// 31: 艉部FT装置4/5电流
|
|
float sternFTDevice45Current;
|
|
// 32: TYZ预留开关电流
|
|
float tyzReservedSwitchCurrent;
|
|
// 33: 艉舵开关1电流
|
|
float sternRudderSwitch1Current;
|
|
// 34: 预留电流
|
|
float reservedCurrent1; // 改为 reservedCurrent1 以避免重名
|
|
// 35: 艉舵开关2电流
|
|
float sternRudderSwitch2Current;
|
|
// 36: 预留电流2
|
|
float reservedCurrent2; // 改为 reservedCurrent2 以避免重名
|
|
// 37: FB预留电流
|
|
float fbReservedSwitchCurrent;
|
|
// 38: 预留电流3
|
|
float reservedCurrent3; // 改为 reservedCurrent3 以避免重名
|
|
// 39: 冷却水压力
|
|
float coolWaterPressure;
|
|
}power_bus_status;
|
|
|
|
struct POWER_A_BUS_STATUS
|
|
{
|
|
//动力汇流排状态
|
|
//5. 艏部FT装置1/2/3断路器 0 断开 1 闭合 2 故障
|
|
unsigned char bowFTDevice123CircuitBreaker;
|
|
//6. 启闭机构断路器 0 断开 1 闭合 2 故障
|
|
unsigned char actuatorCircuitBreaker;
|
|
//7. 桅杆舵机控制箱断路器 0 断开 1 闭合 2 故障
|
|
unsigned char mastSteeringGearControlBoxCircuitBreaker;
|
|
//8. XCZ断路器 0 断开 1 闭合 2 故障
|
|
unsigned char xczCircuitBreaker;
|
|
//9. 艏舵控制箱断路器 0 断开 1 闭合 2 故障
|
|
unsigned char bowRudderControlBoxCircuitBreaker;
|
|
//10. 敞水盖启动电缸断路器 0 断开 1 闭合 2 故障
|
|
unsigned char openWaterCoverStartCylinderCircuitBreaker;
|
|
//11. 仪表电源失电信号 0 正常 1 故障
|
|
unsigned char instrumentPowerFailureSignal;
|
|
//12. 应急电源失电信号 0 正常 1 故障
|
|
unsigned char emergencyPowerFailureSignal;
|
|
//13. 浸水报警 0 无 1 有
|
|
unsigned char waterIngressionAlarm;
|
|
//14. 汇流排B电压
|
|
float busbarBVoltage;
|
|
//15. 汇流排B电流
|
|
float busbarBCurrent;
|
|
//16. 艏部FT装置1/2/3电流
|
|
float bowFTDevice123Current;
|
|
//17. 启闭机构电流
|
|
float actuatorCurrent;
|
|
//18. 桅杆舵机控制箱电流
|
|
float mastSteeringGearControlBoxCurrent;
|
|
//19. XCZ电流
|
|
float xczCurrent;
|
|
//20. 艏舵控制箱电流
|
|
float bowRudderControlBoxCurrent;
|
|
//21. 敞水盖启动电缸电流
|
|
float openWaterCoverStartCylinderCurrent;
|
|
} power_a_bus_status;
|
|
|
|
//仪表主母线状态
|
|
struct INSTRUMENT_MAIN_BUS_STATUS
|
|
{
|
|
//5. 锂电池组(仪表)断路器 0 断开 1 闭合 2 故障
|
|
unsigned char lithiumBatteryGroupInstrumentCircuitBreaker;
|
|
//6. 艏部低压配电箱断路器 0 断开 1 闭合 2 故障
|
|
unsigned char bowLowVoltageDistributionBoxCircuitBreaker;
|
|
//7. UNIT4仪表DC48V断路器 0 断开 1 闭合 2 故障
|
|
unsigned char unit4InstrumentDC48VCircuitBreaker;
|
|
//8. DC-C1直流配电板断路器 0 断开 1 闭合 2 故障
|
|
unsigned char dcC1DCDistributionPanelCircuitBreaker;
|
|
//9. 预留断路器1 0 断开 1 闭合 2 故障
|
|
unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀
|
|
//10. 预留断路器2 0 断开 1 闭合 2 故障
|
|
unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀
|
|
//11. 应急锂电池组2断路器 0 断开 1 闭合 2 故障
|
|
unsigned char emergencyLithiumBatteryGroup2CircuitBreaker;
|
|
//12. 仪表电源失电信号 0 正常 1 故障
|
|
unsigned char instrumentPowerFailureSignal;
|
|
//13. 应急电源失电信号 0 正常 1 故障
|
|
unsigned char emergencyPowerFailureSignal;
|
|
//14. 仪表汇流排绝缘低 0 正常 1 绝缘低
|
|
unsigned char instrumentBusbarInsulationLow;
|
|
//15. 仪表母排电压
|
|
float instrumentBusbarVoltage;
|
|
//16. 艏部低压配电箱电流
|
|
float bowLowVoltageDistributionBoxCurrent;
|
|
//17. DC-C1(直流配电板1)仪表DC48V电流
|
|
float dcC1InstrumentDC48VCurrent;
|
|
//18. 预留电流
|
|
float reservedCurrent1; // 为了区分,添加了数字后缀
|
|
//19. 应急锂电池组2电流
|
|
float emergencyLithiumBatteryGroup2Current;
|
|
//20. 锂电池组(仪表)电流
|
|
float lithiumBatteryGroupInstrumentCurrent;
|
|
//21. UNIT4仪表DC48V电流
|
|
float unit4InstrumentDC48VCurrent;
|
|
//22. Ushort 预留电流
|
|
float reservedCurrent2; // 为了区分,添加了数字后缀
|
|
//23. 应急2汇流排电压
|
|
float emergency2BusbarVoltage;
|
|
//24. 复合能源管控系统应急DC48V电流
|
|
float compositeEnergyManagementSystemEmergencyDC48VCurrent;
|
|
//25. 燃料电池安全系统应急DC48V电流
|
|
float fuelCellSecuritySystemEmergencyDC48VCurrent;
|
|
//26. PLC控制电源电流
|
|
float plcControlPowerCurrent;
|
|
} instrument_main_bus_status;
|
|
|
|
//仪表汇流排状态
|
|
struct INSTRUMENT_BUS_STATUS
|
|
{
|
|
//5. UNIT1断路器 0 断开 1 闭合 2 故障
|
|
unsigned char unit1CircuitBreaker;
|
|
//6. UNIT2断路器 0 断开 1 闭合 2 故障
|
|
unsigned char unit2CircuitBreaker;
|
|
//7. UNIT3断路器 0 断开 1 闭合 2 故障
|
|
unsigned char unit3CircuitBreaker;
|
|
//8. UNIT5断路器 0 断开 1 闭合 2 故障
|
|
unsigned char unit5CircuitBreaker;
|
|
//9. 艏部PZ装置断路器 0 断开 1 闭合 2 故障
|
|
unsigned char bowPZDeviceCircuitBreaker;
|
|
//10. 预留断路器1 0 断开 1 闭合 2 故障
|
|
unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀
|
|
//11. 预留断路器2 0 断开 1 闭合 2 故障
|
|
unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀
|
|
//12. 应急锂电池组1断路器 0 断开 1 闭合 2 故障
|
|
unsigned char emergencyLithiumBatteryGroup1CircuitBreaker;
|
|
//13. 仪表电源失电信号 0 正常 1 故障
|
|
unsigned char powerFailureSignal;
|
|
//14. 应急电源失电信号 0 正常 1 故障
|
|
unsigned char emergencyPowerFailureSignal;
|
|
//15. 浸水报警 0 无 1 有
|
|
unsigned char waterIngressionAlarm;
|
|
//16. 仪表母排电压
|
|
float instrumentBusbarVoltage;
|
|
//17. 仪表母排电流
|
|
float instrumentBusbarCurrent;
|
|
//18. UNIT1电流
|
|
float unit1Current;
|
|
//19. UNIT2电流
|
|
float unit2Current;
|
|
//20. UNIT3电流
|
|
float unit3Current;
|
|
//21. UNIT5电流
|
|
float unit5Current;
|
|
//22. 艏部PZ装置电流
|
|
float bowPZDeviceCurrent;
|
|
//23. 应急锂电池组1电流
|
|
float emergencyLithiumBatteryGroup1Current;
|
|
//24. 应急1汇流排电压
|
|
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
|
|
memset(this, 0, sizeof(SystemData));
|
|
};
|
|
~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;
|
|
fc_fault_level = data.fc_fault_level;
|
|
|
|
//功率和时间参数
|
|
output_power_limit = data.output_power_limit;
|
|
total_generation_time = data.total_generation_time * 0.1;
|
|
total_generation_power = data.total_generation_power;
|
|
|
|
//故障信息
|
|
#ifdef DEBUG
|
|
fc_fault_level_1 = data.fault_level_1;
|
|
fc_fault_level_2 = data.fault_level_2;
|
|
fc_fault_level_3 = data.fault_level_3;
|
|
fc_fault_level_4 = data.fault_level_4;
|
|
#endif
|
|
|
|
//燃料容量
|
|
hydrogen_capacity = static_cast<int>(data.hydrogen_capacity);
|
|
liquid_oxygen_capacity = static_cast<int>(data.liquid_oxygen_capacity);
|
|
|
|
//温度压力参数
|
|
palladium_temp = data.palladium_temp;
|
|
main_pipe_pressure = data.main_pipe_pressure * 0.01;
|
|
aux_pipe_pressure = data.aux_pipe_pressure * 0.01;
|
|
|
|
//舱室环境参数
|
|
cabin_pressure1 = data.cabin_pressure1 * 0.01;
|
|
cabin_pressure2 = data.cabin_pressure2 * 0.01;
|
|
cabin_temp1 = data.cabin_temp1 * 0.01;
|
|
cabin_temp2 = data.cabin_temp2 * 0.01;
|
|
cabin_humidity1 = data.cabin_humidity1 * 0.01;
|
|
cabin_humidity2 = data.cabin_humidity2 * 0.01;
|
|
|
|
//火焰探测器
|
|
flame_detector1 = data.flame_detector1;
|
|
flame_detector2 = data.flame_detector2;
|
|
|
|
//气体浓度
|
|
h2_concentration1 = data.h2_concentration1 * 0.01;
|
|
h2_concentration2 = data.h2_concentration2 * 0.01;
|
|
h2_concentration3 = data.h2_concentration3 * 0.01;
|
|
o2_concentration1 = data.o2_concentration1 * 0.01;
|
|
o2_concentration2 = data.o2_concentration2 * 0.01;
|
|
ch3oh_concentration1 = data.ch3oh_concentration1 * 0.01;
|
|
ch3oh_concentration2 = data.ch3oh_concentration2 * 0.01;
|
|
|
|
//保留字段
|
|
for(int i=0; i<10; i++) {
|
|
reserved1[i] = data.reserved1[i];
|
|
}
|
|
|
|
//仪表舱参数
|
|
cabin_ox_concentration = data.cabin_ox_concentration * 0.1;
|
|
cabin_temperature = static_cast<int16_t>(data.cabin_temperature) * 0.1;
|
|
cabin_humidity = data.cabin_humidity * 0.1;
|
|
cabin_pressure = data.cabin_pressure * 0.2;
|
|
|
|
//动力舱参数
|
|
power_cabin_ox_concentration = data.power_cabin_ox_concentration * 0.1;
|
|
power_cabin_temperature = static_cast<int16_t>(data.power_cabin_temperature) * 0.1;
|
|
power_cabin_humidity = data.power_cabin_humidity * 0.1;
|
|
power_cabin_pressure = data.power_cabin_pressure * 0.2;
|
|
|
|
//电池报警标志
|
|
for(int i=0; i<6; i++) {
|
|
dyn_alarm_flag[i] = data.dyn_alarm_flag[i];
|
|
ins_alarm_flag[i] = data.ins_alarm_flag[i];
|
|
}
|
|
|
|
//继电器状态
|
|
ins_relay_status1 = data.ins_relay_status1;
|
|
ins_relay_status2 = data.ins_relay_status2;
|
|
dyn_relay_status1 = data.dyn_relay_status1;
|
|
dyn_relay_status2 = data.dyn_relay_status2;
|
|
|
|
//继电器状态
|
|
ins_pos_relay_status = (data.ins_relay_status1 ) & 0x0F; // 取高4位作为正极继电器状态
|
|
ins_charge_relay_status = ( data.ins_relay_status1 >> 4)& 0x0F; // 取低4位作为充电继电器状态
|
|
ins_precharge_relay_status = (data.ins_relay_status2 ) & 0x0F; // 取高4位作为预充继电器状态
|
|
ins_neg_relay_status = (data.ins_relay_status2 >> 4) & 0x0F; // 取低4位作为负极继电器状态
|
|
|
|
dyn_pos_relay_status = (data.dyn_relay_status1 ) & 0x0F; // 取高4位作为正极继电器状态
|
|
dyn_charge_relay_status = (data.dyn_relay_status1 >> 4) & 0x0F; // 取低4位作为充电继电器状态
|
|
dyn_precharge_relay_status = (data.dyn_relay_status2) & 0x0F; // 取高4位作为预充继电器状态
|
|
dyn_neg_relay_status = (data.dyn_relay_status2 >> 4) & 0x0F; // 取低4位作为负极继电器状态
|
|
|
|
//电池功率参数
|
|
ins_max_discharge_power = data.ins_max_discharge_power * 0.05;
|
|
dyn_max_discharge_power = data.dyn_max_discharge_power * 0.05;
|
|
|
|
//电池SOC
|
|
ins_soc = static_cast<int>(data.ins_soc);
|
|
dyn_soc = static_cast<int>(data.dyn_soc);
|
|
|
|
//电池能量
|
|
ins_total_energy = data.ins_total_energy * 0.1;
|
|
dyn_total_energy = data.dyn_total_energy * 0.1;
|
|
|
|
//电池输入功率
|
|
ins_power_input = data.ins_power_input ;
|
|
dyn_power_input = data.dyn_power_input ;
|
|
|
|
//电池充放电状态
|
|
ins_charge_status = data.ins_charge_status;
|
|
dyn_charge_status = data.dyn_charge_status;
|
|
|
|
//电池电压电流
|
|
ins_voltage_link = data.ins_voltage_link * 0.1;
|
|
ins_voltage_pack = data.ins_voltage_pack * 0.1;
|
|
ins_current = static_cast<int16_t>(data.ins_current) * 0.05;
|
|
ins_resistance_pos = data.ins_resistance_pos;
|
|
ins_resistance_neg = data.ins_resistance_neg;
|
|
dyn_voltage_link = data.dyn_voltage_link * 0.1;
|
|
dyn_voltage_pack = data.dyn_voltage_pack * 0.1;
|
|
dyn_current = static_cast<int16_t>(data.dyn_current) * 0.05;
|
|
dyn_resistance_pos = data.dyn_resistance_pos;
|
|
dyn_resistance_neg = data.dyn_resistance_neg;
|
|
|
|
//紧急状态
|
|
ins_emergency_status = data.ins_emergency_status;
|
|
dyn_emergency_status = data.dyn_emergency_status;
|
|
|
|
//保留字段
|
|
for(int i=0; i<2; i++) {
|
|
reserved2[i] = data.reserved2[i];
|
|
}
|
|
|
|
//SOC门限值
|
|
ins_soc_threshold1 = data.ins_soc_threshold1;
|
|
ins_soc_threshold2 = data.ins_soc_threshold2;
|
|
ins_soc_threshold3 = data.ins_soc_threshold3;
|
|
|
|
//功率限制值
|
|
ins_power_limit1 = data.ins_power_limit1;
|
|
ins_power_limit2 = data.ins_power_limit2;
|
|
|
|
//设备在线状态
|
|
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:复合管控备机在线标志位
|
|
|
|
|
|
// 更新锂电池其他状态
|
|
dyn_water_leak_status = data.dyn_water_leak_status;
|
|
ins_water_leak_dcdc_status = data.ins_water_leak_dcdc_status;
|
|
|
|
dyn_charge_level = data.dyn_charge_level; //01H:1级(不限)02H:2级(限功率)03H:3级(关闭)
|
|
water_leak_status_from_insbat = ( data.ins_water_leak_dcdc_status >> 4) & 0x0F; // 00 正常,01 异常漏水
|
|
water_leak_status_from_dynbat = (data.dyn_water_leak_status >> 4) & 0x0F; // 00 正常,01 异常漏水
|
|
dcdc_status_from_insbat = (data.ins_water_leak_dcdc_status) & 0x0F; // 00 正常,01 故障
|
|
|
|
// std::cout << "dyn_charge_level: " << std::hex << static_cast<int>(dyn_charge_level) << std::endl;
|
|
// std::cout << "ins_water_leak_dcdc_status: " << std::hex << static_cast<int>(ins_water_leak_dcdc_status) << std::endl;
|
|
// std::cout << "dcdc_status_from_insbat: " << std::hex << static_cast<int>(dcdc_status_from_insbat) << std::endl;
|
|
// std::cout << "water_leak_status_from_insbat: " << std::hex << static_cast<int>(water_leak_status_from_insbat) << std::endl;
|
|
// std::cout << "water_leak_status_from_dynbat: " << std::hex << static_cast<int>(water_leak_status_from_dynbat) << std::endl;
|
|
|
|
//心跳计数器
|
|
heartbeat = data.heartbeat;
|
|
}
|
|
void updateSystemData(disHighVolBusState data){
|
|
//断路器状态 (0x55 1 0xAA 0 0x5A 2)
|
|
power_bus_status.fuelCellCircuitBreaker = data.fuelCellCircuitBreaker == 0x55 ? 1 :
|
|
(data.fuelCellCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.powerLithiumBatteryCircuitBreaker = data.powerLithiumBatteryCircuitBreaker == 0x55 ? 1 :
|
|
(data.powerLithiumBatteryCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.propulsionMotorCircuitBreaker = data.propulsionMotorCircuitBreaker == 0x55 ? 1 :
|
|
(data.propulsionMotorCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.lithiumBatteryGroupInstrumentCircuitBreaker = data.lithiumBatteryGroupInstrumentCircuitBreaker == 0x55 ? 1 :
|
|
(data.lithiumBatteryGroupInstrumentCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.dcDc5ModuleCircuitBreaker = data.dcDc5ModuleCircuitBreaker == 0x55 ? 1 :
|
|
(data.dcDc5ModuleCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.bowHighVoltageDistributionBoxCircuitBreaker = data.bowHighVoltageDistributionBoxCircuitBreaker == 0x55 ? 1 :
|
|
(data.bowHighVoltageDistributionBoxCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.sternFTDevice45CircuitBreaker = data.sternFTDevice45CircuitBreaker == 0x55 ? 1 :
|
|
(data.sternFTDevice45CircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.sternRudderSwitch1CircuitBreaker = data.sternRudderSwitch1CircuitBreaker == 0x55 ? 1 :
|
|
(data.sternRudderSwitch1CircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.sternRudderSwitch2CircuitBreaker = data.sternRudderSwitch2CircuitBreaker == 0x55 ? 1 :
|
|
(data.sternRudderSwitch2CircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.fbReservedCircuitBreaker = data.fbReservedCircuitBreaker == 0x55 ? 1 :
|
|
(data.fbReservedCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.tyzReservedCircuitBreaker = data.tyzReservedCircuitBreaker == 0x55 ? 1 :
|
|
(data.tyzReservedCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_bus_status.reservedCircuitBreaker = data.reservedCircuitBreaker == 0x55 ? 1 :
|
|
(data.reservedCircuitBreaker == 0xAA ? 0 : 2);
|
|
|
|
//模块状态
|
|
power_bus_status.dcDcModuleStatus = data.dcDcFaultWord1;
|
|
power_bus_status.coolingSystemStatus = data.dcDcFaultWord2;
|
|
|
|
//绝缘状态
|
|
power_bus_status.powerBusInsulationStatus = data.powerBusInsulationStatus == 0x55 ? 0 : 1;
|
|
power_bus_status.aBusInsulationStatus = data.aBusInsulationStatus == 0x55 ? 0 : 1;
|
|
|
|
//电源状态
|
|
power_bus_status.meterPowerLossSignal = data.meterPowerLossSignal == 0x55 ? 0 : 1;
|
|
power_bus_status.emergencyPowerLossSignal = data.emergencyPowerLossSignal == 0x55 ? 0 : 1;
|
|
|
|
//温度
|
|
power_bus_status.dcDcTemperature = data.dcDcTemperature-40;
|
|
|
|
//电压电流参数
|
|
power_bus_status.powerBusVoltage = data.powerBusVoltage * 0.1;
|
|
power_bus_status.dcDc5ModuleCurrent = data.dcDc5ModuleCurrent * 0.1;
|
|
power_bus_status.powerBusCurrent = data.powerBusCurrent * 0.1;
|
|
power_bus_status.busbarAVoltage = data.busbarAVoltage * 0.1;
|
|
power_bus_status.propulsionMotorControlBoxCurrent = data.propulsionMotorControlBoxCurrent * 0.1;
|
|
power_bus_status.busbarACurrent = data.busbarACurrent * 0.1;
|
|
power_bus_status.lithiumBatteryGroupMeterCurrent = data.lithiumBatteryGroupMeterCurrent * 0.1;
|
|
power_bus_status.bowHighVoltageDistributionBoxCurrent = data.bowHighVoltageDistributionBoxCurrent * 0.1;
|
|
power_bus_status.sternFTDevice45Current = data.sternFTDevice45Current * 0.1;
|
|
power_bus_status.tyzReservedSwitchCurrent = data.tyzReservedSwitchCurrent * 0.1;
|
|
power_bus_status.sternRudderSwitch1Current = data.sternRudderSwitch1Current * 0.1;
|
|
power_bus_status.reservedCurrent1 = data.reservedCurrent1 * 0.1;
|
|
power_bus_status.sternRudderSwitch2Current = data.sternRudderSwitch2Current * 0.1;
|
|
power_bus_status.reservedCurrent2 = data.reservedCurrent2 * 0.1;
|
|
power_bus_status.fbReservedSwitchCurrent = data.fbReservedSwitchCurrent * 0.1;
|
|
power_bus_status.reservedCurrent3 = data.reservedCurrent3 * 0.1;
|
|
|
|
//冷却水压力
|
|
power_bus_status.coolWaterPressure = data.coolWaterPressure * 0.1;
|
|
};
|
|
void updateSystemData(disHighAVolBusState data){
|
|
//断路器状态 (0x55 1 0xAA 0 0x5A 2)
|
|
power_a_bus_status.bowFTDevice123CircuitBreaker = data.bowFTDevice123CircuitBreaker == 0x55 ? 1 :
|
|
(data.bowFTDevice123CircuitBreaker == 0xAA ? 0 : 2);
|
|
power_a_bus_status.actuatorCircuitBreaker = data.actuatorCircuitBreaker == 0x55 ? 1 :
|
|
(data.actuatorCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_a_bus_status.mastSteeringGearControlBoxCircuitBreaker = data.mastSteeringGearControlBoxCircuitBreaker == 0x55 ? 1 :
|
|
(data.mastSteeringGearControlBoxCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_a_bus_status.xczCircuitBreaker = data.xczCircuitBreaker == 0x55 ? 1 :
|
|
(data.xczCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_a_bus_status.bowRudderControlBoxCircuitBreaker = data.bowRudderControlBoxCircuitBreaker == 0x55 ? 1 :
|
|
(data.bowRudderControlBoxCircuitBreaker == 0xAA ? 0 : 2);
|
|
power_a_bus_status.openWaterCoverStartCylinderCircuitBreaker = data.openWaterCoverStartCylinderCircuitBreaker == 0x55 ? 1 :
|
|
(data.openWaterCoverStartCylinderCircuitBreaker == 0xAA ? 0 : 2);
|
|
|
|
//电源状态
|
|
power_a_bus_status.instrumentPowerFailureSignal = data.instrumentPowerFailureSignal == 0x55 ? 0 : 1;
|
|
power_a_bus_status.emergencyPowerFailureSignal = data.emergencyPowerFailureSignal == 0x55 ? 0 : 1;
|
|
|
|
//浸水报警
|
|
power_a_bus_status.waterIngressionAlarm = data.waterIngressionAlarm;
|
|
|
|
//电压电流参数
|
|
power_a_bus_status.busbarBVoltage = data.busbarBVoltage * 0.1;
|
|
power_a_bus_status.busbarBCurrent = data.busbarBCurrent * 0.1;
|
|
power_a_bus_status.bowFTDevice123Current = data.bowFTDevice123Current * 0.1;
|
|
power_a_bus_status.actuatorCurrent = data.actuatorCurrent * 0.1;
|
|
power_a_bus_status.mastSteeringGearControlBoxCurrent = data.mastSteeringGearControlBoxCurrent * 0.1;
|
|
power_a_bus_status.xczCurrent = data.xczCurrent * 0.1;
|
|
power_a_bus_status.bowRudderControlBoxCurrent = data.bowRudderControlBoxCurrent * 0.1;
|
|
power_a_bus_status.openWaterCoverStartCylinderCurrent = data.openWaterCoverStartCylinderCurrent * 0.1;
|
|
};
|
|
void updateSystemData(disLowMainBusState data){
|
|
//断路器状态 (0x55 1 0xAA 0 0x5A 2)
|
|
instrument_main_bus_status.lithiumBatteryGroupInstrumentCircuitBreaker = data.lithiumBatteryGroupInstrumentCircuitBreaker == 0x55 ? 1 :
|
|
(data.lithiumBatteryGroupInstrumentCircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.bowLowVoltageDistributionBoxCircuitBreaker = data.bowLowVoltageDistributionBoxCircuitBreaker == 0x55 ? 1 :
|
|
(data.bowLowVoltageDistributionBoxCircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.unit4InstrumentDC48VCircuitBreaker = data.unit4InstrumentDC48VCircuitBreaker == 0x55 ? 1 :
|
|
(data.unit4InstrumentDC48VCircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.dcC1DCDistributionPanelCircuitBreaker = data.dcC1DCDistributionPanelCircuitBreaker == 0x55 ? 1 :
|
|
(data.dcC1DCDistributionPanelCircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.reservedCircuitBreaker1 = data.reservedCircuitBreaker1 == 0x55 ? 1 :
|
|
(data.reservedCircuitBreaker1 == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.reservedCircuitBreaker2 = data.reservedCircuitBreaker2 == 0x55 ? 1 :
|
|
(data.reservedCircuitBreaker2 == 0xAA ? 0 : 2);
|
|
instrument_main_bus_status.emergencyLithiumBatteryGroup2CircuitBreaker = data.emergencyLithiumBatteryGroup2CircuitBreaker == 0x55 ? 1 :
|
|
(data.emergencyLithiumBatteryGroup2CircuitBreaker == 0xAA ? 0 : 2);
|
|
|
|
//电源状态
|
|
instrument_main_bus_status.instrumentPowerFailureSignal = data.instrumentPowerFailureSignal == 0x55 ? 0 : 1;
|
|
instrument_main_bus_status.emergencyPowerFailureSignal = data.emergencyPowerFailureSignal == 0x55 ? 0 : 1;
|
|
|
|
//绝缘状态
|
|
instrument_main_bus_status.instrumentBusbarInsulationLow = data.instrumentBusbarInsulationLow == 0x55 ? 0 : 1;
|
|
|
|
//电压电流参数
|
|
instrument_main_bus_status.instrumentBusbarVoltage = data.instrumentBusbarVoltage * 0.1;
|
|
instrument_main_bus_status.bowLowVoltageDistributionBoxCurrent = data.bowLowVoltageDistributionBoxCurrent * 0.1;
|
|
instrument_main_bus_status.dcC1InstrumentDC48VCurrent = data.dcC1InstrumentDC48VCurrent * 0.1;
|
|
instrument_main_bus_status.reservedCurrent1 = data.reservedCurrent1 * 0.1;
|
|
instrument_main_bus_status.emergencyLithiumBatteryGroup2Current = data.emergencyLithiumBatteryGroup2Current * 0.1;
|
|
instrument_main_bus_status.lithiumBatteryGroupInstrumentCurrent = data.lithiumBatteryGroupInstrumentCurrent * 0.1;
|
|
instrument_main_bus_status.unit4InstrumentDC48VCurrent = data.unit4InstrumentDC48VCurrent * 0.1;
|
|
instrument_main_bus_status.reservedCurrent2 = data.reservedCurrent2 * 0.1;
|
|
instrument_main_bus_status.emergency2BusbarVoltage = data.emergency2BusbarVoltage * 0.1;
|
|
instrument_main_bus_status.compositeEnergyManagementSystemEmergencyDC48VCurrent = data.compositeEnergyManagementSystemEmergencyDC48VCurrent * 0.1;
|
|
instrument_main_bus_status.fuelCellSecuritySystemEmergencyDC48VCurrent = data.fuelCellSecuritySystemEmergencyDC48VCurrent * 0.1;
|
|
instrument_main_bus_status.plcControlPowerCurrent = data.plcControlPowerCurrent * 0.1;
|
|
}
|
|
void updateSystemData(disLowBusState data){
|
|
//断路器状态 (0x55 1 0xAA 0 0x5A 2)
|
|
instrument_bus_status.unit1CircuitBreaker = data.unit1CircuitBreaker == 0x55 ? 1 :
|
|
(data.unit1CircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_bus_status.unit2CircuitBreaker = data.unit2CircuitBreaker == 0x55 ? 1 :
|
|
(data.unit2CircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_bus_status.unit3CircuitBreaker = data.unit3CircuitBreaker == 0x55 ? 1 :
|
|
(data.unit3CircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_bus_status.unit5CircuitBreaker = data.unit5CircuitBreaker == 0x55 ? 1 :
|
|
(data.unit5CircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_bus_status.bowPZDeviceCircuitBreaker = data.bowPZDeviceCircuitBreaker == 0x55 ? 1 :
|
|
(data.bowPZDeviceCircuitBreaker == 0xAA ? 0 : 2);
|
|
instrument_bus_status.reservedCircuitBreaker1 = data.reservedCircuitBreaker1 == 0x55 ? 1 :
|
|
(data.reservedCircuitBreaker1 == 0xAA ? 0 : 2);
|
|
instrument_bus_status.reservedCircuitBreaker2 = data.reservedCircuitBreaker2 == 0x55 ? 1 :
|
|
(data.reservedCircuitBreaker2 == 0xAA ? 0 : 2);
|
|
instrument_bus_status.emergencyLithiumBatteryGroup1CircuitBreaker = data.emergencyLithiumBatteryGroup1CircuitBreaker == 0x55 ? 1 :
|
|
(data.emergencyLithiumBatteryGroup1CircuitBreaker == 0xAA ? 0 : 2);
|
|
|
|
//电源状态
|
|
instrument_bus_status.powerFailureSignal = data.powerFailureSignal == 0x55 ? 0 : 1;
|
|
instrument_bus_status.emergencyPowerFailureSignal = data.emergencyPowerFailureSignal == 0x55 ? 0 : 1;
|
|
|
|
//浸水报警
|
|
instrument_bus_status.waterIngressionAlarm = data.waterIngressionAlarm;
|
|
|
|
//电压电流参数
|
|
instrument_bus_status.instrumentBusbarVoltage = data.instrumentBusbarVoltage * 0.1;
|
|
instrument_bus_status.instrumentBusbarCurrent = data.instrumentBusbarCurrent * 0.1;
|
|
instrument_bus_status.unit1Current = data.unit1Current * 0.1;
|
|
instrument_bus_status.unit2Current = data.unit2Current * 0.1;
|
|
instrument_bus_status.unit3Current = data.unit3Current * 0.1;
|
|
instrument_bus_status.unit5Current = data.unit5Current * 0.1;
|
|
instrument_bus_status.bowPZDeviceCurrent = data.bowPZDeviceCurrent * 0.1;
|
|
instrument_bus_status.emergencyLithiumBatteryGroup1Current = data.emergencyLithiumBatteryGroup1Current * 0.1;
|
|
instrument_bus_status.emergency1BusbarVoltage = data.emergency1BusbarVoltage * 0.1;
|
|
}
|
|
};
|
|
|
|
|
|
#endif
|