时间:2024-09-03
安徽水利水电职业技术学院 余茂全
基于LABVIEW的普通运动控制卡的开发与应用
安徽水利水电职业技术学院 余茂全
设计了以LABVIEW和运动控制卡为基础,以直线倒立摆为被控对象的控制系统,采用了调用动态链接库的方式,利用了LABVIEW中提供的共享库函数接口,设计了LABVIEW与运动控制卡之间的数据采集和运动控制程序,并最终开发了用于教学的倒立摆实验平台。该平台采用模块化设计,具有可视化的人机交互界面,同时还可以为控制理论的研究与教学提供良好的实验环境,操作方便并且具有一定的开放性。
动态链接库;运动控制卡;人机交互界面
倒立摆是一种典型的非线性不稳定系统,在控制理论算法验证和课程教学中,将倒立摆作为经典被控对象开发的实验装置有广泛的应用价值。LABVIEW是由美国国家仪器公司(NI)开发的一种图形化编程语言,它广泛地被工业界、学术界、和研究实验室所接受,视为一个标准的数据采集和仪器控制软件,具有可视化、编程方便等特点[1]。在运动控制方面,NI公司有专门的硬件以及相应的驱动程序,但是价格往往相当昂贵,一般实验室往往接受不了。利用固高公司提供的运动控制卡的动态链接库,采用调用的方式,进行二次开发,不仅大大降低成本、缩短开发周期,而且可以使界面美观。
动态链接库(DLL)是基于windows系统程序设计中的一个非常重要的组成部分,它是从c语言函数库和Pascal库单元的概念发展而来的,具有节省内存、资源共享、动态加载等特点。[2]在开发控制系统实验平台的过程中,选用的是固高公司生产的GT-400型四轴运动控制卡,该卡提供Windows下的驱动程序和在BorlandC++3.1、VC等多种环境下开发所需的函数库。虽然在这些编程环境中很容易实现所需的运动控制,但是,若要开发出一个美观的人机交互界面,将会有很大一部分时间花在程序主界面的编写,利用LABVIEW的强大的外部接口能力和界面编辑能力,在LABVIEW框图程序中调用动态链接库文件来编写所需的运动控制程序。
图1 调用库函数节点
传统的LABVIEW调用动态链接库函数会采用程序框图中互连接口中的调用库函数节点,如图1所示。但是本实验平台开发牵涉到很多的函数,一个一个调用未免麻烦,况且牵涉到每个函数的数据类型以及参数问题,容易出现出错,从而导致整个程序的运行错误。在此,提供了一种简易的方法来调用动态链接库,如图2所示。
图2 共享库界面
在LABVIEW程序框图中,选择“工具”→ “导入”→“共享库(.dll)”,输入动态链接库以及对应的头文件,会自动生成如图3所示的模块,即代表每一个函数。一般在模块的左边是输入的变量,右边则是输出的变量。
图3 DLL函数模块
2.1 运动控制卡的初始化设计
初始化是运动控制的第一步,包括了初始化板卡上的每个轴以及反馈参数、控制周期等,程序框图如图4所示。其中控制器初始化包括了几个重要函数:
图4 初始化程序框图
(1)short GT_Open(unsigned long PortBase, unsigned long irq)打开运动控制器设备,用户程序开始时必须调用此函数。PortBase为运动控制器基地址,irq为运动控制器中断号。改函数返回0表示成功,非0表示失败。
(2)short GT_ Close(Void)关闭运动控制器设备,用户程序结束时必须调用此函数。函数返回0表示成功,非0表示失败。
图5 实验平台的前面板及程序框图
(3)short GT_SetSmplTm(double Timer) 允许用户根据系统要求设置控制周期,一般系统默认的周期为200ms,最好不要太小。由图4可以看出初始化程序的执行是按从左向右的顺序执行,从打开运动控制卡→复位→设置控制周期→消除每一轴的状态→设置限位开关和编码器方向。初始化是控制系统的基础,只有成功的将控制卡初始化,才能继续后面的工作。
2.2 系统界面设计
图5是实验平台的主界面,可以看出在实验平台界面中包含多个实验,在每个实验中本文都将离线仿真与实时控制结合在一起,并对其做了简要说明。点击相应的布尔控件,就会弹出相应的实验项目。在这里用到的方法是采用LABVIEW中独有的事件结构,一般在涉及到用户与程序交互时,都需要用到事件结构,如图5b所示。事件结构包括事件源和while循环。事件源一般是用户需要的一些操作,比如停止程序、改变窗体的大小等。While循环则是用来不断检测产生的事件,如果没有while循环则无论发生多少事件,只能对第一次发生的事件处理。在事件结构中要对各个前面板上的控件按钮添加“值改变”,这样当程序运行时,点击控件,其相应的值发生变化,触动事件结构,弹出相应的子VI,也即是实验项目。由于各个子VI的默认属性是隐藏运行,所以要将弹出的子VI“窗体外观”属性设置为“对话框”形式[3]~[4]。
2.3 系统控制器设计
在如图5a的前面板上,可以看到几个控制算法的实验,限于篇幅,选择了PID实验作为人机交互界面的介绍。编写控制实验的程序主要包括初始化,数据采集,控制器的设计、发出控制命令,其中初始化是每次运程序时执行一次,往后就不在执行初始化,以免读出的数值总是以0计数。其它的步骤则要在循环里不断的执行。图6-a是PID控制器设计,PID是控制理论中最普遍采用的一种控制方法,是一种线性控制器,它的控制器输入是给定值与实际输出值的偏差,即:
PID控制规律的数学表达式为:
当程序执行时,可以手动调节图6-a中的Kp、Ki、Kd三个值,同时在它的右侧和下边是仿真曲线图和响应参数值。其中响应参数包括了超调量、稳定时间、上升时间等,通过这些性能指标,不断的调整Kp、Ki、Kd,直到满意为止在图6-a的左下角是动画演示,当程序运行时点击这个控件,就会弹出图7的界面,这是一个3D仿真演示,把Kp、Ki、Kd带到仿真循环里,模拟倒立摆的运行情况以及抗干扰能力。在波形图中显示的是模拟的角度和位移数据,点击“随机干扰”控件,可以看出控制器的抗干扰能力。因为PID控制是单输入单输出的控制,所以在倒立摆控制中,只控制倒立摆的角度,位置则不受控制。所谓3D演示就是能从不同角度观察倒立摆, LABVIEW 3D控件是LABVIEW 8x 版本以上所特有,目的就是搭建一个虚拟的物理模型,通过获取外部的数据,来反映实体的运动情况,这种3D模型对于多自由度的物体体现的尤为明显。图7的动画演示只是一种最理想的情况,忽略了外部的各种摩擦,不能完全反映运动的真实情况。
图6 PlD实验平台
图6(b)是倒立摆的实时控制,当点击“运行”按钮,会听到上伺服的声音,同时界面的退出控件以及其他几个选项卡的颜色变灰,并且更重要的是它们都会失效,这是小心点击“退出”控件,这时小车偶尔会出现失控的现象。点击“停止”控件,方才能安全退出程序。在本实验中,做到了离线仿真与实时控制的完美结合,实时控制中的Kp、Ki、Kd从局部变量中获取,当实时控制效果不佳时,点击“停止”控件,返回图6(a)重新设置,此外整个实验界面还具有监控的目的。
图7 3D演示
工作主要是通过LABVIEW调用动态链接库,来对普通运动控制卡的进行二次开发,与传统的VC++、C++ Builder等编译软件相比,从而避免了繁琐的界面编程,同时也缩短了开发周期。因为采用了模块化设计,所以具有一定的扩展性和开放性,能更换其它的控制策略。本实验平台已通过了测试,运行稳定,现已应用到了本、专科学生控制理论教学当中,取得了不错的效果。
[1]杨忠仁.基于LABVIEW数据采集系统[J].重庆大学学报(自然科学版),2007,24(2):32-35.
[2]于邵娜,李冶,等.动态链接库技术在虚拟仪器开发中的应用[J].计算机工程与应用 2004(20):114-115,192.
[3]李艳萍.基于LABVIEW的运动控制系统的设计[J].中国科技信息,2009(22):95-96.
[4]万志成,陶俊,等.基于LABVIEW的四自由度机械臂运动控制系统设计[J].机械与电子,2008(3):51-53.
余茂全(1986-),男,安徽合肥人,硕士研究生,安徽水电学院教师,研究方向:虚拟仪器的开发与应用,智能配电网。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!