APP下载

高压带电作业机器人嵌入式控制系统设计

2011-12-29宫廷赵文文

考试周刊 2011年56期

  摘 要: 随着机械控制技术的快速发展,基于传统的工控机或者PLC的控制器已经无法满足高压带电作业机器人稳定性、实时性、扩展性,以及高效、低功耗的工业化要求。本文设计出了一套基于ARM的嵌入式控制器,并将μC/OS-Ⅱ移植其中作为操作系统。其在提高开发效率、缩短开发周期,以及提高可靠性等方面的优势,可以很好地满足工业控制器个性化、智能化的发展需要。
  关键词: PLC ARM μC/OS-Ⅱ 嵌入式控制器 移植
  
  1.引言
  高空高压带电作业是指在不停电的状态下对架空高压线路进行维修、更换设备等,以避免停电带来的不便与损失。带电作业已经成为保证供电设备可靠运行、提高电网运行效率与质量的重要手段;其经济社会效益是无法估量的。自1999年我国开始进行带电作业机器人研究至今,取得了巨大的成果,但随着智能控制技术的不断提高,节能、低功耗且稳定性与实时性并举成为工业控制机器人的发展趋势,具有嵌入式系统的控制器不仅可以满足这方面的需要,在可扩展性方面也表现得十分出色。
  基于ARM的开放式控制系统不仅价格合理、结构简单,而且移植性好,能够实现功能模块的最大化扩展。这些功能模块全部连接在总线上,互不影响、切换快速。这些优点对于提高高压带电作业机器人的整体工作性能、效率与质量具有重大的作用。因此本文设计了基于ARM的嵌入式控制器,采用模块化结构,对于嵌入式技术的发展具有一定的技术意义。
  本课题项目高压带电作业机械手的控制车的设计图如图1。
  2.硬件结构设计
  带电作业机器人嵌入式控制器的设计主要包括硬件层和内核层,按照本控制器的设计理念,硬件层应满足实时性、可扩展性、低成本,以及基于标准的总线结构。
  2.1微控制器
  其采用了PHILIPS公司的ARM7TDMI-S核、总线开放的单片机LPC2292。LPC2292是世界首款可加密的具有外部存储器接口的ARM芯片,具有零等待256KB的片内FLASH,16KB的SRAM,可简化系统设计,提高性能及可靠性。芯片内部具有UART、硬件I2C、SPI、PWM、ADC、定时器和CAN等众多外围部件,功能强大;144引脚LQFP封装,3.3V和1.8V系统电源,内部PLL时钟调整,功耗低。
  2.2整体设计
  LPC2292具有144引脚的封装、非常低的功耗、若干个32位定时器、8路10位ADC转换器、2路CAN接口,以及PWM通道和9个外部中断引脚,这使其特别适用工业控制应用以容错维协议转换器及许多其他应用中护总线。此外,LPC2292内部含有76(使用了外部存储器)到112个(单片)可用GPIO口。并且含有宽范围的串行通信接口,因此非常适合应用于通信网关。
  3.控制系统软件
  3.1实时操作系统介绍
  实时操作系统是继传统的前后台系统后,针对其及时性比较差的问题而出现的一段在嵌入式系统启e686a0073f96efbf20129534202bf466502cd9d971f0ebd74aca02385b63333f动后首先执行的背景程序,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源管理、消息管理、任务调度及异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态的切换各个任务,保证对实时性的要求。
  随着智能控制的发展,以及工业化水平的不断提高,实时操作系统的应用是十分必要的。首先,实时操作系统提高了系统的可靠性,提高了开发效率缩短了开发周期;其次,嵌入式实时操作系统充分发挥了32位CPU的多任务潜力,特别适合于运行多任务实时系统。在嵌入式实时操作系统环境下开发实施应用程序使得程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理,通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。
  常见的嵌入式实时操作系统有:嵌入式Linux、VxWorks、OSE、eCos、μC/OS-Ⅱ。
  3.2实时操作系统的比较与选择
  VxWorks操作系统成本高,结构复杂,不适合小型应用;Linux操作系统体系结构复杂,产品化和商业化程度不够,即使在Linux本来的PC目标环境下,也难寻理想的技术支持,更不用说嵌入式环境下的Linux,这方面的弱势对批量生产、大规模、长时间运行使用的工业化产品来说是致命的。因此,本文选择μC/OS-Ⅱ作为操作系统,其主要优势为:μC/OS-Ⅱ是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,成本低、实时性强、移植性能好、扩展性能优良。
  4.μC/OS-Ⅱ的移植
  4.1μC/OS-Ⅱ的简介
  μC/OS-Ⅱ是一个完整的、可移植、固化、裁剪的占先式实施多任务内核,并且是用移植性很强的C语言编写的,与微处理器硬件相关的部分是用汇编语言编写的,使其可以供不同架构的微处理器使用,至今,从8位到64位,μC/OS-Ⅱ已经超过40种体系架构的处理器上运行。虽然μC/OS-Ⅱ是在PC机上开发和测试的,但μC/OS-Ⅱ的实际对象是嵌入式系统,很容易移植到不同架构的微处理器上。所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行,要移植uC/OS,目标处理器必须满足以下要求:
  1)处理器的C编译器能产生可重入代码,且用C语言就可以开/关中断;
  2)处理器支持中断,并能产生定时中断(通常为10—100Hz);
  3)处理器能支持一定数量的数据存储硬件堆栈(可能是几千字节);
  4)处理器有将堆栈指针和其它CPU寄存器读出并存储到堆栈或内存中的指令。
  像Motorola6805系列的处理器就不能满足上面的后两项要求,所以μC/OS-Ⅱ不能在这类处理器上运行。因此在了解启动代码之前对于ARM体系结构与启动过程的了解非常重要。
  4.2移植工作
  与处理器相关代码是移植中最关键的部分,内核将上层应用程序和底层硬件结合成为一个整体,要使内核使用与不同硬件层就需要在内核与硬件之间有一中间层,这就是与处理器相关的代码,处理器不同代码也不同,移植时我们必须进行修改;在进行μC/OS-Ⅱ的移植时,我们也只需要修改这部分代码即可。
  1)OS_CPU.H中需要设置一个常量来标识堆栈增长方向;
  2)OS_CPU.H中需要声明几个用于开关中断和任务切换的宏;
  3)OS_CPU.H中需要针对具体处理器的字长重新定义一系列数据类型;
  4)OS_CPU_A.ASM需要改写4个汇编语言的函数;
  5)OS_CPU_C.C需要用C语言编写6个简单函数;
  6)修改主头文件INCLUDE.H,将上面的三个文件和其他的头文件加入。
  INCLUDES.H是一个主头文件,它出现在每个.C文件的第一行,#include“includes.h”。INCLUDES.H文件使得工程项目中的每个.C文件无需分别考虑它实际上需要哪些头文件。
  OS_CPU.H包括了用#define语句定义的、与处理器相关的常数、宏,以及类型。与处理器相关的代码为:
  #define OS_CRITICAL_METHOD2
  #define OS_ENTER_CRITICAL()ARMDisablet_int()
  #define OS_EXIT_CRITICAL()ARMEnable_int()
  
  #define OS_STK_GROWTH 1
  #define OS_TASK_SWOSCtxSw
  全局函数声明:
  extern void OSCtxSw(void);
  extern void OSIntCtxSw(void);
  extern void ARMDisableInt(void);
  extern void ARMEnableInt(void);
  extern void OSTickISR(void);
  OS_CPU_C.C在μC/OS-Ⅱ的移植中需要编写以下10个函数:
  OSTaskStkInit()
  OSTaskCreateHook()
  OSTaskDelHook()
  OSTaskSwHook()
  OSTaskIdleHook()
  OSTaskStatHook()
  OSTimeTickHook()
  OSInitHookBegin()
  OSInitHookEnd()
  OSTCBInitHook()
  在这里我们移植OS_CPU_C.C文件时,需要编写的是任务堆栈初始化函数OSTaskStkInit和时钟节拍中断服务钩子函数OSTimeTickHook。
  μC/OS-Ⅱ的移植需要改写OS_CPU_A.ASM中的4个函数:
  OSStartHighRdy()
  OSCtxSw()
  OSIntCtxSw()
  OSTickISR()
  如果编译器支持插入行汇编代码,就可以将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必再有单独的汇编语言文件。
  4.2μC/OS-Ⅱ的测试
  当做完μC/OS-Ⅱ的移植后,紧接着就是验证其是否正常工作,首先应该测试内核自身的运行状况,可以在没有应用程序的情况下进行测试,也就是让内核自己测试自己。这样不仅可以使事情简单化,而且可以很清楚地发现问题是移植本身的问题而不是应用代码产生的问题。如果一些简单程序和时钟节拍中断服务子程序可以运行起来,那么添加应用程序就非常简单了。
  5.结语
  本文针对如今高压带电作业机器人生产作业中存在的一些问题,提出了基于ARM的实时嵌入式系统控制器的设计,其可移植性、可扩展性、可交换性,以及高效低成本的显著优势,不仅缩短了开发周期、提高了设备实时性、优化了工作效率,而且其低功耗起到了节能的作用。可见,这种设计将是未来工业机器人智能化发展的必然趋势。
  
  参考文献:
  [1]Jean J.Labrosse.嵌入式实时操作系统μC/OS-Ⅱ(第2版)[M].北京航空航天大学出版社,2007.09.
  [2]陈是知.μC/OS-Ⅱ内核分析、移植与驱动程序开发[M].人民邮电出版社,2007.09.
  [3]周立功.ARM嵌入式系统基础教程[M].北京航空航天大学,2005.01.
  [4]戚晖,彭商贤.面向对象的高压带电作业机器人控制系统[J].机器人,2002.05.