Modbus协议学习过程中,有哪些细节需要注意?
摘要:Modbus 协议 一文学习 了解 OSI模型、TCPIP模型、网络封包 Modbus 是一种通信协议,用于在工业自动化领域中的设备之间进行数据交换。它是一种简单而广泛使用的串行通信协议,用于将控制设备(如传感器、执行器、PLC等)与监控
Modbus 协议
一文学习 了解 OSI模型、TCP/IP模型、网络封包
Modbus 是一种通信协议,用于在工业自动化领域中的设备之间进行数据交换。它是一种简单而广泛使用的串行通信协议,用于将控制设备(如传感器、执行器、PLC等)与监控设备(如计算机、远程终端等)连接起来。
Modbus RTU、ASCII、TCP 的区别
Modbus的协议版本 包括Modbus RTU、Modbus ASCII、Modbus TCP/IP、Modbus UDP/IP等
Modbus RTU与Modbus ASCII,都使用串口通讯协议,Modbus RTU使用二进制格式进行数据传输,通讯效率更高,Modbus ASCII使用ASCII码进行数据传输,可读性好,但通讯效率更低。
Modbus TCP/IP是基于以太网的一种通讯方式,它将Modbus协议封装在TCP/IP协议栈中,通过以太网传输数据。具有高速、稳定的特点。
Modbus UDP/IP是基于UDP/IP协议的一种通讯方式
Modbus RTU使用二进制编码进行通信,而Modbus ASCII则使用可打印的ASCII字符。Modbus RTU是更常用的版本,因为它在数据传输效率方面更高。
Modbus协议采用主从结构,其中一个设备充当主站(主机),负责发起通信请求和控制操作,而其他设备则充当从站(从机),接收主站的请求并提供数据。只能主站发起请求,从站不能,发起请求
Modbus 结构
1. 数据传输格式
协议类型
数据编码
帧结构
示例
RTU
二进制
紧凑的二进制数据,直接传输十六进制字节(如0x01)。
[01][03][00][01][00][01][D5][CA]
ASCII
ASCII字符
数据转换为可读的ASCII字符(如"0"→0x30),每字节拆分为两个ASCII字符。
:010300010001D5CA<CR><LF>
TCP
二进制(基于TCP)
在TCP/IP协议栈上传输,添加MBAP头(Modbus Application Protocol header)。
000100000006010300010001
2. 帧结构与分隔符
协议类型
帧起始符
帧结束符
校验方式
字节间隔要求
RTU
无
无
CRC(2字节)
严格时间间隔(3.5字符)
ASCII
:(冒号)
CR+LF(回车换行)
LRC(纵向冗余校验)
无严格间隔要求
TCP
MBAP头
通过TCP包长度标识
无额外校验(依赖TCP/IP校验)
无间隔要求
3. 传输效率
协议类型
效率
RTU
高:二进制编码,数据紧凑,适合低速串行链路(如RS-485)。
ASCII
低:每个字节需转换为2个ASCII字符(如0xA1→"A""1"),传输数据量翻倍。
TCP
高:基于TCP/IP,支持高速网络,但需额外添加MBAP头(7字节)。
