收稿日期:2004-10-11;修回日期:2004-10-19
作者简介:熊学文(1980-)男,湖北孝感人,华中科技大学国家数控系统工程技术研究中心硕士研究生,主要研究方向为CAD/CA M 与STEP-NC
技术,(E-mail)xiongxw584@126 。
文章编号:1001-2265(2005)04-0021-02
基于实时Linux 系统下的数控滚轧机的软件结构和实现
熊学文,熊清平,彭芳瑜
(华中科技大学国家数控系统工程技术研究中心,武汉 430074)
摘要:实时Linux(RTAI)是一种免费的、功能强大而广泛使用的实时系统。文章在分析了实时Linux (RTAI)的基本原理的基础上,提出了使用PC+Linux(RTAI)的数控系统实现方法,并在此理论基础上,开发了基于实时Linux 系统的数控滚扎机系统,详细介绍了基于实时Linux 系统下的数控滚扎机系统软件部分的各个模块的实现及系统总的流程。关键词:实时Linux;RTAI;数控;滚轧机中图分类号:TG659 文献标识码:A
Structure and Realization of C NC Roll Machine Software Based on R eal Time Linux
XI ONG Xue -wen,XI ONG Qing -ping,PE NG Fang -yu
(National NC System Engineering Research Center,Hua zhong University of Seience and Technology,Wuhan 430074,China)
Abstract:Real time Linux(RTAI)is a free 、powerful and widely used real time system.Base on the Basic principle of real ti me Linux (RTAI)analysis.The framework and realization of CNC system based on PC+Linux(RTAI)is pu t forward ,CNC Roll Machine sys tem base on the RTAI is developed,Realizati on of the software part is specially in detailed,and then the execute flow of the software system is introduced.
Key words:real ti me linux;RTAI;CNC;roll machine
0 前言
Linux 是类UNIX 操作系统的一个分支,最初是由Linus Tor -valds 于1991年为基于Intel 80386的IB M 兼容机开发的操作系统。在加入自由软件组织GNU 后,经过Internet 上全体开发者的共同努力已成为能够支持各种体系结构的具有很大影响的操作系统。Linux 是一个遵循POSIX (WPortable Operating S
ystem In -terface)标准的免费操作系统。Linux 内核为非抢占式的(no -preemp tive),实时任务不能够得到保证,因此,Linux 不是一个/硬0实时操作系统。本文通过采用RTAI(Real-time Application interface)实现实时Linux 。
滚扎机采用滚压技术,滚压技术是表面强化技术中的一种,采用了无切削工艺,具有节省材料、不破坏加工工件的金属纤维、强化金属组织、增加强度、硬度、光洁度、提高寿命、生产效率高、精度高的特点。
1 实时Linux 的实现
到目前为止,全球在Linux 平台下开发的具有硬实时功能的系统主要有两个:RTLinu x 和RTAI;RTLinux 最早是美国新墨西哥理工学院的一个研究项目,它是由Victor Yodaiken 提出设计思想,由M ichael Barabanov 实现的硬实时操作系统。RTLinux 是世界上最早的实时Linux 系统,在设计和实现上力图遵循POSIX 1003.13标准(尽管目前仍然有很多地方无法做到,)。RTLinux 已经广泛得到应用,从航天飞机的空间数据采集、科学仪器测控到电影特技图像处理等众多领域都有RTLinux 成功的范例.RTAI(Real-time Application interface)是在RTLinux 基础上由米兰
理工学院航天工程系(DIAPM)的程序员开发的实时应用程序接口。如图1所示,它的实现机制与RTLinux 非常相似,唯一不同的是RTAI 在Linux 上定义了一个实时硬件抽象层RTHAL (Real -time Har
dware Abstraction Layer ),并针对RTAI 开发了LXRT (Linux-RT ),让RTAI 可以调用Linux 本身的系统调用功能。
RTAI 修改了linux/arch/i386中与体系结构相关的代码而形成了RTHAL 层,RTHAL 的作用是使RTAI 能够在实时任务需要运行的任何时刻中断Linux.引入RTAI 后,Linux 的功能没有改变,但是作为优先级最低的任务运行,并且只有在没有实时任务时候它才能执行.其数据结构的定义如下:
struct rt hal{//实时硬件抽象控制层数据结构
struct desc struct *idt table;/*中断描述符表*/void (*disint)(void);/*禁止硬件中断*/void (*enin t)(void);/*开放硬件中断*/
unsigned int (*getflags)(void);/*取系统标志位E FLAGS */
void (*setflags)(unsigned int flags);/*设置系统标志位E -FLAGS */
//通用PC 单处理器中断控制器操作
void (*mask and ack 8259A)(unsi gned int irq);/*屏蔽指定中断*/
void (*unmask 8259A irq)(unsigned int irq);/*开放指定中断*/
//对称多处理器SMP 中断控制器操作
void (*ack APIC irq)(void);/*中断应答信号*/
void (*mask IO APIC irq)(unsigned int irq);/*屏蔽指
21
2005年第4期
#设计与研究#
图1 RTAI 实现原理图定中断*/
void (*ummask IO APIC irq )(unsigned int irq);/*开放指定中断*/
unsigned long *io apic irq s;/*通过APIC 中断控制器产生的中断*/
void *irq controller lock;/*中断控制器操作控制锁*/void *irq desc;/*硬件中断控制数据*/
int *i rq vector;/*外部硬件中断所对应的中断号*/void *irq 2pin;/*SMP 各中断如何被共享*/void *ret from intr;/*从中断返回函数*/
struct desc struct *gdt table;/*全局描述符表*/volatile in t *idle weight;/*空运行进程权重*/
void (*lxrt cli)(void);/*linux -realti me 系统禁止中断*/
};
extern struct rt hal rthal;
RTAI 分为rtai(中断处理),rtai sched(模块调度),rtai fifos (fifo 模块),它能动态装入和卸载,用户自己的实时任务在RTAI 装入后在载入,RTAI 的任务调度器提供硬实时能力,采用基于固定优先级的抢先调度策略。全部调度可根据定时器函数、实时事件或是异步事件来管理。RTAI 在Pentinu m 类CPU 上既支持单发定时器也支持周期定时器,但不能同时使用,不过可以在同一个应用中交替使用。
实时任务可使用浮点单元,当使用FPU 的任务装入时将被打上特殊的标志,并切换FDU 的上下文.这种方法既允许实时任务和非实时任务同时使用浮点单元又减少了不必要的上下文切换时间.RTAI 提供直接高效的硬件存取调用,而不必通过标准Linux 的中断管理层.
RTAI 的实时任务之间的通信方法包括:信号、互斥、消息队列和远程调用。实时任务与Linu x 任务之间的通信方法包括FI -FO 和共享内存。
2
数控滚轧机的软件结构
图2 数控系统软件结构
Linux 中的进程运行在两种模式下:系统模式(核心态)和用户模式(用户态)。数控系统软件结构如图2所示。
在实时Linux
下,为了保证数控系统的实时任务能够即时响应,所有和实时相关的任务都必须放在核心态下,每个任务用一个独立的内核进程来执行,这包括:位置控制,插补运算,PLC 管理和数据处理等。而非实时任务则放在用户态下,它们在任何时候都不会打断实时任务的运行,这包括:状态显示,人机界面,文件管理和参数设置。本数控滚扎机中实现滚轧过程滚轧力曲线、主轴转速曲线、主轴中心距曲线、主轴扭矩曲线、各加工数据即时显示,输入加工参数就可直接产生曲线,并可直接对屏幕曲线进行编辑修改,加工参数随之变化,以便于优化加工参数;系统能实现各部分故障的诊断提示及报警功能。
核心态和用户态下进程的通讯主要是依靠实时扩展部件RTAI 提供的实时FIFO 和共享内存来完成。核心态下的任务采
用可装载核心模块机制,可以动态的加载和卸载,这样对编写代
码比较灵活,有利于数控系统的调试和安装。在核心态下,数据流的控制基本上是先通过系统通信机
制从用户态取得数据,进行解释处理,然后是插补计算,插补任务主要是在插补周期内完成各个轴的位置增量计算;最后将插补的结果送给位置控制,它主要是发出运动指令控制各个轴的运动。PLC 主要处理机床I/O,进行逻辑运算和机床辅助功能的控制以及突发事件的处理等。由于滚轧机采用的是工艺卡片的形式和特殊的冷滚压加工,所以在此过程中将G 代码解释以及刀补等去掉。加工代码通过填充统一的数据格式获得。
位于用户态的人机界面是数控系统与使用者之间的对话接口,它作为一个背景程序来执行,主要完成文件操作、参数管理和数据交换,包括一方面将加工数据传送到内核中的实时任务,另一方面从内核中获得运动轴的信息来进行动态显示。
3 数控滚轧机的软件实现
在RTAI 下,所有的实时任务均是以模块的形式来实现,这样会很方便的加载和卸载。实时任务按照对实时性要求的高低来进行优先级排队,当加载数控系统模块时,系统根据优先级的高低来顺序启动各个实时任务。在这里,最高级任务为位置控制,它的时间片间隔为4ms;其次是插补任务和高级PLC 任务,时间片间隔为8ms;然后是低级PLC 任务,最后是数据处理和数据通讯。而位于用户态的界面,当作一个背景程序来执行。内核态的任务优先级总是高于用户态的界面任务,且不能被其抢占。
整个系统的启动和结束可以用一个shell 程序来执行,它的功能是实现各个模块的加载和卸载,以及用
户界面的运行。shell 程序是介于使用者和操作系统的内核程序间的一个界面,使用户更为方便的使用操作系统,类似于DOS 中的command 命令。由于各个模块之间具有相互依赖性,所以在加载和卸载各个模块时按照一定的顺序。首先要将RTAI 提供的实时模块装载,包括rtai 、rtai sched 、rtai fifos 和rtai shm 等模块;然后装入数控系统的各个实时模块。卸载模块的时候按照相反的顺序依次卸载。
除了显示区外,所有对菜单和按钮的操作功能都采用信号)))槽机制实现,信号)))槽机制类似于Windows 中的消息映射机制,通过信号)))槽机制可以实现函数回调功能,十分有利于界面的设计。整个系统的处理流程图如图3
所示。
图3 系统执行流程图
(下转第25页)
22
#设计与研究#
组合机床与自动化加工技术
控制实验平台上(硬件结构如图7),对新型的SVPWM 控制的有效性进行了实验研究。实验曲线如图9、10所示。实验中采用1.4kW 的永磁同步机,额定转速为1400r/min 。PWM 采样周期为200L s,死区时间取为4.8L s 。
linux内核设计与实现 pdf图9a 、b 为采用改进的空间矢量脉宽调制方法得到的相电压和线电压波形,图10a 为相电流波形。由图可以看出电压、电流的正弦性很好,消除谐波明显,这表明空间矢量调制算法的性能良好。图10b 为系统转速跟踪响应曲线(转速给定信号在-1000r/min 和+1000r/min 之间跳变),显然,转速调节的动、静态性能令人满意。因此,这种改进的SVPWM 算法在保证原有SVPWM
控制性能的基础上减小了开关损耗。
图9 SVPWM 的输出电压波形
4 结论
SVPWM 是一种适合数字控制的PWM 控制方法,
具有较高
图10 永磁同步机定子电流波形和转速跟踪
的电压利用率。采用本文零电压矢量的注入方法,不仅保持了SVPWM 的特性,还可进一步降低开关频率和开关损耗,且实现简单、实用性强。该控制方法可满足一般电气传动装置对调速性能的要求,在数控机床的进给驱动系统中有一定的理论和应用价值。[参考文献]
[1]吴守箴.电气传动的脉宽调制技术[M].北京:机械工业出版
社,1995.[2]H.W.Van Der Broeck,Hans-Christop h Skudelny,Analysis and
Realizaion of a Pulsewidth Modulator Based on Vol tage Space Vec -tors[J].IEEE Trans on IA,1988,24(1):235-243.
[3]Bowes,S.R.,Lai,Y -S,The Relationship Between Space -vector Modulation and Regular-sampled PWM [J].IEEE Trans -actions on IE,1997,44(5):1011-1020.
(编辑 李秀敏)
(上接第22页)
滚轧机的工艺参数包括主数据、中心距数据、主轴数据、滚
轧速度/滚轧力的设定,这些数据结构如下所示:
struct work data t{/*加工数据*/
struct main data t main data;/*主数据*/
struct cen data t cen data;/*中心距数据*/
struct speed force t speed force;/*滚轧速度/滚轧力数据*/
struct spin data t spin data;/*主轴数据*/
};
对于要滚扎的工件,其加工数据的主要数据结构如下:struct WORK DATA {
char num pos;/*工位数量*/
char pos;/*加工工位*/
char roll mode;/*滚轧方式:0-径向1-轴向2-往复*/
double dis first h;
double ver h;/*滑座初始位置和速度值*/double ver start h;
double ver forward h;
double ver back h;/*滑座快速前进和退回速度*/double rel deg[NUM WORK POS];
double act deg ;
double rel deg z;
double ver z;/*主轴相对角度和速度值*/int ti me;/*自动加工间歇时间*/int lubr num;/*集中润滑次数*/
int lubr flag;/*实际往复次数*/
double press roll;/*非滚轧时滚轧力(kn)*/struct WORK POS work pos[NUM WORK POS];
};
冷滚压工件时,滚轮安装于两平行的主轴上,工件毛坯装在滚轮之间。当滚轧轮和工件毛坯中两者之一或两者均强制转动时,同时滚轮径向进给压向坯料;滚轮齿顶面和坯料外圆接触使其变形,即在工件毛坯外圆上压出同要求齿数相同数目的沟槽来;随着压下量的增加,滚轮齿和坯料接触并产生相互转动,在滚轮齿的不断滚轧下,逐渐成形出所要求的齿形。
4 结束语
本文研究了实时Linux(RTAI)的结构和实现原理,以及进程调度的实现方法。详细的介绍了基于实时Linu x 系统的数控滚扎机的实现,经过现场加工证明,滚扎机能够很好的完成既定的任务,加工后的工件达到了较高的精度水平,性能稳定,因此开发基于linux 的高性能数控系统是一条符合中国国情的发展数控事业,赶超欧洲发达国家的有效途径。
[参考文献]
[1]邹勇,王青,李明树1Linu x 内核的实时支持的研究与实现
[J]1计算机研究与发展12002(4):468-4711
[2]李善平,刘文峰,王焕1Linux 与嵌入式系统[M]1北京:清华
大学出版社,20021
[3]阳道善1基于LINUX 开放体系结构数控系统的研究与实践
[D]1武汉:华中科技大学,20011
[4]陈莉君1Linux 操作系统内核分析[M ]1北京:人民邮电出版
社,20001
(编辑 赵蓉)
25
2005年第4期
#设计与研究#
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论