学习Modbus基础知识:小白也能看懂

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

学习Modbus基础知识:小白也能看懂缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.

Modbus就像是一个邮递员,帮助你的电子设备—如智能家居设备、工业控制系统等—传递信息。就像邮递员把你的信件从发件人那里送到收件人那里,Modbus也可以帮助你的设备相互通信,分享信息。

想象一下,你的家里有一些智能灯泡。每个灯泡都像是一个有名字的人,每个名字(我们称之为地址)都是唯一的。这样,当你想控制某个灯泡时,你就可以通过它的名字(address)来找到它。在Modbus中,每个设备都有一个唯一的地址,我们通过这个地址来发送命令或者获取信息。

你的智能灯泡可以做两件事:它可以告诉你它现在的状态(比如亮度、颜色等),也可以按照你的命令改变它的状态。在Modbus中,我们把这些可以读取和写入的状态称为寄存器。你可以想象寄存器就像是一个邮箱,你可以从中取出信件(Read switch status),也可以往里面放入信件(写入数据)。

在Modbus中,我们有两种基本的操作:读取和写入。如果你想知道你的灯泡现在是什么状态,你可以向它发送一个读取命令,像是写了一张便签:“灯泡1,请告诉我你现在是什么颜色。” 灯泡收到这个命令后,会回复你它现在的颜色。类似的,如果你想把灯泡的颜色改变为红色,你可以发送一个写入命令:“灯泡1,请把你的颜色改为红色。” 灯泡收到这个命令后,会改变它的颜色,并回复你它已经完成了这个操作。

想要和你的设备进行ModbusCommunication,你需要有一个连接设备的“线”(例如,数据线或者网络线)和一个可以发送和接收Modbus命令的工具(比如,Modbus软件)。就像你需要一个手机和电话号码才能给别人打电话一样。在设置好这些工具后,你就可以开始和你的设备进行通信了。

为了确保通信的正确性,Modbus使用了一种叫做CRC的技术来检查命令的完整性。你可以把它想象成是邮递员检查信件是否被损坏或者遗漏了一部分的方式。每一次信息发送出去,都会附带一个校验码,这个校验码就像是信件的邮戳,用来确认信件是否完整无损。

Modbus协议有两种常见的形式

Modbus协议有两种常见的形式:Modbus RTU和Modbus TCP。Modbus RTU常用于串行通信(就像是通过电话线进行通信),而Modbus TCP则常用于网络通信(就像是通过互联网发送电子邮件)。选择哪一种形式主要取决于你的设备支持哪一种通信方式。

我们可以用一些Modbus软件来进行测试和通信。比如Modbus Poll和ModScan,它们都像是一个电话,可以帮助你和你的设备进行对话。在这个软件中,你只需要输入设备的地址、你想要执行的操作(读或写)、以及你想要操作的寄存器地址,然后点击“send”button,就像是拨打电话一样。

例如,如果你想要读取灯泡1的颜色,你可以在软件中输入灯泡的地址(1),Choice“read”Operation,输入颜色寄存器的地址,然后点击“send”。软件会自动帮你生成对应的ModbusCommand,并发送给灯泡。灯泡收到命令后,会回复它现在的颜色。如果你看到了灯泡回复的颜色信息,那么恭喜你,你已经成功地和你的灯泡进行了一次对话。

类似的,如果你想要把灯泡1的颜色改为红色,你可以在软件中输入灯泡的地址(1),Choice“写入”Operation,输入颜色寄存器的地址,输入你想要设置的颜色(红色),然后点击“send”。软件会自动帮你生成对应的ModbusCommand,并发送给灯泡。灯泡收到命令后,会改变它的颜色,并回复你它已经完成了这个操作。如果你看到了灯泡的回复,并且灯泡的颜色已经改变为红色,那么你已经成功地改变了灯泡的颜色。

总的来说,Modbus就像是一个邮递员,帮助你和你的设备进行通信。虽然初次接触可能会有些复杂,但只要你熟悉基本概念和操作,你就可以开始和你的设备进行对话,让它们按照你的想法工作。就像你可以通过手机和你的朋友进行通信一样,Modbus可以帮助你和你的设备进行通信,使你的生活和工作更加便利。

让我们回到智能灯泡的例子,假设我们有一个灯泡设备,我们想要检查它的亮度并改变它的颜色。在Modbus中,我们会用到两种功能码:03(read holding registers)和06(write single register)。

1. **使用功能码03读保持寄存器**

首先,我们想要读取灯泡的亮度。在我们的设备中,亮度信息存储在地址30001的保持寄存器中。我们会在Modbus软件中输入以下信息:

Device address:1(假设我们的灯泡的地址是1)
function code:03(代表读取保持寄存器)
register address:30001
然后,我们点击“send”button,软件会自动生成对应的Modbus命令并发送给设备。这个过程就像是写了一张便签:“灯泡1,请告诉我你现在的亮度。” 灯泡收到这个命令后,会回复它现在的亮度。

2. **使用功能码06写单个寄存器**

现在,我们想要把灯泡的颜色改为红色。在我们的设备中,颜色信息可以通过写入地址40001的保持寄存器来改变。我们会在Modbus软件中输入以下信息:

Device address:1(我们的灯泡的地址)
function code:06(代表写单个寄存器)
register address:40001
data:红色(假设红色对应的代码是2)
然后,我们点击“send”button,软件会自动生成对应的Modbus命令并发送给设备。这个过程就像是写了一张便签:“灯泡1,请把你的颜色改为红色。” 灯泡收到这个命令后,会改变它的颜色,并回复你它已经完成了这个操作。

通过使用这些功能码,我们可以读取和改变设备的状态,就像是与设备进行对话一样。在实际操作中,你可能需要查阅你的设备的用户手册,来了解设备的地址以及各种状态信息对应的寄存器地址。在了解了这些信息后,你就可以开始和你的设备进行通信,让它们按照你的想法进行工作。

write multiple registers

**使用功能码16控制空调**

假设你有一个智能空调,你希望同时调整它的开关机状态、工作模式、风量大小等参数。在这个情况下,我们可以使用Modbus的功能码16(write multiple registers)。

Device address:1(假设空调的地址是1)
function code:16(代表写多个寄存器)
register address:40001,40002,40003(假设40001是控制开关机,40002是调整工作模式,40003是调整风量大小的寄存器地址)
data:1,2,3(假设1代表开机,2代表制冷模式,3代表风量最大)

这就像是你写了一封信给空调:“亲爱的空调,请开机,调整为制冷模式,并将风量调至最大。” 然后通过邮递员(也就是Modbus)将这封信送到空调那里。

然后,我们点击“send”button,Modbus软件会自动生成对应的Modbus命令并发送给空调。空调收到命令后,会同时调整其开关机状态、工作模式和风量,并回复你它已经完成了这个操作。

通过使用功能码16,我们可以同时调整空调的多个参数,避免了一次只能调整一个参数的麻烦。。

读多个寄存器

**使用功能码03读取空调的多个状态信息**

现在,假设我们想要一次性读取空调的开关机状态、工作模式、风量大小等信息。在这个情况下,我们可以使用Modbus的功能码03(read holding registers)。

Device address:1(假设空调的地址是1)
function code:03(代表读取保持寄存器)
Starting register address:30001(假设30001是记录开关机状态的寄存器地址)
读取寄存器数量:3(我们想要读取的信息包括开关机状态、工作模式、风量大小,它们分别存储在30001、30002、30003这三个寄存器中)

这就像是你给空调发了一条信息:“亲爱的空调,请告诉我你现在的开关机状态、工作模式和风量大小。”然后通过邮递员(也就是Modbus)将这条信息送到空调那里。

然后,我们点击“send”button,Modbus软件会自动生成对应的Modbus命令并发送给空调。空调收到命令后,会告诉你它现在的开关机状态、工作模式和风量大小。

通过使用功能码03,我们可以一次性读取空调的多个状态信息,避免了一次只能读取一个状态信息的麻烦。在实际操作中,你需要查阅你的空调的用户手册,了解空调的地址以及开关机状态、工作模式、风量大小等信息对应的寄存器地址。在了解了这些信息后,你就可以开始通过Modbus与你的空调进行交流,了解它的工作状态。

技术术语(共 5 个)—— Click to Expand
Modbus RTU基于串行链路的ModbusProtocol,使用二进制编码和CRC check
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
function codeModbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
registerModbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— Click to Expand
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Modbus protocol standard 字数 3221 字 · 阅读约 9 分钟 更新 2026-07-01 永久链接 https://www.modbus.cn/12358.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus debugging tool,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 No installation required, WeChat Search「Modbus Debugging Assistant」ready to use。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.