modbus通信的基本知识和应用举例 modbus是美国的Modicon公司开发的一种报文传输协议,1979年该公司成为施耐德公司的一部分。
modbus协议在工业控制中得到了广泛的应用,它已经成为一种通用的工业标准。
modbus协议是一个主-从协议,采用请求-响应方式。串行总线中只有一个主站,可以有1~247个从站。
modbus协议有ASCII和RTU(远程终端单元)这两种报文传输模式。ASCII模式每个8位字节都转换为两个ASCII字符发送。RTU模式的报文以字节为单位进行传输,报文最长为256字节。在同样的波特率下,传输效率比ASCII模式的高,不需要作ASCII码与二进制数之间的转换。
下面是
modbus RTU通信帧的基本结构:
地址 功能码 数据1 …… 数据n CRC低字节 CRC高字节
从站地址为0~247,它和功能码均占一个字节,命令帧中PLC地址区的起始地址和CRC各占一个字,数据以字或字节为单位(与功能码有关),以字为单位时高字节在前,低字节在后。报文的最后两个字节是循环冗余校验码(CRC),CRC的高字节在前,低字节在后。
modbus包括多种功能,每一功能都有相应的功能代码。S7-200支持的
modbus功能见S7-200的系统手册。
可以用计算机作
modbus主站,S7-200作从站,计算机发送带有从站地址的请求报文,具有该地址的从站接收到后发出响应报文进行应答。
功能3用于读取单个或多个保持寄存器(V 存储区中的字)的内容,最多可以读120个字。下面是功能3的请求帧:
站地址 3 首字地址 字数 CRC
假设用功能3读取1号站中从VW20开始的两个字(VW20和VW22),VW20对应的
modbus地址为000010,对应的十六进制数为16#000A,字数为16#0002,CRC为16#09E4,则请求帧为 01 03 00 0A 00 02 E4 09(十六进制数)。
响应帧的格式如下:
站地址 3 数据字节数 数据字1 …… 数据字n CRC
假设VW20和VW22的值分别为16#1234和16#ABCD,CRC为16#2000,响应帧为01 03 04 12 34 AB CD 00 20(十六进制数)。