使用Modbus将LabVIEW连接到任何PLC

article/2025/11/11 12:50:12

使用Modbus将LabVIEW连接到任何PLC
NI LabVIEW软件可以通过多种方式与可编程逻辑控制器(PLC)通信。 Modbus是Modicon于1979年发布的用于与PLC进行通信的串行通信协议,后来被扩展为TCP协议。 Modbus由于其可用性而成为业界事实上的标准通信协议之一。这里介绍如何使用LabVIEW通过Modbus与联网的PLC通信。
使用LabVIEW数据记录和监控(DSC)模块。该模块包括用于将数据记录到联网的历史数据库,实时和历史趋势,管理警报和事件,将LabVIEW Real-Time目标和Modbus设备联网到一个完整系统中以及为用户界面增加安全性的工具。凭借这些功能,LabVIEW成为用于工业控制应用程序的功能强大的HMI / SCADA软件包。
创建一个Modbus主I / O服务器
在本节中,您将创建一个到Modbus地址的LabVIEW接口,称为I / O服务器。 I / O服务器会使用当前值自动更新LabVIEW。
在LabVIEW入门窗口中,单击文件»新建项目。这将打开一个新的LabVIEW项目。
如果“上下文帮助”窗口不可见,请按Ctrl + H以显示该窗口。使此窗口保持打开状态,以获取有关光标下方项目的有用信息。
在LabVIEW Project窗口中,右键单击My Computer,然后选择New»I / O Server ,如图1所示。
 


图1:通过LabVIEW项目创建新的I / O服务器
在“创建新的I / O服务器”窗口中选择Modbus ,然后单击“继续” 。
从型号下拉菜单中选择Modbus以太网。
 


图2:配置Modbus主I / O服务器
在IP地址字段中输入目标Modbus从站的IP地址。如果您不知道如何确定计算机的IP地址,请参考以下网页:外部链接:如何查找IP信息。在此示例中,我们将Modbus从站与主站运行在同一台计算机上,因此我们使用本地主机IP地址127.0.0.1。
选择确定。在“项目资源管理器”窗口中会自动创建一个库来管理I / O服务器。
通过从项目浏览器窗口中选择文件»全部保存,将项目另存为ModbusDemoProject,将库另存为ModbusDemoLibrary。
通过I / O服务器将共享变量绑定到Modbus地址
在本节中,您将学习创建绑定到Modbus地址的共享变量,使您可以在LabVIEW中对PLC数据进行本地访问。使用共享变量,您可以在一台计算机或网络上的LabVIEW应用程序之间共享数据。
创建绑定到Modbus地址的新共享变量。
右键单击新创建的ModbusDemoLibrary,然后选择“创建绑定变量” 。
在“创建绑定变量”窗口中,将树向下扩展到Modbus1 ,以选择所需的地址范围。
然后选择000001-065535 ,然后单击添加范围。将“数据项”的默认值保留为000001,将“项目数”保留为1。单击确定。
 
图3:选择要绑定到共享变量的Modbus地址
现在,您的配置窗口在“已添加变量”部分中应具有变量000001。
单击确定。这将创建一个绑定到Modbus地址的共享变量,并将其加载到多变量编辑器中。
在“多变量编辑器”中,选择“完成” 。这会将新的共享变量添加到之前创建的库中。
在项目资源管理器中,右键单击000001,然后选择“重命名” 。将变量重命名为Coil1。
注意:LabVIEW DSC模块通过添加将数据,警报和事件直接记录到数据库的功能来增强共享变量,而无需编写LabVIEW应用程序。
通过右键单击ModbusDemoLibrary并选择Deploy All来部署共享变量。这将发布共享变量,使它们在网络上可用于其他计算机。
现在,您可以通过共享变量在LabVIEW中本地访问Modbus数据
在LabVIEW中写入Modbus地址
在项目浏览器中,右键单击我的电脑,然后选择新建»VI 。这将创建一个新的虚拟仪器或VI。 VI用于创建用户界面和可执行的图形代码。
默认情况下,您会看到前面板,这是VI的用户界面。 LabVIEW具有许多内置的UI组件,例如图形,图表,刻度盘等,可用于构建功能强大,直观的UI。选择查看»控件面板,或右键单击前面板上的任意位置以调出控件面板。将鼠标悬停在各个类别上,以探索LabVIEW中的UI组件。
通过选择Express»Button&Switches»Push Button从Controls面板中选择一个按钮,并将其放置在前面板上,
在VI中,选择窗口»显示程序框图或按Ctrl + E以显示程序框图。框图是您构建应用程序行为的地方。注意程序框图上的图标,该图标代表前面板上的按钮。通过按前面板上的按钮,可以更改从框图上的图标端子传递的布尔值。
在项目资源管理器中,展开ModbusDemoLibrary库,然后选择Coil1共享变量。
将Coil1共享变量从项目浏览器拖放至VI的程序框图。共享变量充当程序框图上其他端子的数据源。
右键单击新放置的Coil1共享变量,然后选择访问模式»写入。这使您可以写入共享变量,而不是从共享变量中读取
使用连线工具到接线COIL1共享变量为布尔按钮通过点击COIL1共享变量,然后在布尔按钮,如图6。
现在,VI运行时,数据从布尔按钮流向共享变量。
通过选择视图»功能面板或在程序框图上的任意位置单击鼠标右键,打开“功能”面板。 “功能”选板包含数百个分析功能,控制功能和图形化编程结构。
导航到“编程”»“结构”»“循环”,从“功能”选项板中选择一个while循环。一旦选择了while循环,就会出现光标,如图7所示。这使您可以将while循环包装在一段代码中。
使用while循环光标,通过单击并拖动光标在共享变量和波形图周围放置while循环。现在,通过右键单击“循环条件”并选择“创建控件”,在while循环中创建一个Stop控件。这会在前面板上放置一个“停止”按钮,允许用户停止VI。
图9:在共享变量和控件周围放置While循环
while循环使其中的代码连续执行,直到被用户或VI中的其他逻辑停止。
由于while循环是现在,它将尽可能快地运行。等待直到下一个ms多个VI应添加到循环中,以使循环每隔设置的秒数执行一次,在这种情况下为100ms。
通过选择窗口»显示前面板或按Ctrl + E返回前面板。
单击工具栏上的运行按钮以执行VI。
部署完成后,单击Deploy …窗口上的Close 。当应用程序开始执行时,您现在可以将按钮切换为true和false。这将使用True或False更新共享变量引擎中Modbus绑定的共享变量
恭喜你!您已在LabVIEW应用程序中成功访问了PLC数据,因此可以在解决方案中合并强大的分析和控制功能。
使用分布式系统管理器查看共享变量
在项目资源管理器窗口中,选择工具»分布式系统管理器。这将打开一个窗口,您可以使用该窗口以各种方式(查看,部署,取消部署等)来管理共享变量。
在“变量管理器”的“树”窗格中,展开“我的系统”类别下的localhost项目。找到并展开ModbusDemoLibrary库,然后选择Coil1以在窗口右侧显示自动视图。
现在,您可以在前面板上切换布尔按钮,并在分布式系统管理器中查看结果,如图13所示。
 
图13:在分布式系统管理器中查看Coil1的值
注:分布式系统管理器已随LabVIEW 8.6一起提供。 LabVIEW的早期版本通过转到工具»共享变量»变量管理器并将共享变量拖到“监视的变量:”窗口中来完成此操作。
使用Modbus从站查看线圈值
在文档的第一部分中,我们创建了一个Modbus主站,该主站将布尔值写入Modbus线圈。该线圈值存储在共享变量中,然后我们可以在分布式系统管理器中看到该变量。在下一节中,我们将展示Modbus从站如何读取主站正在更新的线圈值。我们在第一部分中创建的Modbus主站正在寻找IP地址为127.0.0.1(localhost)的Modbus从站。因此,如果我们想通过Modbus与Modbus主站通信,我们需要在本地计算机上创建一个Modbus从站。
在LabVIEW中,通过单击帮助»查找示例打开NI示例查找器。
在NI Example Finder中,浏览至工具箱和模块»数据记录和监控»I / O服务器,双击Modbus Simulator.lvproj 。参见图16。
图14:NI Example Finder中的Modus Simulator
从项目中打开ModbusSimulator.vi,然后运行它。
如果您的Modbus Master VI当前未运行,请运行它。两者同时运行时,您会看到Modbus Simulator上的Digital 1 LED亮起,如图15所示。
图15:运行并显示Coil1真实值的Modbus Simulator
单击Modbus Simulator上的“退出”,然后按Ctrl + E切换到框图。
在程序框图上,注意正在使用共享变量读取Modbus地址000001。该共享变量连接到Modbus主站的Coil1值。

 

 

 

图16:Modbus Simulator框图
为了更好地理解Modbus主站和从站之间的关系,一个有意思的挑战是修改Modbus主站程序以读取和控制Modbus Simulator中的其余值。您将需要在ModDemoProject中将绑定的共享变量添加到Modbus I / O服务器。

程序如下附件所示。
相关资料说明,如下所示。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
文字内容均在附件Word中,同时上文中提到的例子和资料,均在word中的附件里,可点击下载。登录www.bjcyck.com可以查看更多详细信息。这里只是简略的介绍,有任何关于LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序相关问题,请与我们联系。
链接地址为:http://www.bjcyck.com/nd.jsp?id=360#_np=2_358


http://chatgpt.dhexx.cn/article/3nB6OJhh.shtml

相关文章

LabVIEW2020下载与安装教程

链接: https://pan.baidu.com/s/15mAoxOT_9aMnUQet08Wj4g 提取码: evvm 此教程为Labview2020 中文版的安装教程,英文版安装过程相同。 打开解压后的文件夹,进入安装包目录,双击运行【Install.exe】开始安装。 接受许可协议,下一步…

LabVIEW2021中文版安装包、工具包、安装教程下载

下载链接:http://www.eeecontrol.com/labview2021.php 《LabVIEW2021安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述许可协议”,点击下一步 3、点击下一步,安装NI Package Manager 4、NI Package Manager安装…

LabVIEW2022中文版安装包、工具包、安装教程下载

下载链接:http://www.eeecontrol.com/labview2022.php 《LabVIEW2022安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述许可协议”,点击下一步 3、点击下一步,安装NI Package Manager 4、NI Package Manager安…

Django项目:LOL学院学员管理系统

文章目录 Django项目:LOL学院学员管理系统表结构设计登录注册页面登录处理视图逻辑和URL批量插入LOL英雄信息英雄信息主页英雄信息分页封装分页功能添加和编辑英雄信息预留钩子动态生成页面标题控制不同状态显示不同颜色动态生成验证码按条件搜索和保存搜索条件公私…

Python学习笔记(二十三)面向对象版学员管理系统

Python学习笔记(二十三)面向对象版学员管理系统 一、系统需求 使用面向对象编程思想完成学员管理系统的开发,具体如下: 系统要求:学员数据存储在文件中系统功能:添加学员、删除学员、修改学员信息、查询…

基于C# SQLServer开发学员管理系统

.Net-基于C# SQLServer开发学员管理系统喜科堂中级项目实战 课程简介 本课程手把手讲解基于C#和SQLServer数据库开发的学员信息管理系统,通过课程学习可以熟练掌握数据库应用程序开发核心技能,并且独立开发类似项目。 本课程系统讲解项目所有功能点&am…

java/php/net/python驾校学员管理系统设计

本系统带文档lw万字以上答辩PPT查重 如果这个题目不合适,可以去我上传的资源里面找题目,找不到的话,评论留下题目,或者站内私信我, 有时间看到机会给您发 系统体系结构 架构设计的目的是反映一个结构和其他元素之间的…

Python基础(十八):学员管理系统应用

文章目录 学员管理系统应用 一、系统简介 二、步骤分析 三、需求实现

python学习之编写学员管理系统

学习了python基础后,来实际操作一下吧!下面是一个学员管理系统:该系统可存储学员信息(包括 姓名、手机号、微信、qq、成绩),存储在txt文件中。系统有四个核心操作 :学员新增,学员删除…

学员管理系统(完整版附带源码)

学员管理系统是刚接触python时算是一个比较难的小项目,毕竟第一次接触这样的思维逻辑,不过用心学起来还是很有趣的,发现乐在其中,也就不觉得难了。下面给大家分享一下学员管理系统较为完整的代码 1.主程序 import sys ,datetime …

使用python创建学员管理系统

使用面向对象完成了学员管理系统,实现了添加、删除、修改、查询、保存读取等功能,将学员、学员管理后台、开始入口分为了3个py文件,分别是Student.py、Student_management.py、main.py。保存文件名叫student.txt文件。内含注释,我…

分享一款教育培训机构学员信息管理系统

平台入口:http://edu.abc168.online 学员是培训机构的运营主体,对培训机构来说,做好学员管理,往往能直接反映出机构的管理水平和教师的教学水平,是机构建立形象和口碑的关键。以往,培训学校普遍使用手工登记的方式来管…

【shell案例】学员管理系统

前言 学员管理系统涉及到学员的增删改查,这是一个综合性比较强的项目,在所有的编程语言里都会有不同版本的学员信息管理系统,难度适中 效果截图 学员管理系统源码 #!/bin/bash## 随机点名册while true doecho

学员管理系统

大家在学习编程语言的时候,有时候会遇到让编程一个简单的系统等的问题。比如我在学习python的时候,就让编程如下一样的一个学员管理信息的系统: 一个可以添加学员信息,删除学员信息,修改学员信息,查询学员信…

【Python实现】学员管理系统(详细解析)

目录 1、总体要求2、需求分析3、框架设计4、细节设计4.1 程序入口4.2 学员管理类4.2.1 初始化4.2.2 登录认证4.2.3 功能菜单4.2.4 文件操作4.2.5 新增学员4.2.6 删除学员4.2.7 修改学员4.2.8 查找学员4.2.9 显示全部学员4.2.10 学员数据统计4.2.11 清空系统数据 5、总结 1、总体…

[Java] 学员管理系统(服务器—客户端模式)

目录 学员管理系统(服务器—客户端模式)1. 项目演示a. 打开项目b. 运行项目 2. 项目说明a. 所采用的知识点b. 业务交互模式图示 3. 案例代码a. 客户端i. 创建实体类 Studentii. 创建主类 MainApp b. 服务器端i. 创建实体类 Studentii. 创建服务器端线程类…

java 中 Scanner 输入

因为涉及到 io 流输入问题,如果不关闭会一直占用资源。所以使用过后要及时关闭,防止资源一直被占用。 Scanner在使用前要导入 java.util.Scanner 包 1.整数 描述: 输入一个整数,输出这个整数。 输入描述: 输入一个整数&#xff0c…

Java之键盘输入语句Scanner

文章目录 键盘输入语句1. 介绍2. 步骤3. 案例演示 键盘输入语句 1. 介绍 在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是 Scanner 2. 步骤 导入该类的所在包, java.util.*创建该类对象&a…

Java的常用输入输出语句

一、概述 输入输出可以说是计算机的基本功能。作为一种语言体系,java中主要按照流(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的数据流叫做输出流(outputStream)。 Java语言体系中,对数据流…

java中输入语句是怎么写的

java中用户输入语句的写法是: 1、【Scanner sc new Scanner(System.in); 】; 2、【String input sc.next();】。 (视频教程推荐:java视频) 具体代码如下:import java.util.Scanner; public class Number { /** * param a…