LabVIEW与外部仪器USB通信的实现
2012-07-10张灵灵
张灵灵
(安徽省广播电视台淮北市发射台,安徽 淮北 235000)
LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件,同时它也是目前多数虚拟仪器系统所采用的开发软件。在这种基于图形化编程语言的开发环境中,LabVIEW可以高效、快速地编写出相应的应用程序,完成诸如数据采集、数据处理、数据显示以及仪器控制和通信等多种功能。在我国由于引进时间短,了解和熟悉它的人不多,还远远没被认识和推广应用。
1 通信模块设计
VISA(Virtual Instrument Software Architecture)是一个用来与各种仪器总线进行通讯的高级应用编程接口(API)。它不受平台、总线和环境的限制。因此,可以通过NI-VISA来控制USB设备进行相互之间的通信。
首先,配置NI-VISA来控制USB设备。安装好VISA,接着分3步完成操作:
(1)使用Driver Development Wizard(驱动程序开发向导)创建INF文档。为了使用NI-VISA,先让Windows将NI-VISA作为设备的缺省驱动程序使用。在Windows环境中可以通过INF文档做到这一点。NI-VISA3.0中包含的VISA Driver Development Wizard(DDW)将为USB设备创建一个INF文档。
选择Start>>Programs>>National Instruments>>VISA>>VISA Driver DeveloperWizard,打开DDW。
可以用这个向导为PXI/PCI或USB设备创建一个INF文档。由于是在为USB设备创建驱动程序,因此选择USB,并点击Next。此时出现图1所示的VISA DDW基本设备信息窗口。
图1 VISA DDW基本设备信息窗口
进行这一步时,您需要清楚USB仪器的USB供应商ID和产品ID。这些数字可以在您安装USB设备的时候对其进行确认,并在您想要与设备通讯的时候,寻找它的地址。依据USB的规格,两个数字都是16位十六进制数字,并应该由设备制造商提供。在相应栏内输入设备的供应商ID、产品ID、制造商名称和型号名称。
USB Instrument Prefix(USB仪器前缀)只是一个描述符,您可以用它来识别本设备所用的相关文档。在USB Instrument Prefix中输入相应信息,并在“output file directory”中选择存放这些文档的目录,然后点击Finish。INF文档就被建好并保存在您指定的位置了。
(2)安装INF文档,并使用INF文档的USB设备。在Windows XP操作系统中,DDW创建INF文档时,INF文档顶部的标题中会包含安装指导。因为INF文档是ASCII文本文件,所以可以通过诸如记事本之类的任何文本编辑器进行阅读。如果要了解有关安装INF文档的详细信息,就在文本编辑器中打开您的INF文档,然后遵照文档顶部的指导行事。
(3)使用NI-VISA Interactive Control(NI-VISA互动控制工具)对设备进行测试。
VISA Interactive Control(VISAIC)是一个实用程序,可用来轻而易举地与任何VISA资源进行通讯。做好使用VISA的配置之后,USB设备就会被列入USB分项之中。双击该设备,打开设备的VISA对话框。应出现如图2所示的窗口。
图2 “VISA交互控制”打开VISA对话框
使用VISAIC打开VISA Session时,会自动选择“Template(模板)”表格与“Property Node(Read)”(属性节点(只读))表格。选择想要读取的属性并点击Execute,以读取此项属性。“Current Value”(当前值)指示栏中即显示“Attribute Name”(属性名称)中指定属性的当前值。上图中,可以看到Resource Name(资源名称)的属性。
在NI-VISA与USB设备进行通讯后。现在,在LabVIEW中,我们可以使用“VISA打开”、“VISA关闭”、“VISA读取”和“VISA写入”进行数据的传输了。
图3 LabVIEW通信界面
设备连接成功以后,下一步可以用LabVIEW来设计这里的应用程序。
Labview通信主界面如图3所示。
在上述图中,首先从VISA resource name中选择一个端口号(这个端口与外部仪器连接到电脑上的端口是相一致的),接着对流控制,奇偶校验位,数据的传送速率,数据位,停止位等这些参数进行相关的设置。此时,LabVIEW与外部仪器的连接已经完成,下面就要进行数据的发送了。在Lab-VIEW通信中,先在发送字符框中写入一个字符,如果这个字符是外部仪器默认的字符,这时再点击发送按钮,外部仪器中的数据将传送到LabVIEW中(如果这个字符与外部仪器默认的字符不符,外部仪器中的数据将不会传送过来),再点击接收按钮,此时数据将在图中的示波器上显示出来。与此同时,读取字节数框内也显示了读取的总字节数。从而实现了LabVIEW与外部仪器之间的相互通信。如果想保存传送到的数据,单击保存按钮就可以了。所有的功能实现完以后,再单击退出按钮便可以退出了。
当单击保存按钮时,传送到LabVIEW里的数据默认以文本文档的形式保存到磁盘里,当然也可以选择别的格式保存,而保存的路径则可以自主选择。
2 软件实现方法
软件具体实现的步骤是:
(1)调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等。
(2)使用VISA Write发送数据,使用VISARead接收数据.在接收数据之前需要使用VISAByt es at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数.当然也可以分批读取接收缓冲区的数据或者只从中读取一定字节的数据。
(3)串口使用结束后,用VISA Close结束与V ISA resource name指定的串口之间的会话。
程序设计时,第一步实现LabVIEW与外部仪器间的相互通信。正确安装NI-VISA驱动程序后,接着进行通信接口程序的完成。具体的程序框图如图4所示。
图4 通信接口程序框图
与外部仪器通信连接成功以后,下一步就是进行双方的的发送和接收数据。首先通过LabVIEW向外部仪器发送一个字符,如果该字符与仪器中设置的字符相符合,则仪器便向LabVIEW发送数据过来。而发送过来的数据在LabVIEW前面板框图中的示波器中显示出来。
综上所述,通过通信接口和数据的处理与显示这两个程序框图从而实现了LabVIEW与外部仪器间的相互通信。
3 结语
从最终测试得到的数据表明,文章设计串口通信的方案是有效,可行的。它成功实现了LabVIEW与外部仪器之间的相互通信。该方法简单方便,对仪器发送到LabVIEW的数据,可以进行进一步的测量,处理和检测,操作完成以后再把处理过的数据再发送到外部仪器上。这种通信方式在仪器仪表与虚拟仪器之间的数据交换和检测等方面,有较高的实用价值。
[1]杨乐平.LabVIEW程序设计与应用[M].北京:电子工业出版社,2001.
[2]徐永和.USB外围设备设计与应用[M].北京:北京航空航天大学出版社,2002.
[3]龙志强,赵海龙.虚拟仪器测试技术研究[J].仪表技术,2000,(3).
[4]杨乐平,李海涛,肖相生.LabVIEW程序设计与应用》[M].北京:电子工业出版社,2001.
[5]逯颖.基于LabVIEW的串行通信接口设计与实现[J].现代电子技术,2006,29(17):123-124.
[6]赖永泉,王毅,曹银强.基于DLL虚拟仪器系统开发技术[J].仪器仪表与检测技术,2004,29(4):62-65.
[7]李文军,田瑞利,易利鹏.基于LabVIEW的数据采集与信号处理系统[J].现代电子技术,2005,28(20):10-11,17.
[8]曾水生,谢云,易波.Labview实时数据采集系统的USB2.0接口实现[J].机床与液压,2005,(5):89-91.