Files
H100PowerManger/docs/上位机下位机通信协议.md
T

56 KiB
Raw Blame History

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

目录

  1. 总体架构
  2. 上位机通信协议(MOOS + JSON)
    • 2.1 通信方式与参数
    • 2.2 消息总览
    • 2.3 上位机 → pPowerManger(订阅消息)
    • 2.4 pPowerManger → 上位机(发布消息)
    • 2.5 设备表(DriverTable)字段
    • 2.6 次级配电(secdist)字段
    • 2.7 设备 ID 枚举
  3. 下位机通信协议(UDP 二进制)
    • 3.1 通信方式与参数
    • 3.2 通用帧格式与校验
    • 3.3 消息 ID 汇总
    • 3.4 复合管控器(CCU)报文
    • 3.5 配电系统报文
  4. 附录:常量与枚举

1. 总体架构

                     ┌─────────────────────────────────────────────────────┐
                     │                      上 位 机                       │
                     │  任务规划 / 决策 / 外部通信 / XC阵 / ZDP / 推进器     │
                     └─────────────────────┬───────────────────────────────┘
                                           │  MOOS 消息(JSON 字符串)
                                           │  MOOSDB  ServerPort=9000  AppTick=4
                     ┌─────────────────────▼───────────────────────────────┐
                     │                 pPowerManger(能源管理程序)          │
                     │   UpperCommManager  ⇄  状态机 FSM  ⇄  LowerCommManager │
                     └─────────────────────┬───────────────────────────────┘
                                           │  UDP 二进制帧(小端)
                                           │  本机 5001  ⇄  CCU 192.168.0.140:7000
                     ┌─────────────────────▼───────────────────────────────┐
                     │                      下 位 机                       │
                     │  复合管控器 CCU / 高压母线 / 高压汇流排A / 仪表母线 / 仪表汇流排 │
                     └─────────────────────────────────────────────────────┘
  • 上位机通信:MOOS 变量承载 JSON 字符串,由 UpperCommManager 处理。订阅注册于 PowerManger::registerVariables(),发布通过 PowerManger::sendNotification()。

  • 下位机通信:UDP 承载 二进制结构体帧(#pragma pack(1) 紧凑、小端),由 LowerCommManager + udpComm 处理。

  • 关键配置(PowerManger.h):

    #define IPORT   5001            // 本机 UDP 监听端口
    #define CCUPORT 7000            // CCU 目标端口
    #define CCUHOST "192.168.0.140" // CCU 目标地址
    #define MAX_UDP_PKT_SIZE 65535  // UDP 最大报文
    

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 工况指令

示例:

{"powerCMD":1,"modCMD":2,"workCMD":3}

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=动力电断电)。

示例:

{"thruster_uint8":1,"depth1_uint8":1,"buoyage_uint8":0}

完整字段清单见 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 个元素平均值

示例:

{"value_array_int32":[1200,1210,1190]}

2.3.5 uPlan_taskStart_st — 任务开始

字段 类型 说明
taskType_str string 任务类型(见 TaskType::fromString)
balanceEnabled_bool bool 使能浮力调节
bowRudderUnfold_bool bool 艏舵展开

示例:

{"taskType_str":"sail","balanceEnabled_bool":true,"bowRudderUnfold_bool":false}

2.3.6 uPlan_planStop_st — 任务停止

字段 类型 说明
op_int32 int 1 = 停止

示例:

{"op_int32":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)

示例:

{"id_uint8":53,"cmd_uint8":1}

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)+ 数据区 + 校验字段。以下帧结构表中,偏移(字节) 均为相对整帧起始的绝对偏移。

3.2.1 消息头 m_header(6 字节)

偏移(字节) 字段 类型 说明
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 校验算法

校验和 = 从 start1 起至校验字段之前的所有字节累加求和(不含校验字段本身)
  • CCU 报文:校验字段 4 字节,实际发送 / 比较取累加和低 8 位(cc & 0xFF)。
  • 配电报文:校验字段 1 字节,sum = 累加和 & 0xFF。
  • 接收端校验不符则丢弃该帧并记录 Check error。
Checksum calculateChecksum(const unsigned char* data, int size) {
    Checksum checksum = 0;
    int size_data = size - sizeof(Checksum);   // 去掉末尾校验字段
    for (int i = 0; i < size_data; i++) checksum += data[i];
    return checksum;
}

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 断路器 / 信号常量

#define BREAK_OFF   0xAA   // 分闸
#define BREAK_ON    0x55   // 合闸
#define BREAK_FALSE 0x5A   // 故障脱扣(仅反馈)

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 项断路器脱扣/绝缘/失电/浸水故障)。