发布时间:2017-09-06作者:智汇胡妮
在Windows平台上进行数控系统开发是数控产品更新的标志和趋势。Windows是消息驱动的多任务环境,各种消息都按它们到达的先后顺序排队处理,即消息机制是不分任务的轻重急缓的,若无中断设置,仅凭消息调度机制,则不能保证数控前台控制任务在准确的时间间隔内执行,这正是利用Windows平台进行数控系统开发所要解决的关键问题。由于介绍这方面的资料甚少,所 以困扰着Windows平台下的数控软件开发,我们在仿形数控系统开发的实践中总结出以下原理、方法和思路。
1 Windows下拦截硬件中断的方法
实际上,Windows是在DOS内核上发展起来的,DOS的许多中断在Windows下仍然可用,所不同的是Wind ows运行于保护模式下,从而打破了实模式的IM可寻地址屏障。在实模式DOS下,中断通过中断 向量 表(WT)进行,其内存放着中断服务子程序的人口地址(段地址:偏移量)。Wind ows另外再产生一种新表,称为中断描述表(IDT),它包含了中断服务子程序的实际地址,即24位或32位的地址。
Windows下中断调用分为两种情况:一种是原来的BIOS或D OS中断,如计时器或键盘等硬件中断,通过Windows的IDT指向一个特殊的句柄,这个句柄将CPU转为实模式,然后查IV T获得实模式中断服务子程序。另一种是运行于保护模式的,它们查IDT后即可直接转人相应中断程序,如州121H中AH=25H/35H调用就属于这种情况,需要注意的是,Windows虽支持DOS的全部硬件中断和大部分软件中断,但与实模式DOS下的版本有所不同,且有些软件中断不再适用,故应用时应先查有关手册。
WindowS下IN121H中AH=25H/3SH这两个功能为设置和取得保护模式下中断向量,它们可以用来拦截硬件中断,使之触发所取代的中断服务程序在保护模式下运行。在数控后台主程序中利用这两个功能来拦截CPU的8253通道o计数器的硬件中断IRQ()所产生的INIUSH,从而实现数控前台中断控制服务程序定时执行。主程序在Windows的Borland C+ +3.1下开发,主程序初始化时,首先用SaveVector保存中断 向量,然后 用Se tVector设置新的中断向量,主程序退出时,用Setvector恢复原有的中断向量,下面给出自编的这两个函数。
2 数控仿形系统软件基本结构
在Windows平台下开发的数控仿形系统可利用WindowS多任务的优势。此系统的任务有:系统参数输人及修改,在线数控指令编程,图形仿真,数控加工屏幕显示,仿形和仿形加工显示,数字化处理,在线监测诊断等等。进入系统后,对各轴伺服的控制是最重要的,如必须每sms进行一次中断服务控制,因为CPU中的定时器8253的O通道优先级最高,故采用该定时器产生的INT08H中断源,这样无论Wind~在执行何种任务,对各轴伺服控制始终进行着。对于系统的各种任务,按Windows消息管理机制运行,其中对于机床坐标显示和在线监控诊断又利用我们取代的INT08H中断服务程序定时发出执行消息,即中断服务程序每执行12次(12*8ms=96ms)发一次消息给Windows,以启动机床坐标屏幕动态显示,每执行125次(125*8ms=1s)发一次消息给Windows,以启动在线监测和诊断任务,整个系统的关系结构如图1所示。
3 中断服务程序框架与连接要点
为了最大限度的节省中断处理时间,前台中断服务控制程序INTSUB.ASM采用80386汇编语言编程,中断服务程序是整个控制系统的核心部分,该程序的框架如下
在Windows的内存管理中,各应用程序在内存中是可移动的,为了防止中断服务子程序在调用时被移出或切换出内存,所以应将它放人动态连接库(.DLL)中,并在该动态连接库的模块定义文件(.DLL)中将其定义为固定的(FLXED)。对于主程序模块MAIN.CPP,系统参数输人及修改模块MAIN.CPP,图形仿真模块CRA PH.CPP,数控加工模块NCWORHK.CPP,仿形或仿形加工模块COPYWORK.CPP,数字化处理模块DIGTP.CPP,在线监测诊 断模块DIAG-NOSE.CPP等,均采用c++面向对象的编程方法。其中主要利用Windows的各种类库和资源,方便地生成各窗口和下拉菜单,并建立了自己的类库,进行函数和数据的封装。以上程序的连接方法是,将中断服务控制程序IMSUB.ASM及其模块 定义文件州飞UB.DEF生成动态连接库IN玲UB.DLL,再将该动态连接库的输人库IN巧U B.llB及以上各功能模块文件共同编人NCSYS,CPP工程文件中,生成我们的数控仿形软件系统。
4 结束语
随着工控机硬件的升级发展,在软件方面可利用Windows的多任务、运行于保护模式的强大功能和丰富资源,进行数控产品的更新换代。本文探讨了Windows的中断机制,在此基础上给出了前后台式数控程序的核心部分,为Windows下开发数控系统打下了基础。
Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有
电话:010-62314658 邮箱:service@ilinki.net
主办单位:智汇万联(北京)信息技术有限公司