Modbus RTU通信应用

一、功能概述

1.1 概述

        Modbus串行通信协议是Modicon公司在1970年开发的。

        Modbus串行通信协议有Modbus ASCII和Modbus RTU两种模式,Modbus RTU协议通信效率较高,应用更加广泛。

        Modbus RTU协议是基于RS232和RS485串行通信的一种协议,数据通信采用主从方式进行传送,主站发出具有从站地址的数据报文,从站接收到报文后发送相应报文到主站进行应答。

        Modbus RTU协议网络上只能存在一个主站,主站在Modbus RTU网络上没有地址。每次从站必须有唯一的地址,从站地址为0-247,其中0为广播地址。

1.2 报文结构

        Modbus RTU协议报文结构:

        一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。(CRC校验L和CRC校验H属于错误校验码,占2个字节)

        报文举例:

从站地址码功能码数据地址数据区错误校验码
0106000100179804

        这一串数据的作用是把数据H0017(十进制数为23)写入01号从站的地址H0001中。

1.3 功能码及数据地址 

        Modbus 设备之间的数据交换是通过功能码实现的,功能码有按位操作的,也有按字操作的。

        在S7-1200 PLC的Modbus RTU协议通信中,不同的Modbus RTU协议数据地址区对应不同的S7-1200 PLC数据区。

功能码描述/字操作Modbus数据地址S7-1200PLC数据地址区
01读取输出位00 001-09 999Q0.0-Q1023.7
02读取输入位10 001-19 999I0.0-I1023.7
03读取保持寄存器40 001-49 999DB数据块、M位存储区
04读取输入字30 001-39 999IW0-IW1022
05写一个输出位00 001-09 999Q0.0-Q1023.7
06写一个保持寄存器40 001-49 999DB数据块、M位存储区
15写多个输出位00 001-09 999Q0.0-Q1023.7
16写多个保持寄存器40 001-49 999DB数据块、M位存储区

二、指令说明 

        在“指令”窗格中依次选择“通信”→“通信处理器”→“MODBUS(RTU)”选项,出现MODBUS RTU指令列表。

         Modbus RTU指令主要包括3个指令:“Modbus_Comm_Load”(通信参数装载)指令、“Modbus_Master”(主站通信)指令和“Modbus_Slave”(从站通信)指令。

        早期版本的Modbus RTU指令( MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。

        新版本的 Modbus RTU指令(MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。

2.1 Modbus_Comm_Load 指令

        该指令用于组态RS232和RS485通信模块端口的通信参数,以便进行Modbus RTU协议通信。每个Modbus RTU通信的端口,都必须执行一次“Modbus_Comm_Load”指令来组态。各引脚含义如下:

         ①在进行Modbus RTU通信前,必须执行该指令组态模块端口通信,然后才能使用通信指令进行Modbus RTU通信。在启动OB中调用该指令或者在OB1中使用“FirstScan”调用执行一次。

        ②当“Modbus_Master”(主站通信)和“Modbus_Slave”(从站通信)指令被拖拽到用户程序时,将为其分配背景数据块,“Modbus_Comm_Load”指令的MB_DB参数将引用该背景数据块。

2.2 Modbus_Master 指令

        “Modbus_Master”指令可通过由“Modbus_Comm_Load”指令组态的端口作为Modbus RTU主站进行通信。

         ①同一串行通信接口只能作为Modbus RTU主站或从站。

        ②当同一串行通信接口使用多个“Modbus_Master”指令时,“Modbus_Master”指令必须使用同一个背景数据块,用户程序必须使用轮询方式执行指令。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#Gitee 的 WebHooks 实现代码自动化部署#

1:安装git 2:php同步脚本 3:配置webhook 一&#xff1a;安装git服务 // 查看是否安装了git git --version// 如果未安装&#xff0c;执行安装命令 yum install git 2&#xff1a;编写同步PHP脚本 <?php //理发店钩子 error_reporting(1); set_time_limit(0); // 部署目…

MySQL-Explain简版

文章目录 前言1.什么是explain2.explain有什么用3.explain怎么用理解explain的列代表的意思id列select_type列table列partitions列type列possible_keys列key列key_len列ref列rows列Extra列 前言 没必要记吧&#xff0c;忘了直接查 1.什么是explain 在select语句之前增加explai…

C++面向对象三大特性 -- 多态(重点)

目录 一、什么是多态&#xff1f;二、多态的定义和实现2.1 虚函数2.2 虚函数的重写2.3 多态的构成条件2.4 C11中的override和final2.5 重写(覆盖)&#xff0c;重载&#xff0c;重定义(隐藏)的对比 三、多态的原理3.1 虚函数表3.2 再谈多态的条件3.3 动态绑定和静态绑定3.4 单继…

微分流形2:流形上的矢量场和张量场

来了来了&#xff0c;切向量&#xff0c;切空间。流形上的所有的线性泛函的集合&#xff0c;注意是函数的集合。然后取流形上的某点p&#xff0c;它的切向量为&#xff0c;线性泛函到实数的映射。没错&#xff0c;是函数到实数的映射&#xff0c;是不是想到了求导。我们要逐渐熟…

基于FPGA实现OSD功能

简介 基于FPGA平台实现简单的OSD的功能,对于FPGA实现OSD只能实行简单的画框和文字叠加,如果实现复杂的车道线画框,则没法实现(起码我个人感觉,这个功能没有思路执行)。 FPGA实现OSD功能需要7系列平台,以及VDMA、OSD等Xilinx公司的IP使用(本功能工程采用Vivado2017.4平台…

OSCP最新考试QA

枚举提示 初始枚举 对你的目标进行光线扫描。 例如&#xff0c;扫描您的考试机器上的10个常见端口。 在等待彻底和更长时间的扫描时&#xff0c;手动与找到的服务交互。 仔细列举 避免对多个目标进行大量扫描。 运行不安全扫描后还原计算机。 重新运行扫描以确保所有信…

【Unity3D日常开发】Unity3D中比较string字符串的常用方法

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 字符串string的比较有很多方法&#xff0c;比如&#xff1a; …

MongoDB原生语句更新嵌套数组的值

一、更新一层嵌套数组 首先执行MongoDB原生语句脚本在user集合中产生一些样本数据,如下所示: db.user.insert({"_id":1,"title":"爱情公寓3","students":[{"student_id":1001,"student_name":"林宛瑜&quo…

表单验证:输入的字符串以回车分隔并验证是否有

公司项目开发时&#xff0c;有一个需求&#xff0c;需要对输入的字符串按回车分隔并验证是否有重复项&#xff0c;效果如下&#xff1a; 表单代码&#xff1a; <el-form-item label"IP地址条目&#xff1a;" prop"ipAddressEntry"><el-inputtype&…

计算机内存中的缓存Cache Memories

这篇写一下计算机系统中的缓存Cache应用场景和实现方式介绍。 Memory hierarchy 在讲缓存之前&#xff0c;首先要了解计算机中的内存结构层次Memory hierarchy。也就是下图金字塔形状的结构。 从上到下&#xff0c;内存层次结构如下&#xff1a; 寄存器&#xff1a;这是计算机…

FPGA_学习_13_方差计算小模块

测距器件APD的性能与器件本身的温度、施加在APD的偏置电压息息相关。 在不同的温度下&#xff0c;APD的偏压对测距性能的影响非常大。 要确定一个合适的APD的偏压Vopt&#xff0c;首先你要知道当前温度下&#xff0c;APD的击穿电压Vbr&#xff0c;一般来讲&#xff0c;Vopt Vb…

桥梁安全生命周期监测解决方案

一、方案背景 建筑安全是人们生产、经营、居住等经济生活和人身安全的基本保证&#xff0c;目前我国越来越多的建筑物逐 步接近或者已经达到了使用年限&#xff0c;使得建筑物不断出现各种安全隐患&#xff0c;对居民的人身安全和财产安全产 生不利影响&#xff0c;因此房…

gitee 配置ssh 公钥(私钥)

步骤1&#xff1a;添加/生成SSH公钥&#xff0c;码云提供了基于SSH协议的Git服务&#xff0c;在使用SSH协议访问项目仓库之前&#xff0c;需要先配置好账户/项目的SSH公钥。 绑定账户邮箱&#xff1a; git config --global user.name "Your Name" git config --glob…

看了2023年的一线互联网公司时薪排行榜!值得思考

前言 根据最近针对国内的一线互联网企业做的调研&#xff0c;汇总了他们的平均时薪水平&#xff0c;最终出了一个排行榜&#xff01; 首先我们来看下&#xff0c;排行榜分哪几个Level&#xff0c;分别为初级、中级、高级、资深、专家/架构这五个&#xff0c;主要根据工程师的…

opencv对相机进行畸变矫正,及矫正前后的坐标对应

文章目录 1.背景2.需求分析3.解决方案3.1.镜头畸变矫正3.2.知道矫正后的画面坐标&#xff08;x&#xff0c;y&#xff09;&#xff0c;求其在原画面的坐标&#xff08;x&#xff0c;y&#xff09;3.2.知道原画面坐标&#xff08;x1&#xff0c;y1&#xff09;&#xff0c;求其在…

fastadmin框架重定向

由于&#xff0c;我们一打开fastadmin框架就进入到前端页面很麻烦&#xff0c;下面这种方法可以解决这个问题。 首先我们找到这个路径 找到重定向&#xff0c; application》index》controller》index 原本文件是这个样子&#xff1a; <?phpnamespace app\index\controll…

【ArcGIS Pro二次开发】(53):村规制表、制图【福建省】

这篇算是村规入库的一个延续。 村庄规划中有一些图纸是需要严格按照规范制图&#xff0c;或形成一定规范格式的。 这些图纸的制作基本算是机械式的工作&#xff0c;可以用工具来代替人工。 一、要实现的功能 如上图所示&#xff0c;在【村庄规划】组&#xff0c;新增了两个工…

配置代理——解决跨域问题(详解)

之前写项目的时候总会遇到配置代理的问题&#xff0c;可是配置了之后有时有用&#xff0c;有时就没有用&#xff0c;自己之前学的也是懵懵懂懂&#xff0c;于是专门花了一个小时去了解了如何配置代理跨域&#xff0c;然后在此记录一下&#xff0c;方便自己以后查阅。 一、 常用…

pytorch实现梯度下降算法例子

如题&#xff0c;利用pytorch&#xff0c;通过代码实现机器学习中的梯度下降算法&#xff0c;求解如下方程&#xff1a; f ′ ( x , y ) x 2 20 y 2 {f}(x,y) x^2 20 y^2 f′(x,y)x220y2 的最小值。 Latex语法参考&#xff1a;https://blog.csdn.net/ViatorSun/article/d…

推荐系统(十)用户行为序列建模-Pooling 路线

对推荐系统而言&#xff0c;准确捕捉用户兴趣是其面临的核心命题。不管是样本、特征还是模型结构等方面的优化&#xff0c;本质上做的事情都是在提高推荐系统对用户兴趣的捕捉能力&#xff0c;因此如何提高这种能力&#xff0c;对推荐效果的提升有重要作用&#xff0c;也是算法…