基于RT-Linux的数控系统软件PLC议计与实现

来源:万方数据 作者:孙敏 叶佩青 杨开明 褚毅成

点击:1180

A+ A-

所属频道:新闻中心

关键词:RT-Linux 数控系统 PLC

      数控系统的操作系统平台选择必须满足控制系统的实时性要求,而且在相当程度上决定了数控系统的开放程度。从数控技术的发展来看,基于实时操作系统的开放式数控系统已成为必然的趋势。

      RT-Linux是基于Linux系统并可运行于多种硬件平台的32位硬实时操作系统(Hard real-timeoperating system)。它继承了MERT系统的设计思想,即以通用操作系统为基础,在同一操作系统中既提供严格意义上的实时服务,又提供所有的标准P()SIX服务。RT-Linux源代码公开,易于修改,使系统成本降低,源代码的公开使数控系统的开发摆脱了对国外软件公司的依赖,有利于提高数控软件国产化程度。

      现介绍一种基于PC机+FireWire (IEEE1394)光纤通信接口卡+FireWire (IEEE1394)光纤信号转接模块+通用伺服驱动器或者I/O模块的硬件结构的软件伺服数控系统。重点介绍根据此模型开发的基于RT-Linux的数控系统嵌人式PI_C及其实现方法。

    1 数控系统的硬件结构

      系统硬件建立在通用工业PC的开放体系之上,包括工控机及其外围设备,控制信息输人/输出接口,伺服驱动器设备。工控机采用RedHatLinux8.0+RTLinux3. 1操作系统,数控系统的人机界面、数控代码处理、数控插补、位置伺服控制、位置控制指令平滑处理、运动控制补偿以及PLC控制都通过工控机由软件来实现,系统不需要运动控制卡,只需要1块控制信息输入/输出接口卡(光纤通讯适配卡),这样大大减少了数控系统对硬件的依赖,有利于提高系统的开放性。

      系统的位置控制信息、位置反馈信息、I/O输人输出信息通过光纤实现主机与伺服接口模块和I/O接口模块之间的信息交换,光纤通讯基于IEEE1394协议。这种信息传输方式,简化了数控系统的接引线,提高了数控系统的可靠性,也使得系统的维护更为方便。数控系统硬件结构如图1所示。

    2 数控系统的软件结构

      开放的系统硬件接口使用户可根据需要自由选用通用的工业PC作为控制系统的硬件平台。但是,数控系统的多任务特性和实时性要求却限制了通用操作系统如DOS, Windows等在数控系统中的应用。近年来,RT-Linux以其优异的性能引起了越来越多的关注,并在实时控制领域得到了成功的应用。

      2.1 RT-Linux的体系结构

      RT-Linux是基于Linux系统并可运行于多种硬件平台的多任务实时操作系统。通过修改Linux内核的硬件层,采用中断仿真技术,在内核和硬件之间实现了一个小而高效的实时内核,并在实时内核的基础上形成了小型的实时系统,而Linux内核仅作为实时系统最低优先级的任务运行。

      RT-Linux按实时性不同分为实时域和非实时域。实时内核由一个核心部分和多个可选部分组成,核心部分只负责高速中断处理,支持SMP操作且不会被底层同步或中断例程延迟或重人。其他功能则由可动态加载的模块扩充。而不影响系统实时性的操作(即非实时域的操作)RT-Linux均留给非实时的Linux系统完成。

      2.2 基于RT-Linux的数控系统软件结构

      按照数控系统的层次划分,数控系统的软件分为应用单元和控制单元两大部分,其中应用单元向用户提供了1个应用软件环境和1组标准的系统功能函数,包括操作界面、数据管理。而控制单元相当于1个高效的NC-PLC内核,完成基本的数控功能,包括译码、数学预处理、速度控制、插补、I/O处理、实时状态监控等。

      应用单元的各个模块由总控模块统一调度,并通过消息触发实现与总控模块的交互。基于消息的通信机制使应用单元独立于控制单元,应用单元模块根据用户的操作发出相应的消息,总控模块则根据消息类别生成控制单元能够识别的指令和数据。系统各个任务之间的通信均通过Linux内核提供的进程间通信机制进行。对于有顺序要求的数据交换采用先进先出队列(包括实时FIFO和非实时FIFO),而对于容量不大的数据交换则采用共享内存的方式进行。

      数控系统的软件结构如图2所示。

      控制单元按照任务实时性要求的不同可以划分为实时任务和非实时任务,对于实时性要求不高的任务如编译、预处理、状态监控等可以放在非实时域执行,而对于实时性要求比较高的任务如精插补、PLC控制、位置伺服等则需要在实时域执行,由RT-Linux对实时任务和非实时任务按照优先级统一调度。

    3 嵌入式PLC的设计及实现

      3.1 嵌入式PLC的模块组成

      如图2所示,数控系统的PLC控制模块实时性要求较高,因而必须在系统的实时域内运行。根据通用数控系统的PLC控制以及数控系统软件模块化设计的要求,将数控系统的PLC控制模块作为RT-Linux系统的实时任务之一,其优先级和调用周期取决于数控系统各任务的实时性要求以及控制要求的响应时间。PLC控制模块主要完成数控系统的逻辑控制,而被控制的输人/输出也就是I/O的输人/输出由光纤通信适配卡输人/输出模块来完成,即完成数控系统的PLC控制需要2个RT-Linux实时任务,如图3所示,这2个任务分别为RT-Taskl(以下称“适配卡输人/输出”)、RT-Task2以下称“PLC控制”)。

      图3中,适配卡输人/输出主要是完成数控系统的输人/输出,即各轴位置控制命令的输出、I/O的输出、I/O输人以及位置反馈输人,实际上是数控系统控制卡的设备驱动模块,其优先级在数控系统的各实时任务中为最高级,根据其硬件特征以及运动控制要求,其响应周期为100us,响应时钟周期由光纤通信适配卡上的硬件定时器产生。根据RT-Linux系统对硬件中断的响应机制,输人/输出控制任务的实时性是可以保证的,这一点在我们的数控系统已经得到验证。

      图3中PLC控制主要是完成数控系统的PLC控制功能,其任务优先级低于适配卡输人/输出,同时也低于数控系统的精插补实时任务和位置伺服实时任务。根据通用数控系统的PLC控制要求,确定其响应周期为5 ms,响应周期由RT-Linux的软件定时器产生,根据RT-Linux系统的实时多任务调度机制,PLC控制任务的实时性是可以保证的。在实际应用中也得到验证。

      3.2 嵌入式PLC的实时任务模块数据通信

      完成数控系统PLC控制的2个实时任务之间由于需要输人/输出的数据量(一般情况下为64输人,64输出,但输人/输出根据需要还可以扩展)不太大,因而采用共享内存的通信方式,在适配卡输人/输出和PLC控制2个实时任务之间开两块共享内存,一块用于适配卡向PLC控制传输I/O口状态信息,另一块用于PLC控制向适配卡输人输出任务传输经PLC逻辑处理后的控制信息。

      在这里,2个实时任务间不采用RT-FIFO进行通讯的原因在于:1)这2个实时任务间通讯的数据量不是很大,而且这2个实时任务运行周期差别较大,如果采用RT-FIFO传输数据,为了避免FIFO的阻塞相应地要增加2个任务间的协调机制,通讯效果未必比采用共享内存好。2)相对而言,共享内存的读写速度比FIFO要较快。

      3.3 嵌入式PLC的实时任务的实现

      适配卡输人/输出为动态可加载模块,适配卡输入/输出模块(任务)以100 }.s为周期的硬件定时中断,完成各轴位置控制指令和I /O的输出、各轴位置反馈值和I/O的输人,适配卡输出值来自于位置伺服任务和PLC控制任务,输入值来自于适配卡的输入接口。

      PLC控制模块(任务)同样也是一个动态可加载模块,它以10 ms的软定时,周期性地从它与总控模块通讯的RT-FIFO读取控制信息(如M指令,S指令及T指令),同时从它与适配卡输入/输出模块通讯的共享内存中读取I/O信息,然后进行逻辑处理,最后将结果写人共享内存供适配卡输人/输出模块读取并输出。

      PLC控制模块的软件结构如下:

      
      
      

    4 结语

      前该嵌人式PLC模块已成功应用于清华大学精仪系制造工程研究所THHP- II数控系统(基于RedHatLinux8.0十RTLinux3. 1)中,嵌人式PLC模块可以满足对普通数控系统和加工中心的PLC控制要求。


    (审核编辑: 沧海一土)