总线(四)Modbus总线 协议

news2024/12/27 13:07:06

文章目录

    • Modbus技术背景
    • Modbus OSI分布
    • Moudbus分类
    • 通讯过程
    • Moudbus协议
    • 通信过程以及报文解析
    • RTU 与 ASCII 收发数据区别


Modbus技术背景

Modbus是一种串行通信协议。
1971年,Modicon公司首次退出Modbus协议,ModbusRTU和Modbus ASCII诞生于此。
后来施耐德电气(SchneiderElectric)收购了Modicon公司,并在1997年推出了ModbusTCP协议。2004年,中国国家标准委员会正式把Modbus作为了国家标准。
Modbus成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。


Modbus OSI分布

Moudbus工作在osi的应用层、数据链路层、物理层
在这里插入图片描述


Moudbus分类

Moudbus-RTU、Moudbus-ASCII、Moudbus-TCP

ModbusRTU和ModbusASCII主要用于串行通信领域。
ModbusTCP则常用于以太网通信。
Moudbus规定Moudbus-RTU是设备必须支持的协议也是默认选项。


通讯过程

Modbus是主从方式通讯,不能同步进行通信,总线上每次只有一个数据进行传输。
主机发送,从机应答,主机不发送,总线上就没有数据通讯。
MODBUS 协议允许在各种网络体系结构内进行简单通信。
在这里插入图片描述
每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用 MODBUS协议来启动远程操作。


Moudbus协议

Modbus使用一种简单的MasterandSlave主从协议(客户机/服务器协议)进行通信。客户机作为主站,向服务器发送请求;服务器(从站)接到请求后,对请求进行分析并作出应答。
其中使用的通信帧被称为应用数据单元(Application Data Unit,ADU),它包括通信地址段、功能代码段、数据段和校验段。
在这里插入图片描述
通讯格式:Address(8 bit)+ Function(8 bit)+ Data(N x 8 bit)+ CRC check(16 bit)

通讯地址
占用一个字节(8bit) 通信地址,范围0-255。其中有效范围是1-247。

01-247248-255
广播地址子节点单独地址保留

一般0地址为主机,1-247地址为从机地址。

功能码
MODBUS 功能码分为三类:公共功能码、用户定义功能码、保留功能码
在这里插入图片描述
公共功能码定义
在这里插入图片描述
占用一个字节,不同功能码对应不同功能。常用功能码:

功能码功能含义寄存器地址
01读单个或多个位状态00001-09999
05写单个位状态00001-09999
15写多个位状态00001-09999
03读单个或多个寄存器40001-49999
06写单个寄存器40001-49999
16写多个寄存器40001-49999

数据:根据功能码不同,有不同结构

CRC check
CRC校验:CRC-16 低位在前,高位在后。为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致。

MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如:寄存器大小
值16 – 比特 0x1234 发送的第一字节为 0x12 然后 0x34

通信过程以及报文解析

发送: 从机的地址+我要干嘛的功能码+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码
回复: 从机的地址+主机发我的功能码+要发送给主机数据的字节数+数据+校验码

查询报文解析
主机发送: 01 03 00 00 00 01 84 0A
从机回复: 01 03 02 19 98 B2 7E

主机发送报文解析:

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据
00 00-代表查询的起始寄存器地址.说明从0x0000开始查询。这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据
00 01-代表查询了一个寄存器.结合前面的00 00,意思就是查询从0开始的1个寄存器值
84 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到84前面为止;

从机回复报文解析:

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据。这里要注意的是注意发给从机的功能码是啥,从机就要回复同样的功能码,如果不一样说明这一帧数据有错误
02-代表后面数据的字节数,因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数;
19 98-寄存器的值是19 98,结合发送的数据看出,01这个寄存器的值为19 98
B2 7E-循环冗余校验

修改功能报文解析
主机发送: 01 06 00 00 00 01 48 0A
从机回复: 01 06 00 00 00 01 48 0A

主机发送报文解析:

01-主机要查询的从机地址
06-功能码,06代表修改单个寄存器功能,修改有些不同,有修改一个寄存器和修改多个寄存器;
00 00-代表修改的起始寄存器地址.说明从0x0000开始.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止;

从机回复报文解析:

01-从机返回给主机自己的地址,说明这就是主机查的从机
06-功能码,代表修改单个寄存器功能,主机发啥功能码,从机就必须回什么功能码;
00 00-代表修改的起始寄存器地址.说明是0x0000.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止;


RTU 与 ASCII 收发数据区别

1、发送数值方式不同
用RTU方式,也叫16进制方式,要发0x03数据,RTU方式就发送00000011。
用ASCII发送0x03,就要发送0的ASCII码0x30和3的ASCII码0x33,对应到2进制也就是发送00110000和00110011。

2、发送时序位数不同
RTU方式只需要发送8位就可以了(加上起始位和停止位就是10位数据)。
ASCII码方式发送就需要两个8位(每个8位分别加上起始位和停止位就是20位数据)。

因此ASCII码发送数据量是RTU方式的2倍,所以ASCII码效率更低。但是ASCII更符合串口打印查看,因为串口发送的数据一般都是文本模式(ASCII 可见字符是从32—126)。而采用RTU方式(16进制发送)会出现乱码,如果是串口助手的话就会显示□□□□。

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

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

相关文章

图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM)(附代码)

一、前言众所周知,深度学习是一个"黑盒"系统。它通过“end-to-end”的方式来工作,输入数据例如RGB图像,输出目标例如类别标签、回归值等,中间过程不可得知。如何才能打开“黑盒”,一探究竟,让“黑…

[神经网络]Transfomer架构

一、概述 Transfomer架构与传统CNN和RNN最大的区别在于其仅依赖自注意力机制,而没有卷积/循环操作。其相较于RNN,不需要进行时序运算,可以更好的进行并行;相较于CNN,其一次可以关注全图而不局限于感受野尺寸。 二、模…

充电协议: 快充协议,如何选充电宝?

快充协议(存在两种:电压; 电流) 目前市面上的快充技术大多遵循2个技术方向: 以高通QC、联发科PEP、华为FCP为首的高压低电流快充技术; 另一种就是以OPPO的VOOC以及华为SCP为首的低电压大电流快充技术。 目前常见的快充标准还有三星AFC、联发…

Fluent自定义物理场

1 概述场(field)是物理的基础概念之一,表明了物理量在空间的分布。根据物理量的类型,可分为标量场(scalar field)、向量场(vector field)、张量场(tensor field&#xff…

linux环境下安装mariadb

采用yum的形式,linux发行版为Rocky Linux9.1,安装用户为有sudo权限的用户,非root用户 1.查询是否已经安装过 yum list installed|grep mariadb2.安装mariadb 如果使用非root用户,请记得加sudo yum install mariadb sudo yum in…

SQLI-Labs(3)8-14关【布尔盲注和时间盲注】

目录 第八关 第九关: 第十关 第十一关 第十二关 第十三关 第十四关 第八关 我们用测试语句来测试是否为注入点 从上图中得知存在注入点,那么接下来就是爆列 一共有三列,接下来用union select 和报错注入都试一下发现没有回显点&…

C语言-基础了解-14-C指针

C指针 一、指针 通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的 每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示…

(蓝桥真题)异或数列(博弈)

题目链接:P8743 [蓝桥杯 2021 省 A] 异或数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例输入: 4 1 1 1 0 2 2 1 7 992438 1006399 781139 985280 4729 872779 563580 样例输出: 1 0 1 1 分析:容易想到对于异或最大值…

计算机体系结构分类和嵌入式系统

一、计算机体系结构分类——flynn分类法 二、嵌入式系统芯片 在嵌入式系统中,常见的芯片主要分为四种类似 DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号…

【C3】进程休眠,时间和延时,延缓,proc文件系统,内存分配,数据类型,内核中断,通过IO内存访问外设

文章目录1.实现进程休眠:条件不够歇一歇,把CPU让给其他进程2.内核表示时间和实现延时:linux中有一个时钟会周期性产生中断,linux将这中断作为时间基准3.内核实现延缓操作:内核定时器,tasklet,wo…

蓝桥杯-李白打酒加强版

蓝桥杯-李白打酒加强版1、问题描述2、解题思路3、代码实现1、问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走,提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次…

西电软件工程概论核心考点汇总(期末真题+核心考点)

文章目录前言一、历年真题1.1 选择题1.2 判断题1.3 简答题1.4 应用题二、核心考点2.1 软件工程概念2.2 计算机科学和软件工程概念对比2.3 考虑质量的三种方法2.4 过程质量模型2.5 系统组成元素2.6 螺旋模型2.7 关键路径法计算2.8 风险管理2.9 需求类型判断(根据例子选择需求类型…

【论文阅读 WWW‘23】Zero-shot Clarifying Question Generation for Conversational Search

文章目录前言MotivationContributionsMethodFacet-constrained Question GenerationMultiform Question Prompting and RankingExperimentsDatasetResultAuto-metric evaluationHuman evaluationKnowledge前言 最近对一些之前的文章进行了重读,因此整理了之前的笔记…

ubuntu安装使用putty

一、安装 安装虚拟机串口 sudo apt-get install putty sudo apt install -y setserial 二、使用 虚拟机连接串口 sudo setserial -g /dev/ttyS* 查看硬件对应串口 找到不是unknown的串口 sudo putty

插件化开发入门

一、背景顾名思义,插件化开发就是将某个功能代码封装为一个插件模块,通过插件中心的配置来下载、激活、禁用、或者卸载,主程序无需再次重启即可获取新的功能,从而实现快速集成。当然,实现这样的效果,必须遵…

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 文本特征处理小结

目录文本特征处理作用常见的文本特征处理方法添加n-gram特征说明提取n-gram文本长度规范说明实现导包问题记录心得文本特征处理作用 文本特征处理包括为语料添加具有普适性的文本特征, 如:n-gram特征 以及对加入特征之后的文本语料进行必要的处理, 如: 长度规范. 这些特征处…

vue3的插槽slots

文章目录普通插槽Test.vueFancyButton.vue具名插槽Test.vueBaseLayout.vue作用域插槽默认插槽Test.vueBaseLayout.vue具名作用域插槽Test.vueBaseLayout.vue普通插槽 父组件使用子组件时,在子组件闭合标签中提供内容模板,插入到子组件定义的出口的地方 …

云桌面技术初识:VDI,IDV,VOI,RDS

VDI(Virtual Desktop Infrastucture,虚拟桌面架构),俗称虚拟云桌面 VDI构架采用的“集中存储、集中运算”构架,所有的桌面以虚拟机的方式运行在服务器硬件虚拟化层上,桌面以图像传输的方式发送到客户端。 …

序列化与反序列化概念

序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。 在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复用, 但…

taobao.item.delete( 删除单条商品 )

¥开放平台免费API必须用户授权 删除单条商品 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, s…