【Modbus】Modbus协议讲解

news2024/11/14 6:55:38

Modbus协议讲解

  • 前言
  • 一、串口通讯简介
  • 二、RS485串口通讯
      • RS485通讯标准的由来(了解)
      • RS485特点
      • RS-485终端电阻的选择
  • 三、Modbus协议
  • 四、Modbus报文范例


前言

本篇是我参加工作培训时,作为记录笔记用的,因此写的方式不会像前面那些系列一样写的很详细,因为一个通讯协议的内容都会比较多,我更多会写经常看到和实用的,不过在文末,我也会推荐大佬的详细文章或者一些书籍供大家参考。


一、串口通讯简介

先要明确一点的就是,Modbus协议是属于OSI通讯模型中的数据链路层和应用层,而在物理层需要使用串口去实现。
在这里插入图片描述

  • 串口通讯,是指外设和计算机间,通过数据信号线地线等,按位进行传输数据的一种通讯方式。

  • 串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。

  • 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等

具体内容可以看我之前的文章:
【STM32】标准库与HAL库对照学习教程八–串口通信详解
将通信基本概念看完就行了


二、RS485串口通讯

RS485通讯标准的由来(了解)

1969年,电子工业协会 (EIA) 制订并发布了RS232串行数据接口标准,并命名为EIA-232-E

RS-422由RS-232发展而来,它弥补了RS-232通信距离短、速率低等缺点,全名为TIA/EIA-422-A标准

1983年,电子工业协会 (EIA) 在RS-422基础上制定了RS-485标准,后命名为TIA/EIA-485-A标准

简单来说RS485是工业上的串口使用标准,Modbus协议就是在RS485基础上运行。


RS485特点

  • 工作方式:差分
  • 通讯类型:主从通讯
  • 数据传输方式:半双工
  • 节点数:32、128、256
  • 最大传输长度:1200m
  • 最大传输速率:10Mpbs
  • 数据格式:
    1位起始位、8位数据位、1位停止位、无校验(常用)
    1位起始位、8位数据位、1位停止位、奇校验
    1位起始位、8位数据位、1位停止位、偶校验

RS-485终端电阻的选择

终端电阻就是在线型网终两端(相距最远的两个通信端口上) ,并联在一对通信线上的电阻,示意图如下:
在这里插入图片描述

作用:根据传输线理论终端电阻可以吸收网终上的反射波,有效地增强信号强度

电阻选择:

终端电阻要依照网络所使用的线缆种类的特性阻抗来确定,普通双绞线的 特性阻抗为120Ω.因此RS-485网络的终端电阻也选择120Ω。

在RS-485网络通讯距离较近(<300m)时,一般不使用终端电阻。


三、Modbus协议


简介

Modbus是一种串行通信协议,是Modicon公司 (现在的施耐德电气SchneiderElectric) 于1979年为使用可编程逻辑控制器(PLC) 通信而发表。

Modbus已经成为工业领域通信协议的业界标准(Defacto) ,并且现在是工业电子设备之间常用的连接方式。

分类:
按一般维度分为Modbus Rtu、Modbus Ascll、Modbus TCP三种模式。这三种模式中最常用的是Modbus Rtu

Modbus消息帧格式:
从机地址+功能码+数据+16位CRC校验

从机地址功能码数据CRC
1字节1字节n字节2字节

主/从协议原理:
Modbus 串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。

Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。

子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus 事务处理。

  • 单播
    • 主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个’应答’)。
    • 每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。
  • 广播
    • 主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。
    • 所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。

常用功能码
在这里插入图片描述
我这边经常用的是0x03读、0x06写单、0x10写多


四、Modbus报文范例

在这里插入图片描述


推荐文章:详解Modbus通信协议—清晰易懂
实践使用文章:普中Modbus开发攻略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ceph(分布式文件系统)

Ceph(分布式文件系统) 1、存储基础 单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xf…

详解RocketMQ使用

目录 1.环境 2.生产者、消费者的模式 3.顺序消息 4.广播消息 5.延迟消息 6.批量消息 7.过滤消息 8.事务消息 本文着重聊的是RocketMQ的编程模型&#xff0c;下载安装和概念可以移步博主的另外两篇博文&#xff1a; RocketMQ基础概念__BugMan的博客-CSDN博客 RocketMQ…

dede编辑器修改成纯文本编辑器的方法

我在做优秀啦网站大全的时候需要的正文内容都不需要设置什么文字样式&#xff0c;所以我需要把编辑器上的工具全部取消掉&#xff0c;包括会员投稿中的编辑器工具栏全部取消掉或者屏蔽隐藏掉&#xff0c;所以我需要把DEDE编辑器修改成纯文本编辑器的方法如下&#xff1a;如图&a…

一文教你如何优雅地配置树莓派的静态IP、中文环境

引言&#xff1a; 树莓派的静态IP配置与ubuntu这些都是类似的&#xff0c;毕竟都是linux&#xff0c;只要会一个&#xff0c;其他的看一遍就会了。 目录 配置树莓派的静态IP 1、确定树莓派的网络接口 2、编辑网络配置文件&#xff1a; 3、设置静态IP地址&#xff1a; 4、…

JavaWeb 速通Tomcat

目录 一、拾枝杂谈 1.web服务器说明 : 2.常用web服务软件 : 二、Tomcat服务 1.Tomcat下载和安装 : 2.启动Tomcat服务 : 3.Tomcat启动的注意事项 : 4.关闭Tomcat服务 : 三、Tomcat部署 1.Tomcat目录结构说明 : 1 bin 2.conf 3 lib 4 logs 5 temp 6 webapps 7 work 2.关…

golang单元测试及mock总结

文章目录 一、前言1、单测的定位2、vscode中生成单测 二、构造测试case的注意事项1、项目初始化2、构造空interface{}3、构造结构体的time.Time类型4、构造json格式的test case 三、运行单测文件1、整体运行单测文件2、运行单个单测文件报错&#xff08;1&#xff09;command-l…

fileclude

背景知识 文件包含漏洞 题目 分析上述代码 file2被放入file_get_contents()函数&#xff0c;且要求返回值为hello ctf file1是要包含的文件&#xff0c;放在include函数中 用php://filter伪协议读取源代码 构造payload&#xff1a; file1php://filter/readconvert.base64-…

Loki+Promtail+Grafana 监控 K8s 日志

Loki 架构&#xff1a; 1、loki&#xff1a;服务端&#xff0c;负责存储日志和处理查询 2、promtail&#xff1a;采集端&#xff0c;负责采集日志发送给loki 3、grafana&#xff1a;负责采集日志的展示 创建 yaml 文件 cat loki-rbac.yaml apiVersion: v1 kind: ServiceAccount…

HarmonyOS应用开发-第一章-DevEco Studio的安装

一、前言 本栏可以帮助正在学习HarmonyOS应用开发的开发者快速上手和掌握。 二、安装步骤 首先下载DevEco Studio&#xff08;HarmonyOS应用的集成开发境&#xff09;&#xff0c;点击&#xff1a;IDE下载页面&#xff0c;点击立即下载。 下载完成后&#xff0c;双击运行安装程…

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

golang slice参数传递

在介绍slice函数参数传递之前&#xff0c;先介绍一下slice的结构 type slice struct {array unsafe.Pointerlen intcap int }这个应该周知了&#xff0c;也不必多解释&#xff0c;需要注意两个问题 1、如何初始化slice 我们知道初始化slice有几种方式&#xff0c;注意以…

Spring Batch之读数据—读多文件(三十三)

一、读多文件 前面的所有文件的读取基本上是对单文件执行的&#xff0c;在实际应用中&#xff0c;我们经常操作批量的文件。 Spring Batch框架提供了现有的组件MultiResourceItemReader支持对多文件的读取&#xff0c;通过MultiResourceItemReader读取批量文件非常简单。MultiR…

【算法与数据结构】144、145、94LeetCode二叉树的前中后遍历

文章目录 一、题目二、递归算法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、递归算法 思路分析&#xff1a;这道题比较简单&#xff0c;不多说了&#xff0c;大家直接看代码就行。注意前中后遍历是指中间…

01Matlab编程基础

回忆你所学过的数学函数并给出x3.56 时以下函数的值 s i g n ( x ) , x a ( a 3 ) , sin ⁡ ( x ) , cos ⁡ ( x ) , tan ⁡ ( x 2 ) , 2 tan ⁡ ( x ) \begin{aligned}sign\left( x\right) ,x^{a}\left( a3\right) ,\sin \left( x\right) ,\cos \left( x\right) ,\tan \left(…

MiniGPT4系列之二推理篇命令行方式:在RTX-3090 Ubuntu服务器推理详解

MiniGPT4系列之一部署篇&#xff1a;在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客 MiniGPT4系列之二推理篇命令行方式&#xff1a;在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客 MiniGPT4系列之三模型推理 (Web UI)&#xff1a;在RTX-309…

如何更简洁查看接口返回的树状图信息

首先&#xff0c;你的接口返回的得是树状图信息。在浏览器上访问接口&#xff1a; 按下f12 刷新页面 点击就可以看到层级关系了。当然也可以使用下面这个插件对数据进行格式化。

行列式计算

举例&#xff1a; 1.暴力计算 2.通过代数余子式计算 相关理论&#xff1a; 这个C就是上图的Aij哈&#xff0c;我拷的别人的图。 可以得出&#xff0c;行列式的值可以按照某行展开&#xff0c;展开后余子式即为一个新的行列式&#xff0c;就是原行列式删除某一行一列之后得到的…

Java 设计模式——适配器模式

目录 1.概述2.结构3.类适配器模式3.1.目标接口3.2.被适配类3.3.适配器类3.4.测试 4.对象适配器模式5.优缺点6.应用场景7.JDK 源码解析——InputStreamReader 1.概述 &#xff08;1&#xff09;如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标…

vue3- 02vue3的变化

1. main.js 创建实例不再使用构造函数&#xff0c;而是使用createApp使用插件时不再通过构造函数&#xff0c;而是通过实例 2. 组件 1. this指向不同 vue2的this指向是组件vue3的this指向是proxy&#xff08;代理&#xff0c;代理的是组件实例&#xff09; <template&…

分布式软件架构——传输链路

传输链路 链路指无源的点到点的物理连接。链路是计算机网络中的一个重要概念&#xff0c;它指的是连接两个网络设备的物理或逻辑路径。简单来说&#xff0c;链路就是电信号或数据在网络中传输的路径。在计算机网络中&#xff0c;链路可以分为物理链路和逻辑链路两种。物理链路…