MODBUS通讯协议详解(基于485)

article/2025/9/13 22:52:06

参考:灵育科技Modbus课程总结
作者:Naunyang
时间:2020-11-23 13:51:58
网址:https://blog.csdn.net/Naunyang/article/details/108740456?spm=1001.2014.3001.5502

参考:MODBUS用于单片机通讯
作者:hillchina
发布时间:2017-02-22 08:25:11
网址:https://www.bilibili.com/video/BV1Bx411y7N5

参考:Modbus协议解析(Modbus-RTU、Modbus-TCP、Modbus-PLUS)
作者:panda@Code 发布时间:2019-07-01 23:44:03
网址:https://blog.csdn.net/panda5_csdn/article/details/94332166?spm=1001.2014.3001.5502

完整视频及资料下载链接: https://pan.baidu.com/s/1AZQKnipbGF63UW2a5TdFZA
提取码: wzy7

目录

  • 什么是Modbus
  • 通讯的硬件层协议机制,主从模式的建立
  • 硬件层半双工通讯方式的实现
  • 基于485通讯(硬件层协议)的MODBUS协议(软件层协议),确定主机寻地址帧格式
    • RTU(2进制方式)的机制及数据传输实现方式
    • ASC(字符方式)的机制及数据传输实现方式
  • MODBUS从设备回应数据包格式
  • MODBUS从机协议实现
  • STM32编程实现一个MODBUS从机协议
    • MODBUS通讯的硬件层及底层通讯准备

什么是Modbus

顾名思义,他是一个bus,即总线协议,如果你接触到这种协议,相信你所处的行业很可能是工业方面或者你的产品用于工业。
在这里插入图片描述

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

通讯的硬件层协议机制,主从模式的建立

协议分类:硬件层协议、软件层协议

硬件层:RS232、RS485 、CAN等 。主要解决硬件传输问题,解决如何传输0与1的问题(物理上以什么样的电平、多少伏电压传输,仪表可以测到这个电压,还有以双绞线还是什么线传输)。交通道路

软件层协议:传输的目的,为什么要传,传数据要干啥。Modbus、TCP/IP……交通规则

在这里插入图片描述

  • 单工模式:只能从一方发送数据到另一方,而不能反过来发。

  • 半双工模式:可以A发送给B,也可以B发送给A,但是不能同时发

  • 主从模式:
    (1)在这样一个系统中,只能有一个主机,其他的都是从机。
    (2)系统中的从机都不能主动发信息给主机。

硬件层半双工通讯方式的实现

主从模式:
(3)系统上电之后,默认状态,主机,从机都是在监听状态;
(4)主机与从机之间的通信,只能由主机发起;

主机要建立起一次通信,要满足以下要求:
(1)主机要将自己置为发送状态;
(2)主机要按照预先约定好的格式(比如MODBUS协议格式)发送寻址数据帧,发完之后立刻把自己转回接收状态;
(3)寻址完成之后,目标从机要返回给我消息,才能算这次通信成功;

基于485通讯(硬件层协议)的MODBUS协议(软件层协议),确定主机寻地址帧格式

1、MODBUS是主从模式:
整个系统只能有一个主机,每个从机都有唯一的地址(0-247),0号地址是广播地址,发送给所有的从机。0号地址寻址,所有从机不回应(相互会冲突嘛);

2、MODBUS主机寻址帧格式:

  • (1)RTU方式:也叫16进制方式,或者2进制方式
    比如:0x03: 0000 0011
  • (2)ASC方式:字符方式(方便调试)
    比如:0x03–> 转换成字符’0’与字符’3’再发送出去;那么就会发
    字符’0’(ASCII码是0x30)的2进制0011 0000 + 字符’3’(ASCII码0x33)的2进制 0011 0011,最终发送的就是:0011 0000 0011 0011

ASC方式最大的优势就是方便调试(可打印),整个线路上传输的都是ASCII码,都是可打印字符,可以清楚的知道这个线路上传输的是什么,因为ASCII码中可打印字符是32-126,其他显示乱码。

RTU(2进制方式)的机制及数据传输实现方式

ASC方式数据帧格式:

从机地址 + 功能码 + 数据 + 16位CRC校验

不同的功能码对应的紧接于功能码之后的数据是不同的。
比如:03功能码,是要读取从机的数据。那么从机要知道从他的存储器的哪里(哪个地址)开始读,读到哪里结束,读几个地址长度。

还有一个问题就是:从机怎么知道主机发送完了?
从机以接收数据停止之后开始计时,达到3.5个字节以上的时间就认为主机的寻址帧完成,并开始处理。

3.5个字节转化成时间计算:
在这里插入图片描述

ASC(字符方式)的机制及数据传输实现方式

ASC方式数据帧格式:

起始位‘ :’ + 地址(2个字节) + 功能码(2个字节)+ 数据(1、2…n)+校验位(LRC校验)
在这里插入图片描述

这些地址、还有功能码、还有数据为什么是两个字节呢
因为是ASC方式,字符的方式。比如:0x03,要发送就要变成:字符’0’ 与’3’
字符’0’ (0x30)的二进制0011 0000是与’3’(0x33)的二进制是:0011 0011就成2个字节了。
这种方式非常冗长,工作少用。

校验位是从地址开始到数据位的最后结束。

校验位的计算:把所有的值加起来的和对256取余,然后取反加1 ,就是校验位。
在这里插入图片描述

MODBUS从设备回应数据包格式

(1)回应的数据包与主机查询的数据包格式一致;

(2)正常回应是,功能码与主机发送时的功能码一致(1-127);

(3)异常的回应时,功能码要在收到的功能码的基础上加128

MODBUS从机协议实现

(1)硬件上具备串口(485接口)

(2)硬件上需要一个精确的毫秒级别的定时器

STM32编程实现一个MODBUS从机协议

MODBUS通讯的硬件层及底层通讯准备


http://chatgpt.dhexx.cn/article/GMwJISB5.shtml

相关文章

485通讯协议_终于有人把RS485通讯协议应用及缺点分析清楚了,看完收获多多

RS-485是工业控制环境中常用的通信协议,具有抗干扰能力强、传输距离长的特点。RS-485通信协议是对RS-232协议的改进。协议层不变,但只有物理层得到了改进,从而保留了串行通信协议应用简单的特点。 RS-232和RS-485的特性的不同 典型的串行通信…

Linux初学者必知的5个学习网站

1 推荐一:鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/) 这个不用多说吧,只要你学习Linux就肯定听说过鸟哥的私房菜,经典,对于初学者来说绝对是经典,推荐!!&#xff…

Linux初学者五个网站推荐

推荐一:鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/) 这个不用多说吧,只要你学习Linux就肯定听说过鸟哥的私房菜,经典,对于初学者来说绝对是经典,推荐!!&#xff01…

Linux学习网站推荐

推荐一:鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/) 这个不用多说吧,只要你学习Linux就肯定听说过鸟哥的私房菜,经典,对于初学者来说绝对是经典,推荐!!&#xff01…

如何在linux系统上搭建部署网站?

目录 前言 基础配置的更改和软件的安装 更改软件安装源 升级apt(advanced packing tool) 安装net-tools 安装openssh-server 安装vsftpd 环境配置 修改vsftpd的写入权限 安装HTTP服务软件 修改nginx配置 修改文件夹访问权限 重启nginx 测试 结语 使用云服务器&a…

Linux学习13—网站服务

文章目录 一. 网站简介1.1 前言1.2 概念1.3 名词解释1.4 网站架构 二. 静态网站2.1 Apache简介2.2 Apache基础2.3 Apache安装与配置2.4 虚拟主机 三. 动态网站3.1 简介3.2 搭建论坛系统discuz3.3 论坛系统discuz用户端测试 一. 网站简介 1.1 前言 用户UI的转变:B/S…

Linux学习:网站服务

目录 一、网站服务 1.网站简介 1.1名词 1.2网站架构 2、静态站点 2.1 Apache基础 2.2安装apache 2.4 虚拟主机 3、动态站点 3.1部署论坛系统dlscuz 一、网站服务 1.网站简介 1.1名词 (1)HTML:(Hyper Text Markup Lang…

在Linux系统上搭建网站

LAMP环境 首先说一下这里用的环境是LAMP 先简单说一下什么是LAMP LAMP是 Linux Apache MySQL PHP 的环境要求,即web服务器。1.在Linux系统上配置网站环境 运行 wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz &&…

linux 学习

1、什么是重定向?什么是管道? 2,完成以下操作: (1)显示系统时间,并将系统时间修改为2018年10月1日。 # date 显示时间 # date -s 10/01/2018 修改系统时间 把系统时间修改为2018年10月1日…

在Linux上搭建一个自己的网站

文章目录 前言配置实验基于不同IP访问基于不同端口访问基于域名访问 前言 搭建一个网站,首先需要的是Web服务器,我们这里使用 Apache,它是由 httpd 服务调度,我们先使用这个服务搭建一个简单的静态页面 配置 下载服务&#xff…

linux 学习网站

一.鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/)http://linux.vbird.org/new_linux.php ​ 只要学习过Linux的人应该都听说过鸟哥吧!对于初学者来说,经典中的经典。 二.Linux中国(https://linux.cn/&#xff09…

linux学习网站大全[转]

http://www-128.ibm.com/developerworks/cn/linux/ Linuxsir-非常不错的中文Linux社区,能学习到很多东西http://www.linuxsir.com/bbs Linuxfans-Linux公社,中文站点,国内非常出名http://www.linuxfans.org Linuxeden…

《STL源码剖析》问题总结

个人笔记,持续更新,如果有遇到相同的疑问希望可以帮助大家。 Allocator P45 问题1: T* tmp (T*)(::operator new((size_t)(size * sizeof(T))));调用系统全局operator new函数来申请一个内存空间,传入参数为size_t类型&#xf…

STL源码剖析 map

所有元素会根据元素的键值自动被排序 元素的类型是pair&#xff0c;同时拥有键值和实值&#xff1b;map不允许两个元素出现相同的键值pair 代码 template <class T1,class T2> struct pair{typedef T1 first_type;typedef T2 second_type;T1 first; //publicT2 seco…

STL源码剖析-重点知识总结

STL是C重要的组件之一&#xff0c;大学时看过《STL源码剖析》这本书&#xff0c;这几天复习了一下&#xff0c;总结出以下LZ认为比较重要的知识点&#xff0c;内容有点略多 :) 1、STL概述 STL提供六大组件&#xff0c;彼此可以组合套用&#xff1a; 容器&#xff08;Containers…

C++标准库(第二版).pdf与STL源码剖析.pdf下载

链接&#xff1a;https://pan.baidu.com/s/1KJjkz19AdFd_UHQzBwHd8A 提取码&#xff1a;2191 链接&#xff1a;https://pan.baidu.com/s/1754Oi4BdBE2sNhOndxDUYg 提取码&#xff1a;uzmy 如有侵权&#xff0c;请联系algsCG来进行删除。

STL源码分析(总结)

STL六大组件 容器&#xff08;containers&#xff09;&#xff1a;是一种class template&#xff0c;里面包含各种数据结构。算法&#xff08;algorithms&#xff09;&#xff1a;是一种function template&#xff0c;里面包含各种算法。迭代器&#xff08;iterators&#xff…

STL源码剖析总结

STL源码剖析总结——使用c标准库 前段时间学习了STL&#xff0c;今日开始复盘&#xff0c;整理下汇总&#xff0c;图片均引自侯捷STL源码剖析 GP&#xff08;Generic Programming&#xff09;泛型编程最成功的就是STL&#xff08;Standard Template Library&#xff09;,以头…

《STL源码剖析》总结

&#xfeff;&#xfeff; 转载自 &#xff1a;http://blog.csdn.net/liguohanhaha/article/details/52089914 1、STL概述 STL提供六大组件&#xff0c;彼此可以组合套用&#xff1a; 容器&#xff08;Containers&#xff09;&#xff1a;各种数据结构&#xff0c;如&#x…

STL源码剖析---红黑树原理详解上

转载请标明出处&#xff0c;原文地址&#xff1a;http://blog.csdn.net/hackbuteer1/article/details/7740956 一、红黑树概述 红黑树和我们以前学过的AVL树类似&#xff0c;都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡&#xff0c;从而获得较高的查找性能。不…