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