0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

每个工控人都应该了解的Modbus那些事儿

1X4o_GKB1508 来源:lp 2019-04-11 17:42 次阅读

Modbus那些事儿

Modbus协议可以说是工业自动化领域应用最为广泛的通讯协议,因为他的开放性、可扩充性和标准化使它成为一个通用工业标准。有了它,不同厂商产品可以简单可靠的接入网络,实现系统的集中监控,分散控制功能。

目前Modbus规约主要使用的是ASCII, RTU, TCP等,并没有规定物理层。目前Modbus常用的接口形式主要有RS-232C,RS485RS422,也有使用RJ45接口的,ModBus的ASCII, RTU协议则在此基础上规定了消息、数据的结构、命令和应答的方式。ModBus数据通信采用Master/Slave方式(主/从),即Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

在串行通信中,用“波特率”来描述数据的传输速率。国际上规定了一个标准波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。例如:9600bps,指每秒传送9600位,包含字符的数位和其它必须的数位,如起始位、停止位和奇偶校验位等。

在自动化领域我们常用RTU模式,RTU 模式中每个字节的格式:

编码系统:8 位二进制,十六进制 0-9,A-F

数据位: 1 起始位

8 位数据,低位先送

奇/偶校验时 1 位;无奇偶校验时 0 位

带校验时 1 位停止位;无校验时 2 位停止位

错误校验区:循环冗余校验(CRC)

从站地址设置:信息地址包括 2 个字符(ASCII)或 8 位(RTU),有效的从机设备地址范围 0-247(十进制)。

功能码设置:信息帧功能代码包括字符(ASCII)或 8 位(RTU)。有效码范围 1-225(十进制);

数据区的内容:数据区有 2 个 16 进制的数据位,数据范围为 00-FF(16 进制),根据网络串行传输的方式,数据区可由一对 ASCII 字符组成或由一个 RTU 字符组成。

RTU方式的消息帧:

Modbus的功能码:

ModBus 功能码与数据类型对应表:

RTU 方式读取整数据的例子:

解析一下:主机发送指令,访问从站地址为1,使用功能码03(读保持寄存器),起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为38,十进制为:56。寄存器数量高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为1个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。错误校验为CRC校验。

从站应答:设备地址和命令号和上面的相同。返回的字节数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了1个模拟量的数据,因为一个模拟量需要2个字节所以共2个字节。数据高低字节:41和24代表返回的1个模拟量的值,即十进制的16676。错误校验为CRC校验。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MODBUS
    +关注

    关注

    28

    文章

    1801

    浏览量

    76956
  • 数据通信
    +关注

    关注

    2

    文章

    431

    浏览量

    33755
  • 自动化
    +关注

    关注

    29

    文章

    5563

    浏览量

    79240

原文标题:Modbus 通讯协议——每个工控人都应该了解的事

文章出处:【微信号:GKB1508,微信公众号:工控帮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    调节 PID 都应该学习labview哪方面的内容

    本人想做个上位机 可之前没接触过LABVIEW我要实现的功能就是显示期望 与实际数据的曲线用来调节 PID都应该学习labview哪方面的内容啊求指导{:23:}
    发表于 09-22 14:38

    8层二阶盲埋孔的板子,盲埋孔都应该是哪几层

    做一个8层二阶盲埋孔的板子,盲埋孔都应该是哪几层算是二阶的,一般建议做哪些层比较好价格比较便宜?
    发表于 11-03 10:09

    vi的引用是不是相当于申请的内存指针,每次使用完都应该把它关掉?

    我想问下vi的引用是不是相当于申请的内存指针 每次使用完都应该把它关掉 , 不论是调试的时候 还是做成EXE的时候
    发表于 05-25 16:33

    电源选型的那些事儿

    电路教程相关知识的资料,关于电源选型的那些事儿
    发表于 10-10 14:34 0次下载

    Linux的那些事儿之我是Sysfs

    Linux的那些事儿之我是Sysfs
    发表于 10-29 09:28 5次下载
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事儿</b>之我是Sysfs

    Linux的那些事儿之我是SCSI硬盘

    Linux的那些事儿之我是SCSI硬盘
    发表于 10-29 09:32 19次下载
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事儿</b>之我是SCSI硬盘

    Linux的那些事儿之我是Hub

    Linux的那些事儿之我是Hub
    发表于 10-29 09:37 7次下载
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事儿</b>之我是Hub

    Linux的那些事儿之我是Block层

    Linux的那些事儿之我是Block层
    发表于 10-29 09:43 9次下载
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事儿</b>之我是Block层

    整理了所有数据专家都应该会的七款Python工具

    我咨询了我们真正的数据专家,收集整理了他们认为所有数据专家都应该会的七款 Python 工具。The Galvanize Data Science 和 GalvanizeU 课程注重让学生们花大
    的头像 发表于 01-15 10:21 4223次阅读

    硬件工程师都应该掌握防反接电路,你都Get到了吗?

    硬件工程师都应该掌握的防反接电路,你都Get到了吗?
    的头像 发表于 02-03 15:05 4551次阅读

    专业的人士都应该且能够记住这二十个基本模拟电路

    初级层次是熟练记住这二十个电路,清楚这二十个电路的作用。只要是电子爱好者,只要是学习自动化、电子等电控类专业的人士都应该且能够记住这二十个基本模拟电路。
    的头像 发表于 11-30 10:09 6307次阅读

    MOS管的那些事儿.课件下载

    MOS管的那些事儿.课件下载
    发表于 12-06 15:14 0次下载

    每个电子工程师都应该了解 TensorFlow

    谷歌为每个人发布了一个机器学习框架
    发表于 08-23 16:45 381次阅读
    <b class='flag-5'>每个</b>电子工程师<b class='flag-5'>都应该</b><b class='flag-5'>了解</b> TensorFlow

    每个程序员都应该知道的内存

    。不幸的是,两者都没有使用计算机的内存子系统或CPU上的缓存的结构和成本大多数程序员都很理解。本文解释了现代商品硬件上使用的内存子系统的结构,说明了为什么开发CPU缓存它们工作,以及程序应该做什么来通过利用它们实现最佳性能
    发表于 11-23 16:55 0次下载

    RFID和NFC之间的那些事儿,你真的了解吗?

    RFID和NFC之间的那些事儿,你真的了解吗?
    的头像 发表于 12-15 09:38 1326次阅读
    RFID和NFC之间的<b class='flag-5'>那些</b><b class='flag-5'>事儿</b>,你真的<b class='flag-5'>了解</b>吗?