LabVIEW仪器控制.docx
- 文档编号:9978704
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:18
- 大小:145.40KB
LabVIEW仪器控制.docx
《LabVIEW仪器控制.docx》由会员分享,可在线阅读,更多相关《LabVIEW仪器控制.docx(18页珍藏版)》请在冰豆网上搜索。
LabVIEW仪器控制
第三课仪器控制
第一节概述
本课程介绍使用LabVIEW来进行仪器控制的各种方法。
要求学生学会串行I/O、GPIBI/O和VISAI/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序。
本课程的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统。
第二节串行通讯
串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯。
串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方。
由于大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行。
许多GPIB仪器也都有串行接口。
然而,串行通讯的缺陷是一个串行接口只能与一个设备进行通讯。
一些外设需要用特定字符来结束传送给它们的数据串。
常用的结束字符是回车符、换行符或者分号。
具体可以查阅设备使用手册以决定是否需要一个结束符。
在LabVIEW功能模板的InstrumentI/O>Serial程序库中包含进行串行通讯操作的一些功能模块:
1.1. SerialPortInitVI模块用于初始化所选择的串行口。
Flowcontrol设置握手方式的参数。
Buffersize设置程序分配的输入/输出缓冲区的大小。
Portnumber决定通讯接口地址。
Baudrate,databits,stopbits和parity等设置通讯参数。
2.2. SerialportwriteVI模块把Stringtowrite中的数据写到portnumber指定的串行接口中。
3.3. SerialportreadVI模块从Portnumber指定的串行接口中读取requestedbytecount指定的字符个数。
4.4. BytesatserialportVI模块计算由Portnumber指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Bytecount中。
在下面的实例中,实现从一台串行仪器中读取测量值。
首先,用SerialPortInit模块初始化串行接口,然后,用SerialPortWrite模块把命令参数发送给仪器,接着用BytesatSerialPort模块查明在串行输入缓冲区中已经读入的字节个数,最后用SerialPortRead模块读取仪器数据。
第三节IEEE488(GPIB)概述
GPIB程序库中包括IEEE488.2应用程序和传统的GPIB应用程序。
GPIB488.2应用程序中增加了IEEE488.2兼容性,具有IEEE488.2的功能。
然而,在本课程中,我们只讨论传统的GPIB应用程序。
惠普公司在60年代末和70年代初开发了GPIB通用仪器控制接口总线标准。
IEEE国际组织在1975年对GPIB进行了标准化,由此GPIB变成了IEEE488标准。
术语GPIB,HP-IB和IEEE488都是同义词。
GPIB的原始目的是对测试仪器进行计算机控制。
然而,GPIB的用途十分广泛,现在已广泛用于计算机与计算机之间的通讯,以及对扫描仪和图像记录仪的控制。
GPIB是一个数字化的24线并行总线。
它包括8条数据线,5条控制线(ATN、EOI、IFC、REN和SRQ),3条握手线和8条地线。
GPIB使用8位并行、字节串行的异步通讯方式。
也就是说,所有字节都是通过总线顺序传送,传送速度由最慢部分决定。
由于GPIB的数据单位是字节(8位),数据一般以ASCII码字符串方式传送。
有三种方式来标明传送数据结束。
通常,GPIB包括一根连接线(EOI),用来传送数据完毕信号。
或者,也可以在数据串结束处放入一个特定结束符(EOS)。
有些仪器用EOS方法代替EOI信号线方法,或者两种方法一起使用。
还有一种方法,听者(数据接收方)可以计数已传送的数据字节,当达到限定的字节数时停止读取数据。
只要EOI,EOS和限定字节数的逻辑“或”值为真,数据传送就停止。
一般字节计数法作为缺省的传送结束方法,典型的字节数限定值等于或大于需要读取的数据值。
每个设备,包括计算机接口卡,必须有一个0到30之间的GPIB地址。
一般GPIB接口板设置为地址0,仪器的GPIB地址从1到30。
GPIB有一个控者(你的电脑)来控制总线。
在总线上传送仪器命令和数据,控者寻址一个讲者,一个或者多个听者。
数据串在总线上从讲者向听者传送。
LabVIEW的GPIB程序包自动处理寻址和大多数其他的总线管理功能。
GPIB软件包:
LabVIEW在InstrumentI/O功能模板的GPIB和GPIB488.2子模板下有许多GPIB通讯功能子程序模块,这些模块在工作平台上可以调用低层的488.2驱动软件。
大多数的GPIB应用程序只需要从仪器读写数据串。
下面讨论传统的GPIBWrite/Read子程序模块。
GPIBWrite模块把datastring中的数据写入addressstring指定的设备中。
Mode指定如何结束GPIB写入过程,如果在timeoutms指定的时间内操作未能完成,则放弃此次操作。
ErrorIn和ErrorOut字符串与出错处理程序配合使用,检测可能的出错情况。
Status是16位的布尔逻辑数组,每个元素代表GPIB控者的一种状态,详见本课程的稍后部分。
在上图程序中,GPIBWRITE模块把“VDC;MEAS1?
;”字符串写入地址=2的GPIB设备中,本实例采用缺省值MODE=0,timeoutms=25000。
GPIBREAD模块从addressstring指定地址的GPIB设备中读取由bytecount指定的字节数,用户可以使用Mode参数指定结束读取的条件,与bytecount一起使用。
读取的数据由datastring返回。
用户必须把读取的字符串转换成数值数据,才能进行数据处理,例如进行曲线显示。
ErrorIn和ErrorOut是出错指示数簇。
GPIBREAD模块遇到下列情况之一则中止读取数据:
(1)程序已经读取了所要求的字节数。
(2)程序检测到一个错误。
(3)程序操作超出时限。
(4)程序检测到结束信息(由EOI发出)。
(5)程序检测到结束字符EOS。
如左图所示的程序中,GPIBRead从地址=2的设备中读取20个字节的数据。
该程序使用了缺省值MODE=0,TIMEOUTMS=25000。
在本例中,如果读够了20个字节,或者检测到EOI,或者超出25000ms时间,读取过程将结束。
练习3-1
目的:
使用GPIB子程序模块与GPIB设备通讯。
学员可以建立一个与任何GPIB仪器通讯的程序。
本例采用传统的GPIB子程序与指定仪器进行GPIB读写操作。
命令行参数“*idn?
”适用于大多数IEEE488.2兼容仪器,它要求仪器返回其标识符。
前面板:
1、1、 从FILE菜单中选择NEW打开一个新面板。
2、2、 建立上图所示的控制和显示(请记住,从程序框图中,选择相应的功能模块,再选择CreateControl或者CreateIndicator,可以产生所有的控制和显示)。
3、3、 从“写入数据”控制栏中输入“*idn?
”,在“字节计数”中输入数值100。
程序框图:
1、1、
打开框图编程窗口。
2、2、 创建如上图所示的框图子程序模块。
GPIBWrite功能模块(在InstrumentI/O:
:
GPIB子模板)。
该模块把字符串写入GPIB仪器。
GPIBRead功能模块(在InstrumentI/O:
:
GPIB子模板)。
该模块从GPIB仪器中读取数据字符串。
GeneralErrorHandler功能模块(在TIME&DIALOG子模板)。
该模块检查出错报告字符串,如果发现错误,则显示一个对话框。
3、3、 返回到前面板,并运行该程序。
在“读出数据”显示栏中将显示仪器的标识字符串,如果无数据返回,而接收到一个GPIB出错信息,EABO,或者error=6,这就表示你的仪器不能读命令参数“*idn?
”.请查阅仪器的使用手册以找出合适的相应命令。
4、4、 把上述程序以GPIB.vi的名字保存,然后关闭。
(练习3-1结束)。
第四节VISA编程
VISA是虚拟仪器软件结构体系(VirtualInstrumentSoftwareArchitecture)的简称。
VISA是在所有LabVIEW工作平台上控制VXI、GPIB、RS-232以及其他种类仪器的单接口程序库。
VISA是由组成VXIplug&play系统联盟的35家最大的仪器仪表公司所统一采用的标准。
采用了VISA标准,就可以不考虑时间及仪器I/O选择项,驱动软件可以相互相容使用。
VISA包含的功能模块在InstrumentI/O>VISA子模板中。
大多数的VISA功能模块使用了VISAsession参数,该参数在Control模板的PathandRefnum子模板中。
VISAsession是每次程序操作过程的唯一逻辑标识符。
它标识了与之通讯的设备名称以及进行I/O操作必需的配置信息。
它由VISAOpen功能模块产生,提供给VISA主功能模块使用。
VISAOpen功能模块产生标识信息,然后把它传送给下一个VISA功能模块。
这样简化了数据流编程。
它相似于文件I/O模块的参考名功能。
VISAsession的缺省值是Instr。
如果需要,可以打开VISAsession选择如下值:
Instr、GPIBInstr、SerialInstr和VISA/GPIB-VXIRBDInstr。
下面介绍常用的VISA功能模块:
VISAOpen、VISAWrite、VISARead和VISAClose。
VISAOpen根据ResourceName和VISAsession与指定的设备建立通讯。
模块返回VISAsession标识值,使用该标识值就可以调用此设备的任何其他的操作功能。
Errorin和Errorout字符串包含出错信息。
ResourceName包含I/O接口类型以及设备地址等信息。
其编程语法如下表所示:
接口
程序语句
SERIAL
ASRL[board][:
:
INSTR]
GPIB
GPIB[board]:
:
primaryaddress[:
:
secondaryaddress][:
:
INSTR]
VXI
VXI[board]:
:
VXIlogicaladdress[:
:
INSTR]
GPIB-VXI
GPIB-VXI[board][:
:
GPIB-VXIprimaryaddress]:
:
VXIlogicaladdress[:
:
INSTR]
关键词GPIB用于同GPIB设备建立通讯,关健词VXI通过嵌入式或MXI总线控制器同VXI仪器建立通讯,关键词GPIB-VXI用于GPIB-VXI控制器,关键词SERIAL用于异步串行设备通讯。
在上例中,VISAopen模块通过仪器描述字符串“GPIB:
:
2:
:
0:
:
INSTR”与主地址=2的GPIB设备建立通讯。
VISAWrite模块把writebuffer中的字符串写入VISAsession指定的设备。
dupVISAsession向下传送相同的session值。
在UNIX工作平台上,数据同步写入;在其他工作平台上,数据异步写入。
returncount返回实际传送的字节数。
errorin和errorout字串包含出错状况。
VISARead读取由VISAsession指定设备中的数据。
bytecount指明读入readbuffer中的字节数。
磅VISAsession向下传送相同的session值。
在UNIX工作平台上,数据同步读入;在其他工作平台上的数据异步读入。
returncount返回实际传送的字节数。
errorin和errorout字串包含出错状况。
VISAClose关闭由VISAsession指定设备的通讯过程,释放系统资源,errorin和errorout字串包含出错状况。
练习3-2
目的:
用VISA模块与GPIB设备或者串行设备通讯。
本练习使用VISA功能模块向指定设备(GPIB或者串行设备)读写数据。
命令参数“*idn?
”适用于大多数仪器,无论是GPIB通讯或者串行通讯。
它返回仪器的标识字串。
本课中所有VISA练习都是根据Fluke45万用表编程。
前面板:
1.1. 打开一个新的前面板,并且照上图建立控制和指示件。
VISAsession控制件可以在CONTROLS模板中的Path&Refnum子模板中找到。
也可以通过VISAOpen功能模块创建。
2.2. ResourceName控制件应包含下列值:
*对于地址=2的GPIB仪器:
“GPIB:
:
2:
:
0:
:
INSTR”
*对于COM1上的串行仪器:
“ASRL1:
:
INSTR”
3.3. 在WriteBuffer字串控制栏中输入“*idn?
”,在ByteCount控制栏中输入100。
程序框图:
1.1. 打开框图窗口。
2.2.
按照上图选择创建框图对象并连接线。
调用了下面的模块:
VISAOpen功能模块(在InstrumentI/O:
:
VISA子模板)。
此模块打开通讯过程,并产生VISAsession参数。
VISAWrite功能模块(在InstrumentI/O:
:
VISA子模板)。
此模块把数据串写入指定设备。
VISARead功能模块(在InstrumentI/O:
:
VISA子模板)。
此模块从指定设备中读入数据。
VISAClose功能模块(在InstrumentI/O:
:
VISA子模板)。
此模块关闭VISASession。
3.3. 返回前面板并运行该程序。
VISAsession控制件保持为设置值INSTR。
如果要修改此参数,可以打开VISAsession控制件,选择VISAClass值。
根据Resourcename的设置值,可以选择与GPIB或者串行设备进行通讯。
4.4. 以VISA.vi文件名保存该程序,并关闭程序。
(练习3-2结束)
第五节用LabVIEW编写仪器驱动程序
仪器的驱动软件是专门控制某种仪器的软件。
LabVIEW因为具有面板控制的概念,特别适合于创建仪器的驱动程序。
软件的前面板部分可以模拟仪器的前面板操作。
软件的框图部分可以传送前面板指定的命令参数到仪器以执行相应的操作。
当建立了一个仪器的驱动程序后,就不必再记住仪器的控制命令,而只要从前面板输入简单数据即可。
仅仅拥有控制单台仪器的软件,意义并不大。
其真正意义在于可以把仪器驱动程序作为子程序调用,与其他子程序一道组成一个大控制程序,从而控制整个系统。
仪器驱动程序模板:
在LabVIEW>EXAMPLES>INSTR>INSTTMPL.LLB程序库中,有许多VISA仪器驱动程序模板程序。
这些模板程序是适用于大多数仪器的驱动程序,并且是LabVIEW仪器驱动程序开发的基础。
这些模板程序符合仪器驱动程序的标准,并且每个程序都有指导帮助指令以便修改程序以适应某种仪器。
第六节验证仪器驱动软件
下面验证HP34401A万用表驱动软件。
如果有一只HP34401A万用表,就可以运行该程序。
否则只能学习程序设计方法。
从LabVIEW>EXAMPLES>INSTR>HP34401A.LLB中打开HP34401AGettingStartedVI程序。
该程序是一个仪表驱动应用程序。
其前面板模仿仪表的前面板,从Help菜单中的ShowHelp可以打开帮助窗口,然后把光标指向程序前面板的各个控制件或指示件,就会出现前面板上鼠标所指对象的描述信息。
当编写或使用这些仪器驱动程序时,档案资料是非常重要的,这些程序可以用来设置仪器参数和读取仪器数据。
本程序是采用低层的仪器驱动模块子程序编写的。
这些低层子程序用到了前面我们所学习的VISA功能子模块。
前面板:
框图程序:
上述框图程序使用了如下的子程序:
HP34401AInitializeVI子程序(LabVIEW>EXAMPLES>INSTR>HP34401A.LLB)。
这个子程序用于与仪器建立通讯并产生一个VISAsession标识字串。
HP34401AApplicationExampleVI子程序(LabVIEW>EXAMPLES>INSTR>HP34401A.LLB)。
这个子程序关闭VISAsession过程。
请注意上述程序中各个子程序之间的连线关系,以及errorin和errorout群的连接。
通过这些连线,定义了数据流动的方式。
练习3-3
目的:
在练习3-2的基础上创建一个简单的仪器驱动程序。
在本练习中,学员将学会创建仪器驱动程序的初始化、应用实例和关闭子程序模块。
这些子程序已在前面讨论过。
前面板:
1.1. 从练习3-2中打开VISA.VI文件。
2.2. 本练习的前面板不需要修改。
框图程序:
1.1. 转换到框图程序窗口。
如图所示,选择第一个虚线方框部分,然后从EDIT菜单下调用SubVIFromSelection功能。
这个操作将根据所选择的部分创建一个子程序,有些程序对象排列可能会弄乱,所以需要重新整理框图。
再选择上图的第二个虚线方框部分,用SubVIFromSelection功能创建一个子程序。
最后,再选择上图的第三个虚线方框部分,用SubVIFromSelection功能创建一个子程序。
2.2. 当创建了上述所有仪器驱动子程序后,双点上述每个子程序图标,在Seminar.llb目录下把它们分别保存为InstrumentInitialize.vi,InstrumentApplication.vi,和InstrumentClose.vi子程序。
注意:
如果你想改变这些子程序的图标,则必须进入位于前面板窗口右上角的IconEditor方式。
当你要选择IconEditor时,点击图标面板。
3.3.
完成了创建所有子程序后,把它们存入Seminar.llb,并且修改缺省的图标形式。
使框图程序如上图所示:
4.4. 返回前面板窗口,在ResourceName字符串中输入“GPIB:
:
2:
:
0:
:
INSTR”,运行此程序。
如果你的仪器的地址不是2,则把地址换成相应的数值。
同样,要仪器执行你给出的命令,只需在WriteBuffer内输入相应的数值。
同样,要仪器执行你给出的命令,只需在WriteBuffer内输入相应的命令字串。
5.5. 把该程序以InstrumentDriver.vi文件名保存,并关闭程序。
(练习3-3结束)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 仪器 控制