Modbus的实现方法有哪些?Modbus网络架构方案介绍

发布者:SereneSerenity最新更新时间:2024-06-28 来源: elecfans关键字:Modbus  网络架构  串行通信协议 手机看文章 扫描二维码
随时随地手机看文章

1.0 介绍

Modbus是由AEG-Modicon(莫迪康)公司开发的串行通信协议。它最初设计用于可编程逻辑控制器(PLC)。它是一种应用层消息传递协议,运行在开放系统互连(OSI)协议模型的第7层,提供连接在不同类型网络上的设备之间的客户端-服务器通信。


Modbus协议层如下图所示,它定义了一种通过另一设备访问和控制设备的方法,而不考虑所涉及的物理网络的类型。

图片

Modbus不需要接口,就像许多其他总线一样。用户可以选择RS-422, RS-485或20 mA电流回路。与其他总线相比,Modbus速度相对较慢,但在控制仪表制造商和用户中被广泛接受,具有决定性优势。

自1979年以来,Modbus成为工业串行总线的事实标准。Modbus没有正式的认证方式,制造商的责任是确认他们的产品与Modbus设备兼容。协议描述了一个设备访问另一个设备的方式,如何接收信息,以及如何响应查询。在出现错误的情况下,协议提供了一种向用户发送相应命令的机制。通过将Modbus协议作为数据包嵌入到其他网络的协议中,通信可以在Modbus网络上进行,也可以在其他网络(如以太网)上进行。

Modbus串行通信协议基于主/从原理,由主设备发起事务。该协议提供一个主设备和多达247个从设备。

Modbus的一些特性是固定的,一些特性是用户可以选择的。固定的特征是帧格式、帧序列、通信错误和异常条件的处理以及所执行的功能。可选择的特性是传输介质和传输特性。用户特征一旦设置,在系统运行时就不能更改。

2.0 通信栈

Modbus的实现方法如下:

  • 以太网上的传输控制协议(TCP)/互联网协议(IP)。

  • 异步串行传输在不同的媒质,如:EIA/TIA-232E, EIA-422, EIA/TIA-485-A; 光纤, 无线通信等.

  • Modbus Plus — 一种高速令牌传递方法。

下图,展示了使用TCP/IP、主/从和Modbus Plus物理层实现Modbus通信栈的过程。

图片

3.0 网络结构

Modbus网络架构方案如下图所示。

图片

不同的设备,如PLC、人机界面(HMI)、输入/输出(I/O)等,可以通过单独的网关连接到Modbus TCP/IP。不同的Modbus协议,即MB+上的Modbus, RS-232上的Modbus,RS-485上的Modbus通过TCP/IP发起远程通信。

4.0 通信事务

Modbus串行通信采用主/从协议。主站发起查询,从站通过向主站提供必要的数据或根据请求采取适当的操作来响应。 从站的响应如下:

  • 采取适当的行动

  • 向主站提供必要的数据/信息

  • 通知主站,必要的行动无法执行。

当从站无法按照主站的请求执行所需的操作时,将向主站发送一条错误消息(称为异常响应)。对主站的异常响应包含以下内容:

  • 响应从站的地址

  • 从站被请求执行的动作和

  • 说明行动为什么不能执行。

如果消息包含错误,从站会忽略它。在这种情况下,因为它无法收到从响应的响应,主站将查询重发给从站。

4.1. 主/从和广播通信

主站可以一个一个地对从站寻址(单播模式),也可以同时给所有从站寻址(广播模式)。从站响应单播消息,但不响应多播消息。主/从通信和广播通信方式分别如下图所示:

图片

4.2 查询响应周期

查询由主站发起,从站响应它。查询响应周期是Modbus网络中所有通信事务的基础。来自主站的查询包含四部分:设备地址、功能码、数据/消息和错误检查码。从站的响应结构与主站的响应结构相同。下图显示了查询响应周期。

图片

4.2.1 地址段

主站在其查询中发送的地址字段包含消息所指向的从站的地址。取值范围为 1到247。当从站发送它的响应时,它将自己的地址放在它的地址字段中,以便主站可以知道正确的从站正在响应。地址0指定用于广播。所有从站都读取它们,但不向来自主站的查询提供任何响应。

4.2.2 功能段

虽然不是所有设备都支持所有的功能码,但是功能码的取值范围是1 ~ 255。当功能码在查询中从主站到达从站时,从站就会知道它必须采取的操作。从站所采取的动作的例子可能包括:读取输入状态,读取寄存器内容,改变从站内的状态,操作继电器线圈等。

当从站向主站发送响应时,它重复接收到的佛南功能码。它表示从站已经理解了来自主站的查询并采取了相应的行动。如果从站无法执行指令,则生成异常响应,从站使用功能码和数据字段将异常的原因告知主站。

在生成异常响应的情况下,从站将原始功能码返回给主站,但将MSB设置为1。在这种情况下,从站的响应消息的数据字段向主站指示所发生的错误的性质。因此,主站可以基于此采取适当的操作。主站所采取的行动可能是重复原始消息,或尝试诊断问题,或设置警报等。

4.2.3 数据段

查询中从站接收到的数据字段通常包括寄存器值、寄存器地址或寄存器范围。有些功能不需要数据字段,此时,来自主站的查询中不包含d数据字段。

如果没有发生错误,则从站使用响应的数据字段将数据传递回主主站。当错误发生时,从站的数据字段传递更多的信息,告知主站所检测到的错误的性质。

Modbus本身不编码数据,因此可以采用许多编码方案。用户可以就网络通讯协议做出选择。

4.2.4 错误校验段

错误校验字段允许主站确认从从站接收到的消息的完整性。所采用的错误校验方法取决于所选择的传输模式。在远程终端单元(RTU)模式下,可以采用循环冗余检查(CRC),或者,对ASCII模式的传输采用LRC。

接收设备收到完整消息后,计算错误校验值,并与收到的消息中的错误校验值进行比较。如果两者一致,则没有发生错误并采取相应的行动。如果两个值不一致,接收到的消息将被拒绝。

5.0 协议说明:PDU 和 ADU

Modbus可以在不同类型的总线和网络上实现,但Modbus部分协议数据单元(PDU)必须包含该总线和网络中。PDU由两个字段组成:功能码和数据。

两种最常见的Modbus实现类型是以太网(TCP/IP)和串行通信,串行通信通可以是RS232、RS422或RS485。最常见的Modbus串行协议是Modbus-RTU。无论用于特定应用程序的协议类型是什么,特定于应用程序的寻址和错误校验都附加到PDU上,从而产生应用程序数据单元(ADU)。如下图所示,ADU表示Modbus帧。

图片

6.0 传输模式

在Modbus网络中传输串行数据有两种传输方式:RTU和ASCII。它们在许多方面有所不同:在消息字段中包装信息的方式、解释消息的比特内容的方式、解码消息的方式以及在给定波特率下的操作速度。

不同的模式不能同时使用,用户可以为特定的应用程序选择特定的模式。RTU模式比ASCII模式更快、更健壮。因此,在消息传输方面,它比ASCII形式有更多的应用

RTU传输模式有时被称为Modbus-B, ASCII传输模式被称为Modbus-A。ASCII模式下的典型消息长度大约是等效RTU消息长度的两倍。 在ASCII传输模式下,消息中的每个字节以两个ASCII字符的形式传输,在RTU传输模式下,消息中的每个字节以一个包含两个十六进制数字的8位二进制数的形式发送。

通过将Modbus数据封装在TCP/IP报文中,Modbus报文也可以在局域网和广域网中传输。

7.0 消息分帧

对于消息的传输,在其最终传输之前构造一个帧。帧由开始字符和结束字符、单播设备地址或广播设备地址、功能码、数据和错误校验码组成。

7.1 ASCII 分帧

Modbus ASCII 帧由六个字段组成,如下图所示。

图片

帧以冒号(:)开头,它是ASCII字符3Ah, h表示十六进制。帧以一个end结束,它是一个回车换行符,用两个ASCII字符 0Dh和0Ah表示。中间其余四个字段用十六进制字符 0-9和A-F表示。

ASCII模式允许两个连续传输之间的间隔为1秒,而不会产生任何错误。连接到Modbus网络的所有设备持续监视冒号字符,冒号字符将代表ASCII字符的开始。如果一个特定的设备发现与它自己的地址匹配,那么它将开始解码功能代码和其他字段,并采取相应的行动。

7.2 RTU 分帧

在这种模式下,消息帧以至少3.5倍字符长度的静默时间间隔开始。消息以相同的3.5倍字符长度的时间间隔结束。在开始字段之后,接收设备将监听地址字段,以了解消息是否要发送到该设备。RTU帧格式如下图所示。整个消息帧必须在一个连续流中传输,否则将产生错误。

图片

8.0 Modbus TCP/IP

开放的Modbus TCP/IP规范于1999年引入。使用Modbus TCP/IP协议有几个优点,如简单、使用标准以太网、开放等。在单个站点上可以轻松实现超过1 kB/秒的传输速率。

Modbus TCP/IP是一种互联网协议。它是一个TCP包装过的Modbus协议。因此,Modbus设备可以通过Modbus TCP/IP进行通信。网关设备只需要从物理层(RS-232、RS-485或其他)转换到以太网,并将Modbus协议转换为Modbus TCP/IP。

下图 (a,b)显示了Modbus TCP/IP协议层以及OSI层,以及分别封装在Modbus TCP/IP框架中的Modbus帧:

图片

常规的Modbus帧包含设备地址的任意两个ASCII码(在ASCII模式下)或8位十六进制字节(在RTU模式下),这里被替换为IP地址和设备网络标识符。此外,Modbus帧中的16位校验和被Modbus TCP/IP帧中的TCP的32位CRC所取代。

将Modbus协议的主/从架构修改为Modbus TCP/IP中的客户端-服务器架构。由于TCP是面向连接的协议,对于Modbus TCP/IP中的每个查询,都会有一个响应。


关键字:Modbus  网络架构  串行通信协议 引用地址:Modbus的实现方法有哪些?Modbus网络架构方案介绍

上一篇:PROFINET有哪些特性?PROFINET的工作机制是怎样的?
下一篇:PROFIBUS过程现场总线有哪些特点及其类型?

推荐阅读最新更新时间:2024-11-01 19:17

基于RS485接口Modbus协议的PLC与多机通讯
  1 引言   在自动控制领域,PLC 和单片机都受到广泛应用。PLC 具有稳定可靠,抗干扰能力强, 功能强大且使用方便等特点 ,单片机具有成本低廉,使用灵活,功能多样等特点。PLC 与 单片机结合,互相联系,互相通讯,将扩展控制功能,更好的控制复杂的系统。   在研究混合动力电动汽车驱动系统 时, 采用PLC 作为主控制器,控制电机变频器和发 动机节气门控制器,实现对电机和发动机功率的 综合控制。因为PLC 和变频器均是艾默生公司 的产品,均支持RS485 接口和MODBUS 协议, 所以控制系统统一采用RS485 接口和MODBUS 协议。而发动机节气门控制器采用89C51 单片 机,所以要通过建立PLC 与单片机的
[嵌入式]
Modbus通讯注意事项及测试
很多同学在做Modbus通讯时,需要连续读取多个现场设备的数据,虽然也编写了Modbus轮询的程序,但是有时还是无法正常通讯。有时虽然能够保证通讯,但是所有现场设备的轮询周期很长。本文将从MBUS_CTRL的超时时间参数设置来说明超时时间设置的重要性。 答:Modbus通讯协议是单主多从的通讯协议,如果需要读取多个现场Modbus从站设备的数据时,很多 PLC 不支持对Modbus通讯功能块的自动排序,需要自己编写Modbus轮询程序来实现,轮询时每次只能激活一个Modbus的读写功能块。 以常见的主站读取从站的寄存器为例,主站发出请求需要8个字节,从站返回响应为5 2*n个字节。其中n为寄存器个数。 如果通讯速率为9600时,按照
[嵌入式]
MODBUS转PROFIBUS网关将测厚仪接入PROFIBUS系统
测厚在轧钢过程中非常重要,数据的精度直接影响到产品的质量。在某轧钢生产线中,主系统通讯采用了抗干扰能力强、通讯稳定的PROFIBUS总线,而测厚仪无法直接接入到该系统。应用微硬创新MODBUS转PROFIBUS网关后,将测厚仪接入到PROFIBUS系统中,解决了数据通讯问题。系统图如下: 系统配置:西门子S7 400系列PLC;微硬创新MODBUS转PROFIBUS;某厂家测厚仪。 1、微硬创新MODBUS转PROFIBUS网关介绍:  (1)网关在MODBUS侧有两种功能:MM功能的网关在PROFIBUS-DP一侧是从站,在MODBUS一侧是MODBUS主站;MS功能的网关在PROFIBUS-DP一侧是从站,在M
[嵌入式]
Modbus和RS485是什么关系
RS485是一个物理接口,简单的说是硬件。 MODBUS是一种国际标准的通讯协议,用于不同厂商之间的设备交换数据(一般是工业用途);所谓协议,也可以理解为上面有人说的“语言”吧,简单的说是软件。 RS485属于有线传输,所以就要硬件传输媒介,实际就是两根线就可以了,在这两根线上传输的实际是同一个信号,只是发送端把这个信号一分为二,不过在接收端会把它还原为原来的信号,这样做的好处还要得和RS232来比较;RS232也需要两根线,更多的时候还要加上地线,所以是三根线,地线咱不管它,其余的两根只有一根线传输的数据信号,而另一根传输的时钟,也就是信号原来什么样发送端就怎样发送出来,同样接收端也做同样的处理。所以485的接收端可以把信号
[嵌入式]
PB-B-MODBUS485总线桥在宝钢硅钢片生产线上的应用
一、背景     在宝钢的硅钢生产车间里,一共有四条生产线用到了鼎实PB-B-MODBUS485的总线桥。整个系统采用的是Profibus-DP网络,主站用的是东芝的V3000s3pu55b PLC,组态软件用的是SyCon,监控软件用的是TMEIC-V-TOOL SYS。下面主要连接的是德国SMS公司的一些IO设备,冷机组用的是开利(Carrier)的30HXC190,由于开利冷机组是MODBUS的接口,不能直接联到整个系统中,用到了鼎实公司的PB-B-MODBUS485将其接入到PROFIBUS-DP系统中。表1为主站需要的冷机的参数。 二、系统构架     由于四条生产线所用设备基本相同,图1为其中一条生产线
[嵌入式]
STM32L053 CRC16-Modbus配置
STM32L053 CRC16-Modbus配置 一切为了实用,直接上代码 const uint8_t auchCRCHi = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0
[单片机]
基于CAN-FD的新一代汽车网络架构
传统的车载 CAN 总线最高支持500 kbit/s的传输速率,每帧只能承载8 by te s的数据,由于传输速率和数据长度的限制,在 自动驾驶 和 智能 网联对 网络通信 的高要求背景下,使用传统 CAN 通信 势必会导致总线负载率过高从而导致 网络 拥堵,传统CAN总线通信的瓶颈逐渐凸显。 2011年,为满足带宽和可靠性的需求, Bosch 首次发布了 CAN-FD(CAN With Flexible Data-Rate)方案,CAN-FD继承了传统CAN总线的主要特性,使用改动较小的物理层,双线串行通信协议,依然基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和 检测 机制,在此基础上对带宽和数据长度进行优化,将逐步
[汽车电子]
基于CAN-FD的新一代汽车<font color='red'>网络</font><font color='red'>架构</font>
基于μC/OS—II操作系统的数据采集控制系统
0 引言     随着计算机技术、电子技术和控制技术的发展,智能化、自动化、精确化的灌溉和施肥技术正逐渐取代传统的灌溉方式。在施肥过程中,需要在线检测肥料溶液的酸碱度和电导率以及灌溉压力、管道流量等,然后根据这些参数来控制电磁阀和水泵的运行达到自动灌溉施肥的目的。目前,常用的数据采集控制系统都是为某一实际应用而设计的,通用性和可扩展性差、数据存储能力不足,价格昂贵。因此基于周立功公司的ARM7核心板设计了一种通用的数据采集控制系统,并且已经应用到自动灌溉施肥系统中,能够满足稳定性,实时性以及大容量的数据存储的要求。该数据采集控制系统采用模块化设计,可以很方便的扩展和剪裁模块,同时只要对软件进行少量修改就可以方便的移植到其它应用
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved