Modbus教程| Modbus协议,ASCII和RTU帧,Modbus工作
转载自:https://www.rfwireless-world.com/Tutorials/Modbus-Protocol-tutorial.html
这个Modbus教程涵盖了modbus协议基础,ASCII和RTU帧结构,Modbus协议工作。Modbus协议教程还描述了应用示例。
什么是Modbus?
简介:
“Modbus”术语是Modicon Inc.的商标,维护该标准。它是一种应用层协议,它基于连接在不同类型总线或网络上的设备之间的客户端/服务器架构。该Modbus协议用于SCADA风格的设备之间的网络通信。
Modbus协议运行在RS232,RS422和RS485之上。对于Modbus帧,为基于IP的链路层定义了Modbus / TCP规范。有许多工业自动化和计量协议。Modbus协议基于查询/响应模型。“查询消息”和“响应消息”及其字段(即内容)的放大视图如下图所示。
•如图所示,查询和响应消息都包含start(0x3A)和end(0x0D0A)分隔符。
•查询消息由包括设备地址,功能代码,查询数据和错误检查的字段组成。
•响应消息由包括设备地址,功能代码,响应数据和错误检查的字段组成。
Modbus协议工作
•Modbus协议通常遵循基于主从架构。主设备向从设备发送请求消息并等待响应消息。该架构为主站提供了完整的信息流控制。与以前使用RS422 / RS485等的多点网络相比,这具有很大的优点
•如图所示,Modbus请求消息是一组分层数据。控制器可以设置为使用两种传输模式之一在标准Modbus网络上进行通信:ASCII或RTU。在配置每个控制器期间,用户可以选择所需的模式以及串行端口通信参数(波特率,奇偶校验模式等)。对于Modbus网络上的所有设备,模式和串行参数必须相同。
•ASCII或RTU(远程终端单元)模式的选择仅适用于标准Modbus网络。它定义了在这些网络上串行传输的消息字段的位内容。它确定如何将信息打包到消息字段中并进行解码。
•当控制器设置为使用ASCII模式在Modbus网络上通信时,消息中的每个8位字节将作为两个ASCII字符发送。此模式的主要优点是它允许在字符之间发生长达一秒的时间间隔而不会导致错误。
•当控制器设置为使用RTU模式在Modbus网络上通信时,消息中的每个8位字节都包含两个四位十六进制字符。这种模式的主要优点是,对于相同的波特率,其更大的字符密度可以比ASCII更好的数据吞吐量。每条消息必须以连续的流方式传输。
•在两种串行传输模式(ASCII或RTU)中的任何一种模式下,发送设备将Modbus消息放入具有已知起点和终点的帧中。这允许接收设备在消息开始时开始,读取地址部分并确定寻址哪个设备,以及知道消息何时完成。可以检测到部分消息,并且可以设置错误。
•如图所示,Modbus协议适用于主从模型。总线或网络上的一个设备可以启动事务(称为查询),该事务可以寻址单个从设备或广播到所有从设备。从设备根据收到的Modbus帧执行操作,并在需要时以“响应帧”的形式进行响应。
•传输模式定义要在Modbus网络上传输的消息的成帧和位编码。
Modbus ASCII模式
该图描绘了Modbus帧的ASCII模式。如ASCII模式所示,每个字节在串行链路上编码为2个ASCII字符。每个ASCII字符作为1个起始位,7个数据位,0或1个奇偶校验位,一个或两个停止位发送
Modbus RTU模式
该图描绘了Modbus帧的RTU模式。如RTU(远程终端单元)模式所示,消息以连续流格式传输。每个8位字节由1个起始位,8个数据位,0或1个奇偶校验位,1或2个停止位构成。消息本身在至少3.5个字符时间的静默期后开始。
Modbus消息字段
➤让我们了解在ASCII模式和RTU模式下使用的主要字段。
Modbus地址: Modbus消息以8位目标地址开始。这可以取0到247之间的任何值。这里0用作广播地址,其余用作唯一设备地址。
Modbus功能:功能代码包含2个字符(ASCII模式)和8位(RTU模式)/它取1到255之间的任何值,并根据应用程序配置文件选择。
Modbus数据字段:该数据字段根据需要通过不同的Modbus功能传送应用程序级别信息。如果函数包含可变大小的数据,则在此位置以“字节计数”开头。
Modbus错误检查字段:此字段用作错误检测。它也被称为“校验和”。
Modbus TCP模式
与RS232和RS485不同,Modbus TCP使用TCP / IP协议传输Modbus消息。该图描绘了TCP / IP和OSI协议栈中Modbus协议的映射。
•Modbus TCP提供对Modbus功能的TCP / IP访问。
•使用众所周知的端口502,通过主站和从站之间建立的TCP连接发送每个Modbus请求/响应。
•TCP连接可以重复用于多个查询/响应交换。
•modbus请求/响应帧的字节内容(即没有特定于串行物理层的帧起始 - 停止 - 奇偶校验位)仅通过TCP连接以大印度顺序传输。Modbus TCP的唯一补充是添加一个7字节的消息前缀。
➤Refref00 00 00 len unit
•“ref”字节简单地由从服务器从请求中复制,并且可以由主服务器用作句柄。消息前缀中的长度信息允许在多个IP数据包中分割Modbus消息时正确重新组装。
•从站地址已重命名为“单元标识符”并包含在单元中。消息的其余部分符合常规Modbus结构,但出于显而易见的原因,可能会省略错误检查字段。
Profibus与Modbus
下表提到了Profibus和Modbus之间在各种参数方面的比较。
特征 | 现场总线 | MODBUS |
---|---|---|
操作模式 | 使用RS485在多主模式下运行。 | 仅使用ASCII / RTI在单主模式下运行。 |
使用以太网 | 无法在以太网上运行,但profinet在以太网上运行,与profibus不同。 | 可以使用TCP / IP协议在以太网上运行。 |
物理媒介 | 双绞线,光纤 | Modbus没有定义物理介质。它定义了可以在任何物理介质上使用的消息结构。然而,Modbus RS485在所有人中都很受欢迎。 |
传输速度 | 以1.2 Kbps至12 Mbps的不同传输速度运行。 | Modbus RS485支持高达115 Kbps或高达19.2 Kbps的传输种子。 |
距离覆盖 | 32个站使用profibus距离可达1200米,而2个站以500 kbps的速度通信,距离可达400米。低速传输支持更高的距离,而高速传输支持更低的距离。 | Modbus RS485电缆应小于700米。 |
主设备和从设备的数量 | 单个profibus网络上最多连接126个设备(主设备和从设备)。 | Modbus主站实际上支持247个从设备。由于RS485协议限制,主电缆上连接的主设备(包括主设备)的数量为32。支持使用超过32个中继器。 |
未来的使用 | 单独使用profibus很好,但它的专业特性与RS485相结合将会过时。然而,专业的传感器/演员现场总线设备已经增加了他们现在和将来在自动化行业的市场渗透率 | 由于协议简单,它已成为自动化行业中主要的以太网协议之一。其他旧版本是RS232,RS422,RS485等。设备用于总线上和不带地址。 |
应用 | 它是非常强大的协议,可用于自动化整个工厂。它用于有更多点和多个供应商设备自动化的地方。 | 这是一种非常简单的协议,可用于在点对点配置模式下连接单个控制器。它用于小型工厂自动化。 |
Modbus应用示例
modbus协议可以在RS485 / RS422等各种系统中实现。
•Zigbee到Modbus RTU / TCP网关
•实时库存控制,如拣货,点亮等。
•工业自动化
•智能计量
这个Modbus教程对初学者学习Modbus协议的基础非常有用。有关更多信息,请参阅ASCII,RTU或TCP模式的相应modbus协议规范。
Modbus教程| Modbus协议,ASCII和RTU帧,Modbus工作的更多相关文章
- MODBUS ASCII和RTU两种模式的区别、优缺点
转自:http://blog.sina.com.cn/s/blog_89f286ad0102uzju.html 下表是MODBUS ASCII协议和RTU协议的比较: 协议 开始标记 结束标记 校验 ...
- 物联网无线数传应用中的Modbus通信网关协议到底是什么?
什么是物联网 通信Modbus网关 Modbus协议无线通信网关就是将一种Modbus协议帧转换为其他物联网无线数传协议帧. 比如将Modbus RTU的数据与Modbus TCP数据进行相互转换:也 ...
- C# 开发ModBus的服务器程序 实现ModBus数据总站 搭建自定义的Modbus服务器 同时支持tcp和rtu
前言 本文将使用一个NuGet公开的组件技术来实现一个ModBus TCP的服务器端数据引擎,方便的实现接收来自各种设备的数据.并且该服务器模拟真实的设备,包含了数据池功能,可以接受来自任何支持Mod ...
- 串口屏Modbus协议,串口屏的modbus协议资料,串口屏modbus通讯协议开发,串口屏之modbus协议使用技巧
串口屏Modbus协议,串口屏的modbus协议资料,串口屏modbus通讯协议开发,串口屏之modbus协议使用技巧 本例程中用51单片机作为Modbus从机,从机的设备地址为2,从机有4个寄存器, ...
- FreeModbus RTU slave & Modbus RTU master
一.FreeModbus RTU 协议数据格式 FreeModbus RTU是开源的一个协议,并且使用FreeModbus RTU 只能当做从机Slave,RTU协议中的指令由地址码(一个字节),功能 ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- 开源 DotNetty 实现的 Modbus TCP/IP 协议
本项目的目的是为了学习 DotNetty 与 Modbus 协议,参考 modjn 实现功能 0x01: Read Coils (读取线圈/离散量输出状态) 0x02: Read Discrete I ...
- Modbus常用功能码协议详解
Modbus常用功能码协议详解 01H-读线圈状态 1)描述:读从机线圈寄存器,位操作,可读单个或者多个: 2)发送指令: 假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x003 ...
- Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)
源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
随机推荐
- hdu 2871 Memory Control (区间合并 连续段的起始位置 点所属段的左右端点)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871 题意: 四种操作: 1.Reset 清空所有内存2.New x 分配一个大小为x的内存块返回,返 ...
- java 复制指定目录中的所有文件和文件夹到另一个指定文件夹中
package com.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream ...
- 洛谷P2659 美丽的序列 单调栈模板
P2659 美丽的序列 题目链接 https://www.luogu.org/problemnew/show/P2659 题目描述 为了研究这个序列的美丽程度,GD定义了一个序列的"美丽度& ...
- Python爬虫—requests库get和post方法使用
目录 Python爬虫-requests库get和post方法使用 1. 安装requests库 2.requests.get()方法使用 3.requests.post()方法使用-构造formda ...
- 第九章 MIZ702 ZYNQ片上ADC的使用
9.0难度系数★☆☆☆☆☆☆ 9.1实验概述 这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC ...
- .Net C# RSA签名和验签重写
namespace com._80community.unittest.CUP { /// <summary> /// CUP Client /// </summary> pu ...
- JSP读取properties文件变量
1.jsp代码 <%ResourceBundle res = ResourceBundle.getBundle("properties文件名"); %> 2.js代码 ...
- python matplotlib 折线图
1.绘制折线图,去上和右边框,显示中文 import numpy as np import matplotlib.pyplot as plt #plt.style.use('default') #pl ...
- span元素
<span>标签属于行内元素(inline),所以无法设置高度和宽度: 如果需要改变其宽高,就需要将其转变为块体元素(block)或行内块体元素(inle-block)
- 转载:Web安全X-FRAME-OPTIONS 出现两个或多个的原因
转载:https://blog.csdn.net/Teemo_2016/article/details/82051523 在配置文件中配置了 <httpProtocol> < ...