引言
在数控机床中,通常用可编程控制器(PLC)对机床开关量信号进行控制。PLC可靠性高,使用方便。但在大多数数控机床,特别是经济型数控机床中,要求的输入输出点数并不多,通常在60点以下,因此,为了降低数控机床成本,在基于工业PC机的数控系统中,可以采用开关量I/O板加外接继电器,配合主机的软件对机床开关进行控制。但如果PC机采用单任务操作系统(如DOS),数控系统的所有任务运行都置于一个总体的消息循环中,软件的模块化和可维护性较差,系统故障的风险相对集中,而且不能充分利用PC机系统资源。而采用非实时多任务操作系统(如Windows)时,Win32API的设计没有考虑到实时环境的开发用途,其系统调用的效率不高,不能满足数控系统PLC控制的实时性要求。
为此,本文提出一种基于RT-Linux操作系统的嵌入式PLC,利用RT-Linux的开放性、模块化和可扩展性的系统结构特性和多线程/多任务的系统环境,在保证实时性的同时,使故障风险相对分散。
数控系统嵌入式PLC的硬件结构
数控系统硬件建立在通用工业PC的开放体系之上,数控系统嵌入式PLC硬件包括:工控机及其外围设备,基于ISA总线的开关量输入输出接口卡,光电隔离模块,继电器输出模块。其结构如图1所示。
工控机采用RedHatLinux810+RTLinux311操作系统,数控系统的人机界面、数控代码处理、轨迹规划、参数管理以及PLC控制都通过工控机由软件来实现,不需要独立的PLC控制器,减少了数控系统对硬件的依赖,有利于提高系统的开放性。
I/O输入输出信息通过PC机I/O接口卡实现主机与伺服接口模块和I/O接口模块之间的信息交换,PC机I/O接口卡基于ISA或者PCI总线。
RT-Linux的体系结构
RT-Linux是基于Linux系统并可运行于多种硬件平台的32位硬实时操作系统(hardreal-timeoperatingsystem)。
它继承了MERT系统的设计思想,即以通用操作系统为基础,在同一操作系统中既提供严格意义上的实时服务,又提供所有的标准POSIX服务。RT-Linux源代码公开,易于修改,使系统成本降低,源代码的公开使数控系统的开发摆脱了对国外软件公司的依赖,有利于提高数控软件国产化程度。
RT-Linux是基于Linux并可运行于多种硬件平台的多任务实时操作系统。通过修改Linux内核的硬件层,采用中断仿真技术,在内核和硬件之间实现了一个小而高效的实时内核,并在实时内核的基础上形成了小型的实时系统,而Linux内核仅作为实时系统最低优先级的任务运行。对于普通X86的硬件结构,RT-Linux拥有出色的实时性和稳定性,其最大中断延迟时间不超过15μs,最大任务切换误差不超过35μs。这些实时参数与系统负载无关,而取决于计算机的硬件,如在PII350,64M内存的普通PC机上,系统最大延迟时间不超过1μs。RT-Linux按实时性不同分为实时域和非实时域,其结构如图2所示。
实时域在设计上遵循实时操作系统的设计原则,即系统具有透明性、模块化和可扩展性。RT-Linux的实时内核由一个核心部分和多个可选部分组成,核心部分只负责高速中断处理,支持SMP操作且不会被底层同步或中断例程延迟或重入。其它功能则由可动态加载的模块扩充。RT-Linux把不影响系统实时性的操作(即非实时域的操作)都留给了非实时的Linux系统完成。基于多任务环境的Linux为软件开发提供了丰富的系统资源,如多种进程间通讯机制,灵活的内存管理机制。