Modbus-RTU协议是主从交互式协议,即主机轮询、从机应答。在工控自动化、楼宇自动化行业中应用广泛。该协议的报文结构主要由地址、功能码、寄存器、数据、校验码等构成。下面和大家分享一下Modbus-RTU的基本知识。
RS485接口在工业自动化中应用非常广泛,该接口为双总线通信方式,只有RSA和RSB两根线,可以走MODBUS TCP/IP协议,也可以走MODBUS-RTU协议,通讯距离可达数公里,是一种标准的通讯接口,而MODBUS-RTU是工业现场一种标准的通信协议,大多数的PLC和组态屏都支持该通讯协议。
其数据格式是由如下几部分构成的:1)从机地址;2)功能码;3)数据;4)校验码。采用一问一答式通讯方式,主机定时查询从机状态,从机收到主机的轮询命令后回复相应的数据。常用的功能码有01读线圈状态、03读保持寄存器、06预置单个寄存器、16预置多个寄存器等。
以03功能码为例,介绍一条具体的数据格式,主机的命令格式为:
01 03 00 04 00 02 85 CA,从机回复的数据格式为:
01 03 04 00 00 00 00 FA 33。如下图所示。
主机要读取01号地址的从设备的寄存器内容,读取从00 04寄存器开始往后2个寄存器的内容,即00 04和00 05寄存器中的内容。从机收到命令后,将这两个寄存器中的数据发送给主机,每个寄存器存放两个字节的数据,两个寄存器共存放4个字节的数据,所以返回数据字节的个数为4个。
06功能码是用来写从机寄存器的内容的,比如主机向改写从机其中一个寄存器的数据,就可以通过06功能码来实现。主机发送的数据如下:
01 06 00 00 00 0A 09 CD,从机返回的数据如下:
01 06 00 00 00 0A 09 CD。如下图所示。
该数据所代表的含义为:主机要将01号从机的00 00寄存器写入两个字节的数据,数据为00 0A。写入成功后,从机返回该寄存器的状态。
06功能码只要改写一个寄存器的内容,如果要改写多个寄存器的内容需要用到
16
预置多个寄存器功能码。
Modbus在通讯之前,先要确认通信参数,这些通信参数包括:1)波特率;2)数据位数;3)停止位4)校验方式等。
波特率是指每秒所传送的数据的位数,数值越大通信速度越快,常用的波特率有4800、9600、19200、115200等,两台设备在通讯时,通讯波特率必须一致,否则通讯无法建立。
数据位数,一般为8位。停止位有1位,2位等,校验方式有奇校验、偶校验和无校验等。
Modbus-RTU是工控行业应用广泛的通讯协议,主流PLC都支持该协议,在编程时,不需要实现所有的功能码,只需要实现常用的几个功能码就可以,如上述所描述的
03,06,16
等。
RS485是硬件接口,那么他是怎么实现数据通讯的呢?Modbus-RTU协议解析
EMC抗干扰设计——RS485 接口的电磁兼容设计
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!