熊柄铸 王中杰
基于嵌入式Web的三自由度转台的远程控制
熊柄铸 王中杰
现场总线是一种广泛应用于工业现场和实验室中的技术,它可以提供设备可靠的连接控制,非常成熟。但现场总线是一种专用网络,随着控制的物理空间的扩大,将会大大增加控制系统的成本。随着嵌入式技术和网络技术的成熟,工业设备实现网络化管理已成为一种趋势。利用嵌入式Web技术的B/S(浏览器/服务器模式设计嵌入式远程控制系统是当前热点,这种设计方法改变了以往的控制系统体系结构,可以满足系统远程控控制的要求,具有很广阔的应用前景。同济大学开发了基于远程控制的三自由度转台,本文即是在文献的基础上研究了该转台在连续运动状态下的远程控制。
三自由度转台主要由工作台、连接块、丝杆、驱动部件、中心旋转机构、基座等部件组成,如图1所示。工作台是一个圆形的铝合金平台,采用铝合金可以减轻平台的重量,驱动部件可以以较小的力矩驱动平台的运动。丝杆选用的是螺距为1mm的规格。
当三台驱动部件同时工作时,且所作的运动相同时,比如同时向下或向上,工作台沿Z轴上下移动;驱动部件1独立运动,驱动部件2、3不运动时,振动台绕Y轴翻转;绕X轴的翻转需要由驱动部件2和驱动部件3的反向联动实现。系统最终实现了绕X轴、绕Y轴、沿Z轴平移三个自由度的运动。
驱动部件主要由步进电机与齿轮箱组成,步进电机轴上装有主动齿轮,丝杆通过轴承固定在从动齿轮中,主动齿轮和从动齿轮以1:1的传动比啮合,封装在齿轮箱内。每台电机通过齿轮箱带动丝杆上下移动,丝杆螺距为1mm,即电机每转动一圈,丝杆上下移动1mm,推动转动台。
驱动部件的驱动电机选用的是2相4线、步距角为1.8°的步进电机,每个步进电机由配套的一个电机驱动器控制,电机驱动器的主要输入控制信号是脉冲和方向控制电平,在本例中脉冲控制信号是开发板的PWM输出,在驱动器其他参数保持不变的情况下,可以通过改变脉冲频率,改变电机的转速,频率越高,电机的转速越高。
图1 三自由度转台系统示意图
硬件层介绍
本系统CPU采用的芯片是S3C2440A,这是一款由三星公司生产的16/32位RISC处理器。S3C2440A采用了ARM920T的内核,0.13um的CMOS标准单元和存储器单元。S3C2440A的突出特点是其核心处理器,它是一个由Advanced RISC Machines有限公司设计的16/32位ARM920T的RISC处理器。ARM920T实现了MMU、AMBA BUS和Harvard高速缓冲体系结构构。
除了微处理器,嵌入式系统硬件还应包括外围设备,外围设备主要用于完成存储、通信、显示、调试等辅助功能。它主要包括存储器(SDRAM、Nor Flash、Nand Flash等),通信设备(RS-232串行通信接口、USB总线接口、以太网接口等),显示设备(LCD、触摸屏),调试设备(JTAG调试端口),输入设备和电源装置等辅助设备,以及一些常用的GPIO接口。
驱动层介绍
设备驱动程序是系统内核和机器硬件之间的接口,为应用程序屏蔽了硬件的细节。在应用程序看来,硬件设备抽象为设备文件,可以像操作普通文件一样对硬件设备进行操作。应用程序在系统中不能直接操作硬件,因此应用程序对具体设备的操作必须通过设备驱动程序来实现。本系统中通过编写对应端口的驱动程序motor.c,实现了对端口的高低电平输入输出以及PWM波输出的设置。编写端口的驱动程序最重要的是编写调用函数,如open(),ioctl(),close()等,以供应用程序调用。
将设备驱动程序加入内核有两种方式:一种是直接编入内核中,这种方式每次修改驱动程序时都需要重新编译内核,过程复杂;另一种是以模块的方式加载,通过insmod命令将模块连接到正在运行的内核,也可以使用rmmod命令移除连接。本例中在交叉编译环境下编译驱动程序源文件motor.c,生成相应的模块motor.ko,将此模块加载到开发板上,生成相应的设备文件/dev/motor。
应用层CGI介绍
在Linux下实现页面动态交互通常选择CGI技术。CGI称为公共网关接口,是一段运行于服务器上的程序,可以将客户端浏览器递交的信息传递给服务器,服务器则会执行相应程序,最终可将结果再反馈给客户端 。编写CGI应用程序时,只需打开相应的设备文件/dev/motor就可以通过驱动程序中的系统调用,实现对硬件资源的控制。
浏览器将表单数据以POST/GET方式提交给Web服务器。使用GET方法请求的HTML表单会使服务器用环境变量把数据传递给程序,而使用POST方法请求的HTML表单会使服务器用标准输入把数据传送给程序。
程序获得网页传递的变量后需要解码。本例中传递的变量时振动台的控制指令变量,这些变量经过CGI程序中的控制算法计算后,通过驱动程序的系统调用,控制开发板的硬件资源,实现对振动台的控制。
嵌入式Web服务器介绍
系统移植了基于Linux2.6内核的操作系统,Linux环境提供了httpd、thttpd和Boa三种嵌入式Web服务器。其中,httpd的功能最简单,只支持对静态页面的查询,但并不支持CGI,httpd服务器可以用来实现一些简单功能,如一些简单的在线帮助、系统介绍等静态页面查询。Thttpd和Boa都支持CGI,功能比较全面。如果需要提高系统安全性,或者需要与用户交互,可以选择thttpd和Boa这两种服务器中的一个,但是thttpd在运行的过程中比Boa所需要更多的资源 。
图2 方向控制信号占空比1:1
图3 方向控制信号占空比2:1
Boa是运行于Unix或Linux下的、支持CGI并适合于嵌入式系统的单任务Web服务器,其源代码开放、性能高。按照CGI标准编写的应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的数据交互。
为了实现对嵌入式开发板的Web控制,需要为FL2440开发板移植嵌入式服务器Boa。嵌入式Web服务器Boa的设计目标是速度和安全,Boa的体积非常小,非常适合于运行在存储空间很小的嵌入式系统上。
具体的控制过程是,控制人员在客户端打开Web浏览器,输入让振动台平移或者翻转的指令,控制指令通过Internet传递给远端的嵌入式网络平台,Boa服务器端解码传递来的指令,并经过通用网关程序协调算法运算后,调用由驱动程序提供的系统调用,通过电机驱动器对振动台的三个电机控制,控制振动台的位姿。文献中研究了三自由度转台的定点运动,即给定该系统沿某个轴的单侧翻转运动以及上下的平移运动。本文中,着重研究了该转台的周期性跟踪运动。
下面对Y-Z平面和Z-X平面的运动做一个简要的分析。首先说明一下所采用的参数,步进电机驱动器的步数设置为400,即每转动一圈需要脉冲数为400个,试验中设置的PWM脉冲频率为800HZ,这样每秒转动两圈,丝杆每圈1mm,这样丝杆每秒移动2mm。每个平面上的连续运动分成两种情况,一种是方向控制电压信号占空比1:1,另一种情况是占空比2:1。
(1)Y-Z平面
方向控制电压占空比为1:1时,此时波形如图2所示,正转和反转时间10s,理论上正转和反转时间内丝杆移动的距离为20mm,实验中测得正转移动17mm,反转移动16mm。
方向控制电压占空比为2:1时,此时波形如图3所示,正转和反转时间分别为10s和5s,理论上正转和反转时间内丝杆移动的距离分别为20mm和10mm,实验中测得为正转移动为17mm,反转移动为7mm。
(2)Z-X平面
方向控制电压占空比为1:1时,此时波形同图2,正转和反转时间10s,实验中测得正转移动19mm,反转移动17mm。
方向控制电压占空比为2:1时,此时波形同图3,正转和反转时间分别为10s和5s,实验中测得为正转移动为19mm,反转移动为9mm。
运动测试结果主要从两平面的对比和误差两个角度来分析。
Y-Z平面和Z-X平面的对比:无论占空比1:1还是占空比2:1的情况下,以丝杆移动距离精确度这个标准来看,Z-X平面的表现要优于Y-Z平面,究其原因,这主要是两个平面上硬件不对称所引起的细微差别。Y-Z平面上有相对的两个步进电机,而Z-X平面上只有一个驱动电机,没有对立的。实验中由于机械构件自身的原因,可能造成电机在运动中丢步,无法在理想状态下工作,丢步的现象在实验中具体体现为平台会抖动一下,这种抖动的原因在于一个电机因为丢步而暂时停止了一下,而对立的电机却没有丢步,因此对立的电机那面会微微向上冲一下再回来。Y-Z平面的两个电机发生丢步的而暂停的几率要比ZX平面大,因为两个电机只要其中一个丢步就会引起暂停。Y-Z平面的两个电机相互制约,其他引起暂停的不确定因素也会比Z-X平面的单个电机更多一些。
误差分析:两个平面都会有误差的存在,系统的误差主要在于机械构件在制造过程中加工精度不高,尤其是电机驱动部件内的齿轮箱内的齿轮摩擦力较大,可能造成步进电机运动中丢步,没法在理想状态下工作。也有人为的测量误差,测量时用有色彩笔标记丝杆开始运动时和齿轮箱相交的位置,以及丝杆每次正要改变运动方向时与齿轮箱相交的位置,以此来测量一个运动过程中移动的距离,可以多次测量取平均值的办法来降低人为误差。
随着互联网计算机的发展,基于网络的控制系统将会扮演越来越重要的角色。本文基于Linux 2.6内核的32位处理器而构建的远程控制系统能够有效地实现三自由度转台的远程控制,嵌入式web的应用使得系统开发更加便捷。
10.3969/j.issn.1001-8972.2015.09.010