点击学习>>《龙哥手把手教你学labview视觉设计》视频教程
1 引言
labview是一种基于图形程序的虚拟仪器编程语言,在测试与测量、数据采集、仪器控制、数字信号分析、工厂自动化等领域获得了广泛的应用。labview程序采用方框图编程,具有友好的人机界面,在前面板中有用于模拟真实仪器面板的控件可供调用,可用于设置输入数值、观察输出值以及实现图表、文本等显示。传统的用labview读写usb设备的方法是:先用vc或delphi编写动态链接库dll文件,在dll中通过调用win api函数读写usb设备的数据,并存在缓冲区中,在labview中通过对dll文件的调用提取缓冲区中的数据。介绍了在labview下,通过调用ni-visa子程序控件,实现与usb设备的直接通信,避免了二次编程的麻烦和数据的中转。
2 usb底层驱动程序设计
usb底层驱动开发工具有windows ddk和第三方开发工具,如driver studio和 win driver等,但是使用这些工具开发驱动难度大、效率底。在这里,介绍如何借用labview的ni-visa子程序控件作为usb的底层驱动。
visa(virtual instrument software architecture,ni.corn/visa)是一个用来与各种仪器总线进行通讯的高级应用编程接口(api)。他不受平台、总线和环境的限制。通用串行总线(usb)是一个基于信息的通讯总线。这表示pc机与usb设备通过发送指令和数据进行通讯,而这些指令和数据是通过总线以文本或二进制数据的形式发送的。每个usb设备都有各自的指令集。可以使用ni-visa的读写功能向仪器发送这些指令,并读取仪器的反馈。
ni-visa从3.0版开始支持usb通讯,他有2种visa类函数(resource class),可以控制2类usb设备:usb instr设备与usb raw设备。符合usb测试和测量类(usbtmc)协议的usb设备可以通过使用usb instr类函数控制,他们使用488.2标准通讯。对于这些设备,只需以与gpib仪器通讯同样的方式,使用visa open,visa close,visa read和visawrite功能。usbtmc设备符合visa usb instr类函数能够理解的协议。usbtmc设备相对来说控制较为复杂,因为每个设备可以使用各自的通信协议,而这些通信协议一般都是由设备的生产厂家自定的。
为了使用ni-visa,必须先让windows将ni-vi-sa作为设备的缺省驱动程序使用。在windows环境中,可以通过inf文档做到这一点。inf文件是系统硬件设备配置文件,usb驱动程序通过inf文件中的pid(产品识别号)和vid(厂商识别号)识别usb设备。ni-visa 3.0中包含的visa driver development wizard(ddw)可以为usb设备创建一个inf文档。下面简单介绍创建inf文档的过程:
(1)在安装了ni-visa后,启动visa driver devel-opment wizard程序,出现了为pxi/pci或usb设备创建一个inf文档的向导,选择usb设备,点next,出现vi-sa ddw基本设备信息窗口。
(2)进行这一步时,需要清楚usb的pid和vid。这些数字可以在安装usb设备的时候对其进行确认,并在想要与设备通讯的时候,寻找他的地址。依据usb的规格,两个数字都是16位16进制数字,并应该由设备制造商提供。例如在后面介绍基于usb的虚拟示波器用到usb接口芯片pdiusbd12的pid和vid分别是0x0471和0x0666;这一步设置完成后,点击next,进行最后一步的设置。
(3)usb instrument prefix(usb仪器前缀)只是一个描述符,可以用他来识别本设备所用的相关文档。在usb instrument prefix中输入相应信息,并在output file directory中选择存放这些文档的目录,然后点击finish。inf文档就被建好并保存至指定的位置。
这时候,只要复制生成的inf文件夹到系统盘win-dows文件夹下inf文件夹,点击右键,安装即可。这时,插上usb设备,windows系统就能探测到,并根据inf硬件配置文件选择ni-visa作为底层驱动程序。在lab-view中,只需调用ni-visa的相关控件,即可实现对usb设备的读写操作。
3 labview驱动程序编写
强大、灵活的仪器控制功能是labview区别于其他编程语言的主要特点。labview不仅提供数百种不同接口测试仪器的驱动程序,而且还支持visa,scpi和ivi等最新的程控软件标准,为用户设计开发先进的测试系统提供了软件支持。visa是用于仪器编程的标准i/o函数库及相关规范的总称,一般称之为visa库。visa库驻留于计算机系统中,是计算机与仪器之间的软件层连接,用以实现对仪器的程控。对软件开发者来说,他是一个可调用的操作函数集,他本身不提供仪器编程能力,只是一个高层api(应用程序接口),通过调用底层的驱动程序来控制仪器设备。
ni-visa支持3种类型的usb管道:控制、批量和中断。ni-visa探测到usb仪器时,他会对仪器进行自动扫描,寻找各种类型的最低可用端点。如使用ni-vi-sa中的visa usb control in和visa usb control out来通过控制型管道传输数据,使用visa read和visawrite来通过批量型管道传输数据。
作为仪器i/o函数库,visa编程与传统的i/o软件编程基本相同,主要通过设备i/o端口的读写操作和属性控制,实现与仪器的命令与数据交换。labview中所有的visa节点均在function模板→all functions子模板→instrument i/o子模板→visa子模板中。在这里,只用到了visa open,visa close,visa write和visaread四个节点即可实现和usb设备的双向通信。当完成对usb设备的inf硬件配置后,就可以用visa open节点打开该资源,建立计算机与这些visa资源的通信管道;与visa open节点相反,visa close节点用于将打开的visa资源关闭;visa write节点的功能是将writebuffer端口输入字符串数据发送到仪器中;visa read节点的功能是从仪器中读出数据;
介绍完上面的4个节点,就可以用上面4个节点实现labview对usb批量数据收发,如图1所示。当然,这需要前述inf文件的支持和与usb接口的单片机程序的支持,在图1中visa resource name端口用于指定需要打开的visa资源的名称,实际上就是前面生成inf配置文件中的visa资源仪器描述符。这里,向usb发送字符串“connect test”,连接测试,单片机通过usb接口芯片将发送过去的数据回传给labview。在前面板的read buffer显示框中能显示出“connect test”字符串。
4 基于ijsb的虚拟示波器的实现
本系统为在labview中实现示波器的功能。单片机对向usb示波器调理电路输出的信号进行96 k(多档可调)的高速连续ad采样,并将采样到的数据通过usb口传给pc机的labview,labvlew对usb口传来的数据进行处理、测量、波形还原和显示等相关操作。虚拟示波器的程序运行界面如图2所示,当前输入的是2.001 khz的正弦波信号,在软件中显示的波形以及测量结果与实际示波器上 得到的结果基本无异。在该程序模块中,通过调用lab-view的相关控件,实现了对输入的模拟信号的波形还原显示、频率测量、峰值测量、直流漂移测量等操作。
系统采用单片机和philip公司生产的pdiusbd12芯片构成usb设备。由单片机实现ad采样,经usb接口完成采样数据的传输。单片机的电路设计和软件构成在这里就不做详细介绍。
此系统硬件部分usb接口芯片采用的pdiusbd12,他支持批量数据的长度为64b,所以就以64b为一帧进行数据和命令的收发。在系统启动即检测usb设备是否连接正常,正常才启动检测,否则提示连接不正常。当启动检测时,usb总线上的数据的传输过程遵循以下步骤:
(1)labview向usb设备发送启动控制命令帧,其中包含采样频率、存贮深度、持续时间等相关内容。由于控制命令字不满64b,其他部分进行比特填充。
(2)单片机通过usb接口芯片接收到控制命令,即按要求开始启动采样。若为大于8k高速采样命令,则进行连续采样,将采样的数据存贮在数据缓冲区中,采样结束后,将数据缓冲区中的数据进行60b每帧的拆分,并在60b数据的前面加上4个字节的数据帧编号等相关内容,通过usb总线将这些数据帧批量传输给labview。
(3)若为小于8k的低速采样命令,则进行中断采样,将采样的数据存储在一个队列中,在采样过程中,若采样的数据多于60b,即在主程序中取出队列中60个字节数据并封装成数据帧,启动usb数据的传输过程。采样过程直至labview向usb设备发送停止命令帧。
(4)在一次数据采样结束后,labview向usb设备发送启动控制命令帧即可马上进行再次采样。
5 结语
用户可以根据不同的环境和要求选择不同的通信方式,在低速的情况下可以采用串口,并口等方式,高速数据采集可以采用usb口,专用数据采集卡等,使用usb2.0协议的芯片支持的批量的数据帧长度可以达到512b,并且有更高的数据传输速度。介绍了在labview中实现usb通信的设计方法,并给出具体的设计步骤和方框图程序。该方法具有硬件接口简单、软件编程方便、实用的特点,在实际数据采集过程中具有一定参考价值。
凤凰端子成工业一体机标准接口,它有哪些应用特征
IIoT时代,工业自动化市场呈现哪些变化?
温度变送器与plc接线
磷酸铁锂产业投资热中冷思考
苹果宣布召回香港、新加坡和英国市场的电源适配器,或致用户触电
LabVIEW与USB的数据通信方案实现
NCSU使用AWR软件进行低噪声放大器和X波段功率放大器设计
MARVEL R获中国5G终端进网许可证,加速迈进5G智慧出行时代
赛灵思Versal自适应计算加速平台助于高效实现设计目标
实现LED路灯网络的智能监控
半导体芯片的制造过程及原理
什么是触摸屏的硬度/分类/有效触摸区域/感应力度/定位精度
并不是所有设备都称为物联网
三星A70s的渲染图曝光,将搭载骁龙675处理器
三种跨时钟域处理的方法
RFID技术还可以提高饮料销量吗
64核锐龙Threadripper 3990X性能终于大增
电桥测量的基础
海内外院士观点交锋 2018人工智能应用创新峰会有哪些看点
二氧化碳检测仪采用的原理你了解吗