在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继承 接口对单继承机制(是指只能继承一个类)进行了补充 也可以理解为,子类通过…

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

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

安全哈希算法: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)第三类:复合结构&…

面向切面编程(AOP)

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

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

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

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

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

绿联UGOS Pro系统虚拟机部署Windows 11详细教程(跳账户登录,安装内存驱动)

绿联UGOS Pro系统虚拟机部署Windows 11详细教程(跳账户登录,安装内存驱动) 哈喽小伙伴们好,我是Stark-C~ 自从绿联更新UGOS Pro系统之后,简直犹如脱胎换骨般,为大家带来了前所未有的全新体验,…

基于单片机控制的红外热释电家庭防盗报警器硬件系统设计

【摘要】 随着社会的发展和人们安全意识的提高,传统的家庭防盗系统不能适应现代生活中多变的环境。本文设计开发的红外热释电家庭防盗报警器能改善传统防盗系统结构复杂,计算繁琐、价格昂贵、监控盲区等缺陷,主要由单片机模块、复位电路模块、…

在vue中优雅地异步引入(懒加载)腾讯地图API

背景 接到一个需求需要在网站首页显示使用腾讯地图展示公司所在地。一开始我直接全局引入了腾讯地图js,结果发现在用户打开登陆页面的时候首页比较缓慢,为了提高用户登陆的加载效率,需要优化为异步引入。 思路 根据官网的示例,…

MyCat 分片

更多内容,前往IT-BLOG 如今随着互联网的发展,数据的量级也是呈指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它…

BACnet物联网关BL103:Modbus协议转BACnet/MSTP

随着物联网技术在楼宇自动化与暖通控制系统中的迅猛发展,构建一种既经济高效又高度可靠的协议转换物联网关成为了不可或缺的核心硬件组件。在此背景下,我们钡铼特别推荐一款主流的BAS(楼宇自动化系统)与BACnet物联网关——BL103&a…

C#实现深度优先搜索(Depth-First Search,DFS)算法

深度优先搜索(DFS)是一种图搜索算法,它尽可能深入一个分支,然后回溯并探索其他分支。以下是使用C#实现DFS的代码示例: using System; using System.Collections.Generic;class Graph {private int V; // 顶点的数量pr…

数据库表的行列转换(行转列,列转行)

目录 前言 行转列 创建测试表 score1 插入测试数据 需求与通用SQL写法 列转行 创建测试表 score2 插入测试数据 需求与通用SQL写法 前言 在工作中,多多少少都会遇到一些数据展示的需求,开发一个接口,从数据库中查询数据返回页面展示…