协议:按0824协议更新复合管控通信解析 + 新增燃料电池监控网页

- pmSysvariable/ccuUdpMsg: 域起始符改为0x40 0x40,域标识符重编号0x0001~0x0004,
  ccuState/ccuColCmd/ccuSetParmCmd 按新协议字段布局与字节序重写(状态248B/操控45B/参数28B)
- systemData/httpserver: 新增FC单片电压、甲醇制氢装置、DC/DC、尾气装置、一体化罐、
  供氢供氧流量、应急上浮等字段解析与WebSocket JSON推送
- 新增 /fcs 燃料电池监控页(fuelcell.h):实时数据显示 + 操控指令交互按钮,
  过滤日志推送消息避免界面闪烁
- SQLite/LowerCommManager/测试:更新建表列、解析打印与单元/集成测试适配新协议
This commit is contained in:
zjk
2026-08-26 20:56:39 +08:00
parent 12f0dee86e
commit e0488d513b
15 changed files with 1565 additions and 245 deletions
+63 -15
View File
@@ -36,26 +36,63 @@ const std::vector<SQLite::TableDesc>& SQLite::allTables()
COL(ccuState, fc_mode),
COL(ccuState, fc_status),
COL(ccuState, fc_fault_level),
COL(ccuState, output_power_limit),
COL(ccuState, total_generation_time),
COL(ccuState, total_generation_power),
COL(ccuState, fault_level_1),
COL(ccuState, fault_level_2),
COL(ccuState, fault_level_3),
COL(ccuState, fault_level_4),
COL(ccuState, total_generation_time),
COL(ccuState, output_power_limit),
COL(ccuState, total_generation_power),
COL(ccuState, hydrogen_capacity),
COL(ccuState, liquid_oxygen_capacity),
COL(ccuState, fc1_min_cell_voltage),
COL(ccuState, fc1_min_cell_pos),
COL(ccuState, fc1_avg_cell_voltage),
COL(ccuState, fc2_min_cell_voltage),
COL(ccuState, fc2_min_cell_pos),
COL(ccuState, fc2_avg_cell_voltage),
COL(ccuState, palladium_temp),
COL(ccuState, buffer_tank_pressure),
COL(ccuState, flue_total_emission),
COL(ccuState, flue_pressure),
COL(ccuState, reactor_pressure),
COL(ccuState, electric_valve_open),
COL(ccuState, main_pipe_pressure),
COL(ccuState, aux_pipe_pressure),
COL(ccuState, dcdc1_in_voltage),
COL(ccuState, dcdc1_in_current),
COL(ccuState, dcdc2_in_voltage),
COL(ccuState, dcdc2_in_current),
COL(ccuState, dcdc_out_voltage),
COL(ccuState, dcdc_out_current),
COL(ccuState, dcdc_control_voltage),
COL(ccuState, dcdc_aux_out_voltage),
COL(ccuState, methanol_total_usage),
COL(ccuState, methanol_solution_feed),
COL(ccuState, oxygen_water_tank_level),
COL(ccuState, hydrogen_water_tank_level),
COL(ccuState, ballast_water_tank_level),
COL(ccuState, exhaust_in_pressure),
COL(ccuState, exhaust_out_pressure),
COL(ccuState, exhaust_run_freq),
COL(ccuState, exhaust_in_temp),
COL(ccuState, exhaust_out_temp),
COL(ccuState, exhaust_in_water_pressure),
COL(ccuState, exhaust_out_water_pressure),
COL(ccuState, tank_lo2_pressure),
COL(ccuState, tank_co2_pressure),
COL(ccuState, tank_lo2_level),
COL(ccuState, alloy_h2_flow),
COL(ccuState, fc_h2_flow),
COL(ccuState, fc_o2_flow),
COL(ccuState, emergency_float_depth),
COL(ccuState, emergency_float_time),
COL(ccuState, cabin_pressure1),
COL(ccuState, cabin_pressure2),
COL(ccuState, cabin_temp1),
COL(ccuState, cabin_temp2),
COL(ccuState, cabin_humidity1),
COL(ccuState, cabin_humidity2),
COL(ccuState, flame_detector1),
COL(ccuState, flame_detector2),
COL(ccuState, h2_concentration1),
COL(ccuState, h2_concentration2),
COL(ccuState, h2_concentration3),
@@ -63,6 +100,8 @@ const std::vector<SQLite::TableDesc>& SQLite::allTables()
COL(ccuState, o2_concentration2),
COL(ccuState, ch3oh_concentration1),
COL(ccuState, ch3oh_concentration2),
COL(ccuState, flame_detector1),
COL(ccuState, flame_detector2),
COL_ARR(ccuState, reserved1, 0, "reserved1_1"),
COL_ARR(ccuState, reserved1, 1, "reserved1_2"),
COL(ccuState, emergency_battery1_voltage),
@@ -120,22 +159,21 @@ const std::vector<SQLite::TableDesc>& SQLite::allTables()
COL(ccuState, dyn_resistance_neg),
COL(ccuState, ins_emergency_status),
COL(ccuState, dyn_emergency_status),
COL_ARR(ccuState, reserved3, 0, "reserved3_1"),
COL_ARR(ccuState, reserved3, 1, "reserved3_2"),
COL(ccuState, ins_soc_threshold1),
COL(ccuState, ins_soc_threshold2),
COL(ccuState, ins_soc_threshold3),
COL(ccuState, ins_power_limit1),
COL(ccuState, ins_power_limit2),
COL(ccuState, dyn_soc_threshold1),
COL(ccuState, dyn_soc_threshold2),
COL(ccuState, dyn_soc_threshold3),
COL(ccuState, ins_power_limit1),
COL(ccuState, ins_power_limit2),
COL(ccuState, dyn_power_limit1),
COL(ccuState, dyn_power_limit2),
COL(ccuState, device_online_flag1),
COL(ccuState, device_online_flag2),
COL(ccuState, reserved4),
COL(ccuState, reserved3),
COL(ccuState, heartbeat),
COL(ccuState, emergency_command),
}},
{ "disHighVolBusState", {
COL(disHighVolBusState, fuelCellCircuitBreaker),
@@ -247,7 +285,15 @@ const std::vector<SQLite::TableDesc>& SQLite::allTables()
COL_AS(ccuColCmd, fcmode, "workCondition"),
COL(ccuColCmd, fcuCmd),
COL(ccuColCmd, fcuPowerEfficiency),
COL(ccuColCmd, insChargeEnable),
COL(ccuColCmd, pitchData1),
COL(ccuColCmd, pitchData2),
COL(ccuColCmd, rollData1),
COL(ccuColCmd, rollData2),
COL(ccuColCmd, emergencyAllow),
COL(ccuColCmd, depth),
COL(ccuColCmd, supplyExhaustCmd),
COL(ccuColCmd, reservedCmd5),
COL(ccuColCmd, reservedCmd6),
COL(ccuColCmd, insBatCmd),
COL(ccuColCmd, powerBatCmd),
COL(ccuColCmd, powerBatEfficiency),
@@ -260,13 +306,15 @@ const std::vector<SQLite::TableDesc>& SQLite::allTables()
COL(ccuSetParmCmd, insSocHold1),
COL(ccuSetParmCmd, insSocHold2),
COL(ccuSetParmCmd, insSocHold3),
COL(ccuSetParmCmd, fcuToInsLimit1),
COL_AS(ccuSetParmCmd, fcuToinsLimit2, "fcuToInsLimit2"),
COL(ccuSetParmCmd, insOutputPower),
COL(ccuSetParmCmd, reserved1),
COL(ccuSetParmCmd, powerSocHold1),
COL(ccuSetParmCmd, powerSocHold2),
COL(ccuSetParmCmd, powerSocHold3),
COL(ccuSetParmCmd, fcuToPowerLimit1),
COL(ccuSetParmCmd, fcuToPowerLimit2),
COL(ccuSetParmCmd, powerOutputPower),
COL(ccuSetParmCmd, reserved2),
COL(ccuSetParmCmd, reserved3),
COL(ccuSetParmCmd, reserved4),
}},
{ "disHighVolBusCmd", {
COL(disHighVolBusCmd, fuelCellCircuitBreaker),