孙 勇
(北京理工大学机电学院智能机器人研究所,北京100081)
本系统硬件设计工作包括基于NI-ELVIS工作平台上的开关电路如何设计实现电路的通断进而控制步进电机驱动器工作与否,步进电机驱动器与开关电路、所需电信号的连接设计;软件系统设计包括前面版设计和程序框图设计,程序框图设计又分为手动控制程序框图设计和自动控制程序框图设计两部分。编程工作通过软件LabVIEW来完成。
硬件设计大体分为控制和驱动两部分。控制部分就是开关电路,由于需要控制机械手四自由度的运动,所以要搭建4路相同的开关电路;驱动部分就是通过步进电机驱动器来驱动步进电机的转动。
由于本次课题是机械手的虚拟仪器控制系统设计,所以这里搭建的电路并不是独立控制机械手的运动,而是要配合PC机内的LabVIEW软件程序实现控制功能。NI-ELVIS工作平台是一个很好的“桥梁”,可以完美地实现电路与PC机的数据交互,再配合功能强大的PCI-6251数据采集卡就可以运行软件程序通过NI-ELVIS工作平台上的端口读入与写出需要的电信号供给电路使用。由于电路中需要多种直流电源,所以还要外接一个电源箱以供应电压需求。
开关电路是基于NI-ELVIS工作平台上的面包板搭建而成的,主要由电磁式电压继电器、三极管以及若干电阻构成。电磁式电压继电器根据电压的大小而做出动作。
本次设计共有四路开关电路,分别控制机械手3个步进电机工作与否以及夹持端的动作,毎个开关电路均由5V继电器,s8050三极管以及50Ω、1.5kΩ的电阻构成。将高低电平输出端即NI-ELVIS工作平台上的DO口通过1.5kΩ的限流电阻接入三极管的基极,然后由ELVIS平台提供的直流5V作为VCC通过50Ω电阻接在三极管的集电极,发射极接地,再将三极管集电极接入继电器的电压输入端。最后将工作平台上的脉冲序列发生端口即counter_0接入继电器常闭端的一个管脚,另一管脚接入步进电机驱动器的脉冲输入端。这样当DO端口为低电平时三极管截止,原电路等效为VCC为5V的50Ω电阻与继电器串联分压电路,由于继电器负载为120Ω,所以继电器分得电压为U=5V×12/17=3.5V,达到继电器吸合电压,继电器常开端闭合,常闭端断开。当输入端为高电平时三极管导通,继电器被短路,分得电压为0,小于继电器释放电压,所以常开端断开,常闭端导通,实现了开关功能。通过控制脉冲序列的通断控制步进电机驱动器的工作与否,进而控制机械手上的步进电机。开关电路原理图如图1所示。
机械手的夹持端需提供一个24V的电压才可以通过电压的通断控制其动作,当继电器配以三极管的开关电路导通时夹持端夹紧,当开关电路断开时夹持端释放。
主程序流程图如图2所示。
总体设计控制系统分为自动控制系统和手动控制系统,用case结构实现。程序设计中除了使用case结构、while循环以及其他基本的逻辑程序语言外还利用了DAQmx数据采集工具包和NIELVES工具包中的子VI进行程序的编写。
前面板和框图一样都是由图形对象组成,这些图形对象就是G语言的元素。前面板包含了各种类型的控件和指示器(即输入和输出)。前面板也就是操作界面,操作人员可通过在操作界面控制控件的输入控制机械手的动作,还可以通过前面板的状态指示灯看出机械手的运动状态。
在前面板放置一个水平摇杆布尔控件,布尔控件的功能是输出逻辑真或假。水平摇杆控件用以操作人员切换是进入自动控制系统还是手动控制系统。
操作界面的左半部分设定为手动控制区,在手动控制区内放置7个指示灯布尔控件。不经过修改的指示灯控件是一种显示控件,但是可以在框图上将其转化成输入控件并改变其机械动作为保持转换直到释放,实现的效果相当于按下按钮时输出“真”,当停止下按时控件自动弹起输出“假”。这7个布尔控件就相当于按钮,操作人员通过这些按钮控制机械手的四自由度运动。分别控制机械手顺时针或逆时针转动、上下移动、左右移动以及抓取这7个机械动作。
操作界面的右半部分设定为自动控制区,在自动控制区内放置6个数值输入控件,其中3个代表目标零件的位置坐标,另3个数值输入控件用以输入终点坐标,即机械手需要将零件物体移到的终点位置坐标。本次设计中对空间建立的坐标系为柱面坐标系,由软件编程确定机械手的固定位置为原点,那么空间内任意一点就可通过角度、径长和高度这3个量唯一确定其坐标。在6个坐标输入控件下端放置一个普通按钮控件,其机械动作设定为释放时触发。此按钮的作用是检测所输入的6个位置坐标是否超出机械手工作范围,当超出时会有对话框弹出提示重新输入数据,这样机械手就不会盲目执行命令,提高了效率避免不必要的工作。
在自动区和主动区之间还放置了2组指示灯,分别用以指示自动或手动控制下机械手的位置状态,当机械手处于极限位置时就会触碰限位开关,由限位开关电路会输出一个高电平,这时对应的指示灯会亮以提示操作人员机械手到达极限位置。前面板布局如图3所示。
图1 开关电路原理图
图2 主程序框图
图3 前面板布局
首先介绍程序框图中手动控制和自动控制都用到的程序,由于采用步进电机驱动器来驱动机械手上的步进电机工作,所以需要产生频率为3 000Hz到5 000Hz的脉冲序列信号,通过DAQmx实现程序框图编写如图4所示;通过NI-ELVIS工具包可以实现8位数字高低电平的输出,高电平为5V低电平为0,其中4路高低电平配合三极管和继电器组成的开关电路形成开关控制,1路高低电平连接驱动器方向辩向端控制步进电机方向,连续高低电平输出程序框图如图5所示。
2.2.1 手动控制程序框图设计
手动控制程序的设计主要通过case结构实现。在前面板(用户操作界面)放置7个布尔按钮控件,布尔控件的功能是可以通过机械动作按下或弹起决定输出1个1位二进制数1或0,再将7个控件建立成数组,即控件输出的是一个7位二进制数,那么最多可产生128种情况,即有128种控件输出,再将7位二进制数转化为十进制数作为case结构的输入。当脉冲信号序列供给一个步进电机驱动器时,由于负载原因脉冲高电平会被拉低,所以同一时间脉冲信号只能供给一个步进电机驱动器,进而同一时间只有一个步进电机在工作,那么机械手所有的运动情况就有14种,即在抓取端松弛状态下的x方向的正向和反向移动,z方向上的正向和反向移动,绕z旋转方向上的正向和反向转动以及停止和抓取端抓紧状态下的上述7个运动,所以共14种运动状态。
7个布尔控件由上至下分别代表右转、左转、向前、向后、向上、向下以及抓取,再将其建立成数组,由上到下依次为7位二进制数的低位到高位。只需在每个运动case内提供8位由逻辑真或假组成的二进制数组给NI ELVIS DIO-WRITE子VI output端,并选择VI输出类型为8位布尔数组(Boolean Array)。再通过NI-ELVIS工作平台DO口就可以提供给开关电路的输入端对应程序内布尔数组的高低电平(真为高电平,假为低电平)控制继电器的吸合或断开,进而控制步进电机工作与否。这样就实现了程序系统与硬件系统的统一,达到了预期目的。
手动程序中还需通过NI-ELVIS工具包内的子VI编写8位数字高低电平写出程序。通过DAQmx数据采集工具包内的子VI编写脉冲序列发生程序。无论是高低电平写出程序还是脉冲序列发生程序都需要置于while循环内以能够连续循环地执行程序,所以会有连续高低电平和连续脉冲信号生成。While循环的条件端子设为真是停止,并为其创建输入控件,当按下时停止按钮会自动弹起随即程序停止运行。当程序正确运行时,会在NIELVIS平台的8个DO口输出8为高低电平,在平台的counter_0out端口输出连续脉冲序列。
图4 连续脉冲生成框图
图5 连续高低电平输出框图
2.2.2 自动控制程序框图设计
程序框图设计的总体思想就是利用状态机实现事件间的切换,每个事件中编写不同运动状态程序,也就是写入不同的高低电平控制使机械手完成各个动作,当完成了预定的动作后便进入下个事件(状态)完成事件内的动作,如此循环就可以实现机械手的一系列连续的动作,如定点搬运等功能。
要实现定点搬运功能,除了高低电平连续输出程序、连续脉冲序列发生这些基本的程序外,还需要在自动控制程序的状态机构架内嵌一个脉冲计数程序,顾名思义该程序可以对脉冲源进行脉冲个数的自动计数。但是当在一个循环内执行脉冲个数读取程序时,计数器无法在你需要的时候清零,只有当跳出循环时才会由任务擦除子VI清除脉冲计数任务,这时计数器则清零,所以基于上述原因必须在整个大while循环中再添加一个子while循环以实现脉冲计数清零工作。也就是将脉冲计数程序放于子循环中,当需要计数器清零时,也就是状态机切换状态时则程序跳出子循环实现计数器清零并进入下一个状态,但总程序依然在执行不会因跳出子循环而终止,因为在子循环外还有一个大循环在运行。由于步进电机每接收到一个脉冲就会转动一个步距角,所以可以通过硬件计算一个脉冲下机械手转动的角度以及移动的距离,在每个运动状态的case内可以通过简单的逻辑编程即通过脉冲计数器程序所得的脉冲数乘以实际中机械手上步进电机在一个脉冲下的步距角参数值得出该运动状态下机械手已移动的距离或转过的角度与相应的输入数据作比较,然后就可以通过类似于C语言中if,break的逻辑程序来决定是继续保持当前的运动状态还是跳转到下一个运动状态。程序框图如图6所示。
图6 脉冲计数程序框图
本次设计最终能够通过软件程序控制硬件完成预定的功能,在操作界面中可通过手动控制人为控制机械手的运动;在自动控制程序中无需操作人员对其时时的操作,只需设定好路径则机械手可自动完成简单的装配功能。
本系统加以改进后还可面向码头集装箱搬运系统应用、面向中小型物流系统应用,也可作为教学科研演示设备进行推广。传统机械手系统工作方式为手动和自动两种,自动模式通常通过程序固化到微控制器中,该模式比较单一。本系统控制程序基于LabVIEW8.5编写,可在操作界面进行自定义模式修改,操作用户可自行修改,无需专业人员亲临现场,为用户增加了便利性,项目开发周期缩短且维护成本降低。
[1]Robert H Bishop.Labview 8使用教程[M].北京:电子工业出版社,2008.
[2]柏林,王见,秦树.虚拟仪器及其在机械测试中的应用[M].北京:科学出版社,2008.
[3]李念强.数据采集技术与系统设计[M].北京:机械工业出版社,2009.
[4]李光提,李淑君,李汝莘.步进电机的虚拟仪器控制系统[J].山东农业大学学报:自然科学版,2009(1):103-106.
[5]陆祥生.机械手理论及应用[M].北京:中国铁道出版社.1985.
[6]宋玟琪,万光珉,杨宗正.机械手的基本知识[J].机械学报,1980,12(4):245-252.
[7]李强,姚红兵.基于LabVIEW的振动虚拟测试系统的设计[J].虚拟技术学报,2009(3):12-13.
[8]柏林,王见,秦树人.虚拟仪器及其在机械测试中的应用[M].北京:科学出版社,2007.
[9]北京中科泛华测控技术有限公司.计算机虚拟仪器图形编程LabVIEW 实验教材[M].北京:北京大学出版社,2006.
[10]刘君华.虚拟仪器图形化编程语言LabVIEW教程[M].西安:西安电子科技大学出版,2001.