Modbus通讯模拟仿真环境的搭建

文章目录

    • 一、概要
    • 二、所需工具介绍
    • 三、搭建虚拟仿真环境
      • 1.Modbus RTU虚拟仿真环境搭建
        • 1.1.虚拟串口工具(VSPD)使用
        • 1.2.虚拟从站工具(ModSim32)使用
        • 1.3.虚拟主站工具(Modscan32)使用
        • 1.4.更改虚拟从站工具(ModSim32)的Modbus寄存器的值
        • 1.5.更改虚拟主站工具(Modscan32)的Modbus寄存器的值
      • 2. Modbus TCP虚拟仿真环境搭建
        • 2.1.虚拟从站工具(ModSim32)使用
        • 2.2.虚拟主站工具(Modscan32)使用
        • 2.3.更改虚拟从站工具(ModSim32)的Modbus寄存器的值
        • 2.4.更改虚拟主站工具(Modscan32)的Modbus寄存器的值
      • 3.其他功能介绍
    • 四、总结

一、概要

在我们工作学习当中,由于没有硬件实物的支持从而会导致我们的学习或者调试工作无法完成。而Modbus协议又是工业自动化中最常用的一个协议。基于其开放性,通用性、经济性的特点,我们在工业自动化设计中经常性的用到。那么下边就针对于无硬件基础的情况下搭建虚拟Modbus通讯环境进行介绍(包括MODBUS RTU和MODBUS TCP)。

二、所需工具介绍

  1. 电脑PC
  2. 虚拟串口工具:Virtual Serial Port Driver(VSPD)

Virtual Serial Port Driver(VSPD) 是由 Eltima Software 开发的软件包,其功能如同 Windows机器上的虚拟 COM 端口仿真器。该软件使你可以创建虚拟 COM 端口,你能使用虚拟零调制解调器电缆成对连接。你所创建的每个虚拟串口都将与你的串行应用程序进行通信,就好像它们是实际物理端口一样。

  1. 虚拟从站工具:ModSim32.exe

ModSim32用来模拟从设备,它可以模拟采集Modbus协议的智能终端,主要用在HMI组态开发中,通过ModSim32改动寄存器的值,模拟智能终端的数据变化,来观察HMI画面的变化,从而使用得画面的变量配置正确

  1. 虚拟主站工具:ModScan32.exe

ModScan32用来模拟主设备,它可以发送指令到从机设备(使用Modbus协议的之智能仪表终端设备)中,从机响应之后,就可以在界面上显示寄存器数据。

三、搭建虚拟仿真环境

1.Modbus RTU虚拟仿真环境搭建

需要用到的软件:Virtual Serial Port Driver(VSPD)、ModSim32.exe和ModSim32.exe
Modbus RTU虚拟仿真环境的搭建其实就是搭建虚拟仿真的Modbus RTU硬件设备,而在Modbus RTU中最重要的就是串口设备(PLC的RS232/485接口、智能仪表的RS232/485接口等),在没有串口设备的情况下,我们需要通过虚拟串口工具(VSPD)在电脑中建立虚拟的串口(即:COM口)。

1.1.虚拟串口工具(VSPD)使用

①虚拟串口工具(VSPD)安装和汉化
第一步:下载虚拟串口工具,如下所示。
在这里插入图片描述
第二步:安装虚拟串口工具,如下图所示

在这里插入图片描述

第三步:复制不补丁里的两个补丁文件到虚拟串口工具安装目录,如下图所示。
在这里插入图片描述
在这里插入图片描述
②虚拟串口工!具(VSPD)的使用
打开虚拟串口工具,如下图1所示,点击“添加端口”按钮,即可在PC上增加一组虚拟串口(COM1/COM2)(可修改)(如图2所示),而添加的这组串口是接通的,相当于在实际设备中用通讯线相连接的一组COM口。
在这里插入图片描述
图1
在这里插入图片描述
图2
③通过串口助手测试虚拟串口创建出来的COM1和COM2。
如果串口1和串口2连接上将会如下图所示。
在这里插入图片描述
如下图所示,从串口1发送“111”到串口2,和从串口2发送“222”到串口1。
在这里插入图片描述
我们可以看到串口1接收可以看到“222”,串口2接收可以看到“111”。
④关闭串口调试助手连接
至此,虚拟串口部分就搭建完成。接下来就可以使用Modscan和Modsim进行下一步测试。

1.2.虚拟从站工具(ModSim32)使用

首先打开Modsim32软件,文件 --> 新建,如下图所示,设备从站地址为1,modbus寄存器地址为1,寄存器长度为8,寄存器选中“03:HOLDING REGISTER”。
在这里插入图片描述
同理,新建线圈、输入状态和输入寄存器,如下图所示,参数一样。
在这里插入图片描述
连接设置 --> 连接 --> 端口1,设置协议格式、设置波特率、数据位、停止位、奇偶校验如下图所示,然后点击确定。
在这里插入图片描述

1.3.虚拟主站工具(Modscan32)使用

首先打开Modscan32软件,文件 --> 新建,如下图所示,设备从站地址为1,modbus寄存器地址为1,寄存器长度为8,寄存器选中“03:HOLDING REGISTER”。
在这里插入图片描述
同理,新建线圈、输入状态和输入寄存器,如下图所示,参数一样。
在这里插入图片描述
连接设置 --> 连接 --> 端口2,设置波特率、数据位、停止位、奇偶校验,等参数设置与ModSim32上设置保持一致,如下图所示,然后点击确定。
在这里插入图片描述
如下图所示,发送量与接收量一直再变化则表明通讯正常。一般情况下发送量与接收量相等。
在这里插入图片描述

1.4.更改虚拟从站工具(ModSim32)的Modbus寄存器的值

在Modsim32软件中,如下图所示,双击00001地址,在弹出的对话框中更改“值”为“开”,点击更新。
在这里插入图片描述
同理,如下图所示,分别双击“10001”地址、“40001”地址和“30001”地址, 设置值分别为“开”,“1234”和“4321”。
在这里插入图片描述
返回Modscan32中可以看到00001、10001、30001和40001地址的值也随之改变,如下图所示。,如下图所示。
在这里插入图片描述

1.5.更改虚拟主站工具(Modscan32)的Modbus寄存器的值

在Modscan32软件中,如下图所示,双击00001地址,在弹出的对话框中更改“值”为“关”,点击更新。
在这里插入图片描述
同理,如下图所示, “40001”地址, 设置值为“1111”,作为主站不能更改输入状态和输入寄存器,因为它们对于主站来说是只读的。
在这里插入图片描述
返回ModSim32中可以看到00001地址和40001的值也随之改变,如下图所示。。

2. Modbus TCP虚拟仿真环境搭建

2.1.虚拟从站工具(ModSim32)使用

首先打开Modsim32软件,文件 --> 新建,如下图所示,设备从站地址为1,modbus寄存器地址为1,寄存器长度为8,寄存器选中“03:HOLDING REGISTER”。
在这里插入图片描述
同理,新建线圈、输入状态和输入寄存器,如下图所示,参数一样。
在这里插入图片描述
连接设置 --> 连接 -->Modbus/TCP服务器,设置Modbus/TCP服务端口为502,如下图所示,然后点击确定。
在这里插入图片描述

2.2.虚拟主站工具(Modscan32)使用

首先打开Modscan32软件,文件 --> 新建,如下图所示,设备从站地址为1,modbus寄存器地址为1,寄存器长度为8,寄存器选中“03:HOLDING REGISTER”。
在这里插入图片描述
同理,新建线圈、输入状态和输入寄存器,如下图所示,参数一样。
在这里插入图片描述
连接设置 --> 连接 -->Remote modbus TCP Server,设置IP Adrress为127.0.0.1(本机IP),端口为502,等参数设置与ModSim32上设置保持一致,如下图所示,然后点击确定。
在这里插入图片描述
如下图所示,发送量与接收量一直再变化则表明通讯正常。一般情况下发送量与接收量相等。
在这里插入图片描述

2.3.更改虚拟从站工具(ModSim32)的Modbus寄存器的值

在Modsim32软件中,如下图所示,双击00001地址,在弹出的对话框中更改“值”为“开”,点击更新。
在这里插入图片描述
同理,如下图所示,分别双击“10001”地址、“40001”地址和“30001”地址, 设置值分别为“开”,“1234”和“4321”。
在这里插入图片描述
返回Modscan32中可以看到00001、10001、30001和40001地址的值也随之改变,如下图所示。
在这里插入图片描述

2.4.更改虚拟主站工具(Modscan32)的Modbus寄存器的值

在Modscan32软件中,如下图所示,双击00001地址,在弹出的对话框中更改“值”为“关”,点击更新。
在这里插入图片描述
同理,如下图所示, “40001”地址, 设置值为“1111”,作为主站不能更改输入状态和输入寄存器,因为它们对于主站来说是只读的。
在这里插入图片描述

3.其他功能介绍

在Modscan32和Modsim32中支持显示数据类型的转换及显示数据与显示数据流的切换。在16进制的数据类型下选择显示数据流,则可清晰的看到Modbus协议发送和接收的报文。如图所示。
在这里插入图片描述
具体操作如下:Modscan:配置 -->显示选项 --> 十六进制(此时数据均显示为16进制,同理二进制、浮点数等也一样)。
在这里插入图片描述
然后,配置 -->显示选项 --> 显示数据流,在此可以看到Modbus发送与接收的报文信息,如下所示。
在这里插入图片描述
Modsim:显示 --> 十六进制(此时数据均显示为16进制,同理二进制、浮点数等也一样)。然后,显示 --> 显示数据流,在此可以看到Modbus发送与接收的报文信息。其与Modscan类似,不再冗述。

四、总结

基于该模拟仿真环境,像一些上位机、触摸屏等都可以在线进行模拟学习调试,也可以作为上位机使用,调试从机设备等。

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

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

相关文章

【算法】第二代遗传算法NSGA-II优化SVR超参数模型

NSGA-II介绍 NSGA-II(Non-dominated Sorting Genetic Algorithm II)是一种多目标优化算法,用于解决具有多个冲突目标的优化问题。它通过模拟进化过程中的自然选择和遗传操作,逐步改进种群中的解,以找到一组尽可能好的解…

Halcon的 Filter (过滤)目录之add_Image算子

Halcon两个图像相加可以应用在图像融合的场景中。通过将两幅图像的亮度信息相加,可以生成一幅新的图像,使得图像的细节更加清晰,提高目标检测和识别的准确率。例如,在红外图像和可见光图像融合中,加法运算可以将两幅图…

Linux程序设计shell程序学习

目录 1、编写shell脚本,通过循环的形式在终端上打印出等腰梯形 2、编写一个bash脚本程序,用for循环实现将当前目录下的所有.c文件移到指定的目录下,最后在显示器上显示指定目录下的文件和目录。 3、自行编写 shell 脚本,实现从…

【JAVA学习笔记】66 - 本章作业(IO流)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter19/src/com/yinhai/homework 1.使用File类和FileWriter类 (1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp public class Homework01 {public static void main(String…

小程序游戏对接广告收益微信小游戏抖音游戏软件

小程序游戏对接广告是一种常见的游戏开发模式,开发者可以通过在游戏中嵌入广告来获取收益。以下是一些与小程序游戏对接广告收益相关的关键信息: 小程序游戏广告平台选择: 选择适合你的小程序游戏的广告平台非常重要。不同的平台提供不同类型…

塔望食研院|骆驼奶市场规模庞大,百亿体量,品牌升级!

自2022年12月塔望咨询开设塔望食品大健康行业与消费研究院(简称塔望食研院)栏目以来,塔望食研院以“为食品行业品牌高质量发展赋能”为理念,不断发布食品大健康行业研究、消费研究报告。塔望食研院致力于结合消费调研数据、企业数…

智能井盖传感器功能,万宾科技产品介绍

在国家治理方面,对社会的治理是一个重要的领域,一定要在推进社会治理现代化过程中提高市政府的管理和工作能力,推动社会拥有稳定有序的发展。在管理过程中对全市井盖进行统一化管理,可能是市政府比较头疼的难题,如果想…

SpringBoot进制转换规则问题

1.填写yml文件 dataSource:driver-class-name: com.mysql.jdbc.Driver789password: 01272.测试类 package com.forever;import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.Spri…

kubernetes-调度

目录 一、k8s调度简介 二、影响kubernetes调度的因素 1、nodename 2、nodeselector 3、亲和与反亲和 (1)nodeaffinity (2)podaffinity(亲和) (3)podantiaffinity&#xff0…

AI系统源码ChatGPT网站源码+ai绘画系统/支持GPT4.0/支持Midjourney局部编辑重绘

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

Python异步编程入门

文章目录 异步编程概念asyncio模块基础event loop和coroutineasync与await关键字代码示例结论在现代软件开发中,异步编程已经成为一个不可或缺的概念,尤其是在处理I/O密集型任务和高并发需求时。Python作为一门多范式编程语言,自3.5版本以来,通过引入asyncio模块和async/aw…

SPASS-图表的创建编辑

点击折线图 展示图如下: 双击图表,可进行编辑 图表基本设定 选择、移动图表元素和调整图表元素的大小 鼠标点击图表元素选择Tab键进行轮换选择Ctrl键鼠标进行多个元素选择十字箭头——移动元素双头箭头——调整元素大小 更改图表的外观 文本的内容、…

番外篇:Linux中好玩的指令(Ubuntu环境)

前言 我知道,Linux的学习总是枯燥乏味的,今天给大家带来一些好玩的指令,供大家娱乐开心,整理不易,希望大家能够多多支持一下。 1. lolcat指令 输入以下命令即可安装lolcat: sudo apt-get install lolcat 安…

洛谷 P1020 [NOIP1999 普及组] 导弹拦截【一题掌握三种方法:动态规划+贪心+二分】最长上升子序列LIS解法详解

P1020 [NOIP1999 普及组] 导弹拦截 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码动态规划(NOIP要求:时间复杂度O(n^2^))贪心二分(O(nlgn)) 后话额外测试用例样例输入 #1…

微服务-grpc

微服务 一、微服务(microservices) 近几年,微服这个词闯入了我们的视线范围。在百度与谷歌中随便搜一搜也有几千万条的结果。那么,什么是微服务 呢?微服务的概念是怎么产生的呢? 我们就来了解一下Go语言与微服务的千丝…

Java设计模式之迭代器模式

定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 结构 迭代器模式主要包含以下角色: 抽象聚合角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合角色:实现抽象聚合类&a…

电机控制::理论分析::延迟环节对系统的影响

控制工程与理论 - 知乎 (zhihu.com) 浅论控制器的增益大小 (上) - 知乎 (zhihu.com) 浅论控制器的增益大小 (下) - 知乎 (zhihu.com) 延迟环节对控制系统的影响_延时环节的传递函数-CSDN博客

2023年双11有哪些便宜的云服务器值得推荐?

每年的双11期间各大云计算服务商都会推出特价云服务器,今年自然也不例外,下面给大家分享2023年双11有哪些便宜的云服务器值得推荐。 1、阿里云【传送门>>>】 阿里云双11推出了金秋云创季活动,2核2G3M不限流量,1年99元&…

华为荣耀软开秋招面经问题整理

一、八股 1.linux常用命令 Linux常用命令(面试题)_linux常用命令面试题-CSDN博客 常用命令、系统命令、打包命令、vim、开关机命令 2.socket通信调用api过程 TCP UDP 3.进程和线程的区别 进程是系统进行资源分配和调度的基本单元,线程…

STM32MPU6050角度的读取(STM32驱动MPU6050)

注:文末附STM32驱动MPU6050代码工程链接,需要的读者请自取。 一、MPU6050介绍 MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器芯片,由英国飞利浦半导体(现为恩智浦半导体)公司生产。它通过电子接口&#xff08…