#ifndef PMSYSVARIABLE_H #define PMSYSVARIABLE_H //宏定义 #include #include #include #define BREAK_OFF 0xAA #define BREAK_ON 0x55 #define BREAK_FALSE 0x5A //消息结构体变量定义 #pragma pack (1) typedef struct ccuState { 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-四级 uint16_t output_power_limit; // 系统输出功率限制值,单位:W,范围:0~30000W uint16_t total_generation_time; // 系统累计发电时间,单位:0.1小时,最大值6553.5小时 uint16_t total_generation_power; // 系统累计发电总功率,单位:W uint16_t fault_level_1; // 一级故障位,按位表示不同的故障项 uint16_t fault_level_2; // 二级故障位 uint16_t fault_level_3; // 三级故障位 uint16_t fault_level_4; // 四级故障位 uint8_t hydrogen_capacity; // 储氢罐剩余容量百分比,单位:%,范围:0~100 uint8_t liquid_oxygen_capacity; // 液氧罐剩余容量百分比,单位:%,范围:0~100 uint16_t palladium_temp; // 钯膜最高温度,单位:℃ uint16_t main_pipe_pressure; // 主水路压力,单位:0.01kPa uint16_t aux_pipe_pressure; // 辅水路压力,单位:0.01kPa uint16_t cabin_pressure1; // 舱室1压力,单位:0.01kPa uint16_t cabin_pressure2; // 舱室2压力,单位:0.01kPa uint16_t cabin_temp1; // 舱室1温度,单位:0.01℃ uint16_t cabin_temp2; // 舱室2温度,单位:0.01℃ uint16_t cabin_humidity1; // 舱室1湿度,单位:0.01%RH uint16_t cabin_humidity2; // 舱室2湿度,单位:0.01%RH uint8_t flame_detector1; // 火焰探测器1状态:00H-无效, 01H-报警, 02H-故障 uint8_t flame_detector2; // 火焰探测器2状态:00H-无效, 01H-报警, 02H-故障 uint16_t h2_concentration1; // 舱室H2浓度1,单位:0.01% LEL uint16_t h2_concentration2; // 舱室H2浓度2,单位:0.01% LEL uint16_t h2_concentration3; // 舱室H2浓度3,单位:0.01% LEL uint16_t o2_concentration1; // 舱室O2浓度1,单位:0.01% LEL uint16_t o2_concentration2; // 舱室O2浓度2,单位:0.01% LEL uint16_t ch3oh_concentration1; // 舱室甲醇气体浓度1,单位:0.01% LEL uint16_t ch3oh_concentration2; // 舱室甲醇气体浓度2,单位:0.01% LEL uint16_t reserved1[2]; // 保留字段前2个元素 uint16_t emergency_battery1_voltage; // 应急电池1总电压 [V] uint16_t emergency_battery1_current; // 应急电池1总电流 [A] uint16_t emergency_battery1_max_temp; // 应急电池1最高温度 [°C] uint16_t emergency_battery1_fault_word; // 应急电池1故障字 uint16_t emergency_battery2_voltage; // 应急电池2总电压 [V] uint16_t emergency_battery2_current; // 应急电池2总电流 [A] uint16_t emergency_battery2_max_temp; // 应急电池2最高温度 [°C] uint16_t emergency_battery2_fault_word; // 应急电池2故障字 uint16_t cabin_ox_concentration; // 仪表舱内氧气浓度 [%] uint16_t cabin_temperature; // 仪表舱内温度 [°C] uint16_t cabin_humidity; // 仪表舱内湿度 [%RH] uint16_t cabin_pressure; // 仪表舱内大气压 [kPa] uint16_t power_cabin_ox_concentration; // 动力舱内氧气浓度 [%] uint16_t power_cabin_temperature; // 动力舱内温度 [°C] uint16_t power_cabin_humidity; // 动力舱内湿度 [%RH] uint16_t power_cabin_pressure; // 动力舱内大气压 [kPa] uint8_t reserved2[1]; // 保留字段,地址范围54~55,共2个uint8_t,协议预留 uint8_t dyn_alarm_flag[6]; // 动力锂电池报警标志字数组,共6字节,按位表示各类报警 uint8_t ins_alarm_flag[6]; // 仪表锂电池报警标志字数组,共6字节,按位表示各类报警 uint8_t ins_relay_status1; // 仪表电池继电器状态,高4位表示正极继电器,低4位表示充电继电器 uint8_t ins_relay_status2; // 仪表电池预充继电器和负极继电器状态 uint8_t dyn_relay_status1; // 动力电池正极与充电继电器状态 uint8_t dyn_relay_status2; // 动力电池预充与负极继电器状态 uint16_t ins_max_discharge_power; // 仪表电池最大允许放电功率,单位:kW,精度0.05kW uint16_t dyn_max_discharge_power; // 动力电池最大允许放电功率,单位:kW,精度0.05kW uint8_t ins_soc; // 仪表锂电池荷电状态SOC,范围:0~100 uint8_t dyn_soc; // 动力锂电池荷电状态SOC,范围:0~100 uint16_t ins_total_energy; // 仪表电池总能量,单位:kWh uint16_t dyn_total_energy; // 动力电池总能量,单位:kWh uint16_t ins_power_input; // 仪表电池输入功率,单位:kW uint16_t dyn_power_input; // 动力电池输入功率,单位:kW uint8_t ins_charge_status; // 仪表电池充放电状态:00H-无效,10H-充电,20H-放电 uint8_t dyn_charge_status; // 动力电池充放电状态:00H-无效,10H-充电,20H-放电 uint16_t ins_voltage_link; // 仪表电池LINK端电压,单位:0.01V uint16_t ins_voltage_pack; // 仪表电池PACK端电压,单位:0.01V uint16_t ins_current; // 仪表电池电流,单位:0.01A(正值放电) uint16_t ins_resistance_pos; // 仪表电池正极绝缘电阻,单位:kΩ uint16_t ins_resistance_neg; // 仪表电池负极绝缘电阻,单位:kΩ uint16_t dyn_voltage_link; // 动力电池LINK端电压,单位:0.01V uint16_t dyn_voltage_pack; // 动力电池PACK端电压,单位:0.01V uint16_t dyn_current; // 动力电池电流,单位:0.01A(正值放电) uint16_t dyn_resistance_pos; // 动力电池正极绝缘电阻,单位:kΩ uint16_t dyn_resistance_neg; // 动力电池负极绝缘电阻,单位:kΩ uint8_t ins_emergency_status; // 仪表电池紧急状态字,按位表示异常或告警状态 uint8_t dyn_emergency_status; // 动力电池紧急状态字,按位表示异常或告警状态 uint8_t reserved3[2]; // 保留字节,协议预留 uint8_t ins_soc_threshold1; // 仪表电池1 SOC门限,范围:0~100 uint8_t ins_soc_threshold2; // 仪表电池2 SOC门限,范围:0~100 uint8_t ins_soc_threshold3; // 仪表电池3 SOC门限,范围:0~100 uint8_t dyn_soc_threshold1; // 动力电池1 SOC门限,范围:0~100 uint8_t dyn_soc_threshold2; // 动力电池2 SOC门限,范围:0~100 uint8_t dyn_soc_threshold3; // 动力电池3 SOC门限,范围:0~100 uint8_t ins_power_limit1; // 仪表电池1功率限制值,单位:% uint8_t ins_power_limit2; // 仪表电池2功率限制值,单位:% uint8_t dyn_power_limit1; // 动力电池1功率限制值,单位:% uint8_t dyn_power_limit2; // 动力电池2功率限制值,单位:% uint32_t device_online_flag1; // 设备在线状态标志1,byte0:低压配电板在线标志位 byte1:复合管控主机在线标志位 byte2:复合管控备机在线标志位 uint32_t device_online_flag2; // 设备在线状态标志2,byte0:仪表锂电在线标志位 byte1:动力锂电在线标志位 byte2:燃电锂电在线标志位 byte3:高压配电板在线标志位 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; // uint32_t reserved4; // 保留字段,协议预留 uint32_t heartbeat; // 主机心跳计数器或标志值 } ccuState; typedef struct { unsigned char insSocHold1; unsigned char insSocHold2; unsigned char insSocHold3; unsigned char fcuToInsLimit1; unsigned char fcuToinsLimit2; unsigned char powerSocHold1; unsigned char powerSocHold2; unsigned char powerSocHold3; unsigned char fcuToPowerLimit1; unsigned char fcuToPowerLimit2; }ccuSetParmCmd; typedef struct { unsigned char fcmode; unsigned char fcuCmd; unsigned char fcuPowerEfficiency; unsigned char insChargeEnable; unsigned char insBatCmd; unsigned char powerBatCmd; unsigned short powerBatEfficiency; unsigned char heartbeat; unsigned char masterState; unsigned int paceholder1; unsigned int paceholder2; }ccuColCmd; typedef struct disHighVolBusState { //断路器状态 // 5: 燃料电池断路器 unsigned char fuelCellCircuitBreaker; // 6: 动力锂电池断路器 unsigned char powerLithiumBatteryCircuitBreaker; // 7: 推进电机断路器 unsigned char propulsionMotorCircuitBreaker; // 8: 锂电池组仪表断路器 unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; // 9: DC/DC5模块断路器 unsigned char dcDc5ModuleCircuitBreaker; // 10: 艏部高压配电箱断路器 unsigned char bowHighVoltageDistributionBoxCircuitBreaker; // 11: 艉部FT装置4/5断路器 unsigned char sternFTDevice45CircuitBreaker; // 14: FB预留断路器 unsigned char fbReservedCircuitBreaker; // 12: 艉舵开关1断路器 unsigned char sternRudderSwitch1CircuitBreaker; // 13: 艉舵开关2断路器 unsigned char sternRudderSwitch2CircuitBreaker; // 15: TYZ预留断路器 unsigned char tyzReservedCircuitBreaker; // 16: 预留断路器 unsigned char reservedCircuitBreaker; // unsigned char busInsulationLow; // unsigned char busAInsulationHigh; // 17: DC/DC5故障字低 // 0x00: 正常状态 // Bit0: DC/DC模块过温关机 // Bit1: 输出过流 // Bit2: 输出过压 // Bit3: 输出欠压 // Bit4: 输入过压 // Bit5: 输入欠压 // Bit6: 输出短路保护 // Bit7: 内部故障 // 18: DC/DC5故障字高 unsigned char dcDcFaultWord1; // 0x00: 正常状态 // Bit0: 通讯故障报警 // Bit1: 工作状态 1:启动,0:关闭 // Bit2: 冷却泵1故障 冷却泵1故障 : 1故障, 0 正常 // Bit3: 冷却泵2故障 冷却泵2故障 :1故障,0 正常 // Bit4: 冷却水泄露 // Bit5:冷却泵1运行状态 :1 运行,0 停止 // Bit6:冷却泵2运行状态 :1 运行,0 停止 unsigned char dcDcFaultWord2; // 19: 动力母排绝缘状态(0x55 正常,0xAA 绝缘低) unsigned char powerBusInsulationStatus; // 20: A汇流排绝缘状态(0x55 正常,0xAA 绝缘低) unsigned char aBusInsulationStatus; // 21: 仪表电源状态 (0x55 正常,0xAA 故障) unsigned char meterPowerLossSignal; // 22: 应急电源状态 (0x55 正常,0xAA 故障) unsigned char emergencyPowerLossSignal; // 22: dc/dc温度 unsigned char dcDcTemperature; // 23: 动力汇流排电压 unsigned short powerBusVoltage; // 24: DC/DC5模块电流 unsigned short dcDc5ModuleCurrent; // 25: 动力汇流排电流 unsigned short powerBusCurrent; // 26: A汇流排电压 unsigned short busbarAVoltage; // 27: 推进电机控制箱电流 unsigned short propulsionMotorControlBoxCurrent; // 28: A汇流排电流 unsigned short busbarACurrent; // 29: 锂电池组(仪表)电流 unsigned short lithiumBatteryGroupMeterCurrent; // 30: 艏部高压配电箱电流 unsigned short bowHighVoltageDistributionBoxCurrent; // 31: 艉部FT装置4/5电流 unsigned short sternFTDevice45Current; // 32: TYZ预留开关电流 unsigned short tyzReservedSwitchCurrent; // 33: 艉舵开关1电流 unsigned short sternRudderSwitch1Current; // 34: 预留电流 unsigned short reservedCurrent1; // 改为 reservedCurrent1 以避免重名 // 35: 艉舵开关2电流 unsigned short sternRudderSwitch2Current; // 36: 预留电流2 unsigned short reservedCurrent2; // 改为 reservedCurrent2 以避免重名 // 37: FB预留电流 unsigned short fbReservedSwitchCurrent; // 38: 预留电流3 unsigned short reservedCurrent3; // 改为 reservedCurrent3 以避免重名 // 39: 冷却水压力 unsigned short coolWaterPressure; }disHighVolBusState; typedef struct disHighAVolBusState { //5. 艏部FT装置1/2/3断路器 unsigned char bowFTDevice123CircuitBreaker; //6. 启闭机构断路器 unsigned char actuatorCircuitBreaker; //7. 桅杆舵机控制箱断路器 unsigned char mastSteeringGearControlBoxCircuitBreaker; //8. XCZ断路器 unsigned char xczCircuitBreaker; //9. 艏舵控制箱断路器 unsigned char bowRudderControlBoxCircuitBreaker; //10. 敞水盖启动电缸断路器 unsigned char openWaterCoverStartCylinderCircuitBreaker; //11. 仪表电源失电信号 (0x55 正常,0xAA 故障) unsigned char instrumentPowerFailureSignal; //12. 应急电源失电信号 (0x55 正常,0xAA 故障) unsigned char emergencyPowerFailureSignal; //13. 浸水报警 // unsigned char busbarBInsulationStatus; unsigned char waterIngressionAlarm; //14. 汇流排B电压 unsigned short busbarBVoltage; //15. 汇流排B电流 unsigned short busbarBCurrent; //16. 艏部FT装置1/2/3电流 unsigned short bowFTDevice123Current; //17. 启闭机构电流 unsigned short actuatorCurrent; //18. 桅杆舵机控制箱电流 unsigned short mastSteeringGearControlBoxCurrent; //19. XCZ电流 unsigned short xczCurrent; //20. 艏舵控制箱电流 unsigned short bowRudderControlBoxCurrent; //21. 敞水盖启动电缸电流 unsigned short openWaterCoverStartCylinderCurrent; }disHighAVolBusState; typedef struct disHighBVolBusState { //5. 锂电池组(仪表)断路器 unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; //6. 艏部低压配电箱断路器 unsigned char bowLowVoltageDistributionBoxCircuitBreaker; //7. UNIT4仪表DC48V断路器 unsigned char unit4InstrumentDC48VCircuitBreaker; //8. DC-C1直流配电板断路器 unsigned char dcC1DCDistributionPanelCircuitBreaker; //9. 预留断路器1 unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 //10. 预留断路器2 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 //11. 应急锂电池组2断路器 unsigned char emergencyLithiumBatteryGroup2CircuitBreaker; //12. 仪表电源失电信号 (0x55 正常,0xAA 故障) unsigned char instrumentPowerFailureSignal; //13. 应急电源失电信号 (0x55 正常,0xAA 故障) unsigned char emergencyPowerFailureSignal; //14. 仪表汇流排绝缘低 (0x55 正常,0xAA 绝缘低) unsigned char instrumentBusbarInsulationLow; //15. 仪表母排电压 unsigned short instrumentBusbarVoltage; //16. 艏部低压配电箱电流 unsigned short bowLowVoltageDistributionBoxCurrent; //17. DC-C1(直流配电板1)仪表DC48V电流 unsigned short dcC1InstrumentDC48VCurrent; //18. 预留电流 unsigned short reservedCurrent1; // 为了区分,添加了数字后缀 //19. 应急锂电池组2电流 unsigned short emergencyLithiumBatteryGroup2Current; //20. 锂电池组(仪表)电流 unsigned short lithiumBatteryGroupInstrumentCurrent; //21. UNIT4仪表DC48V电流 unsigned short unit4InstrumentDC48VCurrent; //22. Ushort 预留电流 unsigned short reservedCurrent2; // 为了区分,添加了数字后缀 //23. 应急2汇流排电压 unsigned short emergency2BusbarVoltage; //24. 复合能源管控系统应急DC48V电流 unsigned short compositeEnergyManagementSystemEmergencyDC48VCurrent; //25. 燃料电池安全系统应急DC48V电流 unsigned short fuelCellSecuritySystemEmergencyDC48VCurrent; //26. PLC控制电源电流 unsigned short plcControlPowerCurrent; } disLowMainBusState; typedef struct disLowBusState { //5. UNIT1断路器 unsigned char unit1CircuitBreaker; //6. UNIT2断路器 unsigned char unit2CircuitBreaker; //7. UNIT3断路器 unsigned char unit3CircuitBreaker; //8. UNIT5断路器 unsigned char unit5CircuitBreaker; //9. 艏部PZ装置断路器 unsigned char bowPZDeviceCircuitBreaker; //10. 预留断路器1 unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 //11. 预留断路器2 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 //12. 应急锂电池组1断路器 unsigned char emergencyLithiumBatteryGroup1CircuitBreaker; //13. 仪表电源失电信号 (0x55 正常,0xAA 故障) unsigned char powerFailureSignal; //14. 应急电源失电信号 (0x55 正常,0xAA 故障) unsigned char emergencyPowerFailureSignal; //15. 浸水报警 (0x55 正常,0xAA 故障) unsigned char waterIngressionAlarm; //16. 仪表母排电压 unsigned short instrumentBusbarVoltage; //17. 仪表母排电流 unsigned short instrumentBusbarCurrent; //18. UNIT1电流 unsigned short unit1Current; //19. UNIT2电流 unsigned short unit2Current; //20. UNIT3电流 unsigned short unit3Current; //21. UNIT5电流 unsigned short unit5Current; //22. 艏部PZ装置电流 unsigned short bowPZDeviceCurrent; //23. 应急锂电池组1电流 unsigned short emergencyLithiumBatteryGroup1Current; //24. 应急1汇流排电压 unsigned short emergency1BusbarVoltage; }disLowBusState; typedef struct disHighVolBusCmd { // 5: 燃料电池断路器 unsigned char fuelCellCircuitBreaker; // 6: 动力锂电池断路器 unsigned char powerLithiumBatteryCircuitBreaker; // 7: 推进电机断路器 unsigned char propulsionMotorCircuitBreaker; // 8: 锂电池组仪表断路器 unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; // 9: DC/DC5模块断路器 unsigned char dcDc5ModuleCircuitBreaker; // 10: 艏部高压配电箱断路器 unsigned char bowHighVoltageDistributionBoxCircuitBreaker; // 11: 艉部FT装置4/5断路器 unsigned char sternFTDevice45CircuitBreaker; // // 12: 艉舵开关1断路器 // unsigned char sternRudderSwitch1CircuitBreaker; // // 13: 艉舵开关2断路器 // unsigned char sternRudderSwitch2CircuitBreaker; // // 14: FB预留断路器 // unsigned char fbReservedCircuitBreaker; // 12: FB预留断路器 unsigned char fbReservedCircuitBreaker; // 13: 艉舵开关1断路器 unsigned char sternRudderSwitch1CircuitBreaker; // 14: 艉舵开关2断路器 unsigned char sternRudderSwitch2CircuitBreaker; // 15: TYZ预留断路器 unsigned char tyzReservedCircuitBreaker; // 16: 预留断路器 unsigned char reservedCircuitBreaker; // 17: DC/DC5模块启动 unsigned char dcdc5Module; // 18: 冷却系统启动 unsigned char coolingSystem; // unsigned char inputWater; // unsigned char outputWater; }disHighVolBusCmd; typedef struct disHighAVolBusCmd { //5. 艏部FT装置1/2/3断路器 unsigned char bowFTDevice123CircuitBreaker; //6. 启闭机构断路器 unsigned char actuatorCircuitBreaker; //7. 桅杆舵机控制箱断路器 unsigned char mastSteeringGearControlBoxCircuitBreaker; //8. XCZ断路器 unsigned char xczCircuitBreaker; //9. 艏舵控制箱断路器 unsigned char bowRudderControlBoxCircuitBreaker; //10. 敞水盖启动电缸断路器 unsigned char openWaterCoverStartCylinderCircuitBreaker; }disHighAVolBusCmd; typedef struct disHighBVolBusCmd { //5. 锂电池组(仪表)断路器 unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; //6. 艏部低压配电箱断路器 unsigned char bowLowVoltageDistributionBoxCircuitBreaker; //7. UNIT4仪表DC48V断路器 unsigned char unit4InstrumentDC48VCircuitBreaker; //8. DC-C1直流配电板断路器 unsigned char dcC1DCDistributionPanelCircuitBreaker; //9. 预留断路器1 unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 //10. 预留断路器2 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 //11. 应急锂电池组2断路器 unsigned char emergencyLithiumBatteryGroup2CircuitBreaker; }disLowMainBusCmd; typedef struct disLowBusCmd { unsigned char unit1CircuitBreaker; unsigned char unit2CircuitBreaker; unsigned char unit3CircuitBreaker; unsigned char unit5CircuitBreaker; unsigned char bowPZDeviceCircuitBreaker; unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 unsigned char emergencyLithiumBatteryGroup1CircuitBreaker; }disLowBusCmd; #pragma pack (0) //状态结构体定义 typedef struct pmState { ccuState ccustate; disHighVolBusState bus1State; disHighAVolBusState bus2State; disLowMainBusState bus3State; disLowBusState bus4State; } PmState; typedef struct disBus1Breaker { unsigned char fuelCellCircuitBreaker : 1; unsigned char powerLithiumBatteryCircuitBreaker : 1; unsigned char propulsionMotorCircuitBreaker : 1; unsigned char lithiumBatteryGroupInstrumentCircuitBreaker : 1; unsigned char dcDc5ModuleCircuitBreaker : 1; unsigned char bowHighVoltageDistributionBoxCircuitBreaker : 1; unsigned char sternFTDevice45CircuitBreaker : 1; unsigned char sternRudderSwitch1CircuitBreaker : 1; unsigned char sternRudderSwitch2CircuitBreaker : 1; unsigned char fbReservedCircuitBreaker : 1; unsigned char tyzReservedCircuitBreaker : 1; unsigned char reservedCircuitBreaker : 1; unsigned char dcdcmodel : 1; unsigned char coolingSystem : 1; unsigned short paceholder : 4; } disBus1Breaker; typedef struct disBus2Breaker { unsigned char bowFTDevice123CircuitBreaker : 1; unsigned char actuatorCircuitBreaker : 1; unsigned char mastSteeringGearControlBoxCircuitBreaker : 1; unsigned char xczCircuitBreaker : 1; unsigned char bowRudderControlBoxCircuitBreaker : 1; unsigned char openWaterCoverStartCylinderCircuitBreaker : 1; unsigned short paceholder : 10; /* data */ } disBus2Breaker; typedef struct disBus3Breaker { unsigned char lithiumBatteryGroupInstrumentCircuitBreaker : 1; unsigned char bowLowVoltageDistributionBoxCircuitBreaker : 1; unsigned char unit4InstrumentDC48VCircuitBreaker : 1; unsigned char dcC1DCDistributionPanelCircuitBreaker : 1; unsigned char reservedCircuitBreaker1 : 1; unsigned char reservedCircuitBreaker2 : 1; unsigned char emergencyLithiumBatteryGroup2CircuitBreaker : 1; unsigned short paceholder : 9; /* data */ } disBus3Breaker; typedef struct disBus4Breaker { unsigned char unit1CircuitBreaker : 1; unsigned char unit2CircuitBreaker : 1; unsigned char unit3CircuitBreaker : 1; unsigned char unit5CircuitBreaker : 1; unsigned char bowPZDeviceCircuitBreaker : 1; unsigned char reservedCircuitBreaker1 : 1; // 为了区分,添加了数字后缀 unsigned char reservedCircuitBreaker2 : 1; // 为了区分,添加了数字后缀 unsigned char emergencyLithiumBatteryGroup1CircuitBreaker : 1; unsigned short paceholder : 8; /* data */ } disBus4Breaker; typedef struct disSysBreakerList { disBus1Breaker bus1Breaker; disBus2Breaker bus2Breaker; disBus3Breaker bus3Breaker; disBus4Breaker bus4Breaker; } disSysBreaker; typedef struct MSControlCmd { unsigned int powerCMD; unsigned int modCMD; unsigned int workCMD; }MSControlCmd; namespace FcuCommand { enum Type : unsigned char { SelfCheck = 0x01, Start = 0x02, Stop = 0x03, Reset = 0x04, EmergencyStop = 0x05, Supply = 0x06, WarmUp = 0x07, Maintenance = 0x08 }; } enum class FcuState : unsigned char { //初始化 Init = 0x01, //待机 Standby = 0x02, //自检异常 SelfCheckError = 0x03, //就绪 Ready = 0x04, //启动 Start = 0x05, //运行 Running = 0x06, //停机 Stop = 0x07, //故障 Fault = 0x08, //补给 Supply = 0x09, //预热 WarmUp = 0x0A, //预热完成 WarmUpComplete = 0x0B, //维护 Maintenance = 0x0C, //维护完成 MaintenanceComplete = 0x0D }; namespace BatteryCommand { enum Type : unsigned char { Start = 0x10, Stop = 0x20, Hold = 0x00 }; }; namespace PMMode { enum Type : unsigned char { Normal = 0, Test = 1, Debug = 2 }; }; //工况定义 namespace WorkCondition { enum Type : unsigned char { CHANING = 0, // 工况切换中 STANDBY = 1, // 待机工况 SHORE_BASED_READY = 2, // 岸基备航 WATER_BASED_READY = 3, // 水中备航 REMOTE_CONTROL = 4, // 遥控工况 CRUISE_MODE = 5, // 巡航模式 HIGH_SPEED_MODE = 6, // 高速模式 ASCEND_DESCEND = 7, // 上浮下潜 BUOYANCY_ADJUST = 8, // 浮调模式 UNDERWATER_RECON = 9, // 水下侦查 SURFACE_RECON = 10, // 水面侦查 DJ_MODE = 11, // DJ模式 LIFT_MODE = 12 // 调试模式 }; }; namespace RunMode { enum Type : unsigned char { //正常模式 Normal = 0, //测试模式 Test = 1, //调试模式 Debug = 2 }; }; namespace TaskType { enum Type : unsigned char { THROW_LOAD = 1, // 抛载 FLOAT_UP = 2, // 运动上浮 RECYCLE = 3, // 回收 HOVER = 4, // 悬停 SAT_COMM = 5, // 上浮通信 SAT_CALIBRATE = 6, // 上浮校准 TOUR = 7, // 游曳 SAIL = 8, // 航行 EMER_SAT_COMM = 9, //紧急上浮通信 EMER_SAIL = 10 //紧急航行 }; inline const std::string toString(Type type) { static const std::map names = { {THROW_LOAD, "throwLoad"}, {FLOAT_UP, "floatUp"}, {RECYCLE, "recycle"}, {HOVER, "hover"}, {SAT_COMM, "satComm"}, {SAT_CALIBRATE, "satCalibrate"}, {TOUR, "tour"}, {SAIL, "sail"}, {EMER_SAT_COMM,"emerSatComm"}, {EMER_SAIL,"emerSail"} }; auto it = names.find(type); return it != names.end() ? it->second : "unknown"; } inline Type fromString(const std::string& str) { static const std::map stringToEnum = { {"throwLoad", THROW_LOAD}, {"floatUp", FLOAT_UP}, {"recycle", RECYCLE}, {"hover", HOVER}, {"satComm", SAT_COMM}, {"emerSatComm",SAT_COMM}, {"satCalibrate",SAT_CALIBRATE}, {"tour", TOUR}, {"sail", SAIL}, {"emerSatComm",EMER_SAT_COMM}, {"emerSail",EMER_SAIL} }; auto it = stringToEnum.find(str); return it != stringToEnum.end() ? it->second : static_cast(0); // 返回0表示无效类型 } } namespace EquipmentCommand { enum Type : unsigned char { OFF = 0, //断电 ON = 1, //上电 //仪表电上电 METER_ON = 2, //动力电上电 POWER_ON = 3, //仪表电断电 METER_OFF = 4, //动力电断电 POWER_OFF = 5, }; }; struct MissionState { int type; bool enableBowRudder; bool enableBuoyancyAdjustment; }; struct DeviceSwitchCmd { int id; int cmd; }; namespace DeviceId { enum Type : unsigned char { singleBeamSonar1 = 0, singleBeamSonar2 = 1, singleBeamSonar3 = 2, singleBeamSonar4 = 3, singleBeamSonar5 = 4, singleBeamSonar6 = 5, singleBeamSonar7 = 6, singleBeamSonar8 = 7, forwardSonar = 8, bowCover1 = 9, bowCover2 = 10, bowCover3 = 11, bowCover4 = 12, bowCover5 = 13, bowCover6 = 14, bowRudderDeploy = 15, bowRudderServo1 = 16, bowRudderServo2 = 17, depth1 = 18, depth2 = 19, depth3 = 20, overDeep1 = 21, overDeep2 = 22, ctd1 = 23, ctd2 = 24, soundVeloc = 25, waterInject = 26, bowWaterInet1 = 27, bowWaterInet2 = 28, bowWaterInet3 = 29, bowWaterInet4 = 30, bowWaterInet5 = 31, bowWaterInet6 = 32, bowWaterInet7 = 33, bowWaterInet8 = 34, sideSonar = 35, lowFreqSonar = 36, launchControler = 37, photoSensor = 38, electSensor = 39, commMast = 40, mastLiftingServo = 41, USBL = 42, DVL = 43, buoyancyAdjust1 = 44, buoyancyAdjust2 = 45, buoyancyAdjust3 = 46, buoyancyAdjust4 = 47, buoyancyAdjust5 = 48, sternRudderServo1 = 49, sternRudderServo2 = 50, sternRudderServo3 = 51, sternRudderServo4 = 52, thruster = 53, bowThrow = 54, sternThrow = 55, buoyage = 56, ins = 57, ntp = 58, inputWaterSensor1 = 59, inputWaterSensor2 = 60, inputWaterSensor3 = 61, }; inline const std::string toString(Type type) { static const std::map names = { {singleBeamSonar1, "singleBeamSonar1"}, {singleBeamSonar2, "singleBeamSonar2"}, {singleBeamSonar3, "singleBeamSonar3"}, {singleBeamSonar4, "singleBeamSonar4"}, {singleBeamSonar5, "singleBeamSonar5"}, {singleBeamSonar6, "singleBeamSonar6"}, {singleBeamSonar7, "singleBeamSonar7"}, {singleBeamSonar8, "singleBeamSonar8"}, {forwardSonar, "forwardSonar"}, {bowCover1, "bowCover1"}, {bowCover2, "bowCover2"}, {bowCover3, "bowCover3"}, {bowCover4, "bowCover4"}, {bowCover5, "bowCover5"}, {bowCover6, "bowCover6"}, {bowRudderDeploy, "bowRudderDeploy"}, {bowRudderServo1, "bowRudderServo1"}, {bowRudderServo2, "bowRudderServo2"}, {depth1, "depth1"}, {depth2, "depth2"}, {depth3, "depth3"}, {overDeep1, "overDeep1"}, {overDeep2, "overDeep2"}, {ctd1, "ctd1"}, {ctd2, "ctd2"}, {soundVeloc, "soundVeloc"}, {waterInject, "waterInject"}, {bowWaterInet1, "bowWaterInet1"}, {bowWaterInet2, "bowWaterInet2"}, {bowWaterInet3, "bowWaterInet3"}, {bowWaterInet4, "bowWaterInet4"}, {bowWaterInet5, "bowWaterInet5"}, {bowWaterInet6, "bowWaterInet6"}, {bowWaterInet7, "bowWaterInet7"}, {bowWaterInet8, "bowWaterInet8"}, {sideSonar, "sideSonar"}, {lowFreqSonar, "lowFreqSonar"}, {launchControler, "launchControler"}, {photoSensor, "photoSensor"}, {electSensor, "electSensor"}, {commMast, "commMast"}, {mastLiftingServo, "mastLiftingServo"}, {USBL, "USBL"}, {DVL, "DVL"}, {buoyancyAdjust1, "buoyancyAdjust1"}, {buoyancyAdjust2, "buoyancyAdjust2"}, {buoyancyAdjust3, "buoyancyAdjust3"}, {buoyancyAdjust4, "buoyancyAdjust4"}, {buoyancyAdjust5, "buoyancyAdjust5"}, {sternRudderServo1, "sternRudderServo1"}, {sternRudderServo2, "sternRudderServo2"}, {sternRudderServo3, "sternRudderServo3"}, {sternRudderServo4, "sternRudderServo4"}, {thruster, "thruster"}, {bowThrow, "bowThrow"}, {sternThrow, "sternThrow"}, {buoyage, "buoyage"}, {ins, "ins"}, {ntp, "ntp"}, {inputWaterSensor1, "inputWaterSensor1"}, {inputWaterSensor2, "inputWaterSensor2"}, {inputWaterSensor3, "inputWaterSensor3"} }; auto it = names.find(type); return it != names.end() ? it->second : "unknown"; } } // 设备类id存储 static const std::unordered_set underWterDevices = { DeviceId::singleBeamSonar1, DeviceId::singleBeamSonar2, DeviceId::singleBeamSonar3, DeviceId::singleBeamSonar4, DeviceId::singleBeamSonar5, DeviceId::singleBeamSonar6, DeviceId::singleBeamSonar7, DeviceId::singleBeamSonar8, DeviceId::forwardSonar, DeviceId::USBL, DeviceId::DVL, DeviceId::lowFreqSonar }; static const std::unordered_set noPowerDevices = { DeviceId::depth1, DeviceId::depth2, DeviceId::depth3, DeviceId::overDeep1, DeviceId::overDeep2, DeviceId::ctd1, DeviceId::ctd2, DeviceId::soundVeloc, DeviceId::waterInject, DeviceId::launchControler, DeviceId::photoSensor, DeviceId::electSensor, DeviceId::commMast, DeviceId::ntp, DeviceId::bowThrow, DeviceId::sternThrow, DeviceId::ins, DeviceId::inputWaterSensor1, DeviceId::inputWaterSensor2, DeviceId::inputWaterSensor3 }; namespace FaultEnable { enum Type : bool { BasicNavigationFault_1 = false, // 使能故障 BasicNavigationFault_2 = false, BasicNavigationFault_3 = false, BasicNavigationFault_4 = false, BasicNavigationFault_5 = false, BasicNavigationFault_6 = false, BasicNavigationFault_7 = false, BasicNavigationFault_8 = false, BasicNavigationFault_9 = false, BasicNavigationFault_10 = false, ExtendedNavigationFault_1 = false, // 使能故障 ExtendedNavigationFault_2 = false, ExtendedNavigationFault_3 = false, ExtendedNavigationFault_4 = false, ObstacleAvoidanceFault_1 = false, // 使能故障 ObstacleAvoidanceFault_2 = false, ObstacleAvoidanceFault_3 = false, BuoyancyControlFault_1 = false, // 使能故障 BuoyancyControlFault_2 = false, BuoyancyControlFault_3 = false, BuoyancyControlFault_4 = false, CommunicationSystemFault_1 = false, // 使能故障 CommunicationSystemFault_2 = false, CommunicationSystemFault_3 = false, PayloadSystemFault_1 = false, // 使能故障 PayloadSystemFault_2 = false, PayloadSystemFault_3 = false, PayloadSystemFault_4 = false, PayloadSystemFault_5 = false, PayloadSystemFault_6 = false, PayloadSystemFault_7 = false, EmergencySystemFault_1 = false, // 使能故障 EmergencySystemFault_2 = false, EmergencySystemFault_3 = false, EmergencySystemFault_4 = false, EmergencySystemFault_5 = false, EmergencySystemFault_6 = false, SensorSystemFault_1 = false, // 使能故障 SensorSystemFault_2 = false, SensorSystemFault_3 = false, }; } #endif