0 前语
在数控自动操控范畴中,所谓运动操控便是对机床机械设备运动部件的方位、速度、加速度等参数进行宴时的操控办理,使其依照预期的运动轨道和规则的运动参数进行运动。因为工业操控核算机IPC(Industrial Personal Computer)强壮而完善的功用,依据Pc规范总线的运动操控器现已在数控体系操控范畴得到了广泛的运用。可是。依据PC规范总线的运动操控器因为在硬件规划上选用板卡规划,这种结构的运动操控器不宜长时间作业在环境恶劣的工业现场(有振荡、粉尘、油污等)。因而近年来,敞开式运动操控器成为数控机床工业操控范畴研讨的热门。
Linux是一个遵从POSIX(Portable Operating SystemInterface)规范的多用户多使命且具有先进的网络特性开源操作体系,能够便利的进行自主知识产权的软件开发。但Linux不是一个“硬”实时操作体系,其内核为非抢占式的(no-preemptive),实时使命不能够得到确保,而运动操控器自身是综合性很强的技能,具有显着的实时操控、实时交互和实时监测特性。本文研讨了RTAI(Real-time Application Interface)的完结原理和依据Mpe5200实时嵌入式Linux运动操控器的架构剖析,并完结其在数控体系中的运用。
1 实时Linux的完结
运动操控器作为一个嵌人式体系,除了具有一个高性能的嵌入式微处理器,还应该具有一个与处理器合作的嵌入式操作体系。嵌入式操作体系除了具有一般操作体系最基本的功用,如使命调度、同步机制、中止处理和文件功用外,还应该具有以下特色:可移植性、可削减性、实时性、强稳定性和杰出的图形支撑。Linux是全面多使命的32位敞开式操作体系能够使运动操控器具有可扩大、可移植、可靠性高和兼容性好等长处,十分合适作为敞开式运动操控器的开发渠道。
到现在为止,全球在Linux渠道下开发的具有硬实时功用的体系首要有两个:R1unIlx和RTAI。RTbn一最早是美国新墨西哥理工学院的一个研讨项目,它是由Victor Yodaiken提出规划思维,由MichaelBambanov完结的硬实时操作体系。RTAI(Real Timepplication Interface)是由意大利米兰理工学院航天工程系建议开发的一个遵从GNU的开源项目,RTAI现已支撑1386,PowerPC,ARM,MIPS和M68k.nommu等处理器。是现在支撑处理器最多的linux实时解决计划之一。
RTAI的完结机制与RTLinux十分类似,仅有不同的是RTAI在Linux上界说了一个实时硬件笼统层RTHAL(Real·time Haldwam Abstraction Layer)。并针对RTAI开发了LXRT(Linux.RT)。让RTAI能够调用Linux自身的体系调用功用,如图1所示。
图1加载RTAI的Linux内核结构
RTAI修正了linux/arch/i386中与体系结构相关的代码而形成了RTHAL层,RTHAL的作用是使RTAI能够在实时使命需求运转的任何时刻中止Linux。引进RTAI后,Linux的功用没有改动,可是作为优先级最低的使命运转,而且只要在没有实时使命的时分它才干履行。这样做的优点在于将直接修正linux中心的代码减到最小,这使得将RTAI移植到linux内核的作业量减至最低。
RTAI完结的首要模块有RTAI模块、SCHED模块、FIFO模块、SHM模块、LXRT模块,它们能动态装入和卸载。用户自己的实时使命是在RTAI装入后再载人。能够经过修改/etc/rc.sysinit文件,在体系启动时将RTAI模块和用户实时模块加载到Linux内核中,当实时模块加人到内核后,实时模块中创立的线程和函数就能够拜访体系的底层资源。
2 运动操控器体系规划
运动操控器由硬件体系和软件体系两大部分组成。依照模块化规划思路,将运动操控器的体系结构划分为用户层、内核层和设备层(图2所示)。其间内核层和设备层两部分组成了运动操控器的敞开式渠道。这种独立的层次结构使得运动操控器易于完结数控体系上的敞开式运用。
图2运动操控器渠道体系示意图
用户层(虚框内)便是敞开式运动操控器的用户程序空间,运动操控器的用户软件是依据运用目标进行特别化规划的,能够灵敏替换。敞开式运动操控器的规划思路是:无需更改底层软/硬件模块,依据被控目标的特征规划不同的模块化用户软件就能够满意不同的运动操控使命,表现出运动操控器敞开式的特性。“用户软件模块化”是敞开式运动操控器最大的特征,而“用户软件模块化”刚好也是Linux供给的一种机制:Linux的内核和用户程序是彻底别离的,用户程序经过调用设备操作接口就能够完结对硬件设备的操作。
内核层的规划依照两条彼此独立的线路打开:移植Linux操作体系和开发设备驱动程序。从图2能够看到,运动操控器的内核层规划最为杂乱.这部分的规划是与Linux内核机制严密相关的。运动操控器很多的硬件设备是由Linux设备驱动程序供给用户软件设备操作接口的.图2中内核层的“运动操控接口”和“现场通讯接口”是敞开式运动操控器最首要的设备接口。设备驱动程序因为处于Linux内核的最底层,因而相对于上层用户软件又称之为底层软件。
图3 MPC5200微处理器功用框图
设备层是运动操控器的硬件层,在这部分规划过程中需求完结运动操控器的硬件规划,电路规划。嵌入式运动操控器的硬件规划与传统的依据PC机的运动操控器规划有很大不同之处。考虑到面向特别范畴的运用特性,嵌入式体系不能运用桌面体系那样丰厚的硬件资源,因而规范的Pc机硬件无法直接运用到嵌入式运动操控器中去,这些决议了敞开式运动操控器的硬件规划具有其特别性。
2.1 硬件结构规划
运动操控器微处理器选用的是摩托罗拉公司于2003年下半年推出的新式的具有广泛发展前景的PowerPC MPC5200.其内部选用了双处理器结构,有一个专门担任通讯的协处理器,表现了数据通讯的专业构架。并经过双端口内存(这是种极快的数据交换方法)与主处理器通讯,从而使主处理器担负大幅度下降。其芯片内部含有丰厚的实用型外设。
依据PowerPC内核的MPC5200”“是一颗低功耗、处理速度达760MIPS的嵌入式处理器。它支撑以太网、USB、PCI、ATA、12S、12C、SPI、串行接口、J1850和操控区域网(CAN)。一起,它还支撑DDR存储器,并集成了一个双精度的浮点单元(FPU),如图3所示。
MPC5200运动操控器是一款十分合适于工业操控范畴运用的运动操控器,敞开化的特色使其能够运用于多种机械设备上,而经过CAN总线互连组成的现场总线运动操控体系是一种全新的分布式操控体系。因而Mpc5200运动操控器彻底能够满意现代数控体系高速化、智能化、网络化、集成化、敞开化的需求。
2.2 软件结构规划
在实时Linux下,为了确保数控体系的实时使命能够即时呼应。一切和实时相关的使命都有必要放在内核层下,每个使命用一个独立的内核进程来履行,实时进程是经过调用RTAI的rt—task—init()函数来完结的。而非实时使命则放在用户层下,它们在任何时分都不会打断实时使命的运转,只要在实时使命完毕后才会履行。
嵌入式数控的基本功用由各种功用模块共同来完结的。在以linux为操作体系的敞开式渠道上集成RTAI的实时内核。经过模块化的规划思维,能够将整个操控体系依照实时性的要求分为用户层模块,内核层实时模块两个大的模块,一起在两个大的模块下又依据不同的子功用分为代码解说模块,人机交互及刀具仿真图形模块,文件办理模块,方位操控模块,插补运算模块,状况监测模块等,如图4所示。
图4体系软件结构图
内核层和用户层之间进程的通讯首要是依托RTAI供给的实时nFo,经过调用函数rlf_create()来创立管道完结数据传输。FIFO的通讯是单向的,因而用户层和内核层的信息交互有必要至少创立两条管道才干完结。
3 实时操控的软件完结
依据对敞开式运动操控器的运转机制剖析,将各实时使命模块别离设置相应的定时器作业方法。优先级及通讯行列等。
实时功用模块完结方法如下:方位操控使命moor()决议电机操控精度。核算下一周期的实践坐标增量,输出到伺服单元驱动步进电机作业。因而将其规划成周期性RTAI线程.运转周期为4ms,1级优先权。
功用操控使命control()是使用fifo从用户层向内核层传递操控指令,并完结对I/O口的操控。此使命选用实时中止战略,在接受到操控指令,内核挂起方位操控使命。
状况检测使命monitor()要对状况进行实时监控。因而设置此使命运转周期为lOms.优先级为3级。运动操控器软件的一切实时使命和函数包含在实时模块main—program.o中。经过编{t}/etc/rc.sysinit文件,在体系启动时加载到Linux内核中。当实时模块加入到内核中。实时模块中创立的线程和函数就能够拜访体系的底层资源。
实时使命模块的加载和卸载在Linux中由initmodule()和cleanup—module()两个函数完结的,一起能够经过这两个函数进行资源的分配和收回,以及线程和处理函数的创立。
4 完毕语
本文在深入研讨Linux实时操作体系的基础上。将Linux操作体系移植到数控机床上具有实用价值的嵌人式微处理器MPC5200上,证明了数控嵌人式体系彻底能够完结必定程度的敞开性,且移植Linux也是开发嵌人式数控运动操控器操作渠道一种比较好的计划。具有显着的先进性和实用性。
经过一系列的试验剖析和运用研讨,现已成功将MPC5200运动操控器运用于自主开发的一种依据CAN总线的嵌入式线束机操控体系,该系列机床现现已过项目成果鉴定,现在正在进行产业化推行作业。在此也期望本文能为开发和推行我国具有自主知识产权的嵌人式Linux运动操控体系供给必定的学习和协助。