技成培训网论坛

 找回密码
 立即注册
打印 上一主题 下一主题
开启左侧

【玩转485】18.modbus RTU报文格式1

  [复制链接]
跳转到指定楼层
发表于 2014-10-28 15:39:37 | 显示全部楼层 |只看大图 回帖奖励 |正序浏览 |阅读模式   来自:103.233.130.178

您正在浏览的页面需要登录,为了提高您的阅读体验,请在右上角登录您的账号!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
技成微信号:jcpeixun

之前在自由口的文章中我已经通过自定义的通讯协议向大家讲解了什么是报文,以及如何使用报文发送和接收数据。从本文开始我就一起剖析一下。modbus RTU协议的具体结构,帮助大家彻底掌握modbus RTU协议。

1      地址分类

modbus RTU协议中将数据地址类型分成4种,分别是离散量输入,线圈,输入寄存器和保持寄存器,下面我们一起来看看这些地址类型的特点。

   
地址类型
  
存储空间
访问类型
起始地址
线圈
1Bit
只读
00001
离散量输入
1Bit
读写
10001
输入寄存器
1Word
只读
30001
保持寄存器
1Word
读写
40001

这里大家需要注意的是0和1开头的地址每个通道都是1个位的大小,3和4开头的地址每个通道都是16位也就是1个字的大小。可能看到这里大家还是对这种地址的表达方式没有概念,那我们来看一下当S7-200PLC做modbus RTU从站时S7-200PLC中的地址是如何与上面的地址类型对应的。

线圈:对应S7-200Q区,地址00001 =Q0.0
离散量输入:对应S7-200I区,地址10001 = I0.0
输入寄存器:对应S7-200AI区,地址30001 =AIW0
保持寄存器:具体对应地址可以进行设定,一般对应V区。

2      功能码01

功能码01的作用是读取线圈状态,下面我们来看看具体的报文格式。
主站请求报文:
2-1
从站应答报文:
2-2
下面我们先将从站库指令下载到S7-200PLC中让S7-200PLC成为modbus RTU 从站具体从站参数设定可以参看图 2‑3。
2-3
将S7-200PLC设定成从站后我将S7-200PLC中Q0.0和Q0.2置位为1,Q0.1保持为0然后用调试软件发送报文查询Q0.0、Q0.1、Q0.2的状态。
2-4
图 2-4所示我们向从站发送03 01 00 00 00 03 7D E9其中03是从站地址,01是功能码,00 00是指起始地址是Q0.0, 00 03是指读取3个线圈,7D E9是前面数据的crc校验码。
注: 这里需要注意我们按照crc校验算出来的校验码的顺序应该是E9 7D,而modbus RTU中crc校验计算出来后需要高低字节进行交换所以是7D E9
2-5
图 2-5PLC返回数值是03 01 01 05 90 33,其中03是PLC站地址,01是功能码,01是返回给主站的数据小于或者等于1个字节,05的二进制代码是101表示Q0.0 = 1、Q0.1 = 0、Q0.2 = 1,90 33是前面数值的crc校验码。
以上就是01功能码的含义和用法,下一篇文章我们继续介绍其他功能码。


游客,如果您要查看本帖隐藏内容请回复



技成微信号:jcpeixun

_副本.png (29.41 KB, 下载次数: 3150)

_副本.png
发表于 2019-12-24 08:55:17 | 显示全部楼层   来自:111.56.27.94
感谢老师的教程,正需要这个
此软件“仅限学习交流”,如用于商业用途,请到官方购买正版软件,追究法律责任与“技成培训网”无关!
本站仅提供软件下载,不提供软件安装、破解等指导服务。
您需要登录后才可以回帖 登录 | 立即注册

本版技能点规则

小黑屋|技成培训网论坛   粤ICP备11069432号-1

GMT+8, 2024-5-24 04:09

Powered by jcpeixun X3.3

© 2007-2024 深圳市技成科技有限公司

快速回复 返回顶部 返回列表