【Code With SOLO】用 TRAE SOLO 从零打造Modbus 多路从站模拟器
摘要
用 TRAE SOLO 从零开发了一款 Modbus 多从站模拟软件
1.支持 Modbus TCP/RTU 双模式
2.支持同时添加多个Modbus从站
3.寄存器区域实时编辑
4.支持报文解析,原始报文显示
整个开发过程从需求拆解到协议栈实现、GUI 构建、Bug 修复全部在 TRAE SOLO 中完成,自研协议栈零依赖,12 项协议测试全部通过。
背景
业自动化领域Modbus是常用的通信协议,日常工作需要频繁调试 Modbus 通信。市面上的从站模拟工具要么功能残缺,要么只支持单从站,多从站需要充值VIP,无法满足多从站调试的真实场景。每次调试都要连接真实设备,效率极低。我需要一个轻量、专业、支持多从站的模拟工具,能让我在办公电脑上就能完成通信调试。
实践过程
关键 Prompt 与操作过程
第一步:搭建协议栈
Prompt 要点:明确要求自研协议栈、支持全部 8 种功能码、线程安全。
“开发 Modbus 从站模拟软件,支持 Modbus TCP 和 Modbus RTU 串口两种模式,寄存器区域完整:线圈、离散输入、保持寄存器、输入寄存器,自动模拟标准 Modbus 协议应答”
SOLO 一次性生成了完整的 ModbusDataStore、ModbusProtocolHandler、ModbusTCPServer、ModbusRTUServer,包括 CRC-16 校验、3.5 字符静默检测等关键细节。
第二步:构建 GUI 界面
“用 Python + PyQt5 做 GUI 界面,界面可以实时修改寄存器数值,上位机读取、写入都正常响应”
SOLO 生成了完整的 MainWindow、SlaveTab、RegisterTableModel、PacketLogModel,包含寄存器表格编辑、报文监控、自动模拟对话框等。
第三步:多从站共享串口
这是最关键的需求——真实 RS-485 网络中多个从站共享同一串口。
“我的需求是硬件上只使用一个串口,软件上虚拟出来的从站用的是同一个硬件串口,它们是从站地址不一样”
SOLO 设计了 SharedRTUManager 单例模式:一个串口只打开一次,按从站地址分发请求到不同的 DataStore,实现了真正的多从站共享串口仿真。
第四步:迭代优化
后续通过多轮对话持续优化:
-
报文原始数据包含完整帧(从站地址 + CRC)
-
表格列宽可拖动调整
-
UI 全面美化(Google Material 配色、GitHub 暗色终端)
-
ComboBox 下拉列表文字不可见的 Bug 修复
-
全部启动时串口竞态条件修复
-
成果展示
-
核心功能
-
Modbus TCP/RTU 双模式:TCP 基于 asyncio 高性能服务器,RTU 基于 pyserial + CRC-16 校验
-
4 类寄存器区域:线圈、离散输入、保持寄存器、输入寄存器,支持 HEX/DEC 双格式显示和实时编辑
-
多从站共享串口:一个物理串口仿真多个从站,按地址自动分发
-
报文抓包:表格模式 + 原始数据模式(GitHub 暗色终端风格,语法高亮)
提效效果
-
开发效率:原本手写 Modbus 协议栈 + GUI 至少需要 2-3 天,用 TRAE SOLO 2 小时完成初版,迭代优化约 1 小时
-
调试效率:无需连接真实设备,办公电脑即可完成 Modbus 通信调试,单次调试从 30 分钟缩短到 3 分钟
-
代码质量:SOLO 生成的协议栈逻辑清晰、线程安全,12 项协议测试全部通过
SOLO 在流程中做了什么
-
架构设计:根据需求自动拆分模块,生成清晰的类层次结构
-
协议实现:完整实现 8 种功能码的解析与应答,包括 CRC-16、3.5 字符静默等细节
-
Bug 定位与修复:ComboBox 白字、串口竞态、模型重置等 Bug 都是 SOLO 自主分析根因并修复
-
UI 迭代:从功能优先到视觉优化,SOLO 根据反馈持续调整样式和布局
可复用的方法
-
自研协议栈模式:不依赖第三方库的服务器 API,自己实现协议解析,避免版本兼容问题,完全掌控协议细节
-
共享资源管理器模式:
SharedRTUManager单例 + 互斥锁的模式,适用于任何"多消费者共享单一硬件资源"的场景 -
增量模型更新:Qt 表格模型只更新变化的行,避免重置模型导致用户编辑被中断,这个模式在所有实时数据展示场景都适用
-
分层 Prompt 策略:先搭骨架(协议栈)→ 再建界面(GUI)→ 最后精装修(样式优化),每一步都有明确的输入和验证标准
-







