pc機進入數(shù)控領域,極大地豐富了數(shù)控系統(tǒng)的硬軟件資源,有利于實現(xiàn)總線式、模塊化、開放化的數(shù)控系統(tǒng),使其具有很高的性能價格比。隨著Windows系統(tǒng)的發(fā)展與普及,開發(fā)WindowB CE)下的數(shù)控系統(tǒng)已經(jīng)成為廣大CNC同行的共識。近年來,國內(nèi)已有不少廠家開發(fā)了幾種基于Windows的控制系統(tǒng)。國內(nèi)的控制系統(tǒng)各有優(yōu)點,但從數(shù)控系統(tǒng)發(fā)展的趨勢來看,仍有許多需要改進之處。
等新型操作系統(tǒng)。軟件開發(fā)思想與技術落后,始終處于甚至低于結(jié)構(gòu)化程序設計的水平。沒有充分利用面向?qū)ο蟮男吕碚摗⑿录夹g。
其次,數(shù)控系統(tǒng)軟件設計中存在設計不規(guī)范,可靠性與可維護性差,沒有采用一種開放式、模塊化軟件設計方法。
本文所介紹的系統(tǒng)軟件,利用Windows的多線程機制和中斷機制解決數(shù)控軟件的實時多任務處理;利用面向?qū)ο蟮男吕碚摗⑿录夹g,采用一種開放式、模塊化軟件設計方法,使軟件具有開放性。本系統(tǒng)軟件能使插補、伺服控制、NC程序編制同時進行,能較好地滿足數(shù)控系統(tǒng)的要求,并且已形成了產(chǎn)品,應用效果良好。
2CNC軟件的總體設計為了使數(shù)控軟件具有明顯的開放數(shù)控特點,使數(shù)控軟件易于組裝、擴充、維護,我們采用了工程化的設計方法,利用面向?qū)ο蟮燃夹g開發(fā)一套基于Windows32位數(shù)控軟件。軟件設計遵循模塊化、層次化、動態(tài)配置的原則。
開放式控制系統(tǒng)應采用分層的體系結(jié)構(gòu)。分層使得各層實現(xiàn)隔離,層與層之間通過標準的接口進行通信,實現(xiàn)可移植性和可用第三方軟件,只用更換相應層即可。本系統(tǒng)的縱向**層次為界面層,它完成系統(tǒng)的監(jiān)控管理:輸人、I/O處理、顯示、診斷和監(jiān)控。此界面層由界面和各回調(diào)函數(shù)組成?;卣{(diào)函數(shù)的功能是完成界面上控件的事件驅(qū)動操作?;卣{(diào)函數(shù)的調(diào)用操作,由操作系統(tǒng)管理。
系統(tǒng)的縱向第二層次為功能單元層,包括譯碼類、刀補類、插補動態(tài)連接庫、運動控制器類。譯碼層將數(shù)控指令解釋成為數(shù)控系統(tǒng)的內(nèi)部數(shù)據(jù)格式。刀補層進行刀具補償。插補動態(tài)連接庫完成數(shù)據(jù)插補,產(chǎn)生加工數(shù)據(jù)、速度處理、輔助功能設備控制D運動控制器類完成位置伺服的控制D譯碼類、刀補類分別由多個軟件芯片組成。此功能單元層的調(diào)用操作放在回調(diào)函數(shù)中。
系統(tǒng)的縱向第三層次為支撐層,包括運動控制器卡、運動控制器的設備驅(qū)動程序、I/O卡、操作系統(tǒng)、PC機。運動控制器卡主要完成位置伺服的任務。運動控制器的設備驅(qū)動程序完成對運動控制卡和I/O卡的直接操作。本系統(tǒng)的體系結(jié)構(gòu)如所示。
在該數(shù)控系統(tǒng)的軟件中,采用了前后臺型的結(jié)構(gòu)形式。前臺程序即實時中斷程序,完成全部的實時功能(插補動態(tài)連接庫、運動控制器類、設備驅(qū)動程序),主要是插補功能。后臺程序的主要功能是插補前的準備功能及調(diào)度管理(包括界面、I用戶縵入I譯碼類、刀補類)。具體地講,是數(shù)控程序輸人、譯碼、刀具補償、顯示及上述任務之間的調(diào)度管理功能。后臺程序結(jié)構(gòu)是一個多線程結(jié)構(gòu),完成多任務處理。在運行過程中,前臺程序(中斷服務程序)不斷插人,共同完成零件加工任務。而位置伺服的任務主要由運動控制器完成。加工程序由計算機進行譯碼、刀具補償、速度處理后,得到刀具中心的插補指令數(shù)據(jù)。計算機將這些插補指令數(shù)據(jù)和其他的指令數(shù)據(jù)以固定格式存放于一緩沖區(qū)中。每次中斷發(fā)生時,計算機根據(jù)這些指令數(shù)據(jù)進行相應的處理。如果存在插補指令,則實時計算出插補數(shù)據(jù),并且送人緩沖區(qū),運動控制器根據(jù)這些數(shù)據(jù)控制相應軸的電機動作。當計算機中的一幀指令數(shù)據(jù)被讀完后,在插補間隙自動計算出新的插補指令數(shù)據(jù),填人緩沖區(qū)。
文件編面厲作炻面刀具/醇設1面系統(tǒng)設置面手動撅作子更面ipi撬作盍面自動操作子頁面類刀樸類運動後I/O卡支層顏補動塞M數(shù)控軟件體系結(jié)構(gòu)3實現(xiàn)方法3.1軟件系統(tǒng)的多任務實時控制策略CNC系統(tǒng)是一個專用的多任務計算機系統(tǒng)。
在它的控制軟件中,融合了許多軟件技術中的先進技術,其中*突出的是多任務并行處理和實時處理CNC裝置通常作為一個獨立的過程控制單元,應用于工業(yè)自動化生產(chǎn)過程中,它的軟件必須完成管理和控制兩大功能。系統(tǒng)的管理部分,包括輸人、I/O處理、顯示、診斷。系統(tǒng)的控制部分,包括譯碼、刀具補償、速度處理、插補、位置控制。在CNC裝置的實際運行過程中,多個任務中的若干個任務要同時進行。
CNC軟件在工業(yè)自動化的實際應用過程中,為了滿足生產(chǎn)的要求,必須具有實時性。
為了使我們的數(shù)控軟件具有并行處理和實時處理的能力,我們采用Windows95的多線程模型和中斷機制的控制策略。
為了使CNC系統(tǒng)軟件能在Windows環(huán)境下并行處理多任務,采用多線程來實現(xiàn)多任務控制。線程是32位操作系統(tǒng)的主要特點,它支持搶占式的多任務機制,是操作系統(tǒng)的基本調(diào)度單元。我們可將各管理和控制模塊置于獨立的線程中,從而實現(xiàn)數(shù)控軟件系統(tǒng)的并行處理操作。在我們的數(shù)控軟件中,建立了主控制線程(監(jiān)控和界面線程)、顯示/面板操作線程和自動加工線程。顯示/面板操作線程的預置時間片為50ms.自動加工線程是由主線程啟動和消除的。通過建立這三個線程,可實現(xiàn)整個系統(tǒng)的協(xié)調(diào)運行。
主控制線程主要完成監(jiān)控和界面管理、功能控制、系統(tǒng)管理等,并負責實時啟動和消除自動加工線程。系統(tǒng)退出時,將消除顯示/面板操作線程。主控制線程是經(jīng)過Windows的消息排隊,來實現(xiàn)其操作流程。
用戶輸入(程啟動p:NC初始化一系統(tǒng)主菜單界面和事件循3不線程停止)文件輯的方式實現(xiàn)實時性強的任務。由于中斷可以在任何時刻發(fā)生,而不限于使用設備的應用程序運行期間,所以,中斷服務程序必須在固定代碼段中。在大框架EMS內(nèi)存配置中,只有一種類型的代碼,才能保證任何時刻均可用來進行此類中斷服務。這種類型的代碼就是動態(tài)連接庫(DLL)的固定代碼段中的代碼。因此,必須采用DLL來實現(xiàn)中斷。在我們的系統(tǒng)中,采用DLL實現(xiàn)了硬件中斷,運行可靠。
在我們的軟件中,在的自動加工線程中,采用中斷機制來實時控制。自動加工線程主要完成打開NC文件、語法檢、譯碼、刀具補償、插補,產(chǎn)生加工數(shù)據(jù)。在這些功能中,插補必須實時完成,因而采用中斷服務程序來實現(xiàn)。自動加工線程的開啟,在回調(diào)函數(shù)中完成。自動加工線程的控制流程見,中斷服務程序控制流程見自動加工線程由于動態(tài)連接庫可以根據(jù)需要被應用程序靈活地裝載、卸出,占用的系統(tǒng)資源將相應減少,所以把插補中斷服務程序編譯連接成動態(tài)鏈接庫的形式使用。
由于面向?qū)ο蟮能浖_發(fā)技術綜合了功能抽象與數(shù)據(jù)抽象,它較好地實現(xiàn)了軟件的可擴性、多態(tài)性,并使軟件易于修改。我們采用面向?qū)ο蠓椒▽?shù)控軟件進行建模,分3個層次對其進行描述與實現(xiàn):系統(tǒng)、控制單元和基本類,使CNC軟件可組裝、易擴展。
基本類是數(shù)控系統(tǒng)功能細粒度分解的結(jié)果,是組成開放系統(tǒng)的*小單位?;绢悩?gòu)成面向?qū)ο髷?shù)控軟件的類體系。具有標準化接口的基本類,稱之為軟件芯片。
控制單元是由一系列功能相關的基本類組成的、完成一定功能的軟件實體??刂茊卧梢郧短?。
系統(tǒng)是由一系列控制單元組成的某種類型的數(shù)控系統(tǒng)軟件。
在我們的數(shù)控軟件開發(fā)的類,有運動控制器類、譯碼類、刀補類。它們都作為功能單元分別完成位置伺服功能、譯碼功能、刀補功能。譯碼類、刀補類較復雜,由多個軟件芯片繼承組成。
3.3多緩沖區(qū)技術運動控制器類、譯碼類、刀補類、動態(tài)連接庫都是相對獨立的功能單元,它們相互有大量的數(shù)據(jù)交換,因此采用多緩沖區(qū)實現(xiàn)數(shù)據(jù)交換。
為了協(xié)調(diào)各線程、各任務之間的運行,使各模塊相對獨立,在軟件中建立多個數(shù)據(jù)緩沖區(qū),具體的實現(xiàn)方法是:為多緩沖區(qū)分配內(nèi)存,建立指向當前緩沖區(qū)的讀、寫指針,構(gòu)成一個環(huán)形多緩沖區(qū);為每塊內(nèi)存設置一個標志位,作為對各緩沖區(qū)進行操作的判斷依據(jù);每讀一個緩沖區(qū),對該緩沖區(qū)設置已讀標志,當前讀指針向前移動一個緩沖區(qū);每寫一個緩沖區(qū),對該緩沖區(qū)設置已寫標志,當前寫指針向前移動一個緩沖區(qū);對于當前操作未結(jié)束的緩沖區(qū),設置正在操作標志,禁止其他操作。
采用這種方法,將系統(tǒng)中必須在單個插補周期內(nèi)完成的運算,“均化”在多個插補周期內(nèi)完成,有效地利用了CPU的計算時間,提高了系統(tǒng)的工作效率。
3.4界面實現(xiàn)技術測控軟件的界面不僅具有Windows―般控件功能,而且還必須具有模擬一些實物的控件,如:電表顯7TC、旋鈕等。因此,采用LabWindows/CVI工具設計系統(tǒng)界面。采用LabWindows/CVI時以一種C語言設計界面非常方便。此工具設計的界面包括頭文件(。h)、界面文件(。uir)。在中,提供界面控件的回調(diào)函數(shù)。應用程序可在回調(diào)函數(shù)中實現(xiàn)所需要的功能。在此系統(tǒng)中,顯示/面板操作線程作為界面的定時器控件的回調(diào)函數(shù)。Windows按照定時器設定的時間,定時調(diào)用定時器控件的回調(diào)函數(shù)。
4結(jié)論多線程模型與中斷機制相結(jié)合的控制策略和層次化的體系結(jié)構(gòu),利用面向?qū)ο蠹夹g、多緩沖區(qū)技術、界面實現(xiàn)技術,成功地在Windows環(huán)境下實現(xiàn)數(shù)控系統(tǒng)的實時多任務控制要求,較好地實現(xiàn)軟件的可擴充性、多態(tài)性、重構(gòu)性,并使軟件易于修改。該設計方法應用于我們開發(fā)的數(shù)控軟件上,已取得了良好的效果。