RTU_ALL_AI/docs/system/libweb_server/WEBSERVER_FIX_PLAN.md

3.1 KiB
Raw Permalink Blame History

WebServer 修改调试计划

日期: 2026-07-14 基于: WEBSERVER_COMPARISON.md

修改优先级

高优先级(必须修复 — M1, M2, M3

1. SBO 遥控流程 (M1)

目标: yk/ao/param 的 set 操作支持 SELECT→DIRECT 两阶段控制

改动文件: src/system/libweb_server/src/ws_method.cpp

改动点:

  • ws_sig_set_yk(): 根据 ctrl_type 判断 DIRECT_NORMAL 直控或 SBO_NORMAL 选控
  • ws_sig_set_ao(): 同上
  • ws_sig_set_param(): 同上
  • SBO 流程: 先 DC_STEP_SELECT → 再 DC_STEP_DIRECT

调试方法: 前端发送 yk/ao/param set 命令,确认 SBO 类型信号走 SELECT→DIRECT 流程

2. dc_save_out_signals_xml (M2)

目标: datacenter out 命令执行后保存 XML

改动文件: src/system/libweb_server/src/ws_method.cppcmd 处理部分)

改动点:

  • type=cmd 处理中,当命令以 datacenter 开头且子命令为 out/all
  • 调用 dc_save_out_signals_xml() 保存到 config/SYSTEM/datacenter_out.xml

调试方法: 前端执行 datacenter out 命令 → 检查 config/SYSTEM/datacenter_out.xml 是否生成

3. ws_build_dc_data_json (M3)

目标: datacenter 命令执行后返回信号元数据 JSON

改动文件: src/system/libweb_server/src/ws_method.cpp

改动点:

  • 新增函数 ws_build_dc_data_json(types) — 调用 dc_get_signal_info_by_id 遍历信号
  • type=cmd 处理中datacenter 命令执行后调用此函数构建 JSON
  • 通过 ws_send_binary 发送 dc_data JSON

调试方法: 前端执行 datacenter all 命令 → 检查返回的 JSON 是否包含 out/in/yk/ao/param 完整数据

中优先级(建议修复 — M4, M5

4. ws_send_large_text (M4)

目标: 大文本(>35KB分片发送防止 WS 帧溢出

改动文件: src/system/libweb_server/src/ws_method.cpp 和/或 web_server.cpp

改动点:

  • 新增 ws_send_large_text() — 35KB 分片 cmd_rsp_chunk 消息
  • ws_cmd_exec() 返回大字符串时使用分片发送代替二进制发送

调试方法: 执行产生大量输出的命令(如 datacenter all检查前端是否收到分片

5. AO/Param 元数据 (M5)

目标: JSON 中包含 min/max/step/unit 字段

改动文件: src/system/libweb_server/src/ws_method.cppws_make_sig_json

改动点:

  • AO 信号 JSON 增加 min/max/step/unit 字段
  • 需要在信号结构中存储 stru_signal_param 或从 datacenter 查询

低优先级(可选 — M6

6. p_ctrl 伴随生命周期 (M6)

改动文件: src/system/libweb_server/src/ws_method.cpp

改动点: 信号结构体增加 p_ctrl*add 时分配del 时释放

测试方案

  1. 启动 RTU: ./RTU 验证 webserver 正常启动
  2. 浏览器连接: http://localhost:8080 → 终端页面
  3. 测试命令: 点击命令面板按钮执行各模块命令
  4. 测试信号CRUD: 通过前端数据页面添加/删除/修改信号
  5. 测试SBO流程: 通过前端修改 SBO 类型信号值
  6. 测试大输出: 执行 datacenter all 验证分片发送