惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Webroot Blog
Webroot Blog
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
博客园_首页
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky
V
Visual Studio Blog
腾讯CDC
小众软件
小众软件
量子位
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
S
Securelist
博客园 - 聂微东
A
About on SuperTechFans
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
Project Zero
Project Zero
Apple Machine Learning Research
Apple Machine Learning Research
Recent Announcements
Recent Announcements
T
Tor Project blog
A
Arctic Wolf
J
Java Code Geeks
NISL@THU
NISL@THU
V
Vulnerabilities – Threatpost
Last Week in AI
Last Week in AI
I
InfoQ
S
Security Affairs
W
WeLiveSecurity
C
CERT Recently Published Vulnerability Notes
U
Unit 42
L
LINUX DO - 最新话题
Google Online Security Blog
Google Online Security Blog
Security Latest
Security Latest
T
Troy Hunt's Blog
T
Tenable Blog
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
罗磊的独立博客
M
MIT News - Artificial intelligence
Schneier on Security
Schneier on Security

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
Modbus Studio (免费的Modbus主从机软件)
PlayerPencil · 2026-06-15 · via 博客园_首页

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 到底是什么变量、单位是什么、倍率是多少,不在工具里形成统一上下文。
  • 多种数据类型需要人工切换或手动换算,例如 UINT16INT16FLOAT_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. 启动软件

Modbus Studio\Modbus Studio.exe

4. 基本使用流程

推荐按以下顺序使用:

  1. 在“寄存器字典”中配置点位。
  2. 在“Client”中连接设备,软件会按字典自动循环读取。
  3. 如需模拟从站,在“Server”中按同一份字典配置数据并启动服务。
  4. 在“报文日志”中查看 TX/RX 原始报文和解析结果。
  5. 在“工程管理”中保存为 .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 数据类型

支持的数据类型:

  • UINT16
  • INT16
  • UINT32
  • INT32
  • FLOAT_ABCD
  • FLOAT_CDAB
  • FLOAT_BADC
  • FLOAT_DCBA
  • BCD
  • BIT

选择数据类型后,软件会自动给出推荐长度,用户也可以手动修改。

5.4 比例因子

界面显示的解析值与设备原始值之间按比例因子换算:

解析值 = 原始值 × 比例因子
原始值 = 解析值 ÷ 比例因子

示例:

原始值 比例因子 界面解析值
250 0.1 25
1234 0.01 12.34

写入“解析值”时,软件会自动反算为原始寄存器值再发送。

6. Client 使用

Client 页面用于连接真实 Modbus 设备。

6.1 连接 RTU 设备

  1. 在左侧“连接配置”选择协议类型为 Modbus RTU
  2. 点击“刷新”获取串口列表。
  3. 选择端口、波特率、数据位、停止位、校验位和超时时间。
  4. 点击“连接 RTU”。
  5. 连接成功后,状态会显示为已连接。

6.2 连接 TCP 设备

  1. 在左侧“连接配置”选择协议类型为 Modbus TCP
  2. 输入主机地址,例如 127.0.0.1
  3. 输入端口,例如 502
  4. 设置超时时间。
  5. 点击“连接 TCP”。

6.3 自动读取

Client 不再依赖手动输入功能码、起始地址和数量。连接成功后,软件会根据寄存器字典自动循环读取:

  • 线圈区使用 01
  • 离散输入区使用 02
  • 保持寄存器区使用 03
  • 输入寄存器区使用 04

可在顶部设置“循环周期”,单位为毫秒。

6.4 合并读取

“合并读取”开启后,软件会尝试把相邻或接近的字典点位合并为较少的读取请求,减少报文数量。

适合:

  • 点位地址连续。
  • 设备支持一次读取较长寄存器数量。

如果设备对读取范围要求严格,或不允许读取未定义地址,可以关闭“合并读取”。

6.5 数据显示

Client 表格显示:

列名 说明
地址 字典中的显示地址。
名称 点位名称、数据类型和长度。
原始值 / 状态 寄存器显示 HEX,位区显示开关状态。
解析值 根据数据类型和比例因子计算后的值。
倍率/单位 当前点位的比例因子和单位。
权限 RWRW
备注 字典备注。

读取失败的行会高亮提示,方便定位某个地址或长度配置错误。

6.6 写入线圈

满足以下条件时可以写线圈:

  • 地址在 00001 - 09999
  • 权限为 WRW
  • 当前已经连接设备。

操作方法:

  1. 在 Client 表格中找到线圈点位。
  2. 点击“原始值 / 状态”列中的开关。
  3. 软件会发送写线圈报文。

6.7 写入保持寄存器

满足以下条件时可以写保持寄存器:

  • 地址在 40001 - 49999
  • 权限为 WRW
  • 当前已经连接设备。

支持两种写入方式:

写入位置 说明
原始值 / 状态 输入 HEX 原始值,例如 00640000 0064
解析值 输入工程值,软件按数据类型和比例因子自动编码。

输入完成并确认后,软件会立即写入设备。写入期间如果正在轮询,软件会短暂停止轮询,写入完成后再恢复。

7. Server 使用

Server 页面用于模拟 Modbus 从站。

7.1 Server 数据来源

Server 不再生成固定地址表,而是完全根据寄存器字典显示数据。

如果某个区域为空,说明寄存器字典中没有该区域的地址。

7.2 启动 TCP Server

  1. 进入“Server”页面。
  2. 协议类型选择 Modbus TCP
  3. 设置监听地址,例如 0.0.0.0
  4. 设置监听端口,例如 502
  5. 点击“启动服务”。

提示:Windows 上监听 502 端口可能需要管理员权限。调试时可使用 15025020 等普通端口。

7.3 启动 RTU Server

  1. 协议类型选择 Modbus RTU
  2. 选择串口和波特率。
  3. 设置从机地址。
  4. 点击“启动服务”。

RTU Server 需要真实串口或虚拟串口工具配合测试。

7.4 编辑 Server 数据

Server 表格按四个区域切换:

  • 线圈 0xxxx
  • 离散输入 1xxxx
  • 输入寄存器 3xxxx
  • 保持寄存器 4xxxx

位区可以直接切换开关值。寄存器区可以编辑:

  • 原始值 HEX
  • 解析值

如果服务已经启动,修改会立即同步到 Server 内部数据区,外部主站下一次读取即可获得新值。

7.5 外部主站写入

当外部主站写入线圈或保持寄存器时:

  • Server 会更新对应字典点位的值。
  • 报文会记录到“报文日志”。
  • “请求计数”会增加。

8. 报文日志

报文日志用于查看通信过程。

显示内容包括:

字段 说明
时间 报文发生时间。
方向 TX 发送或 RX 接收。
协议 RTUTCP
数据 原始十六进制报文。
解析结果 软件解析后的简要说明。
耗时 本次事务耗时,单位 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

即可获取下载链接。