转载自:https://www.rfwireless-world.com/Tutorials/Modbus-Protocol-tutorial.html
这个Modbus教程涵盖了modbus协议基础,ASCII和RTU帧结构,Modbus协议工做。Modbus协议教程还描述了应用示例。html
什么是Modbus?
简介:
“Modbus”术语是Modicon Inc.的商标,维护该标准。它是一种应用层协议,它基于链接在不一样类型总线或网络上的设备之间的客户端/服务器架构。该Modbus协议用于SCADA风格的设备之间的网络通讯。服务器
Modbus协议运行在RS232,RS422和RS485之上。对于Modbus帧,为基于IP的链路层定义了Modbus / TCP规范。有许多工业自动化和计量协议。Modbus协议基于查询/响应模型。“查询消息”和“响应消息”及其字段(即内容)的放大视图以下图所示。网络
•如图所示,查询和响应消息都包含start(0x3A)和end(0x0D0A)分隔符。
•查询消息由包括设备地址,功能代码,查询数据和错误检查的字段组成。
•响应消息由包括设备地址,功能代码,响应数据和错误检查的字段组成。架构
Modbus协议工做
•Modbus协议一般遵循基于主从架构。主设备向从设备发送请求消息并等待响应消息。该架构为主站提供了完整的信息流控制。与之前使用RS422 / RS485等的多点网络相比,这具备很大的优势less
•如图所示,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个奇偶校验位,一个或两个中止位发送google
Modbus RTU模式
该图描绘了Modbus帧的RTU模式。如RTU(远程终端单元)模式所示,消息以连续流格式传输。每一个8位字节由1个起始位,8个数据位,0或1个奇偶校验位,1或2个中止位构成。消息自己在至少3.5个字符时间的静默期后开始。编码
Modbus消息字段
➤让咱们了解在ASCII模式和RTU模式下使用的主要字段。
Modbus地址: Modbus消息以8位目标地址开始。这能够取0到247之间的任何值。这里0用做广播地址,其他用做惟一设备地址。spa
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协议规范。