965 lines
34 KiB
C++
965 lines
34 KiB
C++
#ifndef PMSYSVARIABLE_H
|
||
#define PMSYSVARIABLE_H
|
||
|
||
//宏定义
|
||
#include<string>
|
||
#include <map>
|
||
#include <unordered_set>
|
||
|
||
#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<Type, std::string> 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<std::string, Type> 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<Type>(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<Type, std::string> 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<int> 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<int> 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
|
||
|
||
|