教你如何利用LabVIEW连结测试仪器并进行仪器操作
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 & Automation 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控制仪器。
学习。
顶顶顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xuexuexiyixia!
学习啦!
谢谢分享
小编问一下,使用非NI的产品时,驱动也不是NI提供的,安装好驱动后如何让labview能够识别驱动?
顶!d=====( ̄▽ ̄*)b 顶!d=====( ̄▽ ̄*)b
初学LabVIEW,谢谢分享 。
挺好的!
太给力了,谢谢小编
确实不错的铁,精雕细磨
学习
学习
学习了,多谢小编!
受益匪浅
不错,过来学习学习。
受益良多……………………
多谢小编分享~~学习了,谢谢!
xuexuexiyixia!xuexuexiyixia!
这个必须顶一下,学习学习
真的是好东西啊
TKS
新人表示完全看不懂啊亲
写的不错,学习学习,受益匪浅
同问一下,仪器带有ni驱动,可是labview怎么识别不出来有这个仪器呢,貌似也没有给SCPI指令,都不知道怎么办
学到很多
很详细,谢谢!
很详细,谢谢!
谢谢
视觉系统
顶顶顶~~~~~~~~~~~~~~~~~~~~~~~~~~~
学习学习
我艹,新人720°飞旋膜拜!
感谢感谢啦!
辛苦了!
学写了