【Code With SOLO】用 TRAE SOLO 从零打造Modbus 多路从站模拟器

【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 一次性生成了完整的 ModbusDataStoreModbusProtocolHandlerModbusTCPServerModbusRTUServer,包括 CRC-16 校验、3.5 字符静默检测等关键细节。

第二步:构建 GUI 界面

“用 Python + PyQt5 做 GUI 界面,界面可以实时修改寄存器数值,上位机读取、写入都正常响应”

SOLO 生成了完整的 MainWindowSlaveTabRegisterTableModelPacketLogModel,包含寄存器表格编辑、报文监控、自动模拟对话框等。

第三步:多从站共享串口

这是最关键的需求——真实 RS-485 网络中多个从站共享同一串口。

“我的需求是硬件上只使用一个串口,软件上虚拟出来的从站用的是同一个硬件串口,它们是从站地址不一样”

SOLO 设计了 SharedRTUManager 单例模式:一个串口只打开一次,按从站地址分发请求到不同的 DataStore,实现了真正的多从站共享串口仿真。

第四步:迭代优化

后续通过多轮对话持续优化:

  • 报文原始数据包含完整帧(从站地址 + CRC)

  • 表格列宽可拖动调整

  • UI 全面美化(Google Material 配色、GitHub 暗色终端)

  • ComboBox 下拉列表文字不可见的 Bug 修复

  • 全部启动时串口竞态条件修复

  • 成果展示

  • 核心功能

    提效效果

    • 开发效率:原本手写 Modbus 协议栈 + GUI 至少需要 2-3 天,用 TRAE SOLO 2 小时完成初版,迭代优化约 1 小时

    • 调试效率:无需连接真实设备,办公电脑即可完成 Modbus 通信调试,单次调试从 30 分钟缩短到 3 分钟

    • 代码质量:SOLO 生成的协议栈逻辑清晰、线程安全,12 项协议测试全部通过

    SOLO 在流程中做了什么

    1. 架构设计:根据需求自动拆分模块,生成清晰的类层次结构

    2. 协议实现:完整实现 8 种功能码的解析与应答,包括 CRC-16、3.5 字符静默等细节

    3. Bug 定位与修复:ComboBox 白字、串口竞态、模型重置等 Bug 都是 SOLO 自主分析根因并修复

    4. UI 迭代:从功能优先到视觉优化,SOLO 根据反馈持续调整样式和布局

    可复用的方法

    1. 自研协议栈模式:不依赖第三方库的服务器 API,自己实现协议解析,避免版本兼容问题,完全掌控协议细节

    2. 共享资源管理器模式SharedRTUManager 单例 + 互斥锁的模式,适用于任何"多消费者共享单一硬件资源"的场景

    3. 增量模型更新:Qt 表格模型只更新变化的行,避免重置模型导致用户编辑被中断,这个模式在所有实时数据展示场景都适用

    4. 分层 Prompt 策略:先搭骨架(协议栈)→ 再建界面(GUI)→ 最后精装修(样式优化),每一步都有明确的输入和验证标准