关键词:LabVIEW;运动控制卡;动态链接库
一、引言
LabVIEW(Laboratory
在运动控制方面,LabVIEW有专门的运动控制模块,并且NI公司为其所有的运动控制卡配备相应的驱动程序,可以方便实现即插即用功能。如果用户所使用的板卡不是NI公司的产品,又没有提供与LabVIEW兼容的驱动程序,就不能为LabVIEW所用。但是LabVIEW能够通过调用Windows32动态连接库(Dynamic
二、应用背景
笔者在参与某二自由度运动平台运动仿真项目的研制过程中,选用深圳众为兴数控技术有限公司生产的ADT850型四轴运动控制卡,该型号的卡提供多种版本Windows下的驱动程序和在BorlandC++3.1、VB和VC等多种环境下开发所需的函数库。虽然在这些编程环境中很容易实现所需的运动控制,但是,如果要开发出一个美观的人机交互界面,将会有很大一部分时间花在程序主界面的编写上。为此,我们利用LabVIEW强大的界面编辑功能以及它能够调用Windows32动态连接库的特点,首先在VC编译环境中编译出运动控制所需要的动态链接库文件,然后在LabVIEW环境中编写程序主界面,最后在LabVIEW框图程序中调用动态链接库文件来编写所需的运动控制程序。其主要过程如图1所示。
![普通运动控制卡在LabVIEW平台上的应用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
图1
三、程序设计
LabVIEW具有强大的外部接口能力,可用的外部接口包括:DDE、CIN、DLL、MATLAB
3.1
DLL是基于Windows程序设计的一个非常重要的组成部分。DLL的编制与具体的编程语言及编译器无关,只要遵守DLL的开发规范和编程策略,并安排正确的调用接口,不管用何种编程语言编制的DLL都具有通用性,这就给我们编写通用的DLL带来了很大的方便。
针对LabVIEW调用DLL的特点和运动控制的复杂性,我们所编写的通用DLL中必须包含多个可供调用的函数,这些函数都调用运动控制函数库中的一个或多个函数,DLL中每个可供调用的函数都对应着某一具体任务,称其为功能函数。DLL中的功能函数主要有:板卡初始化函数、运行条件初始化函数、两轴运行状态函数、两轴位置函数、脉冲发送函数、两轴伸长计算函数、停止运行函数、归零函数以及板卡结束运行函数等,每个功能函数一般都有自己独立的接口。
功能函数确定以后,在Visual
3.2
LabVIEW中动态链接库的调用是通过CLF(Call
在LabVIEW中调用DLL时,则应根据应用程序的需要,确定参数个数和参数类型及调用规则,然后在LabVIEW中正确地配置DLL。首先从Advanced子模板中选择Call
3.3
根据以上所编写的功能函数配置好CLF节点的参数个数及其数据类型后,也就设置好了CLF节点的输入输出端口。每一个功能函数对应着相应功能的CLF节点,我们可是像使用其它函数节点一样来应用这些CLF节点。针对某型二自由度运动平台运动控制的特殊性,要求这两个自由度完全独立,互不相关,这就不能采用多轴插补函数进行脉冲输出控制,只能是两轴分别控制。
整个LabVIEW框图程序的结构采用顺序结构(Sequence
![普通运动控制卡在LabVIEW平台上的应用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
图2
图3所示是紧接在图2后面的顺序框,也是程序框图的第四个顺序框,这是整个框图程序的主体部分。顺序框中嵌入一个While循环,While循环中又嵌入一个顺序结构,其前一框的作用是运动模式选择及运动控制,这也是整个程序框图的核心部分,后一框的作用是数据显示部分。
运动模式选择包括自由度的选择和自动与手动模式选择。自由度选择和运行模式选择均采用选择结构(Case
![普通运动控制卡在LabVIEW平台上的应用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
图3
图4是整个框图程序的最后三个顺序框,其中,前一框的任务是得到停止指令后返回两轴的当前位置,并立即发出返回零点位置的指令;中间一框中嵌入了一个While循环,目的是循环检测并显示两轴的运行状态以及当前位置,一旦检测到所有轴已经回到零点位置并已全部停止运行,就自动跳出While循环,开始执行最后一框程序,即执行板卡结束运行函数。
![普通运动控制卡在LabVIEW平台上的应用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
图4
图5为程序的前面板,这是程序正常运行时的主控界面也是唯一的界面。在这个界面上,可以进行自由度的选择、手动自动的选择、手动位移设定、自动运行模式下的正弦轨迹曲线的设定、两轴运行速度的设定以及运行控制。另外,界面上的两个Grphy图还能实时显示两自由度变化曲线和两轴运行轨迹曲线,板卡驱动状态和两轴运行状态的正常与否以三个指示灯的形式显示出来。
![普通运动控制卡在LabVIEW平台上的应用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
图5
四、结束语
一般来讲,很多运动控制卡的二次开发多采用VC++、VB或C++
本文作者创新点:利用LabVIEW调用通用动态连接库的功能,采用新的方法来对普通运动控制卡进行二次开发,这种新方法不仅可以缩短开发周期,而且可以降低成本。