惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Engineering at Meta
Engineering at Meta
美团技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
I
InfoQ
S
SegmentFault 最新的问题
博客园 - 叶小钗
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
IT之家
IT之家
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
月光博客
月光博客
The Cloudflare Blog
U
Unit 42
GbyAI
GbyAI
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
物联网数据接入篇-应用层 Modbus(5)
跃曰 · 2024-06-14 · via 人人都是产品经理

前四篇文章讲述的是TCP/IP 模型中的网络接口层、网络层、传输层、应用层一,这里到了第四层应用层二。由于协议比较多,就分开篇来介绍。这篇讲Modbus 协议,后面再讲 MQTT协议、CoAP 协议、OPC 框架。都是物联网常用的应用层协议。

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

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

其中 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

“:”起始标志

01:地址

03:功能码

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 协议的一种通讯方式,采用无连接的通讯方式,不保证数据的可靠性和顺序,适用于对实时性要求较高、对通讯效率要求较高的应用场景。帧格式:

:010300000002FArn

“:”起始标志

01:地址

03:功能码

0000:数据(寄存器地址)

0002:数据(寄存器数量)

FA:LRC 校验

rn:结束标志

起始标志(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,都是重头戏。

参考文献

15 张图, 把TCP/IP 讲得一清二楚!-腾讯云开发者社区-腾讯云

什么是OPC UA&它是如何工作的?_哔哩哔哩_bilibili

图解TCP/IP (第5版)

探索 OSI 会话层:建立和管理通信会话的关键_不同机器之间用户会话的建立与管理-CSDN博客

3、物联网的物理层协议 – 孤情剑客 – 博客园

网络工程师教程

【2024软考】《网络工程师》新版精讲视频-希赛网(零基础系统教程,建议收藏)!_哔哩哔哩_bilibili

Modbus通信协议详解-CSDN博客

MQTT协议_mqtt payload一定要字符串吗-CSDN博客

第一章 – MQTT介绍 · MQTT协议中文版

MQTT协议_mqtt payload一定要字符串吗-CSDN博客

物联网协议之COAP简介及Java实践-CSDN博客

如何使用CoAP的对称加密自主接入和DTLS自主接入_物联网平台(IoT)-阿里云帮助中心

DTU和RTU的区别_rtu和dtu的区别-CSDN博客

小米IoT文档与资源中心

5.1 IP 基础知识全家桶

network_protocol_structures.pdf

一文看懂Modbus协议-阿里云开发者社区

modbus_application_protocol_specification_v1.1b3.pdf

https://help.dtuip.com:8888/images/20191028084839667.pdf

一文看懂Modbus协议-阿里云开发者社区

Modbus 寄存器 | 人人都懂物联网

https://zh.wikipedia.org/wiki/Modbus

MQTT教學(一):認識MQTT – 超圖解系列圖書

https://www.51cto.com/article/670429.html

通讯协议介绍&CoAP 协议解析-CSDN博客

OPC 协议 | 开发者中心

https://www.youtube.com/watch?v=f5oPEVhZFug

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

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

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。