论文部分内容阅读
Windows以其丰富的软件资源、多线程技术、稳定性和安全性等特性在操作系统领域一直处于领先的地位,使其逐渐成为工业控制领域流行的操作系统。但由于Windows系列操作系统为保持其稳定性和设备访问无关性,使得用户应用程序不能直接对硬件和设备进行操作。同时Windows的抢先式多任务的特性决定了若不对其加以改造则不能满足数控系统实时性的要求。由于Windows在线程调度、中断处理等各方面充分考虑了弱实时应用的需求,具有内核完全可被抢先、延迟过程调用等机制,其内核硬件中断延迟与实时操作系统的中断延迟差不多,因而可以通过对Windows系统进行实时扩展,提高其实时处理能力。为将Windows操作系统引入数控系统中,本文通过分析数控系统的性能要求和Windows操作系统的运行机制,找出了在Windows操作系统下开发实时数控系统的技术难点。采用编写设备驱动程序处理硬件中断的方法,克服了Windows操作系统设备相关性和实时性的不足。通过响应硬件中断的方式来调度数控任务,从而满足了数控系统的实时性要求。为进一步提高数控系统中断的优先级,分析了Rootkit技术中的IDT hook的方法,通过在IDT中挂接钩子函数的方法使数控任务优先于其它所有中断的运行,并降低其它中断执行时的IRQL,从而保证了数控系统中断发生时能够得到最及时的响应。而在数控程序结束后再跳回原中断,在不影响其它中断功能的前提下,实现了最高中断优先级。通过对Windows平台下的中断响应延迟特性进行测试,表明Windows系统在ISR级系统中断具有较高的确定性。通过合理安排数控任务的响应方式,可以极大提高系统的实时性,完全能够满足毫秒甚至亚毫秒周期的实时任务的要求。