基于NI-VISA与LabVIEW的 USB接口应用设计
发布时间:2008/5/27 0:00:00 访问次数:604
    
     上海交通大学 余志荣 杨莉
     引 言
     usb(universal serial bus)接口是近年来应用在pc领域的新型接口技术。它基于单一的总线接口技术来满足多种应用领域的需求;它的即插即用、支持热插拔、易于扩展等特性极大地方便了用户的使用,已逐渐成为现代数据传输的发展趋势。
     传统的开发usb应用系统的步骤是,先用windowsddk(设备驱动程序开发包)或第三方开发工具(如driverst ljdic))开发ljsb驱动程序,然后用visual c++编写dll(动态连接库),最后再调有dll来开发应用程序。显然,这对windows编程不熟悉的人来说有一定的难度,何况usb驱动程序的开发难度很大。本文介绍一种简单、快速开发usb接口应用系统的方法。它直接在labview环境下通过ni-visa开发能驱动用户usb系统的应用程序,完全避开了以前开发usb驱动程序的复杂性,大大缩短了开发周期。
     1 n1-visa简介
     ni-visa(virtual instrument software architecture,以下简称为"visa")是美国国家仪器ni(national1nstrllrnent)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。visa总线1/()软件是一个综合软件包,不受平台、总线和环境的限制,可用来对usb、gpib、串口、vxi、pxi和以太网系统进行配置、编程和调试。visa是虚拟仪器系统i/o接口软件。基于自底向上结构模型的visa创造了一个统一形式的i/o控制函数集。一方面,对初学者或是简单任务的设计者来说, visa提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,visa提供了非常强大的仪器控制功能与资源管理。
     2 labview及其调用visa的条件
     labview(laboratory virtual instrument engineering workbench)是ni公司开发的一种基于图形程序的编程语言。用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。一个labview程序分为3部分:前面板、框图程序和图标/接线端口。前面板用于模拟真实仪器的前面板;框图程序是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标/接线端口用于把labvlew程序定义成一个子程序,从而实现模块化编程。
     当进行usb通信时,visa提供了两类函数供labview调用,usb instr设备与usb raw设备。usb instr设备是符合usbtmc协议的usb设备,可以通过使用usb instr类函数控制,通信时无需配置ni-visa;而usb raw设备是指除了明确符合usbtmc规格的仪器之外的任何usb设备,通信时要配置ni-visa。
     (1)配置ni-visa的步骤
     ①使用driver development wizard(驱动程序开发向导)创建inf文档;
     ②安装inf文档,并安装使用inf文档的usb设备
     ③使用ni-visa interactive control(ni-visa互动控制工具)对设备进行测试,以证实usb设备已正确安装,并获得usb设备的各属性值。
     详细过程可参考ni官方网站上免费提供的文档《使用ni-visa控制usb设备》。
     (2)与nl-visa相配合的labview模板中vi子节点
     viopen,打开并指定visa resource name的设备的连接。
    viproperty,visa设备的属性子节点,可以设置端点或传输方式。
    viwrite,向visa resource name指定的设备写入数据。
    viread,从visa resource name指定的设备读出数据。
    viclose,结束设备读写并关闭与指定设备的连接。
     (3)usb raw设备读写的操作次序
     usb raw设备的读写次序如图1所示。
    
    下面以一个usb接口的温度采集系统为例,说明基于ni-visa驱动的usb接口应用系统的设计与实现。
    3系统硬件结构
     系统以philips公司的增强型80c51单片机为核心,如图2所示。这是一个多点温度采集系统,核心器件是含有8 kb非易失flash程序存储器的p89c52,与标准80c51完全兼容。usb通信控制芯片采用philips公司的pdiusbdl2芯片(简称"d12")。它是一款较新型的专用 usb通信控制芯片,符合通用串行总线usbl.1版规范,内部集成有串行接口引擎sie、320字节fifo存储器、收发器和电压调节器。前端温度传感器采用dallas公司生产的dsl8b20。它是一线式数字温度传感器,直接以数字量输出给微处理器,可节省
    
     上海交通大学 余志荣 杨莉
     引 言
     usb(universal serial bus)接口是近年来应用在pc领域的新型接口技术。它基于单一的总线接口技术来满足多种应用领域的需求;它的即插即用、支持热插拔、易于扩展等特性极大地方便了用户的使用,已逐渐成为现代数据传输的发展趋势。
     传统的开发usb应用系统的步骤是,先用windowsddk(设备驱动程序开发包)或第三方开发工具(如driverst ljdic))开发ljsb驱动程序,然后用visual c++编写dll(动态连接库),最后再调有dll来开发应用程序。显然,这对windows编程不熟悉的人来说有一定的难度,何况usb驱动程序的开发难度很大。本文介绍一种简单、快速开发usb接口应用系统的方法。它直接在labview环境下通过ni-visa开发能驱动用户usb系统的应用程序,完全避开了以前开发usb驱动程序的复杂性,大大缩短了开发周期。
     1 n1-visa简介
     ni-visa(virtual instrument software architecture,以下简称为"visa")是美国国家仪器ni(national1nstrllrnent)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。visa总线1/()软件是一个综合软件包,不受平台、总线和环境的限制,可用来对usb、gpib、串口、vxi、i和以太网系统进行配置、编程和调试。visa是虚拟仪器系统i/o接口软件。基于自底向上结构模型的visa创造了一个统一形式的i/o控制函数集。一方面,对初学者或是简单任务的设计者来说, visa提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,visa提供了非常强大的仪器控制功能与资源管理。
     2 labview及其调用visa的条件
     labview(laboratory virtual instrument engineering workbench)是ni公司开发的一种基于图形程序的编程语言。用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。一个labview程序分为3部分:前面板、框图程序和图标/接线端口。前面板用于模拟真实仪器的前面板;框图程序是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标/接线端口用于把labvlew程序定义成一个子程序,从而实现模块化编程。
     当进行usb通信时,visa提供了两类函数供labview调用,usb instr设备与usb raw设备。usb instr设备是符合usbtmc协议的usb设备,可以通过使用usb instr类函数控制,通信时无需配置ni-visa;而usb raw设备是指除了明确符合usbtmc规格的仪器之外的任何usb设备,通信时要配置ni-visa。
     (1)配置ni-visa的步骤
     ①使用driver development wizard(驱动程序开发向导)创建inf文档;
     ②安装inf文档,并安装使用inf文档的usb设备
     ③使用ni-visa interactive control(ni-visa互动控制工具)对设备进行测试,以证实usb设备已正确安装,并获得usb设备的各属性值。
     详细过程可参考ni官方网站上免费提供的文档《使用ni-visa控制usb设备》。
     (2)与nl-visa相配合的labview模板中vi子节点
     viopen,打开并指定visa resource name的设备的连接。
    viproperty,visa设备的属性子节点,可以设置端点或传输方式。
    viwrite,向visa resource name指定的设备写入数据。
    viread,从visa resource name指定的设备读出数据。
    viclose,结束设备读写并关闭与指定设备的连接。
     (3)usb raw设备读写的操作次序
     usb raw设备的读写次序如图1所示。
    
    下面以一个usb接口的温度采集系统为例,说明基于ni-visa驱动的usb接口应用系统的设计与实现。
    3系统硬件结构
     系统以philips公司的增强型80c51单片机为核心,如图2所示。这是一个多点温度采集系统,核心器件是含有8 kb非易失flash程序存储器的p89c52,与标准80c51完全兼容。usb通信控制芯片采用philips公司的pdiusbdl2芯片(简称"d12")。它是一款较新型的专用 usb通信控制芯片,符合通用串行总线usbl.1版规范,内部集成有串行接口引擎sie、320字节fifo存储器、收发器和电压调节器。前端温度传感器采用dallas公司生产的dsl8b20。它是一线式数字温度传感器,直接以数字量输出给微处理器,可节省