摘要:Windows XP是一種弱實(shí)時(shí)操作系統(tǒng),支持基于線程的占先式多任務(wù)機(jī)制,還擁有強(qiáng)大的網(wǎng)絡(luò)通訊功能和較強(qiáng)的穩(wěn)定性。通過其實(shí)現(xiàn)多任務(wù)并行處理以及實(shí)時(shí)處理來實(shí)現(xiàn)數(shù)控加工對(duì)系統(tǒng)的要求。
關(guān)鍵詞:并行處理 實(shí)時(shí)處理 中斷 實(shí)時(shí)系統(tǒng)
隨著Windows系統(tǒng)的發(fā)展與普及,開發(fā)Windows環(huán)境下的數(shù)控系統(tǒng)己經(jīng)成為廣大CNC系統(tǒng)開發(fā)商和CNC用戶的共識(shí)。近年來,國(guó)內(nèi)已有不少?gòu)S家開發(fā)出了基于DOS的數(shù)控系統(tǒng)。這些控制系統(tǒng)雖各有優(yōu)點(diǎn),但從數(shù)控系統(tǒng)發(fā)展的趨勢(shì)來看,仍有許多需要改進(jìn)之處:首先,系統(tǒng)軟件沒有構(gòu)筑在Windows等通用操作系統(tǒng)平臺(tái)上:其次,軟件開發(fā)思想與技術(shù)落后,還處于結(jié)構(gòu)化程序設(shè)計(jì)的水平,沒有充分利用軟件工程中的新理論和新技術(shù);再次,數(shù)控系統(tǒng)設(shè)計(jì)時(shí)存在設(shè)計(jì)不規(guī)范,沒有采用統(tǒng)一的數(shù)控系統(tǒng)體系結(jié)構(gòu)規(guī)范協(xié)議,系統(tǒng)的互換性、可擴(kuò)展性和可維護(hù)性差。本數(shù)控系統(tǒng)是一個(gè)多任務(wù)的計(jì)算機(jī)實(shí)時(shí)控制系統(tǒng)。
而基于PC的開放式數(shù)控系統(tǒng)由于構(gòu)筑在通用的軟硬件平臺(tái)基礎(chǔ)上可以融合許多軟件技術(shù)中的先進(jìn)思想,其開放性使得在它的控制軟件比較突出的就是多任務(wù)并行處理和實(shí)時(shí)控制。編程選用VC++6.0,VC++6.0一種面向?qū)ο蟮目梢暬幊陶Z(yǔ)言,提供了功能豐富的MFC (微軟基礎(chǔ)類庫(kù))供開發(fā)應(yīng)用軟件時(shí)調(diào)用。
1 多任務(wù)并行處理
Windows XP是一個(gè)多任務(wù)的系統(tǒng),多任務(wù)是指Windows XP可以同時(shí)執(zhí)行幾個(gè)任務(wù),它可以在還未執(zhí)行完一個(gè)任務(wù)時(shí)又執(zhí)行另一項(xiàng)任務(wù)。在一個(gè)多任務(wù)處理環(huán)境下,只有當(dāng)其它程序認(rèn)可時(shí),一個(gè)運(yùn)行程序才可獲得處理機(jī)時(shí)間。每一個(gè)應(yīng)用程序必須協(xié)同地放棄對(duì)處理器的控制,以便其它應(yīng)用程序運(yùn)行。并行性指的是兩個(gè)或兩個(gè)以上的事件或活動(dòng)在同一時(shí)刻發(fā)生。在多道程序環(huán)境下,并行性使多個(gè)程序同一時(shí)刻可在不同CPU上同時(shí)執(zhí)行。主要有時(shí)間重疊、資源重復(fù)、資源共享三種形式。
從執(zhí)行程序的角度看,并行性等級(jí)從低到高可分為:
①指令內(nèi)部并行:是指指令內(nèi)部的微操作之間的并行。
②指令級(jí)并行(Instruction Level Parallel,ILP):兩條或多條指令同時(shí)執(zhí)行,就是指令之間的并行。
③線程級(jí)并行:指的是并發(fā)執(zhí)行多個(gè)線程,通常是以一個(gè)進(jìn)程內(nèi)控制派生的多個(gè)線程為調(diào)度單位。
④任務(wù)級(jí)或過程級(jí)并行:并行執(zhí)行兩個(gè)或多個(gè)過程或任務(wù)(程序段)。
⑤作業(yè)或程序級(jí)并行:多個(gè)作業(yè)或程序間的并行處理。
在單處理機(jī)系統(tǒng)中,這種并行性升到某一級(jí)別后(如任務(wù)、作業(yè)級(jí)并行),則要通過軟件(如中的進(jìn)程管理、作業(yè)管理)來實(shí)現(xiàn)。而在多處理機(jī)系統(tǒng)中,由于已有了完成各個(gè)任務(wù)或作業(yè)的處理機(jī),其并行性是由硬件來實(shí)現(xiàn)的。
數(shù)控車銑系統(tǒng)裝置通常作為一個(gè)獨(dú)立的過程控制單元用于工業(yè)自動(dòng)化的生產(chǎn)過程中,其系統(tǒng)軟件應(yīng)該完成管理功能和控制功能。管理功能部分包括輸入、I/0處理、顯示和診斷等;控制功能部分則包括譯碼、刀具補(bǔ)償、速度處理、插補(bǔ)運(yùn)算和位控等。在CNC系統(tǒng)的實(shí)際運(yùn)行過程中,常常有若干個(gè)任務(wù)需要同時(shí)進(jìn)行。為了使數(shù)控車銑系統(tǒng)軟件能在Windows環(huán)境下執(zhí)行多任務(wù)處理,可采用多線程技術(shù)來實(shí)現(xiàn)多任務(wù)控制.線程是操作系統(tǒng)的基本調(diào)度單元,將各管理和控制模塊置于獨(dú)立的線程中,操作系統(tǒng)按優(yōu)先級(jí)的高低依次給每個(gè)線程分配時(shí)間片,同時(shí),每個(gè)線程的優(yōu)先級(jí)可以動(dòng)態(tài)的調(diào)節(jié),實(shí)時(shí)性要求高的線程,其優(yōu)先級(jí)可以設(shè)置得高一些。
這樣,從理論上講,微觀上每個(gè)時(shí)刻只有一個(gè)線程(即任務(wù))在執(zhí)行,每個(gè)任務(wù)都有機(jī)會(huì)得到系統(tǒng)時(shí)間片;而宏觀上卻有多個(gè)任務(wù)在同時(shí)執(zhí)行,任務(wù)的執(zhí)行順序與其優(yōu)先級(jí)有關(guān)。本數(shù)控軟件中建立了主控制線程、運(yùn)動(dòng)控制線程、顯示/面板操作線程、自動(dòng)加工線程等。
2 實(shí)時(shí)處理
實(shí)時(shí)系統(tǒng)主要用于過程控制、事務(wù)處理等有實(shí)時(shí)要求的領(lǐng)域。實(shí)時(shí)處理系統(tǒng)往往是一個(gè)由多臺(tái)計(jì)算機(jī)組成的耦合度較高的分布式處理系統(tǒng)。它的目標(biāo)是為了提高系統(tǒng)的響應(yīng)時(shí)間,對(duì)隨機(jī)發(fā)生的外部事件做出及時(shí)響應(yīng)并對(duì)其進(jìn)行處理。
它分為:實(shí)時(shí)控制系統(tǒng)、實(shí)時(shí)信息處理系統(tǒng)。實(shí)時(shí)控制系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的操作系統(tǒng)。主要用于生產(chǎn)過程的自動(dòng)控制,實(shí)驗(yàn)數(shù)據(jù)自動(dòng)采集,包括衛(wèi)星自動(dòng)控制、汽車自動(dòng)駕駛、導(dǎo)彈的制導(dǎo)系統(tǒng)等等。
實(shí)時(shí)信息處理系統(tǒng)將數(shù)據(jù)獲取、處理和成果輸出集為一體,快速而及時(shí)完成的數(shù)據(jù)處理系統(tǒng)。主要用于實(shí)時(shí)信息處理,比如火車訂票系統(tǒng)、信息檢索系統(tǒng)等等。實(shí)時(shí)系統(tǒng)要求響應(yīng)時(shí)間短,在一定范圍之內(nèi),系統(tǒng)可靠性高。采用實(shí)時(shí)系統(tǒng)的意義就在于能夠及時(shí)處理各種突發(fā)的事件,即處理各種中斷,主要就是多任務(wù)調(diào)度,任務(wù)間的同步和進(jìn)程間通信機(jī)制。數(shù)控車銑系統(tǒng)軟件在工業(yè)自動(dòng)化的實(shí)際應(yīng)用中,為了滿足生產(chǎn)實(shí)際和工藝設(shè)計(jì)的要求,這就要求數(shù)控車銑軟件必須具有實(shí)時(shí)性,為了達(dá)到這一目的我們必須采用中斷的方式對(duì)實(shí)時(shí)性強(qiáng)的任務(wù)進(jìn)行控制。由于中斷發(fā)生的隨機(jī)性,所以中斷服務(wù)程序必須在固定代碼段中。
而Windows XP是一種占先式的多任務(wù)操作系統(tǒng),其消息隊(duì)列是接受程序的唯一方法,因此應(yīng)用程序的調(diào)用就可以通過消息循環(huán)機(jī)制從應(yīng)用程序消息隊(duì)列中獲取輸入消息,并把它發(fā)送給相應(yīng)的窗口,然后對(duì)該消息內(nèi)容進(jìn)行處理。從理論上講用戶的鍵盤、鼠標(biāo)及定時(shí)器輸入都是硬件中斷,這就需要系統(tǒng)提供為設(shè)備驅(qū)動(dòng)的中斷服務(wù)程序。在EMS內(nèi)存配置中,只有一種類型的代碼能保證任何時(shí)刻可進(jìn)行此類中斷服務(wù),那就是微軟公司在微軟視窗操作系統(tǒng)中實(shí)現(xiàn)共享函數(shù)庫(kù)概念的動(dòng)態(tài)連接庫(kù)(Dynamic Link Library,簡(jiǎn)稱DLL)中的固定代碼段中的代碼。因此可采用DLL來實(shí)現(xiàn)中斷。當(dāng)程序執(zhí)行時(shí),利用鏈接信息加載DLL函數(shù)代碼并在內(nèi)存中將其鏈接入調(diào)用程序的執(zhí)行空間中,實(shí)現(xiàn)了系統(tǒng)的硬件中斷,運(yùn)行可靠。在軟件設(shè)計(jì)中自動(dòng)加工線程主要完成打開數(shù)控(Numerical Control 簡(jiǎn)稱:NC)文件、語(yǔ)法檢查、譯碼、刀具補(bǔ)償、插補(bǔ)運(yùn)算,產(chǎn)生加工數(shù)據(jù)。其中插補(bǔ)運(yùn)算是必須要求實(shí)時(shí)完成的,因而采用中斷服務(wù)程序來實(shí)現(xiàn)。其中斷服務(wù)程序流程如圖1所示。
3 結(jié)語(yǔ)
在軟件設(shè)計(jì)的時(shí)候,考慮到系統(tǒng)的可擴(kuò)展性,利用面向?qū)ο蟮乃伎挤绞剑_放式、模塊化軟件設(shè)計(jì)方案,達(dá)到軟件的開放性和易于擴(kuò)展性,可以提高軟件的通用性,有利于軟件的進(jìn)一步升級(jí);利用Windows的多線程和中斷機(jī)制解決數(shù)控軟件的實(shí)時(shí)多任務(wù)處理,提高了軟件的實(shí)用性,有利于數(shù)控車銑系統(tǒng)的性能提高。本數(shù)控軟件中建立了主控制線程、運(yùn)動(dòng)控制線程、顯示/面板操作線程、自動(dòng)加工線程等,提高了軟件在實(shí)時(shí)性方面的需求,同時(shí)采用中斷的方式對(duì)實(shí)時(shí)性強(qiáng)的任務(wù)進(jìn)行控制,滿足了生產(chǎn)和工藝的要求,有利于數(shù)控車銑系統(tǒng)的進(jìn)一步改進(jìn)和升級(jí)。
參考文獻(xiàn):
[1]韓雪松.基于Windows的車床微機(jī)數(shù)控系統(tǒng)研究.裝備制造技術(shù),2006,(4),29-30.
[2]李劍鋒.基于PC的開放式數(shù)控系統(tǒng)研究.機(jī)械工程師,2005,(12),71-73.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文