王源源
(成都东软学院,四川 成都 611844)
摘要:根据步进电机的工作机理以及VxWorks驱动程序的实现机制,设计了数据采集和尾翼电机控制模块,并通过编写的驱动程序实现对三轴向步进电机的控制。以工程实践中所做的嵌入式软硬件系统容错的可靠性设计为依据,硬件设计采用了结构化、模块化的设计思想;软件方面,对设备驱动可靠性的设计着重于设备驱动与操作系统内核的有效分离以及双驱动冗余备份及智能切换技术。
教育期刊网 http://www.jyqkw.com
关键词 :步进电机;VxWorks;驱动程序;可靠性设计;双驱动冗余备份;智能切换
0引言
自20世纪70年代单片机出现以来,嵌入式系统已获得了较为深入的研究,随着嵌入式技术的不断成熟,基于嵌入式系统编写特制电路下的设备驱动程序也越来越受到人们的青睐。在所有的操作系统中,VxWorks的系统结构是一个相当小的微内核的层次结构,内核支持VxWorks在较高层次所需要的多任务环境、进程间通信和同步功能,并以其良好的可靠性和卓越的实时性被广泛应用于通信、军事、航空、航天等高精尖技术及实时性要求极高的领域。本文主要从软硬件的可靠性设计方面来阐述,硬件方面采用了结构化、模块化的设计思想,硬件平台结构清晰、易于裁剪[1];软件方面,对设备驱动可靠性的设计着重于设备驱动与操作系统内核的有效分离、双驱动冗余备份及智能切换技术[2-3]。
1系统设计方案
从功能、接口、结构、模块间通讯方式等方面来考虑划分模块,我们可以将本系统分成数据采集模块、控制模块和尾翼电机控制[4]模块。系统整体结构如图1所示。
(1) 控制模块采用基于ARM920t内核的S3C2410A微处理器作为控制系统的中央控制器,该芯片主频400 MHz,最高可达到533 MHz,内含多种设备接口,硬件支持从Norflash启动并可增加NandFlash容量。
(2) 数据采集部分采用的是飞思卡尔公司的MMA7260QT三轴向加速传感器,其采用了信号调理、单极低通滤波器和温度补偿技术,并提供4个量程可选,用户可在4个灵敏度中做选择,且带有低通滤波并已做零g补偿。MMA7260QT传感器可准确测量三轴低量级下降、倾斜、移动、定位、撞击和震动,并且带符号输出表示测量值的方向。当周围环境发生变动时,通过MMA7260QT型三轴小量程加速传感器,可将X轴、Y轴和Z轴变化的加速度转换为数字信号供ARM处理器处理。
(3) 尾翼电机控制部分采用的是TA8435H电机驱动芯片,通过MMA7260QT型三轴小量程加速传感器采集的数据,经ARM处理器处理后输出信息,来控制电机无极调速,从而控制X、Y、Z轴的功放,进而控制X、Y、Z轴电机的转速,以达到控制方向的目的。
2系统硬件的可靠性设计
根据调查研究,当前的硬件设计能力已相当成熟,以往设计嵌入式硬件主要是从元器件的选用与控制、热设计、电磁兼容设计等方面来保证其可靠性,只着眼于所开发的产品个体,着眼于可靠地实现系统的各项功能,并未系统地从横向考虑开发相近产品所需的条件或从纵向考虑产品的升级换代,造成多个产品设计相对孤立、设计开发周期长、效率低,增加了产品升级和新产品研发的难度。
在本设计中,我们除了遵循传统的嵌入式硬件设计方法外,还引进了模块化和容错设计思想[5-6]。
模块化设计的核心思想是以少变的系统构思应付多变的需求,以内部的标准化应付外部的个性化和多样化,通过可重用的模块组合得到尽可能多的品种,最大限度地满足不同用户的需求,同时也便于设备调试和维修。
同时,对于电机控制驱动模块,我们可以采用容错控制原理,即在以前的三路电机基础上增加一到两路电机控制作为备用电机,这样的话,当三路电机中某路偶尔出现问题时就可调用备用电机,从而使得其在各种恶劣的环境下都能可靠工作。硬件模块容错框架原理如图2所示。
从功能、接口、结构、模块间通讯方式等方面来考虑划分模块,我们可以将本设计分成传感器输入模块、控制模块和尾翼电机控制模块,这样既可发挥模块化设计的优势,又能避免模块组合带来的兼容性[7-8]问题。
(1) 控制模块(主控CPU)的功能主要是实现电机控制以及传感器信号的处理和控制。对电机的控制采用模块化方法,即选用已成熟的电机驱动器直接控制电机,因此,控制模块硬件电路的设计主要解决电机驱动器与ARM应用板之间的接口问题以及相关传感器信号采样问题。软件的设计遵循与硬件相结合的方法,即根据性能要求,基于硬件电路的设计进行相关软件算法的研究。控制模块的目的是根据输入控制信号、传感器采样信号,实现对尾翼控制的3个电机进行协调控制,使之能实现左、右、上步进电机的转速、转动时间、正反转的控制,即三自由度控制,问题的核心在于对各电机的启停、速度、方向进行控制。
(2) 对于电机控制驱动模块,单独设计一个CPU控制一路电机。通过片间接口模块接收来自主控CPU的目标位置数据,进行点对点控制。即由模块中的CPU完成发送脉冲指令,实现加、减速运动的控制,使电机运动至主控CPU指定位置。在此处,电机控制模块的本质就是“黑匣子”,拥有公开接口,实现完整功能,无需知道其内部情况就可在不同系统中进行电机的点对点控制,从而体现其通用性。
(3) 容错模块选择器其实是一个多分支选择电路,当主转电机出现异常事故时,可以通过检测驱动芯片返回的异常信号来自动切换到备用电机,从而保证了系统在异常的情况下能够正常工作。
总之,在设计中运用模块化和容错的设计思路,可使各单元工作要求明确,提高了总体设计的可行性和可靠性,缩短了设计周期,降低了制造成本,便于设备调试和维护,增强了抗干扰性,加强了各个模块的通用性,为以后的升级换代预留了空间。
3系统驱动软件的可靠性设计
驱动软件在嵌入式系统中起到了桥梁作用,应用软件通过其找到与硬件相连的接口,进而来控制硬件,因此嵌入式系统的可靠性除了在硬件方面要得到保障以外,很大一部分依赖于驱动软件的高可靠性。
根据现有的关于驱动程序的可靠性研究[9],驱动可靠性的提高依赖于对驱动程序的隔离,因而如何将设备驱动程序运行空间与内核运行空间进行有效隔离,成为了我们着重关注的问题。
根据驱动程序进行隔离后所处的地址空间,一般将设备驱动隔离在3个不同位置:
(1) 驱动程序仍然运行在内核态,但要加强对驱动程序运行时的权限限制和对驱动程序的安全检查;
(2) 将驱动程序迁移到用户态空间[10],把驱动程序当成应用程序来运行;
(3) 将驱动程序隔离在一个单独系统中,运行驱动程序和上层系统通过微内核进行通讯。
在本设计中我们采用的是第二种提高驱动可靠性的方法,即将驱动程序迁移到用户态空间,其好处有二:
(1) 与内核地址空间隔离,驱动的崩溃不会引起系统崩溃;
(2) 驱动开发与调试均可使用用户空间的编译工具和调试工具,并且引入了模块化的设计思想,使得驱动的开发与调试更加便捷。
驱动应用框图如图3所示。
同时,提高驱动程序的可靠性还可以采用双驱动冗余备份及智能切换技术[2-3],该技术能进行智能切换,即一个驱动作为主驱动正常工作,另一个驱动作为备用驱动处于激活状态。当主驱动发生故障时,系统自动切换至备份驱动继续工作,这就保证了整个系统的高可靠性。其原理如图4所示。
4结语
本文介绍了嵌入式VxWorks下的一种高可靠性尾翼电机容错控制模块,成功实现了通过外部传感器的输入信号来控制各个方向的电机的转速、转动方向和转动时间,其已经在各种环境下进行过严格测试并用于工业自动化控制中,实践证明性能稳定可靠。
[教育期刊网 http://www.jyqkw.com
参考文献]
[1]潘继军.基于ARM的嵌入式系统实验分析[J].微计算机信息,2006(5):129-131,66.
[2]胡国鹏,刘利强.VxWorks环境下双冗余以太网卡技术在底层驱动中的实现[J].应用科技,2005,32(8):43-45.
[3]刘利强,戴运桃,周卫东.基于VxWorks的双端口网卡智能双冗余驱动[J].电子技术应用,2006(7):64-66.
[4]王鸿钰.步进电机控制技术入门[M].上海:同济大学出版社,1990.
[5]姚放吾.嵌入式系统的硬件/软件协同设计[J].微计算机信息,2001(3):1-3.
[6]蔡建平.关于嵌入式应用开发技术[J].单片机与嵌入式系统应用,2001(3):5-11,34.
[7]薛萍冰.电子系统中抗干扰技术的实用经验[J].国外电子测量技术,2008,27(8):69-71.
[8]李舜阳,李华.印制电路板的电磁兼容设计[J].电子产品可靠性与环境试验,2002(2):18-22.
[9]周启平,张杨.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.
[10]颜跃进,秦莹,孔金珠,等.操作系统设备驱动可靠性研究综述[J].计算机工程与科学,2009,31(5):121-125.
收稿日期:2015-08-31
作者简介:王源源(1984—),男,河南南阳人,硕士研究生,助教,研究方向:嵌入式系统开发与应用。