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