摘要:基于Windows的CNc,是數(shù)控技術發(fā)展的必然趨勢。提出了在Windows環(huán)境下實現(xiàn)實時多任務處理的方法,介紹了數(shù)控軟件的體系結構和實現(xiàn)的相關技術。實踐證明,采用這些方法和技術較好地實現(xiàn)了數(shù)控系統(tǒng)的實時多任務控制.開發(fā)的數(shù)控軟件具有開放性。
關鍵詞:多線程 實時多任務控制 數(shù)控系統(tǒng) 中斷 面向對象
1 引言
Pc機進入數(shù)控領域,極大地豐富了數(shù)控系統(tǒng)的硬軟件資源,有利于實現(xiàn)總線式、模塊化、開放化的數(shù)控系統(tǒng),使其具有很高的性能價格比。隨著Windows系統(tǒng)的發(fā)展與普及,開發(fā)Windows環(huán)境(Windows95,Windows NT及WindowsCr)下的數(shù)控系統(tǒng)已經成為廣大oiC同行的共識。近年來,國內已有不少廠家開發(fā)了幾種基于Windows的控制系統(tǒng)。國內的控制系統(tǒng)各有優(yōu)點,但從數(shù)控系統(tǒng)發(fā)展的趨勢來看,仍有許多需要改進之處。
首先,沒有充分利用像Windows、UNIX、0S/2等新型操作系統(tǒng)。軟件開發(fā)思想與技術落后,始終處于甚至低于結構化程序設計的水平。沒有充分利用面向對象的新理論、新技術。
其次,數(shù)控系統(tǒng)軟件設計中存在設計不規(guī)范,可靠性與可維護性差,沒有采用一種開放式、模塊化軟件設計方法。
本文所介紹的系統(tǒng)軟件,利用Windows的多線程機制和中斷機制解決數(shù)控軟件的實時多任務處理;利用面向對象的新理論、新技術,采用一種開放式、模塊化軟件設計方法,使軟件具有開放性。本系統(tǒng)軟件能使插補、伺服控制、NC程序編制同時進行,能較好地滿足數(shù)控系統(tǒng)的要求,并且已形成了產品,應用效果良好。
2 CNC軟件的總體設計
為了使數(shù)控軟件具有明顯的開放數(shù)控特點,使數(shù)控軟件易于組裝、擴充、維護,我們采用了工程化的設計方法,利用面向對象等技術開發(fā)一套基于Windows 32位數(shù)控軟件。軟件設計遵循模塊化、層次化、動態(tài)配置的原則。
開放式控制系統(tǒng)應采用分層的體系結構。分層使得各層實現(xiàn)隔離,層與層之間通過標準的接口進行通信,實現(xiàn)可移植性和可用第三方軟件,只用更換相應層即可。本系統(tǒng)的縱向第一層次為界面層,它完成系統(tǒng)的監(jiān)控管理:輸入、 O處理、顯示、診斷和監(jiān)控。此界面層由界面和各回調函數(shù)組成?;卣{函數(shù)的功能是完成界面上控件的事件驅動操作?;卣{函數(shù)的調用操作,由操作系統(tǒng)管理。
系統(tǒng)的縱向第二層次為功能單元層,包括譯碼類、刀補類、插補動態(tài)連接庫、運動控制器類。譯碼層將數(shù)控指令解釋成為數(shù)控系統(tǒng)的內部數(shù)據(jù)格式。刀補層進行刀具補償。插補動態(tài)連接庫完成數(shù)據(jù)插補,產生加工數(shù)據(jù)、速度處理、輔助功能設備控制。運動控制器類完成位置伺服的控制。譯碼類、刀補類分別由多個軟件芯片組成。此功能單元層的調用操作放在回調函數(shù)中。
系統(tǒng)的縱向第三層次為支撐層,包括運動控制器卡、運動控制器的設備驅動程序、I/O卡、操作系統(tǒng)、Pc機。運動控制器卡主要完成位置伺服的任務。運動控制器的設備驅動程序完成對運動控制卡和I/O卡的直接操作。本系統(tǒng)的體系結構如圖l所示。
在該數(shù)控系統(tǒng)的軟件中,采用了前后臺型的結構形式。前臺程序即實時中斷程序,完成全部的實時功能(插補動態(tài)連接庫、運動控制器類、設備驅動程序),主要是插補功能。后臺程序的主要功能是插補前的準備功能及調度管理(包括界面譯碼類、刀補類)。具體地講,是數(shù)控程序輸、譯碼、刀具補償、顯示及上述任務之間的調度管理功能。后臺程序結構是一個多線程結構,完成多任務處理。在運行過程中,前臺程序(中斷服務程序)不斷插入,共同完成零件加工任務。而位置伺服的任務主要由運動控制器完成。加工程序由計算機進行譯碼、刀具補償、速度處理后,得到刀具中心的插補指令數(shù)據(jù)。計算機將這些插補指令數(shù)據(jù)和其他的指令數(shù)據(jù)以固定格式存放于一緩沖區(qū)中。每次中斷發(fā)生時,計算機根據(jù)這些指令數(shù)據(jù)進行相應的處理。如果存在插補指令,則實時計算出插補數(shù)據(jù),并且進入緩沖區(qū),運動控制器根據(jù)這些數(shù)據(jù)控制相應軸的電機動作。當計算機中的一幀指令數(shù)據(jù)被讀完后,在插補間隙自動計算出新的插補指令數(shù)據(jù),填入緩沖區(qū)。

3 實現(xiàn)方法
3.1 軟件系統(tǒng)的多任務實時控制策略
CNC系統(tǒng)是一個專用的多任務計算機系統(tǒng)。在它的控制軟件中,融合了許多軟件技術中的先進技術,其中最突出的是多任務并行處理和實時處理。
· 多任務并行處理
CNC裝置通常作為一個獨立的過程控制單元,應用于工業(yè)自動化生產過程中,它的軟件必須完成管理和控制兩大功能。系統(tǒng)的管理部分,包括輸入、I/O處理、顯示、診斷。系統(tǒng)的控制部分,包括譯碼、刀具補償、速度處理、插補、位置控制。在CNC裝置的實際運行過程中,多個任務中的若干個任務要同時進行。
·實時處理
CNC軟件在工業(yè)自動化的實際應用過程中,為了滿足生產的要求,必須具有實時性。
為了使我們的數(shù)控軟件具有并行處理和實時處理的能力,我們采用Windows 95的多線程模型和中斷機制的控制策略。
3.1.1 Windows多線程模型
為了使CNC系統(tǒng)軟件能在Windows環(huán)境下并行處理多任務,采用多線程來實現(xiàn)多任務控制。線程是32位操作系統(tǒng)的主要特點,它支持搶占式的多任務機制,是操作系統(tǒng)的基本調度單元。我們可將各管理和控制模塊置于獨立的線程中。
從而實現(xiàn)數(shù)控軟件系統(tǒng)的并行處理操作。在我們的數(shù)控軟件中,建立了主控制線程(監(jiān)控和界面線程)、顯示/面板操作線程和自動加工線程。顯示/面板操作線程的預置時間片為50ms 自動加工線程是由主線程啟動和消除的。通過建立這三個線程,可實現(xiàn)整個系統(tǒng)的協(xié)調運行。
主控制線程主要完成監(jiān)控和界面管理、功能控制、系統(tǒng)管理等,并負責實時啟動和消除自動加工線程。系統(tǒng)退出時,將消除顯示/面板操作線程。主控制線程是經過Windows的消息排隊,來實現(xiàn)其操作流程。
3.1.2 Windows的中斷機制
Windows是一種非獨占式的多任務系統(tǒng),應 用程序通過應用程序隊列來接收輸人,然后消息。循環(huán)從應用程序隊列中獲取輸人消息,并把它發(fā)進給相應的窗口。在這種工作模式下,實現(xiàn)實時控制較為困難。然而,從另外一個角度看,用戶的鍵盤、鼠標及定時器輸人都是硬件中斷,而 windows提供的設備驅動程序,實際上是中斷服務程序。由于實際加工對于實時性的要求很高,因此,必須采用中斷 J的方式實現(xiàn)實時性強的任務。由于中斷可以在任何時刻發(fā)生,而不限于使用設備的應用程序運行期間,所以,中斷服務程序必須在固定代碼段中。在大框架EMS內存配置中,只有一種類型的代碼,才能保證任何時刻均可用來進行此類中斷服務。這種類型的代碼就是動態(tài)連接庫(DLL)的固定代碼段中的代碼。因此,必須采用DLL來實現(xiàn)中斷。在我們的系統(tǒng)中,采用DLL實現(xiàn)了硬件中斷,運行可靠。在我們的軟件中,在圖2的自動加工線程中,采用中斷機制來實時控制。自動加工線程主要完成打開NC文件、語法檢查、譯碼、刀具補償、插補,產生加工數(shù)據(jù)。在這些功能中,插補必須實時完成,因而采用中斷服務程序來實現(xiàn)。自動加工線程的開啟,在回調函數(shù)中完成。自動加工線程的控制流程見圖3,中斷服務程序控制流程見圖4。
由于動態(tài)連接庫可以根據(jù)需要被應用程序靈活地裝載、卸出,占用的系統(tǒng)資源將相應減少,所以把插補中斷服務程序編譯連接成動態(tài)鏈接庫的形式使用。
3.2 面向對象的開發(fā)技術
由于面向對象的軟件開發(fā)技術綜合了功能抽象與數(shù)據(jù)抽象,它較好地實現(xiàn)了軟件的可擴性、多態(tài)性,并使軟件易于修改。我們采用面向對象方法對數(shù)控軟件進行建模,分3個層次對其進行描述與實現(xiàn):系統(tǒng)、控制單元和基本類,使CNC軟件可組裝、易擴展。
基本類是數(shù)控系統(tǒng)功能細粒度分解的結果,是組成開放系統(tǒng)的最小單位?;绢悩嫵擅嫦驅ο髷?shù)控軟件的類體系。具有標準化接口的基本類,稱之為軟件芯片。
控制單元是由一系列功能相關的基本類組成的、完成一定功能的軟件實體??刂茊卧梢郧短?。
系統(tǒng)是由一系列控制單元組成的某種類型的數(shù)控系統(tǒng)軟件。
在我們的數(shù)控軟件開發(fā)的類,有運動控制器類、譯碼類、刀補類。它們都作為功能單元分別完成位置伺服功能、譯碼功能、刀補功能。譯碼類、刀補類較復雜,由多個軟件芯片繼承組成。
3.3 多緩沖區(qū)技術
運動控制器類、譯碼類、刀補類、動態(tài)連接庫都是相對獨立的功能單元,它們相互有大量的數(shù)據(jù)交換,因此采用多緩沖區(qū)實現(xiàn)數(shù)據(jù)交換。
為了協(xié)調各線程、各任務之間的運行,使各模塊相對獨立。在軟件中建立多個數(shù)據(jù)緩沖區(qū),具體的實現(xiàn)方法是:
(1)為多緩沖區(qū)分配內存,建立指向當前緩沖區(qū)的讀、寫指針,構成一個環(huán)形多緩沖區(qū);
(2)為每塊內存設置一個標志位,作為對備緩沖區(qū)進行操作的判斷依據(jù);
(3)每讀一個緩沖區(qū),對該緩沖區(qū)設置已讀標志,當前讀指針向前移動一個緩沖區(qū);
(4)每寫一個緩沖區(qū),對該緩沖區(qū)設置已寫標志,當前寫指針向前移動一個緩沖區(qū);
(5)對于當前操作未結束的緩沖區(qū),設置正在操作標志,禁止其他操作。
采用這種方法,將系統(tǒng)中必須在單個插補周期內完成的運算,“均化”在多個插補周期內完成,有效地利用了CPU的計算時閹,提高了系統(tǒng)的工作效率。
3.4 界面實現(xiàn)技術
測控軟件的界面不僅具有Windows 一般控件功能,而且還必須具有模擬一些實物的控件,如:電表顯示、旋鈕等。因此,采用LabWindows/CVI工具設計系統(tǒng)界面。采用LabWindows/CVI時以一種c語言設計界面非常方便。此工具設計的界面包括頭文件(*.h)、界面文件(*.uir)。在*.h中,提供界面控件的回調函數(shù)。應用程序可在回調函數(shù)中實現(xiàn)所需要的功能。在此系統(tǒng)中,顯示/面板操作線程作為界面的定時器控件的回調函數(shù)。Windows按照定時器設定的時問,定時調用定時器控件的回調函數(shù)。
4 結論
綜上所述,本CNC系統(tǒng)軟件采用Windows的多線程模型與中斷機制相結合的控制策略和層次化的體系結構,利用面向對象技術、多緩沖區(qū)技術、界面實現(xiàn)技術,成功地在Windows環(huán)境下實現(xiàn)數(shù)控系統(tǒng)的實時多任務控制要求,較好地實現(xiàn)軟件的可擴充性、多態(tài)性、重構性,并使軟件易于修改。該設計方法應用于我們開發(fā)的數(shù)控軟件上,已取得了良好的效果。
參考文獻
1 黃太貴.微機數(shù)控系統(tǒng).電子科技大學出版杜,1995
2 (美) Gate VimaI 5.0 開發(fā)使用手冊機械工出版杜。1998
3 王浩.高級Windows程序設計技術.同濟大學出版杜,1997
4 王燕.面向對象的理論與C++實踐清華大學出版社 1995