数控机床加工时,若突然发生断电,常常要求数控系统能准确地保存一些重要参数,如加工速度、断电位置、主轴速度、加工行数等,以便在来电时能在断点位置以相同的参数继续加工。这不仅可缩短加工时间,更重要的是能保证产品质量。Windows CE是Microsoft为多种嵌入式系统而设计的一种紧凑、高效的模块化操作系统,支持多进程、多线程、抢先式多任务操作,能满足实时控制的要求。数控系统掉电保护是强实时性的任务,可以通过触发中断的方式来获得Windows CE操作系统的服务。
本文介绍的方法是用ARM9系统芯片S3C2410在Windows CE构建的嵌入式平台上实现的。整个掉电保护实现的基本思路是:产生掉电信号、捕捉掉电信号、处理掉电信号以及掉电信息恢复和文件处理。
1 系统的硬件平台
本系统采用三星公司的基于ARM9体系结构的S3C2410微处理器。SDRAM是一种易失性存储器作为程序的运行空间,类似于PC机的内存;Flash作为程序存储空间是非易失性的。程序运行过程中的数据往往缓存在SDRAM中,在系统掉电时必须将文件写到Hash中。
本系统采用3.3 V和5 V的直流稳压电源,其中S3C2410及部分外围器件需3.3 V电源,另外部分器件需5 V电源供电。掉电保护电路采用MAX708S芯片,MAX708S具备掉电监控功能,电源电压低至4.5 V时,产生掉电信号,通知系统做好掉电保护工作(图2)。
正常工作时,Pn的电压Va=5×1.8/(4.7+1.8)=1.385 V。通过MAX708S模块输入电压PFI与1.25 V比较,这样MAX708S模块输出电压PFO为高电平。突然掉电时,5 V信号掉到4.5 V以下时,PFI的电压为4.5×1.8/(4.7+1.8)=1.246V<1.25 V。这样MAX708S模块输出电压为低电平,产生掉电中断预警信号,通过外部中断引脚EIN0产生中断,接下来可以进行一些重要数据保护。
2 掉电保护的软件实现
2.1 Windows CE中断驱动设计
数控系统掉电保护是强实时性的任务,可以通过触发中断的方式来获得Windows CE操作系统的服务。本驱动引入的中断主要是为了让CPU知道机床运动过程出现突然掉电的问题,应当及时保存一些重要数据。
在Windows CE系统中,所有用户空间进程通过系统调用来请求内核服务,所有设备通过外部中断来请求内核服务,中断处理是流接口驱动程序中直接和硬件打交道的部分。中断处理过程如图3所示。中断发生后,信号发往异常处理器,并且中断支持处理器调用OAL函数OEMInterruptDisable,关闭来自该硬件的中断。中断服务例程ISR被内核调用并返回结果,且通过内核设置Event事件来触发中断服务线程IST。IST被唤醒后调用各种I/O函数完成中断处理并返回In.terruptDone通知内核。内核调用OEMInterruptDone重新开启中断。