首页 » 智能 » 物联网数据接入篇-应用层 Modbus(5)_数据_协定

物联网数据接入篇-应用层 Modbus(5)_数据_协定

萌界大人物 2024-12-06 12:37:46 0

扫一扫用手机浏览

文章目录 [+]

第四层:运用层协议之二-物联网Modbus 协议

Modbus协议是一种要求/应答办法的交互过程,主机主动发起通讯要求,从机相应主机的要求,从机在没有收到主机的要求时,不会主动发送数据,从机之间不会进行通讯。

物联网数据接入篇-应用层 Modbus(5)_数据_协定 智能

个中 Mod 是莫迪康公司,现在被施耐德电器收购。
bus 是总线的意思,便是有一根主线,有主站和从站(主人和奴隶)。

Modbus 的分类

Modbus 属于运用层协议,他依赖于物理层、数据链路层和传输层来传输他的电流电压、数据帧、数据包。
以是,按Modbus 所依赖的网络接口层协议的不同,可以分为以太网通信的 Modbus、串口通信的 Modbus、无线通信的 Modbus。
串口通信的 Modbus包括依赖 RS232、RS485、RS422 等。

Modbus 按照他的传输模式,可以分为Modbus ASCII、Modbus RTU、Modbus TCP/IP。

Modbus 总线上所有的设备传输模式必须相同。
Modbus RTU是一种紧凑的,采取二进制表示数据的办法。
Modbus ASCII是一种人类可读的,冗长的表示办法。
Modbus TCP/IP,基于 TCP/IP 的协议,用于通过以太网和互联网进行通信。
你看看,Modbus RTU是直接通过物理层和数据链路层通报帧的,不依赖传输层和网络层。

Modbus 通信适用的设备

Modbus协议广泛运用在工业掌握器、传感器、PLC、HMI、掌握面板、驱动程序、动作掌握、输入/输出设备等等。
在基于串行链路和以太 TCP/IP 网络的 MODBUS 上可以进行相同通信。

一些网关许可在几种利用 MODBUS 协议的总线或网络之间进行通信。

Modbus 网络体系构造示例图:

Modbus 的通用帧格式

包括地址域、功能码、数据、差错校验。

紧张包括:

地址域:1字节,即从机设备地址,常日1-247为有效地址,0为广播地址。
功能码:1字节,表明主机要求数据的类型。
数据:N字节,包含寄存器地址和寄存器数据等。
差错校验:对数据进行冗余校验的结果,CRC或LRC

Modbus RTU

RTU 格式是 Modbus 协议中最常用的串行通讯格式之一,数据以二进制办法进行传输,采取固定的数据帧长度,传输效率高,适用于高速通讯和较远间隔的数据传输。

拓扑图:

Modbus RTU 常日基于 RS-485 串行通信链路,RS-485 总线布线规范规定其必须是总线式拓扑构造。
在实际布线中,常日采取手牵手菊花链布线办法。
1 和 2,2 和 3,3 和 4 这样连接。
RS 232 只有一个主站一个从站。

帧格式:

01 03 00 00 00 02 C4 0B

01:地址

03:功能码

00 00:数据(寄存器地址)

00 02:数据(寄存器数量)

C4 0B:CRC 校验

起始标志(Start):通过传输中的 3.5 个字符间隔实现。

地址(Address):1 字节。

功能码(Function Code):1 字节。

数据(Data):可变长度(最多 252 字节)。

缺点校验(CRC):2 字节(循环冗余校验)。

结束标志(End):通过传输中的 3.5 个字符间隔实现。

Modbus RTU 特点:

协议简洁:利用二进制格式传输数据,提高了通信效率。

可靠性高:通过循环冗余校验(CRC)来确保数据的完全性。

主从架构:一个主机可以掌握多个从机。
从机仅在吸收到主机的要求后才会发送数据,避免了通信冲突。

易于调试和监控:供应了多种调试和监控工具,便于工程师进行现场掩护和故障打消。

Modbus ASCII 数据帧

ASCII 格式是 Modbus 协议中另一种常用的串行通讯格式,数据以 ASCII 码的十六进制表示进行传输,数据帧长度较长,传输效率相对较低,适用于低速通讯和较短间隔的数据传输。

Modbus ASCII 也是基于串口通信的。
拓扑图见上面的 RTU。

:010300000002FArn

“:”起始标志

0000:数据(寄存器地址)

0002:数据(寄存器数量)

FA:LRC 校验

rn:结束标志

Modbus ASCII:

起始标志(Start):一个冒号 :

地址(Address):2 个 ASCII 字符(表示 1 字节的十六进制值)

功能码(Function Code):2 个 ASCII 字符(表示 1 字节的十六进制值)

数据(Data):每字节由 2 个 ASCII 字符表示(十六进制)

缺点校验(LRC):2 个 ASCII 字符(表示 1 字节的十六进制值)

结束标志(End):CR LF(回车和换行)

Modbus TCP/IP

Modbus TCP 基于以太网通信,因此其网络拓扑构造更为灵巧。
从串行链路上一主多从的布局,演化为多客户端/多做事器真个布局模型。
把稳这里不是主站从站观点,而是客户端/做事器的观点。

客户端(Client):发起通信要求,掌握和监视网络中的其他设备。

例子:HMI、PLC(作为掌握器)、SCADA系统、工业打算机。

做事端(Server):相应客户真个要求,供应数据或实行指令。

例子:传感器、实行器、PLC(作为被控设备)、智能仪表。

拓扑图:

以太网通讯办法紧张包括 Modbus TCP/IP 和 Modbus UDP/IP 两种。
Modbus TCP/IP 是基于以太网的一种通讯办法,它将 Modbus 协议封装在 TCP/IP 协议栈中,通过以太网传输数据,采取基于连接的通讯办法,具有高速、稳定的特点。

Modbus UDP/IP 是基于 UDP/IP 协议的一种通讯办法,采取无连接的通讯办法,不担保数据的可靠性和顺序,适用于对实时性哀求较高、对通讯效率哀求较高的运用处景。
帧格式:

起始标志(Start):无(由 TCP/IP 协议处理)

地址(Address):1 字节

功能码(Function Code):1 字节

数据(Data):可变长度

缺点校验(CRC):在 Modbus TCP 头中由 TCP/IP 协议处理

结束标志(End):无(由 TCP/IP 协议处理)

Modbus 协议的功能码

Modbus 协议中,功能码用于指定要求的操作类型,例如读取或写入数据。
每个功能码都有特定的含义和操作。
以下是常见的 Modbus 功能码及其用场:

这里的线圈啊,寄存器都是个什么东西:

线圈 = 一个布尔量。
寄存器 = word 操作。

当代 Modbus 设备,它们常日只映射到一块内存区域。
在这个内存区域中,线圈表示位操作(bit),每个线圈对应一个布尔变量(0 或 1、开或关)。
而寄存器则表示字操作(word),每个寄存器对应一个整型变量。
当然,也可以通过多个寄存器的组合来表示浮点数以及其他复合数据构造。
在 Modbus 协议中,一个字(word)的长度是 16 位,即 2 个字节,16 个比特。

Modbus 广播办法:软弱和广播

单播:

在单播模式下,从站地址必须唯一,地址范围为 1 到 247。
主站通过特定地址访问指定的从站,发出一个要求数据帧。
要求数据帧的功能可以是读取或写入数据。
从站吸收到要求后,进行相应的处理,并在完成后发送一个应答数据帧,表示读取或写入操作成功(又要把稳 RS232 只能有一个从站)。
获取数据须要轮询一下所有的从站。
单播模式图:

广播:

在广播模式下,主站向所有从站发出要求数据帧,所有从站都会处理这条命令。
对付广播要求,所有从站无需做出应答操作。
常日,地址 0 表示广播地址。
有例外情形哈。

Modbus 广播常日用于同时对多个从设备进行相同的操作,例犹如时启动或停滞多个从设备。

RS-232、RS-485、RS-422 比拟表格:

Modbus RTU、Modbus ASCII、Modbus TCP/IP 比拟表格:

运用

Modbus 是一个开源的库,可以用来在嵌入式系统上实现 Modbus 协议。
它常日用于以了局景:

嵌入式系统:如 Arduino、ESP8266、Raspberry Pi 等微掌握器和单板打算机。

工业自动扮装备:如 PLC(可编程逻辑掌握器)、传感器、实行器等。

家庭自动化系统:如智能家居设备和掌握系统。

能源管理:电力系统中的数据采集和监控。

楼宇自控:用于空调、照明等系统的集成掌握。

水处理:对水处理设备的运行状态进行监控和管理。

后记

这个系列,物联网协议进行到了尾声,这篇写 Mudbus,下面会写 MQTT、CoAP、OPC,都是重头戏。

参考文献

本文由 @跃曰 原创发布于大家都是产品经理。
未经作者容许,禁止转载。

题图来自Unsplash,基于CC0协议。

该文不雅观点仅代表作者本人,大家都是产品经理平台仅供应信息存储空间做事。

标签:

相关文章