Modbus协议学习方法

  在刚开始接触modbus协议的时候,很容易被里面的各种功能码搞晕,同时在编写程序的时候也容易搞不清楚每一位数据代表的含义。如果在学习的过程中有实际的发送和接收数据的例子话,那么理解modbus协议就会更容易一些。
  下面我将自己借助软件学习的方法分享给大家,文章中所用到的软件下载地址 https://download.csdn.net/download/qq_20222919/87960214。

  这里要用到三个软件:虚拟串口、Modbus主机、Modbus从机。

  • 虚拟串口主要用来在电脑上虚拟出来2个串口,并将这两个串口连接起来。这样不需要在电脑上接USB转串口的硬件设备,依然可以使用串口来收发数据。
    在这里插入图片描述

  • Modbus Poll 这个是模拟Modbus主机的软件,通过这个软件可以读取火或者设置从机中寄存器的值。
    在这里插入图片描述

  • Modbus Slave 这个是模拟Modbus从机的软件,在这个软件中可以设置寄存器的地址和值,配合主机来使用。
    在这里插入图片描述

  接下来开始这三个软件的使用,首先安装虚拟串口软件,安装完成后打开虚拟串口软件。
在这里插入图片描述

  打开后可以看到界面的左上方显示了两个物理端口COM1和COM2,这两个串口是我电脑上存在的串口。
在这里插入图片描述

  如果要用这两个串口的话,就需要在外部将单片机的串口和电脑上的USB串口连接起来才能用。但是为了方便一点,不想在外部接线。只想在电脑上模拟串口,那么此时就需要新建一对虚拟串口。
在这里插入图片描述
  直接在虚拟串口的软件右边点击Add pair按钮,添加2个串口COM3和COM4
在这里插入图片描述
  这是在虚拟串口软件的左边就会显示出来添加后的两个虚拟串口,同时在电脑的设备管理器中也能看到添加后的两个串口。添加的这两个串口COM3和COM4是直接连接在一起的,也就是是COM3的发送端连接的是COM4的接收端,COM4的发送端连接的是COM3的接收端。

  可以直接使用串口助手进行测试,打开两个串口助手,一个选择COM3一个选择COM4.
在这里插入图片描述
  用这两个串口助手互相发数据。
在这里插入图片描述
  可以看到这两个虚拟串口可以互相收发数据,下面我们就使用这两个虚拟串口来进行Modbus数据的收发。

  关掉这两个串口助手,打开Modbus Slave 软件。
在这里插入图片描述
  在工具栏上选择连接—连接
在这里插入图片描述
  这里选择的连接方式为串口连接,然后选择COM3,设置波特率和奇偶校验方式。设置好之后点确定按钮。
  接下来在菜单栏选择设置—从站设置
在这里插入图片描述

  这里设置从机地址为1,寄存器起始地址为100,寄存器数量为10个,寄存器的类型为线圈状态。

在这里插入图片描述

  然后修改寄存器的状态值,直接在0或1上双击鼠标左键,就会弹出一个界面可以修改状态值为On或者Off。
在这里插入图片描述

  此时从机就配置好了,接下来配置主机,打开Modbus Poll软件,在工具栏中选择连接—连接。
在这里插入图片描述
  这里也选择串口连接,串口选择COM4,其他的设置需要和从机一样,然后点确定按钮。

在这里插入图片描述
  接下来在工具栏中选择设置–读写定义。

在这里插入图片描述
  设置要读取的从机地址,这个地址要和刚才配置的从机地址一样。选择要使用的功能码,然后设置要读取的寄存器起始地址和要读取的寄存器数量。设置完成之后点击确定按钮。
在这里插入图片描述
  此时就可以看到主机从从机读取到的线圈状态值。
在这里插入图片描述
  在从机寄存器上双击鼠标,改变线圈的状态,此时主机界面上读取到的线圈状态值也会发生改变。

在这里插入图片描述
  在Modbus Poll界面上单击放大镜的图标,打开数据监控。
在这里插入图片描述

  通过这个数据监控,就可以看到主机发送的数据和从机接收的数据。
在这里插入图片描述
  然后将这些数据和Modbus通信协议对照起来看。
在这里插入图片描述
  通过对比就可以很清晰看出来发送和接收数据中每一位数据的含义。

  比如发送数据中的第二个01代表的是功能码,接下来两位数据0x0064就表示寄存器的起始地址100,后面的0x0003表示要读取3个线圈的值。最后的两位数为CRC校验值,这里可以不用管。接收数据的第二个01也是功能码,第三个01表示读取到了1个字节的数据,05表示读取到的线圈值为0x05,由于线圈是按位表示的这里将0x05换算为二进制 0101,也就是说读取到3个线圈的值分别是1、0、1。

  接下来在Modbus中将寄存器的起始地址设置为110,
在这里插入图片描述

  此时接收到数据就会返回一个错误码。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  这样通过Modbus文档和实际发送接收的数据进行对比,就可以很容易的理解文档中说的一些概念。

  如果想观察其他功能码的使用时,直接在Modbus主机和从机软件中设置就行。比如设置从机为保持寄存器,并修改寄存器的值。
在这里插入图片描述
  主机读取从101开始的一个寄存器地址。
在这里插入图片描述

  通过数据监控可以看出03为功能码,0x0065为寄存器起始地址101,0x0001为要读取的寄存器数量。
在这里插入图片描述
  返回的数据03为功能码,02为字节数,0x00C8为读取到的寄存器值200。
在这里插入图片描述

  接下来将主机功能码改为读取写多个寄存器值。
在这里插入图片描述
  从寄存器100开始连续写3个寄存器的值。在Modbus Poll界面上双击寄存器的值,在打开的界面中直接输入需要设置的值,然后点确定按钮。
在这里插入图片描述
  这时在从机的界面上就可以看到寄存器的值已经被修改过来了。
在这里插入图片描述
  将监控到的数据和Modbus文档对比去着去看
在这里插入图片描述

  这样一边看文档一边自己动手去收发数据,去理解功能码的含义和使用方法,学习Modbus协议的时候就会更容易一点。如果是学习Modbus TCP的话,也可以用这个这个软件去观察数据。在选择通信方式的时候,直接选择网络模式就可以了。
在这里插入图片描述
  前面6个数据为Modbus TCP通信时的MBAP报文头,数据的最后面取消了CRC校验。其他的数据和Modbus RTU一样,这里就不多做介绍了。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 引入腾讯地图解决H5端接口跨域

一、申请腾讯地图key 进入腾讯地图开放平台 二、引入腾讯地图 1. 安装 vue-jsonp npm install --save vue-jsonp 2.在 main.js 中使用 import { VueJsonp } from vue-jsonp; Vue.use(VueJsonp); 3.获取定位 // 获取当前位置 getLocation() {let _this this;uni.getLocation…

经典案例:SpringBoot+Redis 实现10W人秒杀抢购

本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下&#xff1…

【数据库】mysql主从复制与读写分离

文章目录 一、读写分离1. 什么是读写分离2. 为什么要读写分离3. 什么时候要读写分离4. 主从复制与读写分离5. Mysql 主从复制原理(主从复制的类型)6. Mysql 主从复制的工作过程7. Mysql 读写分离原理 二、主从复制的配置操作1. 环境配置2. 搭建 MySQL主从…

BI-SQL丨角色和用户

角色和用户 在数仓的运维工作中,经常需要为用户开通不同权限的账号,使用户可以正常访问不同的数据,那么这就需要我们了解SQL Server的权限体系。 名词解释 登录名: 用来登录服务器的用户账号,例:sa&…

从0到1精通自动化测试,pytest自动化测试框架,测试用例setup和teardown(三)

目录 一、前言 二、用例运行级别 三、函数式 1、setup_function / teardown_function 2、setup_module / teardown_module 四、类和方法 五、函数和类混合 一、前言 学过 unittest 的都知道里面用前置和后置 setup 和 teardown 非常好用,在每次用例开始前和…

Vue之计算属性(computed)

文章目录 前言一、计算属性二、实例1.缓存优势计算属性内部的属性,在第一次访问时会读取它的值,然后存入缓存 2.简写简写其实就是当确定计算属性内的属性只读不更改,即只有get函数没有写set函数时简写的方式 3.补充 总结 前言 计算属性 一、…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析 哈工大计算机网络课程传输层协议详解之:可靠数据传输的基本原理 哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:T…

群晖NAS搭建WebDV服务手机ES文件浏览器远程访问

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址 转载自cpolar极点云文章:群晖NAS搭建WebDAV服务手机ES文件浏览器远程访问 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,我们在群辉中开启WebDav服…

JVM-垃圾回收-基础知识

基础知识 什么是垃圾 简单说就是没有被任何引用指向的对象就是垃圾。后面会有详细说明。 和C的区别 java:GC处理垃圾,开发效率高,执行效率低 C:手工处理垃圾,如果忘记回收,会导致内存泄漏问题。如果回…

【小沐学数据库】MongoDB下载、安装和入门(Python)

文章目录 1、简介2、下载和安装2.1 平台支持2.2 MongoDB Community Server2.3 MongoDB Shell2.4 MongoDB Compass2.5 pymongo库 3、概念3.1 数据库3.2 文档(Document)3.3 集合(Collection)3.4 元数据3.5 数据类型 4、Python代码测试4.1 连接数据库4.2 指…

oracle字符集

1、查看oracle字符集 如果操作系统或者客户端的字符集设置和数据库设置不一样就会出现乱码 查询NLS_LANG即操作系统环境变量要设为 NLS_LANGUAGE_NLS_TERRITORY**.NLS_CHARACTERSET**,如: export NLS_LANG“AMERICAN_AMERICA.AL32UTF8”

Android中构建多视图 RecyclerView的正确打开方式

Android中构建多视图 RecyclerView的正确打开方式 简介 漂亮的UI能极大提高用户留存率,相反糟糕的UI将导致App安装率下降。 UI体验对用户留存率有特别大的影响,较差的体验app我可能用不了2s就要卸载掉。 你需要学习内容如下: 使用单个R…