微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RTAI在开放式数控系统运动控制器中的应用

RTAI在开放式数控系统运动控制器中的应用

时间:12-12 来源:互联网 点击:
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内核机

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top