Modbus协议名词Parse

freefree技术Resources

这篇内容可直接阅读,适合用于基础学习和Search引流。

Modbus协议名词Parse缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.

在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我们对于Modbus协议中可能会给大家造成困惑的名词作Related的解释。

Modbus协议名词Parse插图

1.function code:

function code在modbus协议用于表示信息帧的Function,常用的function code有03,04,06,16等,其中03function code的作用是读保持register内容,04function code的作用是读输入register内容(输入register和保持register的区别看下文),06function code的内容是预置单个保持register,16function code的内容则是预置多个保持register。

2.输入register和保持register:

04function code的作用就是读输入register,而03function code的作用则是读保持register,很多人在看到这两个function code的时候总是希望找到这两个function code的区别,保持register和输入register到底是什么区别,modbus协议最开始是用来解决PLC的通信协议问题的,主要用于输入输出数字量信号以及模拟量信号,所谓的输入register就是从模拟量信号输入引申出来的,即输入register只能从模拟量信号输入端改变register,而主机则不能通过下发指令改变输入register的data,而保持register则是用于输出模拟量信号的,主机是可以改变register data,也就是说对于主机而言,输入register是只读的,而保持register是可以读写的,当主机用06,16function code的指令去预置输入register的时候,设备会返回一个代码为0x81的Error代码,即企图写只读register。

3.Modbus中的dataaddressformat:

在Modbus协议中,经常会出现类似于3xxxx,4xxxxregister,这个表示的是register支持的data type。我们用列表来说明,还有Modbusdataaddressformat是从0开始,比如以下一个register40009,即表示保持register,register address为00 08,类似的dataaddressformat经常在configuration软件以及PLCsystem中用到。

映射address使用的function codeaddressType存取方式描述
0XXXX01,05,15离散输出读写每个卷表示单个switch位
1XXXX02离散输入只读每个卷表示单个switch位
2XXXX03,04,06,16浮点register只读/读写两个连续16位register表示一个浮点数
3XXXX04输入register只读每个register表示一个16位无符号整数
4XXXX03,06,16保持register读写每个register表示一个16位无符号整数
5XXXX03,04,06,16ASCII字符读写每个register表示两个ASCII码

4.Modbus RTU/ASCII/TCP:

Modbus协议最开始是用于可编程逻辑控制器(PLC)之间的通讯,由于其具有的开放性,大量的用于现场智能仪表。Modbus协议有多个变种,其中最著名的是Modbus RTU/Modbus ASCII和Modbus TCP通信协议。其中RTU/ASCII协议是基于串行口通信,而TCP协议则是基于以太网通信。

5.ModbusError代码表:

Modbus有function code、校验码、异常function code和Error代码,其中异常function code和Error代码非常容易混淆。一般来说异常function code指的是某个function code执行的时候出现的相应异常function code,一般都是在function code的基础上加上0x80,比如03function code出现的Exception Code是0x83异常function code,16function code对应出现的异常function code则是0x90,而Error代码则是表示出现Error的具体情况,比如register addressdoes not exist,不管是读还是写,如果该register addressdoes not exist的话,Error代码为02。

技术术语(共 7 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用binaryCoding和CRC check
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
Modbus ASCII使用ASCII字符传输的Modbus协议,以冒号开头、CR/LF结尾
function codeModbusfunction code指定读/写OperationType,如01读线圈、03读保持register
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
PLC可编程逻辑控制器,Automation控制的核心设备
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category Modbus protocol标准 字数 1341 字 · 阅读约 4 分钟 更新 2026-07-01 永久链接 https://www.modbus.cn/6711.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

您的邮箱address不会被公开。 必填项已用 * 标注