#ifndef PMSYSVARIABLE_H #define PMSYSVARIABLE_H //宏定义 #include #include #define BREAK_OFF 0xAA #define BREAK_ON 0x55 #define BREAK_FALSE 0x5A //消息结构体变量定义 #pragma pack (1) typedef struct ccuState { unsigned char currentWorkCondition; unsigned char fcuState; unsigned char fcuFaultLeve; float powerLimit; float totalPowerGeneration; float ch4o; float o2; float fcuVoltage; float fcuCurrent; float o2Level; float placeholder1; float exchangerTemperature; float fcuOutPower; float fcuOutIns; float fcuVoltageIns; float fcuVoltagePower; float fcuCurrentIns; float fcuCurrentPower; float h2Concentration1; float h2Concentration2; float o2Concentration1; float o2Concentration2; float ch4oConcentration1; float ch4oConcentration2; float backpressure1; float backpressure2; unsigned char flameDetection; unsigned char fcuGZ_1L; unsigned char fcuGZ_1H; unsigned char fcuGZ_2L; unsigned char fcuGZ_2H; unsigned char fcuGZ_3L; unsigned char fcuGZ_3H; unsigned char insPosRelayState; unsigned char insNegRelayState; unsigned char powerPosRelayState; unsigned char powerNegRelayState; unsigned short insBatLimit; unsigned short powerBatLimit; unsigned char insBatSoc; unsigned char powerBatSoc; unsigned short insBatTotalElectricity; unsigned short powerBatTotalElectricity; unsigned short insBatCurrentElectricity; unsigned short powerBatCurrentElectricity; unsigned char insChargeState; unsigned char powerChargeState; unsigned short insLinkVoltage; unsigned short insPackVoltage; unsigned short insCurrent; unsigned short insPosInsulationResistance; unsigned short insNegInsulationResistance; unsigned short powerLinkVoltage; unsigned short powerPackVoltage; unsigned short powerCurrent; unsigned short powerPosInsulationResistance; unsigned short powerNegInsulationResistance; unsigned char insEmergencyStatusWord; unsigned char powerEmergencyStatusWord; unsigned char insAlarmIdentificationWord; unsigned char powerAlarmIdentificationWord; unsigned char insCurrentSocHold1; unsigned char insCurrentSocHold2; unsigned char insCurrentSocHold3; unsigned char fcuCurrentToInsLimit1; unsigned char fcuCurrentToinsLimit2; unsigned char powerCurrentSocHold1; unsigned char powerCurrentSocHold2; unsigned char powerCurrentSocHold3; unsigned char powerCurrentToInsLimit1; unsigned char powerCurrentToinsLimit2; float placeholder2; float placeholder3; float placeholder4; float placeholder5; } 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 workCondition; unsigned char fcuCmd; unsigned char fcuPowerEfficiency; unsigned char fcuInsEfficiency; unsigned char insBatCmd; unsigned char powerBatCmd; unsigned char powerBatEfficiency; unsigned char heartbeat; unsigned char masterState; }ccuColCmd; typedef struct disHighVolBusState { unsigned char fuelCellCircuitBreaker; unsigned char powerLithiumBatteryCircuitBreaker; unsigned char propulsionMotorCircuitBreaker; unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; unsigned char dcDc5ModuleCircuitBreaker; unsigned char bowHighVoltageDistributionBoxCircuitBreaker; unsigned char sternFTDevice45CircuitBreaker; unsigned char sternRudderSwitch1CircuitBreaker; unsigned char sternRudderSwitch2CircuitBreaker; unsigned char fbReservedCircuitBreaker; unsigned char tyzReservedCircuitBreaker; unsigned char reservedCircuitBreaker; unsigned char busInsulationLow; unsigned char busAInsulationHigh; unsigned char lostPower; unsigned char lostEmerPower; unsigned short powerBusVoltage; unsigned short dcDc5ModuleCurrent; unsigned short powerBusCurrent; unsigned short busbarAVoltage; unsigned short propulsionMotorControlBoxCurrent; unsigned short busbarACurrent; unsigned short lithiumBatteryGroupMeterCurrent; unsigned short bowHighVoltageDistributionBoxCurrent; unsigned short sternFTDevice45Current; unsigned short tyzReservedSwitchCurrent; unsigned short sternRudderSwitch1Current; unsigned short reservedCurrent1; // 改为 reservedCurrent1 以避免重名 unsigned short sternRudderSwitch2Current; unsigned short reservedCurrent2; // 改为 reservedCurrent2 以避免重名 unsigned short fbReservedSwitchCurrent; unsigned short reservedCurrent3; // 改为 reservedCurrent3 以避免重名 }disHighVolBusState; typedef struct disHighAVolBusState { unsigned char bowFTDevice123CircuitBreaker; unsigned char actuatorCircuitBreaker; unsigned char mastSteeringGearControlBoxCircuitBreaker; unsigned char xczCircuitBreaker; unsigned char bowRudderControlBoxCircuitBreaker; unsigned char openWaterCoverStartCylinderCircuitBreaker; unsigned char instrumentPowerFailureSignal; unsigned char emergencyPowerFailureSignal; unsigned char waterIngressionAlarm; unsigned short busbarBVoltage; unsigned short busbarBCurrent; unsigned short bowFTDevice123Current; unsigned short actuatorCurrent; unsigned short mastSteeringGearControlBoxCurrent; unsigned short xczCurrent; unsigned short bowRudderControlBoxCurrent; unsigned short openWaterCoverStartCylinderCurrent; }disHighAVolBusState; typedef struct disHighBVolBusState { unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; unsigned char bowLowVoltageDistributionBoxCircuitBreaker; unsigned char unit4InstrumentDC48VCircuitBreaker; unsigned char dcC1DCDistributionPanelCircuitBreaker; unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 unsigned char emergencyLithiumBatteryGroup2CircuitBreaker; unsigned char instrumentPowerFailureSignal; unsigned char emergencyPowerFailureSignal; unsigned char instrumentBusbarInsulationLow; unsigned short instrumentBusbarVoltage; unsigned short bowLowVoltageDistributionBoxCurrent; unsigned short dcC1InstrumentDC48VCurrent; unsigned short reservedCurrent1; // 为了区分,添加了数字后缀 unsigned short emergencyLithiumBatteryGroup2Current; unsigned short lithiumBatteryGroupInstrumentCurrent; unsigned short unit4InstrumentDC48VCurrent; unsigned short reservedCurrent2; // 为了区分,添加了数字后缀 unsigned short emergency2BusbarVoltage; unsigned short compositeEnergyManagementSystemEmergencyDC48VCurrent; unsigned short fuelCellSecuritySystemEmergencyDC48VCurrent; unsigned short plcControlPowerCurrent; }disHighBVolBusState; typedef struct disLowBusState { unsigned char unit1CircuitBreaker; unsigned char unit2CircuitBreaker; unsigned char unit3CircuitBreaker; unsigned char unit5CircuitBreaker; unsigned char bowPZDeviceCircuitBreaker; unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 unsigned char emergencyLithiumBatteryGroup1CircuitBreaker; unsigned char powerFailureSignal; unsigned char waterIngressionAlarm; unsigned short instrumentBusbarVoltage; unsigned short instrumentBusbarCurrent; unsigned short unit1Current; unsigned short unit2Current; unsigned short unit3Current; unsigned short unit5Current; unsigned short bowPZDeviceCurrent; unsigned short emergencyLithiumBatteryGroup1Current; unsigned short emergency1BusbarVoltage; }disLowBusState; typedef struct disHighVolBusCmd { unsigned char fuelCellCircuitBreaker; unsigned char powerLithiumBatteryCircuitBreaker; unsigned char propulsionMotorCircuitBreaker; unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; unsigned char dcDc5ModuleCircuitBreaker; unsigned char bowHighVoltageDistributionBoxCircuitBreaker; unsigned char sternFTDevice45CircuitBreaker; unsigned char sternRudderSwitch1CircuitBreaker; unsigned char sternRudderSwitch2CircuitBreaker; unsigned char fbReservedCircuitBreaker; unsigned char tyzReservedCircuitBreaker; unsigned char reservedCircuitBreaker; unsigned char dcdc5Module; unsigned char inputWater; unsigned char outputWater; }disHighVolBusCmd; typedef struct disHighAVolBusCmd { unsigned char bowFTDevice123CircuitBreaker; unsigned char actuatorCircuitBreaker; unsigned char mastSteeringGearControlBoxCircuitBreaker; unsigned char xczCircuitBreaker; unsigned char bowRudderControlBoxCircuitBreaker; unsigned char openWaterCoverStartCylinderCircuitBreaker; }disHighAVolBusCmd; typedef struct disHighBVolBusCmd { unsigned char lithiumBatteryGroupInstrumentCircuitBreaker; unsigned char bowLowVoltageDistributionBoxCircuitBreaker; unsigned char unit4InstrumentDC48VCircuitBreaker; unsigned char dcC1DCDistributionPanelCircuitBreaker; unsigned char reservedCircuitBreaker1; // 为了区分,添加了数字后缀 unsigned char reservedCircuitBreaker2; // 为了区分,添加了数字后缀 unsigned char emergencyLithiumBatteryGroup2CircuitBreaker; }disHighBVolBusCmd; 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; disHighBVolBusState 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 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 }; }; 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模式 DEBUG_MODE = 12 // 调试模式 }; }; 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 // 航行 }; 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"} }; 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}, {"satCalibrate", SAT_CALIBRATE}, {"tour", TOUR}, {"sail", SAIL} }; auto it = stringToEnum.find(str); return it != stringToEnum.end() ? it->second : static_cast(0); // 返回0表示无效类型 } } namespace DriverCmd { 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 FaultEnable { enum Type : bool { BasicNavigationFault_1 = true, // 使能故障 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