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字节)。
阅读全文