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.
本文目录
  1. 1. MODBUS通信格式
  2. 2. CRC check的实现
  3. 3. 链路特征

MODBUS总线控系统的技术特征
MODBUS通讯协议是一种工业现场总线通讯协议,它定义的是一种设备控制器可以识别和使用的信息帧结构,独立于物理层介质,可以承载于多种网络类型中。

MODBUS协议把通信参与者规定为“master”(Master)和“slave”(Slave),数据和信息的通信遵从主/从模式,当它应用于标准MODBUS网络时,信息被直接传送。

MODBUS总线网络中的各个智能设备通过异步串行总线连接起来,只允许一个控制器作为主站,其余智能设备作为从站。

采用命令/应答的通信方式,主站发出请求,从站应答请求并送回数据或状态信息,从站不能够自己发送信息。

MODBUS协议定义的各种信息帧格式,描述了主站控制器访问从站设备的过程,规定从站怎样做出应答响应,以及检查和报告传输错误等。网络中的每个从设备都必须分配给一个唯一的地址,只有符合地址要求的从设备才会响应主设备发出的命令。


由于MODBUS总线系统开发成本低,Strong compatibility,并且现在已有很多工控器、PLC、变频器、显示屏等都具有MODBUSCommunication Interface,所以它已经成为一种公认的通信标准。

通过MODBUS总线,可以很方便地将不同厂商生产的控制设备连成工业网络,进行集中监控。

MODBUS最初为PLC通信而设计,它通过24种总线命令实现PLC与外界的信息交换。这些总线命令对应的通信功能主要包括AI/AO、DI/DO的数据传送。

但不是很多MODBUS设备的控制只使用其中的几条命令,对其余命令不做反应。

MODBUS通信格式

MODBUS协议定义了两种传输模式,即RTU(Remote TerminalUnit)和ASCII。

在RTU模式中,1字节的信息作为一个8位字符被发送,而在ASCII模式中则作为两个ASCII字符被发送,如发送字符“20”时,采用RTU模式时为“00100000”,然而采用ASCII模式则成为“00110010”+“00110000”(ASCII字符的“2”和“0”)。

可见,发送同样的数据时,RTU模式的效率大约为ASCII模式的两倍。

一般来说,数据量少而且主要是文本时采用ASCII;通信数据量大而且是二进制数值时,多采用RTU模式。
主站一次可向一个或所有从站发送通信请求(或指令),主设备通过消息帧的地址域来选通从设备。

主站发送的消息帧的内容和顺序为:slave address、function code、Anti-counterfeiting verification(数据起始地址、数据量、数据内容)、CRC check码;从站应答的信息内容和顺序与主站信息帧基本相同。

MODBUS除了定义通信功能码之外,同时还定义了出错码,标志出错信息。主站接收到错误码后,根据
错误的原因采取相应的措施。从站应答的数据内容依据功能码进行响应,例如功能代码03要求读取从站设备中保持寄存器的内容。

CRC check的实现

MODBUS通信的RTU模式中,规定信息帧的最后两个字节用于传递CRC(Cyclic RedundancyCheck,循环冗余校验)码。

发送方将信息帧中地址域、function code、数据域的所有字节按规定的方式进行位移并进行XOR(XOR)result,即可得到2字节的CRC码,并把包含CRC check码的信息帧作为一连续的流进行传输。

接收方在收到该信息帧时按同样的方式进行计算,并将结果同收到的CRC码的双字节比较,如果一致就认为通信正确,否则认为通信有误,从站将发送CRC错误应答。
RTU模式一般采用CRC-16冗余校验方法,CRC-16的校验码为16位(2字节),其中低字节在前,高字节在后。

实现CRC check有两种方法:根据CRC check的定义公式进行计算,或者在程序中建立CRC check值表。

在程序中使用前者更容易实现,这里需要使用CRC生成多项式X16+X15+X2+1。

该多项式对应的码组系数为18005H(hexadecimal),去除最高位,对应的16位余数为8005H,即为CRC-16常数。

CRC-16校验过程如下:

将CRC寄存器的每一位预置为1;把该寄存器值与8bit的信息帧数据进行异或,结果存于该寄存器;对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移
出CRCregister)如果为1,则把寄存器与CRC-16常数进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit数据处理完毕,用此时寄存器的值与下一个8bit数据异或并进行如前一样的8次移位。

所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。CRC添加到消息中时,先加入低字节,然后高字节。

链路特征

MODBUS标准的物理层可以采用RS-232串行通信方式,但在长距离通信中常采用RS-422或RS-485代替。在多点通信情况下只采用RS-485方式,所以RTU模式下的MODBUS系统采用屏蔽双绞线,通信距离可达1000m。一条总线上最多可配置31个从站设备。

传输线上的信息交换是半双工的,即同时只能有一台设备允许发送信息,主站在发送下一条指令之前等待从站回应,从而避免了线路的冲突。
RTU模式的传输格式是1个数据位,2个停止位,没有奇偶校验位。通信数据安全由控制参数CRC-16码保证。RTU接收设备依靠接收字符间经过的时间判断一帧的开始,如果经过3个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始。

技术术语(共 5 个)—— Click to Expand
function codeModbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
registerModbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
CRC check循环冗余校验,用于检测数据传输中的错误
PLC可编程逻辑控制器,工业自动化控制的核心设备
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— Click to Expand
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Modbus protocol standard / Modbus technical documentation 字数 2163 字 · 阅读约 6 分钟 更新 2026-08-20 永久链接 https://www.modbus.cn/6615.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 *.