如何利用LabVIEW连接测试仪器并进行仪器操作

编程语言 专栏收录该内容
1 篇文章 0 订阅
原文地址: https://bbs.elecfans.com/jishu_486554_1_1.html,转载过来用在留存学习。
 
 
1.    前言
使用labview撰写程序的过程中,难免会面临软硬件的结合,尤其LabVIEW在程序与测试仪器的应用范围甚广,要如何利用LabVIEW操作测试仪 器就成为相当重要的课题,笔者因工作需求也常面临这类问题,若是使用NI相关设备时都较好解决,但公司里总是会有许许多多不同的测试仪器,要如何进行仪器 控制,真的很费神,在解决问题的过程中,从各方学习到不少经验,在此分享笔者到目前的收获给各位。
 
2. 利用范例程序(vi档)进行控制
在使用测试仪器时,若是仪器厂商有提供LabVIEW的范例程序,最直接的就是能使用范例程序进行控制,若是程序需求不大,甚至能将范例程序稍作修改马上产出程序,以下以DAQ及传统箱型仪器为例;
 
2-1.  以DAQ为例:
连接上DAQ后,如图1-1-1,点选Block Diagram -> Measurement I/Q -> NI-DAQmx -> DAQ Assistant,进入如图1-1-2的设定画面,在此可以设定输入与输出的讯号,设定完成就可以直接在程序里使用。
个人觉得DAQ蛮好用的,尤其是当你的仪器有电压输出又想要连接到LabVIEW分析时,就可以将电压讯号接到DAQ的Voltage,利用DAQ Assistant快速的建立分析程序,笔者就曾利用DAQ Assistant快速建立读取光侦测器数值的程序。

 
图2-1-1 DAQ Assistant
 
图2-1-2 DAQ设定画面
 
除了使用DAQ Assistant来控制DAQ以外,NI Example Finder里也有许多DAQ相关的范例程序,从NI Example Finder -> Hardware Input and Output -> DAQmx,如图2-1-3,NI提供许多种范例程序,从类比输入输出、数位类比输入输出到 计数功能皆有,且与DAQ Assistant不同的是,范例程序里使用的 元件不是如同DAQ Assistant全包起来,而是每个独立元件,因此使用者可以依自己的需求将范例程序另存新档改成符合需求的程序,如图2-1-4,但有一点要注意的是 由于使用独立元件,所以要自行先确认DAQ已与 计算机连接上,此部份可在Measurement & Automa tion Explorer中作好仪器的确认,如图2-1-5。
 
图2-1-3 NI Example Finder
 
 
图2-1-4 类比电流
 
图2-1-5 Measurement & Automation Explorer
 
 
2-2. 仪器厂商提供范例程序
 
许多工程师应该会遇到同样的问题,就是手边或公司有非NI的设备,又希望能快速的进行程序撰写,此时就可以询问厂商,假如手上的资料撷取仪器有范例程序能 使用,只要安装驱动程序,即可在LabVIEW里轻松使用其DAQ;在 RF仪器中,笔者使用过的传统箱型仪器同样有范例程序,让笔者在设计程序上减了不少 麻烦,如图1-2-1,将厂商提供的initial与Mask范例程序放进程式后并接好连线,就可以使用程序抓取IQnxn读取到的Mask讯号。
图2-2-1 传统箱型仪器范例
 
 
3. 使用DLL控制仪器
 
DLL,又称为动态连结函式库,是将控制常用的程序码制作而成,当程序呼叫DLL时才会载入 存储器中,利用DLL来操作仪器对计算机的使用上较节省 存储器, 有些仪器厂商没有LabVIEW范例程序,仅提供DLL进行呼叫控制,虽然在操作上不如范例程序方便,但透过LabVIEW的呼叫功能,可以利用 LabVIEW的Call Library Function Node载入DLL来进行仪器的操作,网站上也有许多载入DLL相关的信息,因此在此作简单介绍。
 
点选Block Diagram -> Connectivity -> Libraries & Executables -> Call Library Function Node,如图2-1~图2-3,并设定仪器DLL放置路径与资料型态后即可使用,不过要注意的一点是要载入DLL前要先了解此DLL送出来的资料为何, 这部份可透过仪器厂商的解说文件得知;在图2-4中,笔者使用Call Library Function Node载入读取Power的DLL档,在Function Name选择Getpower,由于Power的数值含小数点,因此在资料型态的部份选择8-type Double,并在输出的部份接一个Double Numeric Indicator,建立好后当程序执行到此部份就可以获得power数值并进行后续的程序。
图3-1 Call Library Function Node
图3-2 设定呼叫路径
 
图3-3 设定资料型态
图3-4 简易程序
 
 
4.  利用SCPI控制仪器
 
不少仪器有支援SCPI 指令,一般常用的箱型讯号产生器皆有支援,在没有范例程序以及DLL可以呼叫的情况下,就可以思考使用SCPI指令来操作仪器,通 常仪器有支援SCPI指令都会有详细的指令集,取得指令集后,可使用RS232/GPIB/LAN等界面连接主机进行仪器控制,而要利用LabVIEW输 入SCPI指令给仪器就要透过Block Diagram -> Instrument I/Q -> VISA里的VISA元件进行操作,如图3-1,在VISA元件区,我们可以利用Open、Close、Write、Read等元件进行程序设计,笔者分 别以GPIB和LAN两种界面作介绍:
图4-1 VISA
 
 
4-1.   使用GPIB界面连接仪器
 
将仪器与主机用GPIB线材连接后,就可以开始试着使用SCPI进行控制,但在此之前要先从仪器上取得GPIB Address,通常GPIB Address会在仪器的Information或Settings里,且当使用2台以上的GPIB仪器时,可以修改彼此间的数值才不会造成仪器冲突,取 得GPIB Address后要先建立主机与仪器的连线,在SCPI指令中开启连线的指令为
 
GPIB0::GPIB Address::INSTR以笔者的讯号产生器为例,GPIB Address为23,因此笔者输入的指令为GPIB0::23::INSTR,将此串指令用字串连进LabVIEW VISA Open元件,如图3-1-1,
图4-1-1 VISA Open
 
连接后下一步就是要确定是否有连到仪器,此时我们可以利用另外一个指令来确认,确认指令为*IDN?
这个指令主要是用来判断仪器的型号等,在此我们是拿来确认连接状况,因此就可以将指令用VISA Write跟VISA Read作结合,如图3-1-2,
 
图4-1-2 GPIB确认仪器连接
 
若执行上没问题,以常用的箱型讯号产生器为例,就会看到String Indicator收到一连串信息『......Technologies, N5182B,MY51350428, .........』,注意一点,每台仪器出来的讯息都不一样,因此详细资料意义要从指令集手册中了解;而为了使用让程序更严谨一点,我们可以对图 3-1-2的程序作修改,如图3-1-3,首先将GPIB Address独立用String Control,这样就可以任意更改,接下来用Case Structure接在Open的Error out,此步骤是为了确认是否连接正常,若连接正常进入『No Error』就写入读取仪器的指令并读出,连接错误就将错误讯息Open Fail连至 dialog显示并停止程序,这样设计是为了让程序在连接错误的第一时间马上反馈给使用者,才不会未连接到仪器却程序持续进行,这一部份完成 后就可以依要完成的动作输入对应的指令来完成程序。
图4-1-3 GPIB确认仪器连接进阶版
 
 
4-2. 使用LAN界面连接仪器
 
使用LAN界面,也就是使用网络线连接主机与仪器,这种连接方式只要将主机连到HUB,就可以接到多台测试仪器,也免去要接一堆GPIB线或是计算机USB 孔不够的问题,在此笔者是使用SCPI里的TCPIP进行控制,其实无论是使用GPIB或是LAN的SCPI指令都大同小异,举例来说,LAN界面的开启 连线指令为
 
TCPIP0::IP Address::inst0::INSTR
 
与GPIB指令比对,除了Address不一样外,基本上架构是一样的,就连查询仪器型号指令也是*IDN?,因此我们可以直接将GPIB的程序作点修改 来使用,例如目前测试仪器的IP Address为192.168.100.254,就可以将程序修改成如图3-2-1,同样的也可改成进阶版的程序,如图3-2-2;不过在使用LAN介 面时要注意IP是否会相冲,以笔者经验,通常测试仪器的IP Address不太能作修改,因此若程序会用到两台以上的仪器,而IP又相同时,就要考虑是否一台用GPIB,一台用LAN,若要用LAN的方式去连接, 就要去询问仪器厂商是否能协助调整IP
图4-2-1 LAN确认仪器连接
 
图4-2-2 LAN确认仪器连接进阶版
 
 
5.   结语
 
以上为目前有用到的连接测试仪器的方式,通常在遇到新的仪器时,笔者都会先去询问仪器厂商是否有范例程序,毕竟有范例程序的情况下能加速程序开发,若没有 笔者就会上网寻找或是连到NI网站『仪器驱动程序数据库IDNet』,NI网站上数据库有蛮多种各家仪器的范例程序,且这些程序基本上都相当完整,因此若 是想追求用vi档完成程序的可以到NI网站去寻宝,祝各位都能顺利使用LabVIEW控制仪器。
LabVIEW高级编程与虚拟仪器工程应用(修订版)》适用有一定LabVIEW编程基础的测控工程技术人员,帮助其搭建高级技术框架,积累开发经验;同时也可作为本科生毕业设计、研究生完成课题和工程技术人员开发测控项目的参考用书。 目录 第1篇LabVIEW高级编程技术 第1章测控项目管理 1.1测控项目的生命周期 1.2系统定义 1.2.1 问题定义 1.2.2可行性研究 1.2.3 需求分析 1.2.4软件原型 1.2.5 文档管理 1.3总体设计 1.3.1硬件结构设计 1.3.2软件结构设计 1.3.3 总体设计说明书 1.4详细设计 1.5程序编码 1.5.1编程风格 1.5.2说明信息 1.5.3 vl的保存 1.5.4手册编写 1.6系统测试 1.6.1硬件测试 1.6.2软件测试 1.6.3验收测试 1.6.4测试报告 1.7 系统维护 1.8 项目浏览器 1.8.1 项目浏览器的用途 1.8.2 项目库 1.8.3项目依赖关系 1.8.4程序生成规范 第2章应用程序控制与内部数据传递 2.1 VI Server技术简介 2.2动态加载VI 2.2.1监测内存中所有的VI 2.2.2 动态加载VI的程序 2.3动态控制VI运行 2.3.1 动态刷新被控VI前面板控件值 2.3.2选择性打开VI前面板 2.3.3子面板设计 2 4动态控制VI属性和前面板对象属性 2.4.1 动态控制VI属性 2.4.2动态控制前面板对象属性 2.5动态注册事件 2.5.1 动态注册用户接口事件 2.5.2处理用户事件 2.6运行菜单控制 2.6.1运行菜单的设置 2.6.2用程序代码进行运行菜单设置 2.6.3在程序中响应菜单选项 2 7通知器和队列 2.7.1 通知器 2.7.2 队列 2 R共享变量 2.8.1共享变量的创建 2.8.2单进程共享变量 2.8.3 网络发布共享变量 第3章程序设计模式与程序性能 3.1 程序的设计模式 3.1.1标准状态机 3.1.2主/从设计模式 3.1.3 生产者/消费者设计模式 3.1.4队列消息处理器 3.1.5其他设计模式 3.2程序调试技巧 3.3多线程程序 3.3.1基本定义 3.3.2 多线程应用程序的优势 3.3.3 LabVIEW实现多线程的方法 3.4程序性能优化 3.4.1程序运行速度 3.4.2 内存使用 3.5程序性能分析 第4章软件接口与外部数据通信 4.1 ActiveX技术应用 4.1.1 ActiveX技术简介 4.1.2使用ActiveX控件 4.1.3使用ActiveX自动化 4.1.4 LabVIEW作为ActiveX服务器 4.2.NET技术应用 4.2.1.NET技术简介 4.2.2 .NET技术应用 4.3动态数据交换 4.3.1 LabVIEW的DDE功能 4.3.2向Excel文件写数据 4.3.3 由Excel文件读数据 4.4 C代码调用 4.5库函数调用 4.6执行操作系统命令 4.7计算机网络基础知识 4.7.1 计算机网络的功能与发展 4.7.2计算机网络的结构 4.7.3 计算机网络模型 4.7.4计算机网络协议 4.8 TCP 应用 4.8.1发送数据编程 4.8.2接收数据编程 4.8.3程序的远程动态控制 4.9 UDP应用 4.10 串口通信 第5章数据存储与调用 5.1数据存储的时机 5.2打印报表 5.3数据库连接 5.3.1 LabVIEW与数据库的连接 5.3.2 LabVIEW对Access数据库的操作 5.3.3 LabVIEW对SQL Server数据库的操作 5.4 LabVIEW与实时数据库连接 第6章面向对象编程 6.1面向对象编程的概念 6.2 LabVIEW中面向对象编程的方法 6 2.1 LabVIEW类 6.2.2类的方法 6.2.3继承 6.3两种编程方法的比较 6.3.1测试目的 6.3.2面向过程的方法 6.3.3 面向对象的方法 6.3.4 两种方法的比较 第7章传统DAQ的模拟信号采集 7.1 硬件配置与测试 7.1.1传统DAQ安装 7.1.2传统DAQ设备配置与测试 7.2模拟输入 7.2.1传统DAQ的数据采集通道 7.2.2数据采集Vl 7.2.3传统DAQ模拟输入常用的基本术语 7.2.4测量直流电压信号 7.2.5 波形采集 7.2.6频率测量 7.3模拟输出 7.3.1输出直流信号 7.3.2输出波形信号 7.3.3 模拟输入/输出控制回路 7.4信号调理 7.4.1信号调理设备配置 7.4.2应变测量 7.4.3温度测量 第8章传统DAQ的数字信号与计数器输入/输出 8.1 数字信号输入/输出 8.1.1数字信号通道设置 8.1.2立即方式数字输入/输出 8.1.3握手方式数字输入/输出 8.2计数器输入/输出 8.2.1数据采集卡的计数器芯片 8.2.2 用计数器输出脉冲信号 8.2.3测量脉冲宽度 8.2.4测量TTL信号频率和周期 8.2.5事件计数与计时 第2篇虚拟仪器工程案例篇 第3篇C语言代码转换和LabVIEW2010新特性篇 LabVIEW常用中英文词汇对照表 参考文献
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值