在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下開發數控系統打下了基礎。
(審核編輯: 智匯胡妮)
分享