Modbus-RTU

Modbus简介:

Modbus作用于OSI网络模型中的:物理层、数据链路层、应用层

Modbus有三类:RTU、ASCII、TCP。默认选项Modbus-RTU。

Modbus有单播和广播两种形式、在广播形式下,所有从站必须执行主站命令而无需应答返回

单播模式下Modbus主站对特定的从站发送请求后进入等待应答(同步启动超时机制),此时主站无法处理其他从站的回答。

一、Modbus4个存储区

Modbus根据寄存器不同,分为四种不同的寄存器:

Modbus有两种可读写的寄存器:线圈寄存器(DO)和保持寄存器(AO&设备设置)

Modbus有4个存储区:0,1,3,4,其中,1区,3区只读,0区4区可读可写。分别对应:

区号名称 读写地址范围
0输出线圈可读可写布尔量00001-09999
1输入线圈只读布尔量10001-19999
3输入寄存器只读寄存器30001-39999
4保持寄存器可读可写寄存器40001-49999

二、常用功能码

  • 01:读取线圈。读取1~2000个连续线圈,1表示ON,0表示OFF。
  • 02:离散量输入
  • 04:读输入寄存器,可读取大约1~125的连续输入寄存器,每个连续输入寄存器用两个字节表示
  • 05:写单个线圈
  • 0F:写多个线圈。可以对线圈序列中的每个线圈设置ON或者OFF。
  • 10:写多个寄存器

三、通信报文

Modbus的通信报文由三部分组成:地址域、协议数据单元(PDU)(由功能码和数据组成)、校验码

地址域:由1个字节构成。也就是两位16进制数字。从站的地址可有127个,其余位用作扩展。保留区可用作特定地址段的广播指令。地址域只跟从站有关,主站没有地址。

协议数据单元PDU:功能码的长度为1字节,而数据的长度不定。

四、PDU通信报文示例

PDU报文示例:主站请求报文:01 00 02 00 06,均为十六进制数字。表示从第3个线圈读取到第9个线圈。从站应答报文:01 01 00(注意返回数据长度为1字节,未使用到的位使用0进行填充)

01读取线圈状态

主站请求报文解析:

  • 01---功能码:读取线圈。
  • 00---读取线圈地址高位
  • 02---读取线圈地址低位
  • 00---读取线圈个数高位
  • 06---读取线圈个数低位

从站应答报文解析:

  • 01---功能码
  • 01---返回数据长度
  • 00---线圈状态 ,线圈状态从右边往左边(从低位开始记录)

0F写多个线圈报文: (改变线圈的ON OFF状态)

主站请求报文:0F 00 02 00 06 01 2A

从站应答报文:0F 00 02 00 06 

其中写入值42---对应的二进制值数位00 10 10 10 ,对应线圈序列为8---3(由报文中的起始地址以及写入线圈个数决定)

04读输入寄存器

主机报文:04 00 67 00 04

从机报文:04 08 F5 55 F5 55 18 63 01 1A


主机报文解析:

  • 04---功能码:表示读输入寄存器
  • 00与67---表示起始地址:起始地址为00 67,表示十进制的103,从104号寄存器开始读取(因为十六进制从0开始计数,而寄存器编号从1开始)
  • 00与04---表示读取的寄存器数量:数量位00 04,表示十进制的4,一共读取4个寄存器

从机报文解析:

  • 按照主机的请求报文,从站返回的报文将包含104->107共4个寄存器的值。
  • 04---功能码
  • 08---PDU数据长度,8字节

10写多个寄存器(用来改变热电偶类型)

主站报文:10 00 67 00 02 04 00 00 00 07

从站报文:10 00 67 00 02

五、校验码示例

主站报文:02 00 00 00 05

从站报文:82 03

可以看出主站的请求为:读取1~5号离散寄存器的状态。

ModbusRTU异常报文特征:为正常报文功能码的值+80,即为异常报文的功能码。示例中的03表示为异常码。查看Modbus异常码:03表示为非法数据值。

Modbus使用CRC(循环冗余校验):

在PDU报文的末端添加上CRC校验码,在RTU传输模式下,每个字节都会变成11位。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值