用LabVIEW控制你的仪器文档格式.docx
《用LabVIEW控制你的仪器文档格式.docx》由会员分享,可在线阅读,更多相关《用LabVIEW控制你的仪器文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
![用LabVIEW控制你的仪器文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/31/c08527cf-2fa9-4d1d-93bd-53f6085844c2/c08527cf-2fa9-4d1d-93bd-53f6085844c21.gif)
安装结
束后会提示重启电脑,但是这不是必须的。
可以直接打开程序,不过有些
工具打不开。
看一下界面(图4)。
2计算1+1
接下来写一个简单的小程序,实现1+12的功能。
LabVIEW的程序
或子程序叫做VIvirtualinstrument,你可以这样创建它:
在菜单栏里选
择File!
NewVI,或者直接“Ctrl+N”。
创建成功后会弹出一灰一白两
个窗口(图5),可以用鼠标或者“Ctrl+E”在它们之
间切换。
就像标题
栏上写的那样,灰色的叫FrontPanel,就是前面板,作为VI的用户界面;
白色的叫BlockDiagram,中文版里叫程序框图,用来放你的code。
像不2计算1+13
图4:
界面
图5:
前面板(前)和程序框图(后)2计算1+14
ab
图6:
FunctionPalette和ControlsPalette
像VB?
每个VI都有前面板和程序框图。
如果你关闭了程序框图,可以通过
Window!
ShowFrontPanel或“Ctrl+E”来重新打开它,但如果你关
闭了前面板,那么整个VI就都被关闭了。
切换到程序框图,在FunctionPalette里(图6a,若找不到,可以
在菜单栏的View里,或者空白处右键来调出它)选择Programing!
Numeric!
Add,并将它放在程序框图中。
这时若将鼠标移到你放置的
Add上,还可以看到三个橙色的接线端子(图7a)。
左
边两个表示输入参
数,右边一个表示返回值。
通过菜单栏的Help!
ShowContextHelp或者
“Ctrl+H”可以调出即时帮助,实时显示鼠标所指元素的帮助(图7b)。
进一步点击Detailedhelp,你可以看到更详细的说明,以及一些例子。
这时候我们回到前面板。
FunctionPalette不见了,取而代之的是
ControlsPalette(图6b,若没有看到,可以在菜单栏的View里,或
者空白处右键调出)。
找到Modern!
Numeric!
NumericControl
和
NumericIndicator,在前面板上放置两个NumericControl和一个Numeric2计算1+15
图7:
Add函数和实时帮助
图8:
放置NumericControl和NumericIndicator
Indicator(图8a)。
在中文版中,Control翻译成输入控件,Indicator翻
译成显示控件。
这时程序框图上会有3个对应的图标出现8b,在某
个图标上双击或
者右键!
FindControlIndicator可以快速找到对应的前面板控件。
也可
以在前面板上的某个控件处双击或者右键!
FindTerminal反过来定位。
继续看程序框图,可以看到Control对应的图标在“1.23”字样的右侧
有一个小三角,表示数据可以从这里流出;
Indicator左侧有一个小三角,
表示数据可以从此处流入。
三个图标都是橙色的,表示它们是浮点数,可
以右键!
Representation将其改为别的数据类型。
利用鼠标左键可以把它们的接线端连起来。
如果无法连线,需要
在菜单栏的View中选择显示ToolPalette(图9),然后选中第一行的2计算1+16
图9:
ToolPalette
图10:
1+12
“AutomaticToolSelection”(程序会根据鼠标的位置自动选择合适的工
具)或者直接选择第三行第一个ConnectWire(这样你就只能connect
wire而不能进行其它操作,比如移动图标了)。
按“Ctrl+E”切换到前面板,在两个输入控件中各输一个1,然后点
工具栏中的Run按钮(图8左上角Edit下方的按钮,在该图中它是一个断
开的箭头,说明程序无法运行,点击它可以查看无法运行的原因,但实际
情况是像图10这样的,也就是说你可以运行它)或者“Ctrl+R”,然后在
第三个控件中你就可以看到输出的结果(图10)。
需要指出的是,这种编程语言是图形化编程,也叫G语言。
各个函数
之间执行顺序是由数据流向决定的(例如上面这个例子中,Add函数要等
到两个输入端的数据都流入后才开始工作),如果两个函数之间没有数据流
动,那么无法判断哪个函数先执行。
对于初学者,NI提供了视频教程,你可以在XX一下“labview101”。
当然,NI官网和论坛上远不止这些资源,仔细看看可能会有惊喜。
3关于GPIB的一些概念7
图11:
通信接口(图片来自网络)
3关于GPIB的一些概念
这一小节介绍GPIB的一些背景知识。
一台仪器若想与电脑或其它仪器通信,那么它必须
配有通信接口。
目
前智能仪器的主流通信接口有四种,即串口(RS-232)、网口、USB口、
GPIB口(IEEE-488),比如图11中的这台Keithley2611B源表,它的背
面板上同时有这四种接口,此外还配备了两个该公司特有的TSP-Link接
口。
GPIB全称叫GeneralPurposeInterfaceBus,通用接口总线(一个比
较类似的名字是USB,UniversalSerialBus,通用串行总线)。
它最初由
惠普公司设计,至今已近50年。
IEEE(美国电气和电子工程师协会)把
它弄成了一个标准,即IEEE-488标准,所以有时候又称GPIB接口为
IEEE-488接口。
其实GPIB还有另外一种25针的标准,叫IEC-60625,
但是比较少见,下面提到GPIB,指的就是IEEE-488。
所谓的标准,就是一个实物的理论模型,规定了各种各样的细节。
拿
螺丝举个例子吧,例如GB/T70.1-2000这个标准(GB国标,T推荐),
是内六角圆柱头螺钉的国家标准,里头规定了各种大小(M1.6-M64)、性
能等级的内六角圆柱头螺钉的各种指标,包括几何参数、机械性能、公差
等,只要大家都按照这个标准来,生产出来的内六角圆柱头螺钉就都差不
多,可以互相替换。
所以标准对工业生产至关重要。
所谓的总线,就是bus,可以理解为数据传输的通道,即数据线。
图12给出了目前主板上的一种典型的总线结构。
需要指出的是,数据线只
是导线而已,总线要实现其功能还需要配备一块特定的芯片,这些芯片都
被叫做控制器(Controller)。
比如说我们熟悉的USB总线吧,从图12可以3关于GPIB的一些概念8
图12:
计算机总线(图片来自网络)
图13:
GPIBController和Cable(图片来自网络)
看到它是从南桥引出来的(一直到你机箱的USB端口上),而它的控制器
也在南桥里头。
如果USB控制器坏了或者驱动没有正确安装,那么你在机
箱的USB端口上插的U盘就无法正常工作了。
USB控制
器、IDE控制器
等设备,可以在Windows设备管理器里查看。
现在看一下GPIB控制器以及电缆。
在图13中,从左到右分别是用于
PCIe的GPIB控制器、用于USB的GPIB控制器和GPIB电缆。
GPIB
电缆上的接头一般是“doubleheaded”结构,每一端都是既有公头又有母
头,所以可以方便地像图14那样连成网络(网线、USB线、串口线不能这
样连)。
GPIB的一些性质如下:
3关于GPIB的一些概念9
图14:
GPIB连接示意图一根GPIB总线上最多接入15个设备(包括控制器),这是电路负载
能力决定的。
设备主地址的取值范围有31个:
0-30,(部分设备还有
第二个地址,即次地址,用以区分同一设备内部不同的模块),控制
器也要占用一个地址(一般是0)。
同一个总线上所有电缆长度之和不能超过20m,平均电缆长度不能超
过2m,单根不能超过4m。
要突破前面两个极限,可以使用Extender,比如NI的GPIB-140A
可以把设备数提高到26个,并利用光缆把传输距离延长到1000米。
或者Isolator/Expander,如NIGPIB-120B,可以扩展个数到28。
我
不太清楚如何解释这个26和28。
多台仪器可以连成链式结构、星形结构或者随便什么结构,但是同一
个接口上不要连超过三个电缆,因为很重。
GPIB接口有24个针脚,8根是地线或屏蔽线,8根是数据线,还有
8根控制和握手线。
数据并行传输,最大速度不超过2MB/s。
与其它总线的性能比较见图15。
4连接你的控制器,从仪器读取信息10
图15:
一些总线性能对比(数据来自ni)
图16:
通过USB-GPIB控制器连接仪器(图片来自网络)
4连接你的控制器,从仪器读取信息
这一小节介绍控制器的连接和驱动的安装,以及从仪器读取信息。
以
USB-GPIB控制器为例,插卡式的道理是一样的。
首先看一下效果图(图16)
我手头有一块NI的GPIB-USB-HS(图13中左边那个就是),官网报
价RMB4290不含税。
另外还从陈老师组借了一块(后来又从林老师组借
了一块)ADLINK的USB-3488A(图16中那个连接电脑和仪器的设备),
不知道价格,但应该便宜些。
因为GPIB-USB-HS是NI的亲生的,所以
跟LabVIEW配合要默契些,ADLINK的有点小问题,下面会讲。
如果你直接把控制器通过USB接口连到电脑上,它是不能正确识别
的,因为电脑上的硬件是需要驱动程序才能工作的。
常见硬件的驱动操作4连接你的控制器,从仪器读取信息11
图17:
NI
系统已经给你准备好了,不必手动安装,比如鼠标、键盘。
然而操作系统
不可能包含世间全部硬件的驱动,所以有些不常见设备的驱动需要手动安
装,比如GPIB控制器。
起初我发现即使安装驱动,正确识别以后,ADLINK的控制器在
LabVIEW中还是不能work,后来在NI的论坛上看到他们家的驱动不支
持64位LabVIEW,于是又重装了32位的LabVIEW2013。
(但是64位
下可能还是有解决方法的?
)
驱动一般刻在CD盘里随产品发售,ADLINK的控制器驱动程序只有
不到10MB大小,我先装的它,然后试了一下LabVIEW编程(32位),
可以从安捷伦的34410A万用表上读东西。
然后我又装了NI的驱动,名字
就叫NI488.2(有几百兆),用来支持NI的控制器。
装完之后把控制器连到电脑上(可能需要重启),就可以在windows
的设备管理器,以及各自的设备管理工具(NI的和ADLINK的
ADL-GPIBUtility)里面看到它了。
再把控制器的另一头连到仪器上(插
拔GPIB接口前最好把总线上所有仪器都关了,不然容易烧了仪器),打
开仪器,就可以在(可能要选中GPIB0板卡再点一下“扫描仪器”)
或ADL-GPIBUtility(可能要按F5刷新)检测到仪器(图17,图18)。
4连接你的控制器,从仪器读取信息12
图18:
ADL-GPIBUtility
图19:
NI-488.2通讯器
在里看不到ADLINK的控制器,在ADL-GPIBUtility里看不
到NI的控制器。
不知道能否显示安捷伦或者惠普的控制器。
在两
个软件中可以看到,两块控制器的接口ID都是0(显示为GPIB0),而且
ADLINK的接口ID似乎是不能改的,不知道这样是否会有冲突,反正同
时使用多个公司的控制器是比较麻烦的一件事情。
如果不管这个麻烦,那么立刻就可以试一下从仪器读取信息了。
在
里选中仪器,点“与仪器通信”,会弹出一个窗口(图19)。
可以发
现它的发送字符串一栏里写着“*IDN?
”,点一下下面的“写”,就把这
个字符串发送给仪器了(写入输入缓存),然后仪器会返回一个结果(到
仪器的输出缓存),再点一下“读”,就可以从仪器里把这个结果读出来
(图21)。
“询问”“写”+“读”。
在ADL-GPIBUtility里双击你的仪
器,弹出的窗口也有Write和Read按钮(图20)。
Async表示异步通信。
再说说图20中的指令“*IDN?
”。
IEEE-488.2规定了一些共同命令4连接你的控制器,从仪器读取信息13
图20:
GPIBInteractiveControl
图21:
一个示意图4连接你的控制器,从仪器读取信息14
图22:
GPIB读写的VI
(IEEE488.2MandatoryCommonCommands),都以“*”打头,结尾带
“?
”的是问询命令,表示有返回值(如“*IDN?
”),不带的是设置命令,
没有返回值(如“*RST”)。
“*IDN?
”表示identi?
cation
query,“*RST”
表示reset,“*TST?
”表示self-testquery。
具体的指令可以在仪器的手册
中找。
下面看看怎么在LabVIEW中实现这些功能。
新建VI,切换到程序框图,在FunctionPalette(图6a)左上角的
search里头输“gpib”,双击搜到的第一个左边带文件夹图标的“GPIB”,
定位到GPIB函数文件夹,可以看到,它是位于InstrumentI/O位置下,
里面有一个GPIBRead函数,还有一个GPIBWrite函数,把它们放到程
序框图中,并放置它们需要的参数(图22,在接线端处右键!
创建,可以
方便地创建常量、输入控件、显示控件,也可以在编程!
字符串(或者数
值)里找到对应的常量,但输入和显示控件得切换到前面板后在Control
Palette(图6b)里找)。
注意图6a中粉红色的是字符串,蓝色的是整数。
22表示仪器的主地址,即primaryaddress,在仪器中设置或查看,也可以
在或GPIBInteractiveControl里查看。
一般仪器是没有次地址的。
那个64是指从缓存中读取的最多字节数,函数在三种情况下可能(因为你
可以自定义,所以是“可能”)停止读取缓存:
1.达到指定字节数。
2.遇到
结束符。
3.EOI上的电压变成0(或者是1?
我忘了)。
然后点运行,就可
以读到结果了。
大可不必关心Write和Read函数在物理层面的动作。
剩下的事情就是好好看说明书和好好熟悉LabVI