在LabVIEW中使用Modbus

NI 提供了三种主要机制与 Modbus 设备进行接口:(1) 高级 OPC 服务器,(2) Modbus I/O 服务器,以及 (3) 在 NI LabVIEW 软件中通过 LabVIEW 实时或 LabVIEW 数据记录与监控控制(DSC)模块引入的低级 Modbus API。

LabVIEW Modbus API

当您的应用程序需要高度控制 Modbus 请求的顺序和时序时,低级 Modbus API 是首选选项。在灵活性至关重要的情况下,低级 API 通常也是首选。然而,LabVIEW Modbus API 提供的灵活性和功能也意味着您的应用程序代码必须更加复杂,以正确管理 API。为了帮助您理解这种复杂性,LabVIEW 提供了两个示例。

Modbus 入门示例

第一个示例,Modbus Library.lvproj,提供了 API 功能的基本概述。它还展示了 PC 和实时目标上的实现差异。图 1 显示了实时 Modbus 主机示例中的代码。

图 1:实时目标上的主机.vi

此示例展示了使用 LabVIEW API 的 Modbus 应用程序的核心要求。首先,创建一个 Modbus 实例。在本例中是一个 TCP 主机。然而,您可以通过更改多态实例选择器将此示例切换为串行主机。

图 2:更改 Modbus 主机的类型

创建实例后,您可以开始轮询从设备的数据。该示例显示了使用功能代码读取输入寄存器。API 支持的所有 Modbus 功能代码都显示在相应的调色板上。由于协议的实现,从 API 具有主机无法实现的附加功能。例如,从设备可以写入输入寄存器范围,而主设备只能从该范围读取。图 3 显示了功能代码。

图 3:显示功能代码的 Modbus 主机和从机调色板

最后,关闭 Modbus 实例,释放与实例关联的内存。这也会关闭任何引用,包括实例使用的 TCP 连接或 NI-VISA 串行引用。

目前只讨论了主机示例;然而,每个示例都遵循大多数 LabVIEW 用户熟悉的相同基本模式:打开、读/写和关闭。

最后,虽然 API 看起来相同,但理解关键区别很重要。如果您的设备是主机,它必须通过网络发送请求到相应的从设备以获取数据。另一方面,从设备有自己的本地数据存储,可以快速访问它。

冗余主机示例

基本示例可能适用于某些应用;然而,对于目标是与传感器或网关通信的复杂应用可能不够。为了弥合这一差距,提供了一个示例应用,展示了如何使用两个主机与给定的从设备通信。如果其中一个主机失败并与从设备或人机界面(HMI)失去连接,另一个主机将接管。

图 4:冗余主机示例的设计

如果此设计满足您的应用需求,或者您对更复杂的 Modbus 通信示例感兴趣,请在示例查找器中查看 Redundant Modbus Masters.lvproj。

Modbus I/O 服务器

Modbus I/O 服务器位于 LabVIEW DSC 和 LabVIEW 实时模块中,提供了一个高层引擎用于通过 Modbus 通信。与指定要发送的功能代码不同,您注册要访问的数据集,I/O 服务器会自动按照指定的速率调度请求。

要使用 I/O 服务器,您需要向项目中的目标添加一个新的 I/O 服务器。与低级 API 一样,您可以选择 Modbus 主机或从机,并且这会引导到额外的参数。例如,主机有一个定义的轮询速率——每个请求发送到从设备的速率,而从设备必须等待这些请求,没有预定义的时序。

创建 I/O 服务器后,您可以指定要读取的设备上的项目。与低级 API 不同,您必须自己生成和处理请求,Modbus I/O 服务器让您可以从多种格式和数据类型中选择。例如,您可以通过将变量映射到项目 400001 来读取地址 0 处的保持寄存器,通过选择 400001.1 来读取该寄存器的第一个位,并通过选择 F400001 来读取存储在寄存器 0 和 1 中的单精度浮点数。

选择要访问的变量后,您可以在框图上使用共享变量节点读取或写入这些变量。您甚至可以为变量名设置别名。

图 5:一个简单的 I/O 服务器应用程序

I/O 服务器应用程序所需的编程工作量最小且易于理解。请记住,这种易用性也带来了一些限制。数据仅在预定义的速率下更新,并且无法在运行时添加或删除请求的数据。如果这些限制对于您的应用程序是可以接受的,那么 I/O 服务器是推荐的跨平台选项。

有关更多信息和分步指南,请参阅 Connect LabVIEW to Any PLC With Modbus。

NI OPC 服务器与 OPC I/O 服务器或 OPC UA

对于涉及多个通过不同协议通信的从设备的复杂应用,标准的 Modbus I/O 可能不足。一个常见的解决方案是使用 OPC 服务器,作为所有系统的数据聚合器,然后使用 LabVIEW DSC 模块中包含的 OPC I/O 服务器与该 OPC 服务器通信。

图 6 显示了这种架构的一个示例,其中 NI OPC 服务器使用 Modbus 直接与传感器通信,并使用 OPC UA 与 CompactRIO 控制器通信。在 NI OPC 服务器中聚合数据后,OPC I/O 服务器可以检索数据并与 LabVIEW 应用程序共享。

图 6:使用 Modbus、NI OPC 服务器和 OPC I/O 服务器的 SCADA 应用程序

您还可以开发类似的架构,使用 OPC UA Toolkit(在 2017 版之前包含在 LabVIEW DSC 模块中)代替 OPC I/O 服务器。然而,OPC UA 驱动程序是一个低级驱动程序,并没有 OPC I/O 服务器提供的易用性。

要开发这样的应用程序,您必须首先生成一个有效的配置,以便 NI OPC 服务器与您的从设备通信。这是通过生成定义驱动程序配置的通道和定义该驱动程序的单个端点的设备来完成的。在配置设备后,您可以生成标签。

图 7:上述架构中 NI OPC 服务器的示例配置

在配置了 NI OPC 服务器之后,您可以配置 OPC I/O 服务器与这些标签通信。虽然 Modbus I/O 服务器被配置为访问寄存器,但 OPC I/O 服务器被配置为访问 OPC 服务器中的标签。

图 8:配置 OPC I/O 服务器

这个绑定过程会生成您可以在应用程序中使用的变量。

图 9:使用 OPC I/O 服务器的一个简单应用程序

完整的过程演示请参阅 Connect LabVIEW to Any PLC Using OPC。

满足您的应用需求

Modbus 是一种简单的协议,您可以通过各种方式使用它来实现强大的应用程序。

对于 Modbus 通信,NI 提供了三种主要选项,可以提供广泛的功能以满足您的应用需求。首先,低级 API 提供了对协议的精细控制,具有高性能,但易用性较差。使用低级 API 时,一切都必须手动完成。对于简单的监控应用,Modbus I/O 服务器提供了一个更简单易用的 API 来访问或提供 Modbus 数据。为易用性付出的代价是 I/O 服务器放弃了对某些应用所需的协议的严格控制。最后,对于大型和复杂的系统,考虑使用全功能的 OPC 服务器作为数据聚合器可能是有益的。然后,只需使用 LabVIEW OPC UA Toolkit 或 OPC I/O 服务器来为您的应用程序提供对这些数据的访问。

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

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

相关文章

黑马Java零基础视频教程精华部分_8_学生管理系统

系列文章目录 文章目录 系列文章目录一、业务分析二、结合业务流程图编写代码1、Student.java代码:2、StudentSystem.java代码:3、标号(‌label)‌ 三、学生管理系统升级版 一、业务分析 需求文档如图所示: 根据需求…

【初阶数据结构篇】单链表的实现(赋源码)

文章目录 单链表的实现代码位置概念与结构概念:结构: 链表的性质链表的分类单链表的实现单链表的创建和打印及销毁单链表的创建单链表的打印单链表的销毁 单链表的插入单链表头插单链表尾插单链表在指定位置之前插入数据单链表在指定位置之后插入数据 单…

SAP MM学习笔记47 - 实地棚卸(库存盘点)

上一章讲了SAP MM模块种的出力管理(消息管理)。 SAP MM学习笔记46 - 购买中的出力管理(消息管理)-CSDN博客 本章讲库存盘点的相关内容。 - 库存盘点分3步走:实地棚卸票登录,检数入力,差异分析及转记 - SAP中还提供了…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出:B因为实现了A的接口,所以和继承一样,B可以访问A的变量 P409 接口VS继承 接口对单继承机制(是指只能继承一个类)进行了补充 也可以理解为,子类通过…

【IDEA】子模块导包爆红,IDEA在错误的地方(父模块)自动添加依赖

文章目录 问题背景解决方法 问题背景 IDEA中,我在子模块中添加了依赖,整个项目编译没问题,但导包爆红,IDEA非要我在父模块中添加依赖,这是为什么?这样会导致编译出问题。 解决方法 删除.idea目录&#x…

24种设计模式介绍与6大设计原则(电子版教程)

前言 您是一个初级的 coder,可以从中领会到怎么设计一段优秀的代码;您是一个高级程序员,可以从中全面了解到设计模式以及 Java 的边角技术的使用;您是一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决…

python_从csv写入到xlsx(一次性写入and分批写入)

一次性写入 import pandas as pd from openpyxl import Workbook# CSV 文件路径 csv_file D:\\desktop\\output.csv# XLSX 文件路径 xlsx_file D:\\desktop\\output.output.xlsx# 读取 CSV 文件 data pd.read_csv(csv_file)# 将 DataFrame 写入 XLSX 文件 data.to_excel(xl…

安全哈希算法:SHA算法

🎯 主题简介 SHA(Secure Hash Algorithm)是比MD5更安全的哈希算法。通过案例形式了解SHA算法的原理、实现方法及注意细节。无论你是Python爱好者还是JavaScript高手,这篇内容都将为你提供一个深入了解SHA算法的机会。 &#x1f…

Spring Boot集成screw实现数据库文档生成

1.什么是screw? 在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中&…

免费【2024】springboot 成都奥科厨具厂产品在线销售系统设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【期末考试复习】学术英语阅读

文章目录 前言1. 一篇学术论文的组成部分2. this unit2.1 Unit 1 标题第一类:陈述句结构(Declarative Sentence Structure)第二类:名词群结构(Nominal Group Construction)第三类:复合结构&…

响应式编程框架Reactor之 Flux 和 Mono 的介绍和区别

Flux和Mono在Reactor框架中都是响应式编程模型的重要概念,它们在处理异步数据流时发挥着重要作用,两者之间也存在一些差异。 Mono的介绍 基本概念: Mono是Reactor中的一个类,它表示一个异步的单个值或零个值的结果。Mono可以看作是一个特殊的Publisher,用于产生数据流,…

独立开发需要掌握哪些技术栈

SEO 首先要掌握的如何分析流量, 这里推荐所有掌握关键词分析。 掌握Semrush工具使用。 作出搜索引擎喜欢的内容, 降低获客成本。 这一步非常非常重呀! 笔者自己的网站,www.bpmnmodeler.com 通过semrush挖掘到camunda online model…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起,目标方法异常后,around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时,可以使用两个execution annotation 自定义…

面试 SQL整理 常见的SQL面试题:大厂经典60题(一)

目录 SQL基础知识整理: 数据库基础知识 为什么要使用数据库 数据保存在内存 数据保存在文件 数据保存在数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别&…

Ubuntu下设置文件和文件夹用户组和权限

在 Ubuntu 上,你可以使用 chmod 和 chown 命令来设置当前文件夹下所有文件的权限和所有者。 设置权限: 使用 chmod 命令可以更改文件和目录的权限。例如,要为当前文件夹下的所有文件和子目录设置特定权限,可以使用以下命令&#x…

vue3<script setup>中插槽的使用

在 Vue 3 中&#xff0c;<script setup> 语法糖极大地简化了组件的编写方式&#xff0c;使得代码更加简洁。在使用 <script setup> 时&#xff0c;插槽&#xff08;Slots&#xff09;的使用方式和在常规 <script> 中类似&#xff0c;但可能需要稍微注意一些细…

搭建自己的金融数据源和量化分析平台(一):系统架构设计

0x00 前言 由于某得的数据实在是太贵&#xff0c;某花顺免费版又不提供专业的数据分析工具&#xff0c;Tushare也开始收费&#xff0c;因此决定基于python和MySQL搭建一个自己的金融数据库。期望做到仅依靠交易所、巨潮资讯网等官方的公开数据实现&#xff0c;尽量不依靠某花顺…

Python3 多线程中的线程睡眠技巧

各类学习教程下载合集 ​​https://pan.quark.cn/s/874c74e8040e​​ 在现代编程中&#xff0c;多线程是一种重要的工具&#xff0c;可以帮助我们实现并发和并行处理&#xff0c;从而提高程序的效率。在 Python 中&#xff0c;通过 ​​threading​​ 模块&#xff0c;我们可…