H100PowerManger 上位机 / 下位机通信协议
本文档整理自 src/pPowerManger 源码,完整描述能源管理程序 pPowerManger 与 上位机(任务规划 / 决策 / 外部通信 / XC 阵 / ZDP 等 MOOS 应用)以及与 下位机(复合管控器 CCU、高压母线、高压汇流排 A、仪表母线、仪表汇流排等配电设备)之间的通信协议。
主要源码依据:
- 上位机:
UpperCommManager.h/.cpp、PowerManger.h/.cpp、driver.h/.cpp、upmsg/*.h
- 下位机:
LowerCommManager.h/.cpp、udpcomm/udpComm.h/.cpp、udpcomm/ccuUdpMsg.h、pmSysvariable.h
目录
- 总体架构
- 上位机通信协议(MOOS + JSON)
- 2.1 通信方式与参数
- 2.2 消息总览
- 2.3 上位机 → pPowerManger(订阅消息)
- 2.4 pPowerManger → 上位机(发布消息)
- 2.5 设备表(DriverTable)字段
- 2.6 次级配电(secdist)字段
- 2.7 设备 ID 枚举
- 下位机通信协议(UDP 二进制)
- 3.1 通信方式与参数
- 3.2 通用帧格式与校验
- 3.3 消息 ID 汇总
- 3.4 复合管控器(CCU)报文
- 3.5 配电系统报文
- 附录:常量与枚举
1. 总体架构
2. 上位机通信协议(MOOS + JSON)
2.1 通信方式与参数
| 项目 |
说明 |
| 传输载体 |
MOOS 消息(CMOOSMsg),值为 std::string 型 JSON |
| 报文格式 |
JSON(jsoncpp),键名带类型后缀,如 xxx_uint8、xxx_fp32、xxx_array |
| 运行频率 |
AppTick = 4(状态机主循环 4Hz)、CommsTick = 4 |
| 消息倾斜校验 |
OnNewMail 中,消息时标与本地时差 > m_skew(默认 10s)则丢弃 |
| 周期发送 |
commLoop() 每 1s 调用 processPeriodicTasks() 发布周期反馈 |
2.2 消息总览
2.2.1 订阅消息(上位机 → pPowerManger)
| 序号 |
MOOS 变量名 |
含义 |
触发动作 |
| 1 |
uPower_sysState_cmd |
系统主控指令 |
MasterCommandEvent |
| 2 |
uPower_equState_cmd |
设备控制指令(设备表) |
DevCmdExt(逐设备) |
| 3 |
uDevice_secdistState_st |
次级配电状态反馈 |
更新 m_subDisSysState |
| 4 |
uDevice_depth_st |
深度(三路取均值) |
更新 m_depth |
| 5 |
uPlan_taskStart_st |
任务开始 |
TaskStartEvent |
| 6 |
uPlan_planStop_st |
任务停止 |
— |
| 7 |
uExternComm_setOpCondition_cmd |
设置工况 |
MasterCommandEvent |
| 8 |
uExternComm_setOpMode_cmd |
设置模式 |
MasterCommandEvent |
| 9 |
uExternComm_setPowerSystem_cmd |
设置电源系统 |
MasterCommandEvent |
| 10 |
uExternComm_setDeviceSwitch_cmd |
单个设备开关 |
DevCmdExt |
| 11 |
uDetect_xcVoltage_cmd |
XC 阵电压申请 |
舷侧声呐电压指令 |
| 12 |
uDetect_zdpVoltage_cmd |
ZDP 电压申请 |
低频声呐开关 |
| 13 |
uDevice_thruster_st |
推进器状态 |
更新转速/使能 |
uExternComm_setThrustSpeed_cmd(字段 rpm_int16、enable_int16)已在 upmsg 中定义,但 registerVariables() 中已注释,当前未订阅。
2.2.2 发布消息(pPowerManger → 上位机)
| 序号 |
MOOS 变量名 |
含义 |
| 1 |
uPower_pmState_fb |
能源管理整体状态 |
| 2 |
uPower_fcsState_st |
燃料电池系统状态 |
| 3 |
uPower_liBatState_st |
锂电池状态(仪表 / 动力 / 应急) |
| 4 |
uPower_disSysState_st |
配电系统状态(断路器位图 + 故障码) |
| 5 |
uPower_currentState_st |
各母线电压 / 电流 |
| 6 |
uPower_equState_fb |
设备状态反馈(设备表) |
| 7 |
uPower_secdistState_cmd |
次级配电指令(UNIT1~5 设备开关) |
| 8 |
uPower_equInsState_fb |
设备在线状态(位图) |
| 9 |
uPower_subDisFault_st |
(仅 _DEBUG)次级配电故障表 |
2.3 上位机 → pPowerManger(订阅消息)
2.3.1 uPower_sysState_cmd — 系统主控指令
解析结果写入 m_msCmd(MSControlCmd),并触发 MasterCommandEvent。
| 字段 |
类型 |
说明 |
powerCMD |
uint |
电源系统指令 |
modCMD |
uint |
模式指令 |
workCMD |
uint |
工况指令 |
示例:
2.3.2 uPower_equState_cmd — 设备控制指令(设备表)
解析 DriverTable,逐条派发 DevCmdExt{id, cmd}(id 为设备 ID,见 2.7)。字段名 → 设备 ID 映射见 Driver::loadDriverIdFromJson()。
JSON 字段为 <设备名>_uint8,取值含义见 EquipmentCommand(0=断电,1=上电,2=仪表电上电,3=动力电上电,4=仪表电断电,5=动力电断电)。
示例:
完整字段清单见 2.5 设备表字段。
2.3.3 uDevice_secdistState_st — 次级配电状态反馈
解析到 m_subDisSysState(DriverTable)。字段为 <设备名>_uint8,按 UNIT1~5 分组。
完整字段清单见 2.6 次级配电字段。
2.3.4 uDevice_depth_st — 深度
| 字段 |
类型 |
说明 |
value_array_int32 |
int[] |
深度数组,取前 3 个元素平均值 |
示例:
2.3.5 uPlan_taskStart_st — 任务开始
| 字段 |
类型 |
说明 |
taskType_str |
string |
任务类型(见 TaskType::fromString) |
balanceEnabled_bool |
bool |
使能浮力调节 |
bowRudderUnfold_bool |
bool |
艏舵展开 |
示例:
2.3.6 uPlan_planStop_st — 任务停止
| 字段 |
类型 |
说明 |
op_int32 |
int |
1 = 停止 |
示例:
2.3.7 uExternComm_setOpCondition_cmd — 设置工况
| 字段 |
类型 |
说明 |
state_uint8 |
uint |
工况值(见 WorkCondition) |
2.3.8 uExternComm_setOpMode_cmd — 设置模式
| 字段 |
类型 |
说明 |
state_uint8 |
uint |
模式值(见 RunMode) |
2.3.9 uExternComm_setPowerSystem_cmd — 设置电源系统
| 字段 |
类型 |
说明 |
powerCmd_uint8 |
uint |
电源系统指令 |
2.3.10 uExternComm_setDeviceSwitch_cmd — 单个设备开关
| 字段 |
类型 |
说明 |
id_uint8 |
uint |
设备 ID(见 2.7) |
cmd_uint8 |
uint |
开关指令(EquipmentCommand) |
示例:
2.3.11 uDetect_xcVoltage_cmd — XC 阵电压申请
| 字段 |
类型 |
说明 |
xcLowVoltageAdd_int32 |
int |
低压申请(0=无命令,1=申请仪表上电,2=申请仪表断电) |
xcHighVoltageAdd_int32 |
int |
高压申请(0=无命令,1=申请高压上电,2=申请高压断电) |
2.3.12 uDetect_zdpVoltage_cmd — ZDP 电压申请
| 字段 |
类型 |
说明 |
zdpVoltageAdd_int32 |
int |
电压申请(同 XC 定义) |
2.3.13 uDevice_thruster_st — 推进器状态
| 字段 |
类型 |
单位 |
说明 |
rpm_int16 |
int16 |
rpm |
实际转速 |
voltage_uint16 |
uint16 |
V |
电压 |
current_uint16 |
uint16 |
A |
电流 |
ctrlTemp_uint16 |
uint16 |
℃ |
控制器温度 |
motorTemp_uint16 |
uint16 |
℃ |
电机温度 |
motorTorque_uint16 |
uint16 |
N·m |
电机扭矩 |
maxTorque_uint16 |
uint16 |
N·m |
电机最大扭矩(0=未使能) |
error_int64 |
int64 |
— |
错误码 |
2.4 pPowerManger → 上位机(发布消息)
2.4.1 uPower_pmState_fb — 能源管理整体状态
| 字段 |
类型 |
说明 |
workCondition_uint8 |
uint8 |
当前工况(WorkCondition) |
currentMod_uint8 |
uint8 |
当前模式 |
powerState_uint8 |
uint8 |
电源状态 |
faultLevel_uint8 |
uint8 |
故障等级(取 getFaultCodeLevel()) |
faultCode_array |
uint[] |
故障码数组 |
soc_uint16 |
uint16 |
荷电状态 SOC |
sustainableTime_int64 |
int64 |
可持续时间 |
leakage_uint8 |
uint8 |
漏水标志(generateLeakageCode()) |
info_str |
string |
系统信息描述 |
2.4.2 uPower_fcsState_st — 燃料电池系统状态
| 字段 |
类型 |
说明 |
backpressure1_fp32 |
float |
背压 1 |
backpressure2_fp32 |
float |
背压 2 |
ch4oConcent1_fp32 |
float |
甲醇浓度 1 |
ch4oConcent2_fp32 |
float |
甲醇浓度 2 |
ch4o_fp32 |
float |
备用 |
excTemp_fp32 |
float |
钯膜温度 |
fcuCurIns_fp32 |
float |
备用 |
fcuCurPower_fp32 |
float |
备用 |
fcuCur_fp32 |
float |
备用 |
fcuFaultLeve_uint8 |
uint8 |
故障等级 |
fcuOutIns_fp32 |
float |
备用 |
fcuOutPower_fp32 |
float |
备用 |
fcuState_uint8 |
uint8 |
燃料电池状态(FcuState) |
fcuVolIns_fp32 |
float |
备用 |
fcuVolPower_fp32 |
float |
备用 |
fcuVol_fp32 |
float |
备用 |
h2Concent1_fp32 |
float |
H2 浓度 1 |
h2Concent2_fp32 |
float |
H2 浓度 2 |
o2Concent1_fp32 |
float |
O2 浓度 1 |
o2Concent2_fp32 |
float |
O2 浓度 2 |
o2Level_fp32 |
float |
备用 |
o2_fp32 |
float |
备用 |
powLimit_fp32 |
float |
输出功率限制 |
powerGen_fp32 |
float |
累计发电功率 |
flameDet_uint8 |
uint8 |
火焰探测器状态 |
faultCode1_uint16 |
uint16 |
一级故障字 |
faultCode2_uint16 |
uint16 |
二级故障字 |
faultCode3_uint16 |
uint16 |
三级故障字 |
faultCode4_uint16 |
uint16 |
四级故障字 |
fcCommState_uint8 |
uint8 |
通信状态(当前固定为 0) |
2.4.3 uPower_liBatState_st — 锂电池状态
| 字段 |
类型 |
说明 |
insBatCurElect_uint16 |
uint16 |
仪表电池电流电量 |
insBatLimit_uint16 |
uint16 |
仪表电池限功率 |
insBatSoc_uint8 |
uint8 |
仪表电池 SOC |
insBatTotalElect_uint16 |
uint16 |
仪表电池总能量 |
insChargeState_uint8 |
uint8 |
仪表电池充放电状态 |
insCurSocHold1_uint8 |
uint8 |
备用 |
insCurSocHold2_uint8 |
uint8 |
备用 |
insCurSocHold3_uint8 |
uint8 |
备用 |
insCurrent_uint16 |
uint16 |
仪表电池电流 |
insLinkVol_uint16 |
uint16 |
仪表电池 LINK 电压 |
insNegRelayState_uint8 |
uint8 |
仪表电池负极继电器状态(固定 0) |
insNegRes_uint16 |
uint16 |
仪表电池负极绝缘电阻 |
insPackVol_uint16 |
uint16 |
仪表电池 PACK 电压 |
insPosRelayState_uint8 |
uint8 |
仪表电池正极继电器状态(固定 0) |
insPosRes_uint16 |
uint16 |
仪表电池正极绝缘电阻 |
powBatCurElect_uint16 |
uint16 |
动力电池电流电量(固定 0) |
powBatSoc_uint8 |
uint8 |
动力电池 SOC |
powBatTotalElect_uint16 |
uint16 |
动力电池总能量 |
powChargeState_uint8 |
uint8 |
动力电池充放电状态 |
powCurSocHold1_uint8 |
uint8 |
备用 |
powCurSocHold2_uint8 |
uint8 |
备用 |
powCurSocHold3_uint8 |
uint8 |
备用 |
powCurToInsLimit1_uint8 |
uint8 |
动力→仪表限功率 1 |
powCurToInsLimit2_uint8 |
uint8 |
动力→仪表限功率 2 |
powCur_uint16 |
uint16 |
动力电池电流 |
powLinkVol_uint16 |
uint16 |
动力电池 LINK 电压 |
powNegRelayState_uint8 |
uint8 |
动力电池负极继电器状态(固定 0) |
powNegRes_uint16 |
uint16 |
动力电池负极绝缘电阻 |
powPosRelayState_uint8 |
uint8 |
动力电池正极继电器状态(固定 0) |
powPosRes_uint16 |
uint16 |
动力电池正极绝缘电阻 |
powerBatLimit_uint16 |
uint16 |
备用 |
powerPackVol_uint16 |
uint16 |
动力电池 PACK 电压 |
powFaultCode_uint8 |
uint8 |
动力电池故障码 |
insFaultCode_uint8 |
uint8 |
仪表电池故障码 |
insCommState_uint8 |
uint8 |
仪表电池通信状态(固定 0) |
powCommState_uint8 |
uint8 |
动力电池通信状态(固定 0) |
emergencyBattery1Voltage_int16 |
int16 |
应急电池 1 电压 |
emergencyBattery1Current_int16 |
int16 |
应急电池 1 电流 |
emergencyBattery1MaxTemp_int16 |
int16 |
应急电池 1 最高温度 |
emergencyBattery1FaultWord_uint16 |
uint16 |
应急电池 1 故障字 |
emergencyBattery2Voltage_int16 |
int16 |
应急电池 2 电压 |
emergencyBattery2Current_int16 |
int16 |
应急电池 2 电流 |
emergencyBattery2MaxTemp_int16 |
int16 |
应急电池 2 最高温度 |
emergencyBattery2FaultWord_uint16 |
uint16 |
应急电池 2 故障字 |
2.4.4 uPower_disSysState_st — 配电系统状态
| 字段 |
类型 |
说明 |
HVolABusBreaker_uint16 |
uint16 |
高压母线(BUS1)断路器位图 |
HVolBBusBreaker_uint16 |
uint16 |
高压汇流排 A(BUS2)断路器位图 |
HVolBusBreaker_uint16 |
uint16 |
仪表母线(BUS3)断路器位图 |
LVolBusBreaker_uint16 |
uint16 |
仪表汇流排(BUS4)断路器位图 |
faultCode_array |
uint[] |
配电故障码数组 |
位图定义(bit0 起始):
| 位 |
HVolABusBreaker |
HVolBBusBreaker |
HVolBusBreaker |
LVolBusBreaker |
| bit0 |
燃料电池断路器 |
艏部FT装置1-3 |
锂电池组(仪表)断路器 |
UNIT1断路器 |
| bit1 |
动力锂电池断路器 |
启闭机构断路器 |
艏部低压配电箱断路器 |
UNIT2断路器 |
| bit2 |
推进电机断路器 |
桅杆舵机控制箱断路器 |
UNIT4仪表DC48V断路器 |
UNIT3断路器 |
| bit3 |
锂电池组仪表断路器 |
XCZ断路器 |
DC-C1直流配电板断路器 |
UNIT5断路器 |
| bit4 |
DC/DC5模块断路器 |
艏舵控制箱断路器 |
预留断路器1 |
艏部PZ装置断路器 |
| bit5 |
艏部高压配电箱断路器 |
敞水盖启动电缸断路器 |
预留断路器2 |
预留断路器1 |
| bit6 |
艉部FT装置4/5断路器 |
— |
应急锂电池组2断路器 |
预留断路器2 |
| bit7 |
艉舵开关1断路器 |
— |
— |
应急锂电池组1断路器 |
| bit8 |
艉舵开关2断路器 |
— |
— |
— |
| bit9 |
FB预留断路器 |
— |
— |
— |
| bit10 |
TYZ预留断路器 |
— |
— |
— |
| bit11 |
预留断路器 |
— |
— |
— |
2.4.5 uPower_currentState_st — 各母线电压/电流
高压母线(HVB,BUS1)
| 字段 |
类型 |
来源 |
HVBpowerBusVol_uint16 |
uint16 |
动力汇流排电压 |
HVBdcDc5Cur_uint16 |
uint16 |
DC/DC5 模块电流 |
HVBpowerBusCur_uint16 |
uint16 |
动力汇流排电流 |
HVBbusAVol_uint16 |
uint16 |
A 汇流排电压 |
HVBmotorCur_uint16 |
uint16 |
推进电机控制箱电流 |
HVBbusACur_uint16 |
uint16 |
A 汇流排电流 |
HVBbatGroupCur_uint16 |
uint16 |
锂电池组(仪表)电流 |
HVBbowHVolDisBoxCur_uint16 |
uint16 |
艏部高压配电箱电流 |
HVBFTDev45Cur_uint16 |
uint16 |
艉部FT装置4/5电流 |
HVBtyzCur_uint16 |
uint16 |
TYZ预留开关电流 |
HVBsternRud1Cur_uint16 |
uint16 |
艉舵开关1电流 |
HVBreservedCur1_uint16 |
uint16 |
预留电流1 |
HVBsternRud2Cur_uint16 |
uint16 |
艉舵开关2电流 |
HVBreservedCur2_uint16 |
uint16 |
预留电流2 |
HVBfbCur_uint16 |
uint16 |
FB预留电流 |
HVBreservedCur3_uint16 |
uint16 |
预留电流3 |
高压汇流排 A(HVAB,BUS2)
| 字段 |
类型 |
来源 |
HVABbusBVol_uint16 |
uint16 |
汇流排 B 电压 |
HVABbusBCur_uint16 |
uint16 |
汇流排 B 电流 |
HVABFTDev123Cur_uint16 |
uint16 |
艏部FT装置1/2/3电流 |
HVABactCur_uint16 |
uint16 |
启闭机构电流 |
HVABmastSteGeaCur_uint16 |
uint16 |
桅杆舵机控制箱电流 |
HVABxczCur_uint16 |
uint16 |
XCZ电流 |
HVABbowRudCur_uint16 |
uint16 |
艏舵控制箱电流 |
HVABopenWaterCur_uint16 |
uint16 |
敞水盖启动电缸电流 |
仪表母线(HVBB,BUS3)
| 字段 |
类型 |
来源 |
HVBBinsBusVol_uint16 |
uint16 |
仪表母排电压 |
HVBBbowLowVolDisBoxCur_uint16 |
uint16 |
艏部低压配电箱电流 |
HVBBdcC1InsCur_uint16 |
uint16 |
DC-C1 仪表DC48V电流 |
HVBBreservedCur1_uint16 |
uint16 |
预留电流1 |
HVBBemerBatCur_uint16 |
uint16 |
应急锂电池组2电流 |
HVBBbatInsCur_uint16 |
uint16 |
锂电池组(仪表)电流 |
HVBBunit4Cur_uint16 |
uint16 |
UNIT4 仪表DC48V电流 |
HVBBreservedCur2_uint16 |
uint16 |
预留电流2 |
HVBBemer2BusVol_uint16 |
uint16 |
应急2汇流排电压 |
HVBBCCUCur_uint16 |
uint16 |
复合能源管控系统应急DC48V电流 |
HVBBFCSSecurSysCur_uint16 |
uint16 |
燃料电池安全系统应急DC48V电流 |
HVBBplcCur_uint16 |
uint16 |
PLC控制电源电流 |
仪表汇流排(LVB,BUS4)
| 字段 |
类型 |
来源 |
LVBinsBusVol_uint16 |
uint16 |
仪表母排电压 |
LVBBinsBusCur_uint16 |
uint16 |
仪表母排电流 |
LVBBunit1Cur_uint16 |
uint16 |
UNIT1 电流 |
LVBBunit2Cur_uint16 |
uint16 |
UNIT2 电流 |
LVBBunit3Cur_uint16 |
uint16 |
UNIT3 电流 |
LVBBunit5Cur_uint16 |
uint16 |
UNIT5 电流 |
LVBBbowPZDevCur_uint16 |
uint16 |
艏部PZ装置电流 |
LVBBemerBatCur_uint16 |
uint16 |
应急锂电池组1电流 |
LVBBemerBusVol_uint16 |
uint16 |
应急1汇流排电压 |
2.4.6 uPower_equState_fb — 设备状态反馈
设备表 JSON(字段同 2.5),反映当前设备状态。
2.4.7 uPower_secdistState_cmd — 次级配电指令
次级配电 JSON(字段同 2.6),向次级配电系统下发 UNIT1~5 设备开关指令。
2.4.8 uPower_equInsState_fb — 设备在线状态(位图)
| 字段 |
类型 |
说明 |
sensor_int16 |
uint16 |
传感器状态位图 |
actuator_int16 |
uint16 |
执行机构状态位图 |
motion_int16 |
uint16 |
运动状态位图 |
loadcomm_int16 |
uint16 |
负载通信状态位图 |
throwpower_int16 |
uint16 |
抛载/电源状态位图 |
位图定义:
| 位 |
sensor_int16 |
actuator_int16 |
motion_int16 |
loadcomm_int16 |
throwpower_int16 |
| bit0 |
单波束声呐1 |
启闭机构1 |
艉部舵机1 |
载荷发控 |
艏部抛载 |
| bit1 |
单波束声呐2 |
启闭机构2 |
艉部舵机2 |
光电桅杆 |
保留 |
| bit2 |
单波束声呐3 |
启闭机构3 |
艉部舵机3 |
电磁桅杆 |
保留 |
| bit3 |
单波束声呐4 |
启闭机构4 |
艉部舵机4 |
保留 |
保留 |
| bit4 |
单波束声呐5 |
启闭机构5 |
艏舵电缸 |
舷侧声纳 |
保留 |
| bit5 |
单波束声呐6 |
启闭机构6 |
注水机构 |
拖曳声纳 |
保留 |
| bit6 |
单波束声呐7 |
保留 |
推进电机 |
保留 |
保留 |
| bit7 |
单波束声呐8 |
保留 |
浮调机构1 |
保留 |
保留 |
| bit8 |
前视声呐 |
敞水机构1 |
浮调机构2 |
通信桅杆 |
燃料电池控制器 |
| bit9 |
CTD1 |
敞水机构2 |
浮调机构3 |
中低频声呐 |
仪表配电板 |
| bit10 |
CTD2 |
敞水机构3 |
浮调机构4 |
高频声通机 |
动力配电板 |
| bit11 |
声速仪 |
敞水机构4 |
浮调机构5 |
浮标系统 |
仪表锂电池 |
| bit12 |
NTP |
敞水机构5 |
DVL |
通信桅杆舵机 |
动力锂电 |
| bit13 |
深度计1 |
敞水机构6 |
惯导系统 |
光电桅杆舵机 |
艉部抛载 |
| bit14 |
深度计2 |
敞水机构7 |
艏舵左舵机 |
电磁桅杆舵机 |
保留 |
| bit15 |
深度计3 |
敞水机构8 |
艏右舵舵机 |
保留 |
保留 |
2.5 设备表(DriverTable)字段
以下字段用于 uPower_equState_cmd 与 uPower_equState_fb,全部为 <设备名>_uint8:
| 序号 |
字段 |
对应设备 ID |
| 1 |
depth1_uint8 |
18 |
| 2 |
depth2_uint8 |
19 |
| 3 |
depth3_uint8 |
20 |
| 4 |
overDeep1_uint8 |
21 |
| 5 |
overDeep2_uint8 |
22 |
| 6 |
ctd1_uint8 |
23 |
| 7 |
ctd2_uint8 |
24 |
| 8 |
soundVeloc_uint8 |
25 |
| 9 |
commDev_uint8 |
40 |
| 10 |
ins_uint8 |
57 |
| 11 |
ntp_uint8 |
58 |
| 12 |
inputWaterSensor1_uint8 |
59 |
| 13 |
inputWaterSensor2_uint8 |
60 |
| 14 |
inputWaterSensor3_uint8 |
61 |
| 15 |
singleBeamSonar1_uint8 |
0 |
| 16 |
singleBeamSonar2_uint8 |
1 |
| 17 |
singleBeamSonar3_uint8 |
2 |
| 18 |
singleBeamSonar4_uint8 |
3 |
| 19 |
singleBeamSonar5_uint8 |
4 |
| 20 |
singleBeamSonar6_uint8 |
5 |
| 21 |
singleBeamSonar7_uint8 |
6 |
| 22 |
singleBeamSonar8_uint8 |
7 |
| 23 |
forwardSonar_uint8 |
8 |
| 24 |
DVL_uint8 |
43 |
| 25 |
lowFreqSonar_uint8 |
36 |
| 26 |
USBL_uint8 |
42 |
| 27 |
bowCover1_uint8 |
9 |
| 28 |
bowCover2_uint8 |
10 |
| 29 |
bowCover3_uint8 |
11 |
| 30 |
bowCover4_uint8 |
12 |
| 31 |
bowCover5_uint8 |
13 |
| 32 |
bowCover6_uint8 |
14 |
| 33 |
bowRudderDeploy_uint8 |
15 |
| 34 |
bowRudderServo1_uint8 |
16 |
| 35 |
bowRudderServo2_uint8 |
17 |
| 36 |
bowWaterInet1_uint8 |
27 |
| 37 |
bowWaterInet2_uint8 |
28 |
| 38 |
bowWaterInet3_uint8 |
29 |
| 39 |
bowWaterInet4_uint8 |
30 |
| 40 |
bowWaterInet5_uint8 |
31 |
| 41 |
bowWaterInet6_uint8 |
32 |
| 42 |
bowWaterInet7_uint8 |
33 |
| 43 |
bowWaterInet8_uint8 |
34 |
| 44 |
waterInject_uint8 |
26 |
| 45 |
mastLiftingServo_uint8 |
41 |
| 46 |
buoyancyAdjust1_uint8 |
44 |
| 47 |
buoyancyAdjust2_uint8 |
45 |
| 48 |
buoyancyAdjust3_uint8 |
46 |
| 49 |
buoyancyAdjust4_uint8 |
47 |
| 50 |
buoyancyAdjust5_uint8 |
48 |
| 51 |
sternRudderServo1_uint8 |
49 |
| 52 |
sternRudderServo2_uint8 |
50 |
| 53 |
sternRudderServo3_uint8 |
51 |
| 54 |
sternRudderServo4_uint8 |
52 |
| 55 |
thruster_uint8 |
53 |
| 56 |
bowThrow_uint8 |
54 |
| 57 |
sternThrow_uint8 |
55 |
| 58 |
photoSensor_uint8 |
38 |
| 59 |
electSensor_uint8 |
39 |
| 60 |
launchControler_uint8 |
37 |
| 61 |
sideSonar_uint8 |
35 |
| 62 |
buoyage_uint8 |
56 |
2.6 次级配电(secdist)字段
以下字段用于 uPower_secdistState_cmd 与 uDevice_secdistState_st,全部为 <设备名>_uint8:
UNIT1(19 项)
| 字段 |
字段 |
字段 |
bowCover1_uint8 |
bowCover2_uint8 |
bowCover3_uint8 |
bowCover4_uint8 |
bowCover5_uint8 |
bowCover6_uint8 |
singleBeamSonar1_uint8 |
singleBeamSonar2_uint8 |
singleBeamSonar3_uint8 |
singleBeamSonar4_uint8 |
singleBeamSonar5_uint8 |
singleBeamSonar6_uint8 |
forwardSonar_uint8 |
depth3_uint8 |
soundVeloc_uint8 |
bowRudderServo_uint8 |
bowRudderDeploy_uint8 |
ctd1_uint8 |
waterInject_uint8 |
|
|
UNIT2(11 项)
| 字段 |
字段 |
字段 |
sideSonar_uint8 |
bowWaterInet1_uint8 |
bowWaterInet2_uint8 |
bowWaterInet3_uint8 |
bowWaterInet4_uint8 |
bowWaterInet5_uint8 |
bowWaterInet6_uint8 |
bowWaterInet7_uint8 |
bowWaterInet8_uint8 |
launchControler_uint8 |
electSensor_uint8 |
lowFreqSonar_uint8 |
UNIT3(11 项)
| 字段 |
字段 |
字段 |
buoyancyAdjust1_uint8 |
buoyancyAdjust2_uint8 |
buoyancyAdjust3_uint8 |
USBL_uint8 |
depth1_uint8 |
commDev_uint8 |
mastLiftingServo_uint8 |
DVL_uint8 |
ADCP_uint8 |
inOutLetWater1_uint8 |
inOutLetWater2_uint8 |
|
UNIT4(16 项)
| 字段 |
字段 |
字段 |
singleBeamSonar7_uint8 |
singleBeamSonar8_uint8 |
buoyage_uint8 |
bowThrow_uint8 |
depth2_uint8 |
thruster_uint8 |
dragSonar_uint8 |
haulingMachine_uint8 |
buoyancyAdjust4_uint8 |
buoyancyAdjust5_uint8 |
sternRudderServo1_uint8 |
sternRudderServo2_uint8 |
sternRudderServo3_uint8 |
sternRudderServo4_uint8 |
ctd2_uint8 |
commDevStern_uint8 |
inOutLetWater3_uint8 |
|
UNIT5(4 项)
| 字段 |
字段 |
secINS_uint8 |
photoSensor_uint8 |
sternThrow_uint8 |
mainINS_uint8 |
2.7 设备 ID 枚举(DeviceId)
| ID |
名称 |
ID |
名称 |
ID |
名称 |
| 0 |
singleBeamSonar1 |
21 |
overDeep1 |
42 |
USBL |
| 1 |
singleBeamSonar2 |
22 |
overDeep2 |
43 |
DVL |
| 2 |
singleBeamSonar3 |
23 |
ctd1 |
44 |
buoyancyAdjust1 |
| 3 |
singleBeamSonar4 |
24 |
ctd2 |
45 |
buoyancyAdjust2 |
| 4 |
singleBeamSonar5 |
25 |
soundVeloc |
46 |
buoyancyAdjust3 |
| 5 |
singleBeamSonar6 |
26 |
waterInject |
47 |
buoyancyAdjust4 |
| 6 |
singleBeamSonar7 |
27 |
bowWaterInet1 |
48 |
buoyancyAdjust5 |
| 7 |
singleBeamSonar8 |
28 |
bowWaterInet2 |
49 |
sternRudderServo1 |
| 8 |
forwardSonar |
29 |
bowWaterInet3 |
50 |
sternRudderServo2 |
| 9 |
bowCover1 |
30 |
bowWaterInet4 |
51 |
sternRudderServo3 |
| 10 |
bowCover2 |
31 |
bowWaterInet5 |
52 |
sternRudderServo4 |
| 11 |
bowCover3 |
32 |
bowWaterInet6 |
53 |
thruster |
| 12 |
bowCover4 |
33 |
bowWaterInet7 |
54 |
bowThrow |
| 13 |
bowCover5 |
34 |
bowWaterInet8 |
55 |
sternThrow |
| 14 |
bowCover6 |
35 |
sideSonar |
56 |
buoyage |
| 15 |
bowRudderDeploy |
36 |
lowFreqSonar |
57 |
ins |
| 16 |
bowRudderServo1 |
37 |
launchControler |
58 |
ntp |
| 17 |
bowRudderServo2 |
38 |
photoSensor |
59 |
inputWaterSensor1 |
| 18 |
depth1 |
39 |
electSensor |
60 |
inputWaterSensor2 |
| 19 |
depth2 |
40 |
commMast |
61 |
inputWaterSensor3 |
| 20 |
depth3 |
41 |
mastLiftingServo |
— |
— |
3. 下位机通信协议(UDP 二进制)
3.1 通信方式与参数
| 项目 |
说明 |
| 传输 |
UDP 单播 |
| 本机地址 |
绑定端口 5001 |
| 下位机地址 |
192.168.0.140:7000 |
| 字节序 |
小端(little-endian) |
| 对齐 |
#pragma pack(1) 紧凑,无填充 |
| 监听 |
LowerCommManager::listenThreadFunc() 独立线程接收 |
| 分拣 |
udpComm::pushMsgToQueue() 按消息 ID 入队,队列上限 QUENUE_SIZE = 100 |
| 周期发送 |
commLoop() 每 1s:sendCcuCommand(CCU 操作指令)+ processPeriodicTasks |
3.2 通用帧格式与校验
所有报文统一为:消息头(6B)+ 数据区 + 校验字段。以下帧结构表中,偏移(字节) 均为相对整帧起始的绝对偏移。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 1 |
| 1 |
start2 |
u8 |
起始符 2 |
| 2~3 |
id |
u16 |
消息标识(小端) |
| 4~5 |
length |
u16 |
数据区长度 |
- 起始符分类:
- CCU 报文:
start1 = start2 = 0x20
- 配电报文:
start1 = start2 = 0x40
3.2.2 日期 m_date(8 字节,仅 CCU 操作指令携带)
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
year |
u16 |
年 |
| 2 |
month |
u8 |
月 |
| 3 |
day |
u8 |
日 |
| 4 |
hour |
u8 |
时 |
| 5 |
minute |
u8 |
分 |
| 6 |
second |
u8 |
秒 |
| 7 |
milliseconds |
u8 |
毫秒(每 10ms 一档) |
3.2.3 校验字段宽度
| 报文类别 |
校验字段类型 |
宽度 |
| CCU 报文 |
Checksum(unsigned int) |
4 字节 |
| 配电报文 |
cChecksum(unsigned char) |
1 字节 |
3.2.4 校验算法
- CCU 报文:校验字段 4 字节,实际发送 / 比较取累加和低 8 位(
cc & 0xFF)。
- 配电报文:校验字段 1 字节,
sum = 累加和 & 0xFF。
- 接收端校验不符则丢弃该帧并记录
Check error。
3.3 消息 ID 汇总
| 分类 |
ID |
方向 |
报文结构体 |
说明 |
| CCU |
0x0040 |
发送 |
msg_CcuColCmdMsg |
复合管控器操作指令 |
| CCU |
0x0041 |
发送 |
msg_CcuSetParmMsg |
复合管控器参数设定指令 |
| CCU |
0x0051 |
接收 |
msg_CcuStateFbMsg |
复合管控器状态反馈 |
| CCU |
0x0040 |
接收 |
msg_CcuSetParmFbMsg |
复合管控器参数设定反馈(与操作指令 ID 复用) |
| 配电 |
0x0001 |
发送 |
msg_disHVBCmd |
高压母线配电指令 |
| 配电 |
0x0002 |
发送 |
msg_disHVBACmd |
高压汇流排A配电指令 |
| 配电 |
0x0003 |
发送 |
msg_disHVBBCmd |
仪表母线配电指令 |
| 配电 |
0x0004 |
发送 |
msg_disLVBCmd |
仪表汇流排配电指令 |
| 配电 |
0x0005 |
接收 |
msg_disHighVolBusFbMsg |
高压母线配电反馈 |
| 配电 |
0x0006 |
接收 |
msg_disHighAVolBusFbMsg |
高压汇流排A配电反馈 |
| 配电 |
0x0007 |
接收 |
msg_disLowMainBusFbMsg |
仪表母线配电反馈 |
| 配电 |
0x0008 |
接收 |
msg_disLowBusFbMsg |
仪表汇流排配电反馈 |
说明:CCU_SET_PARM_FB_ID 与 CCU_CMD_ID 同为 0x0040。接收端以起始符 0x20 0x20 判定为 CCU 报文后,将 0x0040 一律按“参数设定反馈”处理(操作指令只发送不接收,实际不冲突)。
3.4 复合管控器(CCU)报文
3.4.1 操作指令 msg_CcuColCmdMsg(0x0040,发送)
总长度 36 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x20 |
| 1 |
start2 |
u8 |
起始符 0x20 |
| 2~3 |
id |
u16 |
消息标识 0x0040 |
| 4~5 |
length |
u16 |
数据区长度(=18) |
| 6~7 |
year |
u16 |
年 |
| 8 |
month |
u8 |
月 |
| 9 |
day |
u8 |
日 |
| 10 |
hour |
u8 |
时 |
| 11 |
minute |
u8 |
分 |
| 12 |
second |
u8 |
秒 |
| 13 |
milliseconds |
u8 |
毫秒(每 10ms 一档) |
| 14 |
fcmode |
u8 |
燃料电池运行模式 |
| 15 |
fcuCmd |
u8 |
燃料电池控制指令(FcuCommand) |
| 16 |
fcuPowerEfficiency |
u8 |
燃料电池输出功率(默认 8kW) |
| 17 |
insChargeEnable |
u8 |
仪表电池充电使能(0x30=不允许充电) |
| 18 |
insBatCmd |
u8 |
仪表电池指令(BatteryCommand) |
| 19 |
powerBatCmd |
u8 |
动力电池指令 |
| 20~21 |
powerBatEfficiency |
u16 |
动力电池效率(0=最大) |
| 22 |
heartbeat |
u8 |
心跳计数(周期自增) |
| 23 |
masterState |
u8 |
主站状态(0xAA=运行中) |
| 24~27 |
paceholder1 |
u32 |
预留 |
| 28~31 |
paceholder2 |
u32 |
预留 |
| 32~35 |
checkCode |
u32 |
校验和(累加和低 8 位) |
3.4.2 参数设定指令 msg_CcuSetParmMsg(0x0041,发送)
总长度 20 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x20 |
| 1 |
start2 |
u8 |
起始符 0x20 |
| 2~3 |
id |
u16 |
消息标识 0x0041 |
| 4~5 |
length |
u16 |
数据区长度(=10) |
| 6 |
insSocHold1 |
u8 |
仪表 SOC 保持门限 1 |
| 7 |
insSocHold2 |
u8 |
仪表 SOC 保持门限 2 |
| 8 |
insSocHold3 |
u8 |
仪表 SOC 保持门限 3 |
| 9 |
fcuToInsLimit1 |
u8 |
FCU→仪表限功率 1 |
| 10 |
fcuToinsLimit2 |
u8 |
FCU→仪表限功率 2 |
| 11 |
powerSocHold1 |
u8 |
动力 SOC 保持门限 1 |
| 12 |
powerSocHold2 |
u8 |
动力 SOC 保持门限 2 |
| 13 |
powerSocHold3 |
u8 |
动力 SOC 保持门限 3 |
| 14 |
fcuToPowerLimit1 |
u8 |
FCU→动力限功率 1 |
| 15 |
fcuToPowerLimit2 |
u8 |
FCU→动力限功率 2 |
| 16~19 |
checkCode |
u32 |
校验和(累加和低 8 位) |
3.4.3 状态反馈 msg_CcuStateFbMsg(0x0051,接收)
总长度 182 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x20 |
| 1 |
start2 |
u8 |
起始符 0x20 |
| 2~3 |
id |
u16 |
消息标识 0x0051 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
fc_mode |
u8 |
燃料电池运行模式(00=无效,01=调试,02=自动,03=补给) |
| 7 |
fc_status |
u8 |
燃料电池状态(FcuState) |
| 8 |
fc_fault_level |
u8 |
故障等级(00=无,10=一级,20=二级,30=三级,40=四级) |
| 9~10 |
output_power_limit |
u16 |
输出功率限制 [W],0~30000 |
| 11~12 |
total_generation_time |
u16 |
累计发电时间 [0.1h],最大 6553.5h |
| 13~14 |
total_generation_power |
u16 |
累计发电总功率 [W] |
| 15~16 |
fault_level_1 |
u16 |
一级故障位 |
| 17~18 |
fault_level_2 |
u16 |
二级故障位 |
| 19~20 |
fault_level_3 |
u16 |
三级故障位 |
| 21~22 |
fault_level_4 |
u16 |
四级故障位 |
| 23 |
hydrogen_capacity |
u8 |
储氢罐剩余容量 [%] |
| 24 |
liquid_oxygen_capacity |
u8 |
液氧罐剩余容量 [%] |
| 25~26 |
palladium_temp |
u16 |
钯膜最高温度 [℃] |
| 27~28 |
main_pipe_pressure |
u16 |
主水路压力 [0.01kPa] |
| 29~30 |
aux_pipe_pressure |
u16 |
辅水路压力 [0.01kPa] |
| 31~32 |
cabin_pressure1 |
u16 |
舱室1压力 [0.01kPa] |
| 33~34 |
cabin_pressure2 |
u16 |
舱室2压力 [0.01kPa] |
| 35~36 |
cabin_temp1 |
u16 |
舱室1温度 [0.01℃] |
| 37~38 |
cabin_temp2 |
u16 |
舱室2温度 [0.01℃] |
| 39~40 |
cabin_humidity1 |
u16 |
舱室1湿度 [0.01%RH] |
| 41~42 |
cabin_humidity2 |
u16 |
舱室2湿度 [0.01%RH] |
| 43 |
flame_detector1 |
u8 |
火焰探测器1(00=无效,01=报警,02=故障) |
| 44 |
flame_detector2 |
u8 |
火焰探测器2 |
| 45~46 |
h2_concentration1 |
u16 |
舱室H2浓度1 [0.01% LEL] |
| 47~48 |
h2_concentration2 |
u16 |
舱室H2浓度2 [0.01% LEL] |
| 49~50 |
h2_concentration3 |
u16 |
舱室H2浓度3 [0.01% LEL] |
| 51~52 |
o2_concentration1 |
u16 |
舱室O2浓度1 [0.01% LEL] |
| 53~54 |
o2_concentration2 |
u16 |
舱室O2浓度2 [0.01% LEL] |
| 55~56 |
ch3oh_concentration1 |
u16 |
舱室甲醇浓度1 [0.01% LEL] |
| 57~58 |
ch3oh_concentration2 |
u16 |
舱室甲醇浓度2 [0.01% LEL] |
| 59~62 |
reserved1[2] |
u16×2 |
保留 |
| 63~64 |
emergency_battery1_voltage |
u16 |
应急电池1总电压 [V] |
| 65~66 |
emergency_battery1_current |
u16 |
应急电池1总电流 [A] |
| 67~68 |
emergency_battery1_max_temp |
u16 |
应急电池1最高温度 [℃] |
| 69~70 |
emergency_battery1_fault_word |
u16 |
应急电池1故障字 |
| 71~72 |
emergency_battery2_voltage |
u16 |
应急电池2总电压 [V] |
| 73~74 |
emergency_battery2_current |
u16 |
应急电池2总电流 [A] |
| 75~76 |
emergency_battery2_max_temp |
u16 |
应急电池2最高温度 [℃] |
| 77~78 |
emergency_battery2_fault_word |
u16 |
应急电池2故障字 |
| 79~80 |
cabin_ox_concentration |
u16 |
仪表舱氧气浓度 [%] |
| 81~82 |
cabin_temperature |
u16 |
仪表舱温度 [℃] |
| 83~84 |
cabin_humidity |
u16 |
仪表舱湿度 [%RH] |
| 85~86 |
cabin_pressure |
u16 |
仪表舱大气压 [kPa] |
| 87~88 |
power_cabin_ox_concentration |
u16 |
动力舱氧气浓度 [%] |
| 89~90 |
power_cabin_temperature |
u16 |
动力舱温度 [℃] |
| 91~92 |
power_cabin_humidity |
u16 |
动力舱湿度 [%RH] |
| 93~94 |
power_cabin_pressure |
u16 |
动力舱大气压 [kPa] |
| 95 |
reserved2[1] |
u8 |
保留 |
| 96~101 |
dyn_alarm_flag[6] |
u8×6 |
动力锂电池报警标志 |
| 102~107 |
ins_alarm_flag[6] |
u8×6 |
仪表锂电池报警标志 |
| 108 |
ins_relay_status1 |
u8 |
仪表电池正极(高4)/充电(低4)继电器 |
| 109 |
ins_relay_status2 |
u8 |
仪表电池预充/负极继电器 |
| 110 |
dyn_relay_status1 |
u8 |
动力电池正极/充电继电器 |
| 111 |
dyn_relay_status2 |
u8 |
动力电池预充/负极继电器 |
| 112~113 |
ins_max_discharge_power |
u16 |
仪表电池最大放电功率 [kW, 0.05] |
| 114~115 |
dyn_max_discharge_power |
u16 |
动力电池最大放电功率 [kW, 0.05] |
| 116 |
ins_soc |
u8 |
仪表电池 SOC [%] |
| 117 |
dyn_soc |
u8 |
动力电池 SOC [%] |
| 118~119 |
ins_total_energy |
u16 |
仪表电池总能量 [kWh] |
| 120~121 |
dyn_total_energy |
u16 |
动力电池总能量 [kWh] |
| 122~123 |
ins_power_input |
u16 |
仪表电池输入功率 [kW] |
| 124~125 |
dyn_power_input |
u16 |
动力电池输入功率 [kW] |
| 126 |
ins_charge_status |
u8 |
仪表电池充放电(00=无效,10=充电,20=放电) |
| 127 |
dyn_charge_status |
u8 |
动力电池充放电状态 |
| 128~129 |
ins_voltage_link |
u16 |
仪表电池 LINK 电压 [0.01V] |
| 130~131 |
ins_voltage_pack |
u16 |
仪表电池 PACK 电压 [0.01V] |
| 132~133 |
ins_current |
u16 |
仪表电池电流 [0.01A],正值放电 |
| 134~135 |
ins_resistance_pos |
u16 |
仪表电池正极绝缘电阻 [kΩ] |
| 136~137 |
ins_resistance_neg |
u16 |
仪表电池负极绝缘电阻 [kΩ] |
| 138~139 |
dyn_voltage_link |
u16 |
动力电池 LINK 电压 [0.01V] |
| 140~141 |
dyn_voltage_pack |
u16 |
动力电池 PACK 电压 [0.01V] |
| 142~143 |
dyn_current |
u16 |
动力电池电流 [0.01A],正值放电 |
| 144~145 |
dyn_resistance_pos |
u16 |
动力电池正极绝缘电阻 [kΩ] |
| 146~147 |
dyn_resistance_neg |
u16 |
动力电池负极绝缘电阻 [kΩ] |
| 148 |
ins_emergency_status |
u8 |
仪表电池紧急状态(0x00=无,0x3A=4级…0x3D=1级) |
| 149 |
dyn_emergency_status |
u8 |
动力电池紧急状态 |
| 150~151 |
reserved3[2] |
u8×2 |
保留 |
| 152 |
ins_soc_threshold1 |
u8 |
仪表电池1 SOC 门限 |
| 153 |
ins_soc_threshold2 |
u8 |
仪表电池2 SOC 门限 |
| 154 |
ins_soc_threshold3 |
u8 |
仪表电池3 SOC 门限 |
| 155 |
dyn_soc_threshold1 |
u8 |
动力电池1 SOC 门限 |
| 156 |
dyn_soc_threshold2 |
u8 |
动力电池2 SOC 门限 |
| 157 |
dyn_soc_threshold3 |
u8 |
动力电池3 SOC 门限 |
| 158 |
ins_power_limit1 |
u8 |
仪表电池1功率限制 [%] |
| 159 |
ins_power_limit2 |
u8 |
仪表电池2功率限制 [%] |
| 160 |
dyn_power_limit1 |
u8 |
动力电池1功率限制 [%] |
| 161 |
dyn_power_limit2 |
u8 |
动力电池2功率限制 [%] |
| 162~165 |
device_online_flag1 |
u32 |
设备在线标志1(byte0=低压配电板,byte1=CCU主机,byte2=CCU备机) |
| 166~169 |
device_online_flag2 |
u32 |
设备在线标志2(byte0=仪表锂电,byte1=动力锂电,byte2=燃电锂电,byte3=高压配电板) |
| 170 |
dyn_charge_level |
u8 |
动力电池充电(01=1级,02=2级限功率,03=3级关闭) |
| 171 |
dyn_water_leak_status |
u8 |
动力漏水(0X=正常,1X=异常) |
| 172 |
ins_water_leak_dcdc_status |
u8 |
仪表漏水(低4)/DCDC(高4)状态 |
| 173 |
reserved4 |
u8 |
保留 |
| 174~177 |
heartbeat |
u32 |
主机心跳 |
| 178~181 |
checkCode |
u32 |
校验和 |
3.4.4 参数设定反馈 msg_CcuSetParmFbMsg(0x0040,接收)
总长度 12 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x20 |
| 1 |
start2 |
u8 |
起始符 0x20 |
| 2~3 |
id |
u16 |
消息标识 0x0040 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
flag |
u8 |
应答标志 |
| 7 |
failureCode |
u8 |
失败码 |
| 8~11 |
checkCode |
u32 |
校验和 |
3.5 配电系统报文
断路器字段取值:
| 值 |
含义 |
0x55 |
合闸(ON) |
0xAA |
分闸(OFF) |
0x00 |
无操作 / 保持 |
0x5A |
故障脱扣(仅反馈) |
3.5.1 高压母线(BUS1)
指令 msg_disHVBCmd(0x0001,发送)
总长度 21 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0001 |
| 4~5 |
length |
u16 |
数据区长度(固定 18) |
| 6 |
fuelCellCircuitBreaker |
u8 |
燃料电池断路器 |
| 7 |
powerLithiumBatteryCircuitBreaker |
u8 |
动力锂电池断路器 |
| 8 |
propulsionMotorCircuitBreaker |
u8 |
推进电机断路器 |
| 9 |
lithiumBatteryGroupInstrumentCircuitBreaker |
u8 |
锂电池组仪表断路器 |
| 10 |
dcDc5ModuleCircuitBreaker |
u8 |
DC/DC5模块断路器 |
| 11 |
bowHighVoltageDistributionBoxCircuitBreaker |
u8 |
艏部高压配电箱断路器 |
| 12 |
sternFTDevice45CircuitBreaker |
u8 |
艉部FT装置4/5断路器 |
| 13 |
fbReservedCircuitBreaker |
u8 |
FB预留断路器 |
| 14 |
sternRudderSwitch1CircuitBreaker |
u8 |
艉舵开关1断路器 |
| 15 |
sternRudderSwitch2CircuitBreaker |
u8 |
艉舵开关2断路器 |
| 16 |
tyzReservedCircuitBreaker |
u8 |
TYZ预留断路器 |
| 17 |
reservedCircuitBreaker |
u8 |
预留断路器 |
| 18 |
dcdc5Module |
u8 |
DC/DC5模块启动 |
| 19 |
coolingSystem |
u8 |
冷却系统启动 |
| 20 |
checkCode |
u8 |
校验和(累加和低 8 位) |
反馈 msg_disHighVolBusFbMsg(0x0005,接收)
总长度 60 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0005 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
fuelCellCircuitBreaker |
u8 |
燃料电池断路器状态 |
| 7 |
powerLithiumBatteryCircuitBreaker |
u8 |
动力锂电池断路器状态 |
| 8 |
propulsionMotorCircuitBreaker |
u8 |
推进电机断路器状态 |
| 9 |
lithiumBatteryGroupInstrumentCircuitBreaker |
u8 |
锂电池组仪表断路器状态 |
| 10 |
dcDc5ModuleCircuitBreaker |
u8 |
DC/DC5模块断路器状态 |
| 11 |
bowHighVoltageDistributionBoxCircuitBreaker |
u8 |
艏部高压配电箱断路器状态 |
| 12 |
sternFTDevice45CircuitBreaker |
u8 |
艉部FT装置4/5断路器状态 |
| 13 |
fbReservedCircuitBreaker |
u8 |
FB预留断路器状态 |
| 14 |
sternRudderSwitch1CircuitBreaker |
u8 |
艉舵开关1断路器状态 |
| 15 |
sternRudderSwitch2CircuitBreaker |
u8 |
艉舵开关2断路器状态 |
| 16 |
tyzReservedCircuitBreaker |
u8 |
TYZ预留断路器状态 |
| 17 |
reservedCircuitBreaker |
u8 |
预留断路器状态 |
| 18 |
dcDcFaultWord1 |
u8 |
DC/DC5故障字低(Bit0过温关机…Bit7内部故障) |
| 19 |
dcDcFaultWord2 |
u8 |
DC/DC5故障字高(Bit0通讯故障,Bit1工作状态,Bit2/3冷却泵1/2故障,Bit5/6冷却泵1/2运行) |
| 20 |
powerBusInsulationStatus |
u8 |
动力母排绝缘状态(0x55正常,0xAA绝缘低) |
| 21 |
aBusInsulationStatus |
u8 |
A汇流排绝缘状态(0x55正常,0xAA绝缘低) |
| 22 |
meterPowerLossSignal |
u8 |
仪表电源状态(0x55正常,0xAA故障) |
| 23 |
emergencyPowerLossSignal |
u8 |
应急电源状态(0x55正常,0xAA故障) |
| 24 |
dcDcTemperature |
u8 |
DC/DC温度 |
| 25~26 |
powerBusVoltage |
u16 |
动力汇流排电压 |
| 27~28 |
dcDc5ModuleCurrent |
u16 |
DC/DC5模块电流 |
| 29~30 |
powerBusCurrent |
u16 |
动力汇流排电流 |
| 31~32 |
busbarAVoltage |
u16 |
A汇流排电压 |
| 33~34 |
propulsionMotorControlBoxCurrent |
u16 |
推进电机控制箱电流 |
| 35~36 |
busbarACurrent |
u16 |
A汇流排电流 |
| 37~38 |
lithiumBatteryGroupMeterCurrent |
u16 |
锂电池组(仪表)电流 |
| 39~40 |
bowHighVoltageDistributionBoxCurrent |
u16 |
艏部高压配电箱电流 |
| 41~42 |
sternFTDevice45Current |
u16 |
艉部FT装置4/5电流 |
| 43~44 |
tyzReservedSwitchCurrent |
u16 |
TYZ预留开关电流 |
| 45~46 |
sternRudderSwitch1Current |
u16 |
艉舵开关1电流 |
| 47~48 |
reservedCurrent1 |
u16 |
预留电流1 |
| 49~50 |
sternRudderSwitch2Current |
u16 |
艉舵开关2电流 |
| 51~52 |
reservedCurrent2 |
u16 |
预留电流2 |
| 53~54 |
fbReservedSwitchCurrent |
u16 |
FB预留电流 |
| 55~56 |
reservedCurrent3 |
u16 |
预留电流3 |
| 57~58 |
coolWaterPressure |
u16 |
冷却水压力 |
| 59 |
checkCode |
u8 |
校验和(累加和低 8 位) |
3.5.2 高压汇流排 A(BUS2)
指令 msg_disHVBACmd(0x0002,发送)
总长度 13 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0002 |
| 4~5 |
length |
u16 |
数据区长度(固定 6) |
| 6 |
bowFTDevice123CircuitBreaker |
u8 |
艏部FT装置1/2/3断路器 |
| 7 |
actuatorCircuitBreaker |
u8 |
启闭机构断路器 |
| 8 |
mastSteeringGearControlBoxCircuitBreaker |
u8 |
桅杆舵机控制箱断路器 |
| 9 |
xczCircuitBreaker |
u8 |
XCZ断路器 |
| 10 |
bowRudderControlBoxCircuitBreaker |
u8 |
艏舵控制箱断路器 |
| 11 |
openWaterCoverStartCylinderCircuitBreaker |
u8 |
敞水盖启动电缸断路器 |
| 12 |
checkCode |
u8 |
校验和(累加和低 8 位) |
反馈 msg_disHighAVolBusFbMsg(0x0006,接收)
总长度 32 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0006 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
bowFTDevice123CircuitBreaker |
u8 |
艏部FT装置1/2/3断路器状态 |
| 7 |
actuatorCircuitBreaker |
u8 |
启闭机构断路器状态 |
| 8 |
mastSteeringGearControlBoxCircuitBreaker |
u8 |
桅杆舵机控制箱断路器状态 |
| 9 |
xczCircuitBreaker |
u8 |
XCZ断路器状态 |
| 10 |
bowRudderControlBoxCircuitBreaker |
u8 |
艏舵控制箱断路器状态 |
| 11 |
openWaterCoverStartCylinderCircuitBreaker |
u8 |
敞水盖启动电缸断路器状态 |
| 12 |
instrumentPowerFailureSignal |
u8 |
仪表电源失电信号(0x55正常,0xAA故障) |
| 13 |
emergencyPowerFailureSignal |
u8 |
应急电源失电信号(0x55正常,0xAA故障) |
| 14 |
waterIngressionAlarm |
u8 |
浸水报警 |
| 15~16 |
busbarBVoltage |
u16 |
汇流排B电压 |
| 17~18 |
busbarBCurrent |
u16 |
汇流排B电流 |
| 19~20 |
bowFTDevice123Current |
u16 |
艏部FT装置1/2/3电流 |
| 21~22 |
actuatorCurrent |
u16 |
启闭机构电流 |
| 23~24 |
mastSteeringGearControlBoxCurrent |
u16 |
桅杆舵机控制箱电流 |
| 25~26 |
xczCurrent |
u16 |
XCZ电流 |
| 27~28 |
bowRudderControlBoxCurrent |
u16 |
艏舵控制箱电流 |
| 29~30 |
openWaterCoverStartCylinderCurrent |
u16 |
敞水盖启动电缸电流 |
| 31 |
checkCode |
u8 |
校验和(累加和低 8 位) |
3.5.3 仪表母线(BUS3,低压主母线)
指令 msg_disHVBBCmd(0x0003,发送)
总长度 14 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0003 |
| 4~5 |
length |
u16 |
数据区长度(固定 8) |
| 6 |
lithiumBatteryGroupInstrumentCircuitBreaker |
u8 |
锂电池组(仪表)断路器 |
| 7 |
bowLowVoltageDistributionBoxCircuitBreaker |
u8 |
艏部低压配电箱断路器 |
| 8 |
unit4InstrumentDC48VCircuitBreaker |
u8 |
UNIT4仪表DC48V断路器 |
| 9 |
dcC1DCDistributionPanelCircuitBreaker |
u8 |
DC-C1直流配电板断路器 |
| 10 |
reservedCircuitBreaker1 |
u8 |
预留断路器1 |
| 11 |
reservedCircuitBreaker2 |
u8 |
预留断路器2 |
| 12 |
emergencyLithiumBatteryGroup2CircuitBreaker |
u8 |
应急锂电池组2断路器 |
| 13 |
checkCode |
u8 |
校验和(累加和低 8 位) |
反馈 msg_disLowMainBusFbMsg(0x0007,接收)
总长度 41 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0007 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
lithiumBatteryGroupInstrumentCircuitBreaker |
u8 |
锂电池组(仪表)断路器状态 |
| 7 |
bowLowVoltageDistributionBoxCircuitBreaker |
u8 |
艏部低压配电箱断路器状态 |
| 8 |
unit4InstrumentDC48VCircuitBreaker |
u8 |
UNIT4仪表DC48V断路器状态 |
| 9 |
dcC1DCDistributionPanelCircuitBreaker |
u8 |
DC-C1直流配电板断路器状态 |
| 10 |
reservedCircuitBreaker1 |
u8 |
预留断路器1状态 |
| 11 |
reservedCircuitBreaker2 |
u8 |
预留断路器2状态 |
| 12 |
emergencyLithiumBatteryGroup2CircuitBreaker |
u8 |
应急锂电池组2断路器状态 |
| 13 |
instrumentPowerFailureSignal |
u8 |
仪表电源失电信号(0x55正常,0xAA故障) |
| 14 |
emergencyPowerFailureSignal |
u8 |
应急电源失电信号(0x55正常,0xAA故障) |
| 15 |
instrumentBusbarInsulationLow |
u8 |
仪表汇流排绝缘低(0x55正常,0x55绝缘低) |
| 16~17 |
instrumentBusbarVoltage |
u16 |
仪表母排电压 |
| 18~19 |
bowLowVoltageDistributionBoxCurrent |
u16 |
艏部低压配电箱电流 |
| 20~21 |
dcC1InstrumentDC48VCurrent |
u16 |
DC-C1仪表DC48V电流 |
| 22~23 |
reservedCurrent1 |
u16 |
预留电流1 |
| 24~25 |
emergencyLithiumBatteryGroup2Current |
u16 |
应急锂电池组2电流 |
| 26~27 |
lithiumBatteryGroupInstrumentCurrent |
u16 |
锂电池组(仪表)电流 |
| 28~29 |
unit4InstrumentDC48VCurrent |
u16 |
UNIT4仪表DC48V电流 |
| 30~31 |
reservedCurrent2 |
u16 |
预留电流2 |
| 32~33 |
emergency2BusbarVoltage |
u16 |
应急2汇流排电压 |
| 34~35 |
compositeEnergyManagementSystemEmergencyDC48VCurrent |
u16 |
复合能源管控系统应急DC48V电流 |
| 36~37 |
fuelCellSecuritySystemEmergencyDC48VCurrent |
u16 |
燃料电池安全系统应急DC48V电流 |
| 38~39 |
plcControlPowerCurrent |
u16 |
PLC控制电源电流 |
| 40 |
checkCode |
u8 |
校验和(累加和低 8 位) |
3.5.4 仪表汇流排(BUS4)
指令 msg_disLVBCmd(0x0004,发送)
总长度 15 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0004 |
| 4~5 |
length |
u16 |
数据区长度(固定 8) |
| 6 |
unit1CircuitBreaker |
u8 |
UNIT1断路器 |
| 7 |
unit2CircuitBreaker |
u8 |
UNIT2断路器 |
| 8 |
unit3CircuitBreaker |
u8 |
UNIT3断路器 |
| 9 |
unit5CircuitBreaker |
u8 |
UNIT5断路器 |
| 10 |
bowPZDeviceCircuitBreaker |
u8 |
艏部PZ装置断路器 |
| 11 |
reservedCircuitBreaker1 |
u8 |
预留断路器1 |
| 12 |
reservedCircuitBreaker2 |
u8 |
预留断路器2 |
| 13 |
emergencyLithiumBatteryGroup1CircuitBreaker |
u8 |
应急锂电池组1断路器 |
| 14 |
checkCode |
u8 |
校验和(累加和低 8 位) |
反馈 msg_disLowBusFbMsg(0x0008,接收)
总长度 36 字节。
| 偏移(字节) |
字段 |
类型 |
说明 |
| 0 |
start1 |
u8 |
起始符 0x40 |
| 1 |
start2 |
u8 |
起始符 0x40 |
| 2~3 |
id |
u16 |
消息标识 0x0008 |
| 4~5 |
length |
u16 |
数据区长度 |
| 6 |
unit1CircuitBreaker |
u8 |
UNIT1断路器状态 |
| 7 |
unit2CircuitBreaker |
u8 |
UNIT2断路器状态 |
| 8 |
unit3CircuitBreaker |
u8 |
UNIT3断路器状态 |
| 9 |
unit5CircuitBreaker |
u8 |
UNIT5断路器状态 |
| 10 |
bowPZDeviceCircuitBreaker |
u8 |
艏部PZ装置断路器状态 |
| 11 |
reservedCircuitBreaker1 |
u8 |
预留断路器1状态 |
| 12 |
reservedCircuitBreaker2 |
u8 |
预留断路器2状态 |
| 13 |
emergencyLithiumBatteryGroup1CircuitBreaker |
u8 |
应急锂电池组1断路器状态 |
| 14 |
powerFailureSignal |
u8 |
仪表电源失电信号(0x55正常,0xAA故障) |
| 15 |
emergencyPowerFailureSignal |
u8 |
应急电源失电信号(0x55正常,0xAA故障) |
| 16 |
waterIngressionAlarm |
u8 |
浸水报警(0x55正常,0xAA故障) |
| 17~18 |
instrumentBusbarVoltage |
u16 |
仪表母排电压 |
| 19~20 |
instrumentBusbarCurrent |
u16 |
仪表母排电流 |
| 21~22 |
unit1Current |
u16 |
UNIT1电流 |
| 23~24 |
unit2Current |
u16 |
UNIT2电流 |
| 25~26 |
unit3Current |
u16 |
UNIT3电流 |
| 27~28 |
unit5Current |
u16 |
UNIT5电流 |
| 29~30 |
bowPZDeviceCurrent |
u16 |
艏部PZ装置电流 |
| 31~32 |
emergencyLithiumBatteryGroup1Current |
u16 |
应急锂电池组1电流 |
| 33~34 |
emergency1BusbarVoltage |
u16 |
应急1汇流排电压 |
| 35 |
checkCode |
u8 |
校验和(累加和低 8 位) |
4. 附录:常量与枚举
4.1 断路器 / 信号常量
4.2 燃料电池控制指令 FcuCommand
| 值 |
含义 |
| 0x01 |
自检 SelfCheck |
| 0x02 |
启动 Start |
| 0x03 |
停机 Stop |
| 0x04 |
复位 Reset |
| 0x05 |
急停 EmergencyStop |
| 0x06 |
补给 Supply |
| 0x07 |
预热 WarmUp |
| 0x08 |
维护 Maintenance |
4.3 燃料电池状态 FcuState
| 值 |
含义 |
值 |
含义 |
| 0x01 |
初始化 Init |
0x08 |
故障 Fault |
| 0x02 |
待机 Standby |
0x09 |
补给 Supply |
| 0x03 |
自检异常 SelfCheckError |
0x0A |
预热 WarmUp |
| 0x04 |
就绪 Ready |
0x0B |
预热完成 WarmUpComplete |
| 0x05 |
启动 Start |
0x0C |
维护 Maintenance |
| 0x06 |
运行 Running |
0x0D |
维护完成 MaintenanceComplete |
| 0x07 |
停机 Stop |
— |
— |
4.4 电池指令 BatteryCommand
| 值 |
含义 |
| 0x00 |
保持 Hold |
| 0x10 |
启动 Start |
| 0x20 |
停机 Stop |
4.5 设备控制 EquipmentCommand
| 值 |
含义 |
| 0 |
断电 OFF |
| 1 |
上电 ON |
| 2 |
仪表电上电 METER_ON |
| 3 |
动力电上电 POWER_ON |
| 4 |
仪表电断电 METER_OFF |
| 5 |
动力电断电 POWER_OFF |
4.6 任务类型 TaskType
| 值 |
含义 |
字符串 |
| 1 |
抛载 |
throwLoad |
| 2 |
运动上浮 |
floatUp |
| 3 |
回收 |
recycle |
| 4 |
悬停 |
hover |
| 5 |
上浮通信 |
satComm |
| 6 |
上浮校准 |
satCalibrate |
| 7 |
游曳 |
tour |
| 8 |
航行 |
sail |
| 9 |
紧急上浮通信 |
emerSatComm |
| 10 |
紧急航行 |
emerSail |
4.7 工况 WorkCondition
| 值 |
含义 |
值 |
含义 |
| 0 |
工况切换中 |
7 |
上浮下潜 |
| 1 |
待机 |
8 |
浮调模式 |
| 2 |
岸基备航 |
9 |
水下侦查 |
| 3 |
水中备航 |
10 |
水面侦查 |
| 4 |
遥控工况 |
11 |
DJ模式 |
| 5 |
巡航模式 |
12 |
调试模式 |
| 6 |
高速模式 |
— |
— |
4.8 运行模式 RunMode
| 值 |
含义 |
| 0 |
正常模式 Normal |
| 1 |
测试模式 Test |
| 2 |
调试模式 Debug |
4.9 故障码格式
- 系统故障码:
faultCode 中每个值为 0xabcd,b 位(右移 8 位取低 4 位)表示故障等级(PowerManger::getFaultLevel())。
- 锂电池故障码映射表:
src/pPowerManger/faultCode.h 中 batfaultMap(14 级,0x010xC9)。
- 配电故障码映射表:
src/pPowerManger/faultCode.h 中 disfaultMap(1~45 项断路器脱扣/绝缘/失电/浸水故障)。