电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> PLC基础入门教程 >> 正文

带你聊透Modbus通信协议

作者:佚名    文章来源:本站原创    点击数:    更新时间:2023/7/25

Modbus通信协议是什么?

关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Mod-Bus名称的由来。后来Modicon被施耐德(Schneider)收购,Modbus协议广泛应用在工业控制器、HMI和传感器上,逐渐被其他厂商所接受,成为了一种主流的通讯协议,用于和外围设备进行通讯。

Modbus协议作为当今工业控制领域的通用通讯协议,在无数物联网产品中得到应用,工业、农业等物联网解决方案中都有其身影。ModBus网络是一个工业通信系统,由智能终端的可编程序控制器和计算机,通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件,应用于各种数据采集和过程监控。

 

Modbus网络体系


通过Modbus协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。

Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。


 

ModBus网络只有一个主机,发出通讯信号,多个从机,网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

 

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数Modbus设备通信通过串口EIA-485物理层进行。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

三种传输模式

1979年,Modicon 首先推出了串行Modbus标准,后来由于网络的普及,需要更高的传输速度,1997年制定了基于TCP网络的Modbus标准。

所以总的可分为两个传输模式:基于串行链路的和基于以太网TCP/IP的。但是我个人还是习惯分为3种传输模式:

 


基于串口的Modbus-RTU 数据按照标准串口协议进行编码,是使用最广泛的一种Modbus协议,采用CRC-16_Modbus校验算法。

基于串口的Modbus-ASCII 所有数据都是ASCII格式,一个字节的原始数据需要两个字符来表示,效率低,采用LRC校验算法。

基于网口的Modbus-TCP Modbus-TCP基于TCP/IP协议,占用502端口,数据帧主要包括两部分:MBAP(报文头)+PDU(帧结构),数据块与串行链路是一致的。


所以当我们提及Modbus协议时,要确定是哪种模式:RTU、ASCII或TCP,3种模式区别还是很大的。

有些设备支持多种Modbus模式,有些设备只支持其中一种,实际使用要根据设备使用手册来选择采用哪种模式。

对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

 


Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。

标准的Modicon控制器使用RS232C实现串行的Modbus。

Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;

Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。

另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通,Modbus协议的可靠性较好。

对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。

Modbus RTU 协议

Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。

Modbus RTU 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。

Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。

Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。

Modbus RTU 协议使用格式化的消息在主机和从机之间进行通信。消息由系统 Master 发起并发送到 Slave 设备。然后,从站以请求的数据进行响应,或者确认它执行了请求的功能。所有进出主站的消息都包含一个两字节(16 位)CRC(循环冗余校验)校验和值,用于错误检查。如果将无效请求传输到 Modbus 从站,则会返回一个字节(8 位)错误代码值,说明请求错误的原因。

Modbus 主站消息包含几个重要的信息。每条消息都以接受消息的设备的从地址开始。接下来是要执行的功能编号(或命令)。后面是指定函数正确执行所需的任何数据。从地址是一个单字节(8 位)值,可用值范围在 0-247 之间。Modbus 功能号也是一个字节值,并且在协议中定义了许多标准化功能号。支持所请求功能所需的任何数据值的长度将是一个或多个字节。Modbus 从站响应消息将包含响应的从站地址、功能编号和主站请求的任何必要数据。

Modbus 通信协议特点

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。  

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。


Modbus4种数据类型

Modbus协议规定,进行读写操作的数据类型,按照读写属性和类型可分为以下4种:

  1. 离散量输入(Discretes Input ):1位,只读

2.线圈(Coils):1位,读写

3.输入寄存器(Input Registers ):16位,只读

4.保持寄存器(Holding Registers):16位,读写


常用的MODBUS通讯方式

有两种,一种是MODBUS ASCII,一种是MODBUS RTU。每个设备必须都有相同的传输模式。所有设备都支持RTU模式,ASCII传输模式是选项。  

+ASCII传输方式

Modbus串行链路的设备被配置为使用ASCII模式通信时,报文中的每8位字节以两个ASCII字符发送。例:字节0X5B会被编码为两个字符:0x35和0x42进行传送(ASCII编码0x35="5",0x42="B"),这样传输效率会降低。

在ASCII模式,报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个‘冒号’(:)(ASCII十六进制3A)起始,以‘回车-换行’(CRLF)对(ASCII十六进制0D和0A)结束。设备连续的监视总线上的‘冒号’字符。当收到这个字符后,每个设备解码后续的字符一直到帧结束。报文中字符间的时间间隔可以达一秒。如果有更大的间隔,则接受设备认为发生了错误。  

+RTU传输方式

当设备使用RTU(RemoteTerminalUnit)模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的传输效率。每个报文必须以连续的字符流传送。

Modbus RS485接线方法

RS485的应用挺广泛,可以支持ModBus协议,因为简单、便宜、可靠、成熟,所以在工业控制、智能仪表和电力通信领域应用很多。

1、我们来看看RS485的一个典型组网结构:

RS485总线正确的接法 

理论上,一条RS485总线的传输距离可以达到1200米。但是在实际应用受通信芯片、波特率和线材、干扰等影响,实际上是远远达不到这个数值的。

理论上,一条RS485总线可以挂254台设备,实际上也远远达不到,通常的应用中,也就是30台左右。

RS485总线要采用上图手拉手式的总线结构,坚决杜绝星型连接和分叉连接,如下图:

RS485总线错误的接法 

+关于线材的选用

通信线缆要选择两芯屏蔽双绞线,线径不低于0.5平方。双绞是因为485通讯采用差模通讯原理,双绞的抗干扰性最好。有些野路子的做法用非屏蔽非双绞线甚至是网线来敷设485通讯线,是极端错误的。

+关于保障通信质量的几种手段

1、共地法:用1条线或者屏蔽线将所有485设备的GND地连接起来,这样可以避免所有设备之间存在影响通讯的电势差。

2、终端电阻法:在最后一台485设备的485+和485-上并联连接120欧姆的终端电阻来改善通讯质量。

3、如果通讯距离过长,建议如果超过500米就采用中继器或者485HUB来解决问题。如果负载数过多,建议如果一条总线上超过30台就采用485HUB来解决问题。

+场景应用-Modbus物联网云平台

Modbus物联网云平台在设备和用户之间建立开箱即用的云平台和云应用,实现数据采集、实时控制、数据可视化、开放 API,构建灵活强大的物联网应用。Modbus云平台支持市场上99%以上Modbus设备接入,比如工业仪器仪表,工业传感器,Modbus PLC设备等。用户可以在任何地方远程访问任何地方的Modbus设备,并对远程设备的数据进行实时采集监控、远程控制、智能音响小度、天猫精灵、小爱同学语音控制、诊断、通讯及调试等。

Modbus物联网云平台是一个开放的物联网云平台,用户只需按步骤完成注册即可免费使用Modbus物联网云平台 。支持PC、Android、iOS多平台终端。用户可以在任何地方远程访问任何地方的串口设备,并对远程设备的数据进行实时采集监控、远程控制、诊断、通讯及调试等。Modbus物联网云平台支持微信关联,用户可以借助手机端的微信公众号进行远程查看设备的运行状态,通讯数据和报警信息等,实现随时随地轻松掌控,方便快捷。


总 结

总的来说,简单是 Modbus 如此普遍的主要原因。消息检查是 Modbus 如此受欢迎的另一个原因。CRC 和 LRC 检查意味着检查传输错误的准确率达到 99%。概括来讲,Modbus就是一种用于工业控制的协议,具有免费使用、上手简单、修改方便三大特点,已经被广泛使用。

此协议支持传统的RS-232、RS-485、RS-422和以太网设备。许多工业设备,包括PLC,DCS,智能仪表,变频器等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

Tags:Modbus,通信协议  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 相关文章列表
    工业智能网关 采集 协议转换 控制
    解读Modbus和tcp的区别和联系_Modbus RTU和TCP/IP区别
    两台plc的主从站通讯_西门子200SMART Modbus RTU通讯实例
    西门子S7-200SMART PLC的MODBUS TCP通信 STEP 7-MicroWIN SMART
    【组态王】组态王通过串口与MODBUS RTU设备通讯  COM口设置
    西门子200smartPLC 通过Modbus读取绝对值编码器的数据
    西门子plc 和modbusRTU对应关系_西门子S7-200和S7-200SMART的mod
    Modbus RTU通信教程 STEP 7-MicroWIN SMART软件 从站的配置及编程
    西门子PLCS7-200/S7-200SMART Modbus地址问题应用解析
    西门子S7-200SMART PLC使用modbus 读取仪表数据
    西门子S7-200SMART两台PLC之间主从站,MODBUS主从站通信步骤设置
    西门子plc s7-200smart modbus-tcp通信实例编程详细指导,STEP7软
    Modbus功能码04实例_20种PLC元件编号和Modbus编号地址对应表
    弱电工程RS485总线_RS485布线安装注意事项_RS485常见的故障与解决
    PLC通信入门教程:通信从来都不难,就是几个0和1
    学PLC通讯入门:波特率,通信协议,通信端口别再分不清楚了
    Modbus超时时间设置,通讯延迟,通讯滞后问题与程序轮询的关系
    变频器采用Modbus通讯延迟,有什么因素导致变频器给定频率后很久
    Modbus 的RTU、ASCII、TCP傻傻搞不清楚?一文全解读
    modbus协议实例讲解,功能码和报文详解
    Modbus测试工具与控件介绍
    西门子PLC 200smartPLC与第三方进行Modbus TCP通讯
    MODBUS--变频器\PLC\仪表连不上怎么办?送最简单的软件搞定问题
    西门子plc Smart 200主从站之间RS485通讯实例_从站主站读写程序
    西门子plc之间的通讯_两台西门子S7-200 SMART PLC如何通过Modbus
    西门子S7-200 Smart plc的Modbus RTU库通讯轮询实例
    学习s7-200之间的Modbus通讯_两个PLC互相通信,主站从站通讯
    西门子PLC的通信协议介绍
    西门子PLC S7-200Smart实现Modbus-RTU通信实例 多功能电表 温控表
    西门子plc S7-200 SMART与丹佛斯变频器之间Modbus通信
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    推荐文章
    最新推荐
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询