Modbus Studio (免费的Modbus主从机软件)
1. 软件用途
Modbus Studio 是一个用于 Modbus RTU / Modbus TCP 调试的桌面工具,主要用于:
- 作为 Client 连接真实设备并读取、写入点位。
- 作为 Server 模拟从站,供其他主站软件或设备读取、写入。
- 使用寄存器字典统一管理地址、名称、数据类型、倍率、单位、权限和备注。
- 保存工程文件,恢复 Client 数据、Server 数据、寄存器字典、连接配置和报文日志。
2. 为什么要做这个软件
在日常上位机、控制器、传感器和 PLC 调试中,很多工程师会使用 Modbus Poll 和 Modbus Slave 这类工具。它们很经典,也很稳定,但在实际项目交付和反复联调时,会遇到一些不方便的地方。
2.1 Modbus Poll 的常见问题
Modbus Poll 适合快速读取某一段寄存器,但它更偏"地址段调试",不是"工程点位调试"。项目点位多了以后,常见问题包括:
- 点位含义需要额外查表,地址
40001到底是什么变量、单位是什么、倍率是多少,不在工具里形成统一上下文。 - 多种数据类型需要人工切换或手动换算,例如
UINT16、INT16、FLOAT_ABCD、倍率0.1等,容易算错。 - 每次调试不同设备时,都要重新配置功能码、起始地址、数量和显示格式。
- 读取和写入更关注原始寄存器,不够贴近"温度、压力、状态、设定值"这类工程变量。
- 工程资料、报文日志、点位说明通常散落在 Excel、截图、聊天记录和测试记录中,后续复现困难。
2.2 Modbus Slave 的常见问题
Modbus Slave 适合临时模拟从站,但它通常更关注四个数据区本身,而不是项目字典。实际模拟设备时会遇到:
- Server 模拟数据和 Client 读取点位往往需要分别配置,两个工具之间不能自然复用同一份点位表。
- 模拟保持寄存器、输入寄存器、线圈、离散输入时,点位名称、单位、倍率和备注不够直观。
- 外部主站写入后,虽然寄存器值变化了,但不容易直接看出对应的是哪个业务变量。
- 项目切换后,模拟数据、连接参数和点位说明不容易完整恢复。
- Client 调试和 Server 仿真分属两个工具,报文日志、工程配置和测试状态无法统一管理。
2.3 Modbus Studio 要解决什么
Modbus Studio 的目标不是简单复制 Modbus Poll 或 Modbus Slave,而是把常见 Modbus 调试过程整理成一个完整工程:
- 用一份"寄存器字典"同时驱动 Client 和 Server。
- Client 只读取字典里定义的点位,不读无关地址。
- Server 只模拟字典里定义的点位,不生成无意义的固定地址表。
- 每个点位都有地址、名称、数据类型、长度、读写权限、倍率、单位和备注。
- 原始 HEX 和工程解析值同时显示,写入解析值时自动反算为设备原始值。
- TCP / RTU Client、TCP / RTU Server、报文日志和工程管理放在同一个软件里。
- 工程文件可以保存连接配置、Client 数据、Server 数据、寄存器字典和报文日志,方便下次继续调试或交付给同事。
简单来说,Modbus Poll 和 Modbus Slave 更像"协议调试工具",而 Modbus Studio 更想做成"项目调试工作台"。它让一次调试留下完整的工程上下文,而不是只留下几个临时地址和一堆零散截图。
3. 启动软件
text
Modbus Studio\Modbus Studio.exe
4. 基本使用流程
推荐按以下顺序使用:
- 在"寄存器字典"中配置点位。
- 在"Client"中连接设备,软件会按字典自动循环读取。
- 如需模拟从站,在"Server"中按同一份字典配置数据并启动服务。
- 在"报文日志"中查看 TX/RX 原始报文和解析结果。
- 在"工程管理"中保存为
.mbs工程文件。
5. 寄存器字典
寄存器字典是软件的核心。Client 和 Server 都会根据字典中的地址和长度工作,不会读取或显示字典之外的点位。

5.1 字典字段说明
| 字段 | 说明 |
|---|---|
| 分组 | 用于分类点位,例如"温度传感器""系统状态"。 |
| 地址 | Modbus 显示地址,例如 40001。 |
| 名称 | 点位名称,例如"设定温度"。 |
| 数据类型 | 解析原始值时使用的数据格式。 |
| 长度 | 占用的 16 位寄存器数量,位区通常为 1。 |
| 读写权限 | R 只读、W 只写、RW 读写。 |
| 比例因子 | 用于工程值换算。 |
| 单位 | 显示单位,例如 ℃、kPa、%。 |
| 备注 | 点位用途、范围或调试说明。 |
5.2 地址范围
| 地址范围 | Modbus 区域 | Client 行为 | Server 行为 |
|---|---|---|---|
00001 - 09999 |
线圈 Coil | 可读取,可写线圈 | 可模拟,可切换开关值 |
10001 - 19999 |
离散输入 Discrete Input | 可读取,只读 | 可模拟,只读区 |
30001 - 39999 |
输入寄存器 Input Register | 可读取,只读 | 可模拟寄存器值 |
40001 - 49999 |
保持寄存器 Holding Register | 可读取,可写寄存器 | 可模拟寄存器值 |
说明:界面中填写的是常见 Modbus 显示地址,协议报文会自动转换为零基地址。例如 40001 会转换为协议地址 0。
5.3 数据类型
支持的数据类型:
UINT16INT16UINT32INT32FLOAT_ABCDFLOAT_CDABFLOAT_BADCFLOAT_DCBABCDBIT
选择数据类型后,软件会自动给出推荐长度,用户也可以手动修改。
5.4 比例因子
界面显示的解析值与设备原始值之间按比例因子换算:
text
解析值 = 原始值 × 比例因子
原始值 = 解析值 ÷ 比例因子
示例:
| 原始值 | 比例因子 | 界面解析值 |
|---|---|---|
250 |
0.1 |
25 |
1234 |
0.01 |
12.34 |
写入"解析值"时,软件会自动反算为原始寄存器值再发送。
6. Client 使用
Client 页面用于连接真实 Modbus 设备。

6.1 连接 RTU 设备
- 在左侧"连接配置"选择协议类型为
Modbus RTU。 - 点击"刷新"获取串口列表。
- 选择端口、波特率、数据位、停止位、校验位和超时时间。
- 点击"连接 RTU"。
- 连接成功后,状态会显示为已连接。
6.2 连接 TCP 设备
- 在左侧"连接配置"选择协议类型为
Modbus TCP。 - 输入主机地址,例如
127.0.0.1。 - 输入端口,例如
502。 - 设置超时时间。
- 点击"连接 TCP"。
6.3 自动读取
Client 不再依赖手动输入功能码、起始地址和数量。连接成功后,软件会根据寄存器字典自动循环读取:
- 线圈区使用
01。 - 离散输入区使用
02。 - 保持寄存器区使用
03。 - 输入寄存器区使用
04。
可在顶部设置"循环周期",单位为毫秒。
6.4 合并读取
"合并读取"开启后,软件会尝试把相邻或接近的字典点位合并为较少的读取请求,减少报文数量。
适合:
- 点位地址连续。
- 设备支持一次读取较长寄存器数量。
如果设备对读取范围要求严格,或不允许读取未定义地址,可以关闭"合并读取"。
6.5 数据显示
Client 表格显示:
| 列名 | 说明 |
|---|---|
| 地址 | 字典中的显示地址。 |
| 名称 | 点位名称、数据类型和长度。 |
| 原始值 / 状态 | 寄存器显示 HEX,位区显示开关状态。 |
| 解析值 | 根据数据类型和比例因子计算后的值。 |
| 倍率/单位 | 当前点位的比例因子和单位。 |
| 权限 | R、W 或 RW。 |
| 备注 | 字典备注。 |
读取失败的行会高亮提示,方便定位某个地址或长度配置错误。
6.6 写入线圈
满足以下条件时可以写线圈:
- 地址在
00001-09999。 - 权限为
W或RW。 - 当前已经连接设备。
操作方法:
- 在 Client 表格中找到线圈点位。
- 点击"原始值 / 状态"列中的开关。
- 软件会发送写线圈报文。
6.7 写入保持寄存器
满足以下条件时可以写保持寄存器:
- 地址在
40001-49999。 - 权限为
W或RW。 - 当前已经连接设备。
支持两种写入方式:
| 写入位置 | 说明 |
|---|---|
| 原始值 / 状态 | 输入 HEX 原始值,例如 0064 或 0000 0064。 |
| 解析值 | 输入工程值,软件按数据类型和比例因子自动编码。 |
输入完成并确认后,软件会立即写入设备。写入期间如果正在轮询,软件会短暂停止轮询,写入完成后再恢复。
7. Server 使用

Server 页面用于模拟 Modbus 从站。
7.1 Server 数据来源
Server 不再生成固定地址表,而是完全根据寄存器字典显示数据。
如果某个区域为空,说明寄存器字典中没有该区域的地址。
7.2 启动 TCP Server
- 进入"Server"页面。
- 协议类型选择
Modbus TCP。 - 设置监听地址,例如
0.0.0.0。 - 设置监听端口,例如
502。 - 点击"启动服务"。
提示:Windows 上监听 502 端口可能需要管理员权限。调试时可使用 1502、5020 等普通端口。
7.3 启动 RTU Server
- 协议类型选择
Modbus RTU。 - 选择串口和波特率。
- 设置从机地址。
- 点击"启动服务"。
RTU Server 需要真实串口或虚拟串口工具配合测试。
7.4 编辑 Server 数据
Server 表格按四个区域切换:
- 线圈
0xxxx - 离散输入
1xxxx - 输入寄存器
3xxxx - 保持寄存器
4xxxx
位区可以直接切换开关值。寄存器区可以编辑:
- 原始值 HEX
- 解析值
如果服务已经启动,修改会立即同步到 Server 内部数据区,外部主站下一次读取即可获得新值。
7.5 外部主站写入
当外部主站写入线圈或保持寄存器时:
- Server 会更新对应字典点位的值。
- 报文会记录到"报文日志"。
- "请求计数"会增加。
8. 报文日志
报文日志用于查看通信过程。

显示内容包括:
| 字段 | 说明 |
|---|---|
| 时间 | 报文发生时间。 |
| 方向 | TX 发送或 RX 接收。 |
| 协议 | RTU 或 TCP。 |
| 数据 | 原始十六进制报文。 |
| 解析结果 | 软件解析后的简要说明。 |
| 耗时 | 本次事务耗时,单位 ms。 |
| 状态 | 发送、成功或失败。 |
日志最多保留 1000 条。可以点击"清空日志"清除当前日志。
9. 工程管理

工程文件使用 .mbs 格式,本质是 JSON 文本文件。
9.1 新建工程
点击"新建工程"会清空当前配置,包括:
- 连接配置
- Client 数据
- Server 数据
- 寄存器字典
- 报文日志
- 工程路径
如果当前工程有未保存修改,软件会先弹出确认提示。
9.2 保存工程
点击"保存工程"会保存当前所有数据,包括:
- 工程名称、描述、版本
- RTU / TCP 连接配置
- Client 从机地址、轮询周期、合并读取配置
- Client 已读取的数据
- Server 配置和当前模拟数据
- 寄存器字典
- 报文日志
- Server 请求计数
第一次保存会弹出文件路径选择框。
9.3 另存为
点击"另存为"会强制选择新路径,并把当前工程路径切换到新文件。
9.4 打开工程
点击"打开工程"选择 .mbs 文件后,软件会恢复保存时的所有配置和数据。
9.5 最近工程
最近打开或保存的工程会显示在"最近工程"列表中。点击项目可快速打开;点击删除图标只会移除最近记录,不会删除磁盘上的工程文件。
10. 常见问题
10.1 TCP 连接失败
检查:
- IP 地址是否正确。
- 端口是否正确。
- Server 是否已经启动。
- 防火墙是否阻止连接。
- 如果本机测试,Client 主机地址可填
127.0.0.1。
10.2 RTU 串口连接失败
检查:
- 串口是否被其他软件占用。
- 波特率、数据位、停止位、校验位是否与设备一致。
- USB 转串口驱动是否正常。
- 从机地址是否正确。
10.3 某些点位读取失败
检查:
- 字典地址是否在正确范围。
- 数据类型长度是否正确。
- 设备是否允许读取该地址。
- 合并读取是否读到了设备不支持的空洞地址。
可以尝试关闭"合并读取"后再测试。
11 下载地址
公众杨工碎碎念公众号

留言:
Modbus Studio
即可获取下载链接。