# 配电系统调试助手(DisSysTest) 用于 H100 配电系统(高压母线 / 艏部高压 / 仪表母线 / 艏部低压)调试的 桌面工具。可在真实配电板联调与本地模拟两种模式下工作,纯 Python 标准库实现(Tkinter + SQLite),无第三方运行依赖。 ## 快速开始 ```bash # 协议/配置/数据库自检(无界面,建议先跑) python3 run.py --selftest # 启动界面 python3 run.py ``` > 旧目录中的 `PowerManagerApp.py`、`PowerManagerApp copy.py`、`udpMsg.py`、 > `db.py`、`test.py`、`ccu.py` 等为历史调试脚本,新工程位于 `app/`, > 旧文件保留供参考,未参与运行。 ## 界面与操作 - **四个状态页**:动力母线 / 艏部高压 / 仪表母线 / 艏部低压,实时显示 电压、电流、断路器状态与报警。 - **断路器指示灯**:绿=合(0x55) 黑=分(0xAA) 红=故障(0x5A) 灰=无数据。 - **配电操作菜单**:打开各母线操作面板,点「合 / 分」下发指令。 - **DCDC 状态**:查看 DC/DC 故障字1/2 的 16 个状态位。 - **模拟模式**:勾选后无需设备即可联调,配电指令会同步回写模拟反馈, 与真实设备共用同一套接收/落库/转发链路。 - **转发反馈 / 透传指令**:把收到的反馈转发给上位机;把上位机指令透传 给对应配电板。 - **数据记录**:反馈与指令自动写入 SQLite(可取消勾选)。 ## 通信配置 菜单「配置 → 通信配置」可修改并保存到 `config.json`(首次运行自动生成 默认值): | 端点 | 默认值 | 说明 | |----------|-----------------------|--------------------| | 本机 | 127.0.0.1:7000 | 监听反馈 | | 高压配电板(C1) | 192.168.1.154:6000 | 指令下发目标 | | 仪表配电板(C2) | 192.168.1.158:6000 | 指令下发目标 | | 上位机 | 127.0.0.1:5001 | 反馈转发目标 | 菜单「配置 → 启动连接」控制 UDP 接收线程(默认开启)。 ## 消息协议 帧格式:`0x40 0x40 | id(LE u16) | length(LE u16) | body | 和校验(1B)`。 | 消息 ID | 方向 | 说明 | body 长度 | |---------|------|--------------------------|-----------| | 0x0001 | 指令 | 动力母线配电 | 14 | | 0x0002 | 指令 | 艏部高压配电 | 6 | | 0x0003 | 指令 | 仪表母线配电 | 7 | | 0x0004 | 指令 | 艏部低压配电 | 8 | | 0x0005 | 反馈 | 动力母线状态 | 53 | | 0x0006 | 反馈 | 艏部高压状态 | 25 | | 0x0007 | 反馈 | 仪表母线状态 | 34 | | 0x0008 | 反馈 | 艏部低压状态 | 29 | 字段定义与顺序对齐 `src/pPMtest/pmSysvariable.h`(注意历史版本 `udpMsg.py` 中的 length 字段存在多处错误,`app/protocol.py` 已修正并由字段表自动推导)。 ## 工程结构 ``` app/ protocol.py 声明式协议定义(pack/unpack/长度自推导,含自检) config.py config.json 加载/保存 udp_comm.py UDP 收发线程与按 ID 分发 simulator.py 内置模拟器(指令回显) db.py SQLite 存储(表结构由协议自动生成) logger.py 日志(UI/控制台/文件,线程安全) panels.py 数据驱动的状态/操作面板 app.py 主窗口 ccuMsg.py / ccuWin.py 复合管控 CCU 模块(功能预留,暂未接入) run.py 入口 tests/ 协议单元测试 build.py PyInstaller 打包脚本 ``` ## 测试与打包 ```bash python3 run.py --selftest # 协议/配置/数据库自检 python3 tests/test_protocol.py python3 build.py # 需先 pip install pyinstaller(在目标平台执行) ``` ## 注意 - 现场联调前建议先用模拟模式 + 转发/透传验证链路; - 协议自检保证帧长与 C++ 结构一致,但最终以实际板卡抓包为准; - 数据库文件默认生成在 `config.json` 同目录(源码运行时为 `app/test.db`)。