馮 寧
(廣東機(jī)電職業(yè)技術(shù)學(xué)院,廣州 510515)
隨著數(shù)控技術(shù)的不斷發(fā)展,開放式、模塊化和可重構(gòu)是當(dāng)前數(shù)控系統(tǒng)開發(fā)的一個熱點(diǎn)研究內(nèi)容。開放式數(shù)控系統(tǒng)以其資源的開放性、可重構(gòu)和可共享等優(yōu)點(diǎn),成為數(shù)控系統(tǒng)發(fā)展的一個重要方向。本文提出了一種基于現(xiàn)場總線的分布式數(shù)控系統(tǒng)的架構(gòu),數(shù)控系統(tǒng)的各個功能節(jié)點(diǎn)通過現(xiàn)場總線連接通信,各功能節(jié)點(diǎn)之間耦合性低,系統(tǒng)具有良好的開放性和可重構(gòu)性。針對該架構(gòu),分別為系統(tǒng)的主站和從站設(shè)計了不同的調(diào)度策略,充分發(fā)揮系統(tǒng)主站和從站的設(shè)備性能特點(diǎn),保證系統(tǒng)具有良好的實(shí)時性和低的作業(yè)丟失率。
如圖1所示,數(shù)控系統(tǒng)以PROFIBUS-DP現(xiàn)場總線作為中心,各個功能模塊按照PROFIBUS-DP的規(guī)范要求插在總線上,各模塊之間通過PROFIBUS-DP總線進(jìn)行通信。系統(tǒng)采用主從結(jié)構(gòu),以帶有CP5611卡的PC機(jī)作為單一主站,各個智能控制器作為從站。系統(tǒng)主站和從站之間通過PROFIBUS-DP現(xiàn)場總線交換加工數(shù)據(jù)信息、故障診斷信息、時間同步等信息。系統(tǒng)的參數(shù)設(shè)置、刀補(bǔ)功能、粗插補(bǔ)功能等在PC機(jī)內(nèi)完成,精插補(bǔ)、位置控制、速度控制由各個智能控制器完成。系統(tǒng)從加工程序到粗插補(bǔ)過程所發(fā)生的數(shù)據(jù)交換都在PC機(jī)內(nèi)部進(jìn)行,從精插補(bǔ)到速度控制所發(fā)生的數(shù)據(jù)交換都在智能控制器內(nèi)部進(jìn)行,只有粗插補(bǔ)和精插補(bǔ)之間的數(shù)據(jù)交換是通過PROFIBUSDP總線在PC機(jī)和智能控制器之間進(jìn)行,系統(tǒng)各模塊之間數(shù)據(jù)交換量較小,通信額外占用資源較少。

圖1 系統(tǒng)硬件結(jié)構(gòu)模型
系統(tǒng)的各個功能節(jié)點(diǎn)通過PROFIBUS-DP總線進(jìn)行通信,實(shí)現(xiàn)主站和各個從站之間的信息交換和同步。系統(tǒng)各功能節(jié)點(diǎn)之間所要交換的信息包括加工數(shù)據(jù)信息、故障診斷信息、時間同步信息等,其中最主要的是加工數(shù)據(jù)信息。系統(tǒng)的加工數(shù)據(jù)信息流程如圖2所示。從圖2看出,從加工程序到粗插補(bǔ)過程所發(fā)生的數(shù)據(jù)交換都在PC機(jī)內(nèi)部進(jìn)行,從精插補(bǔ)到速度控制所發(fā)生的數(shù)據(jù)交換都在智能控制器內(nèi)部進(jìn)行,只有粗插補(bǔ)和精插補(bǔ)之間的數(shù)據(jù)交換是通過PROFIBUS-DP總線在PC機(jī)和智能控制器之間進(jìn)行。從圖2還可以看出,粗插補(bǔ)的結(jié)果送入精插補(bǔ)緩沖區(qū),而并非立即進(jìn)行精插補(bǔ)運(yùn)算,也就是說粗插補(bǔ)和精插補(bǔ)并非同步,這就使得PC機(jī)的粗插補(bǔ)運(yùn)算對實(shí)時性的要求不高,可以根據(jù)任務(wù)的負(fù)載情況合理安排,提高了系統(tǒng)主站任務(wù)調(diào)度的成功率。

圖2 系統(tǒng)的加工數(shù)據(jù)信息流程
PC機(jī)粗插補(bǔ)運(yùn)算所得的數(shù)據(jù)以報文的形式通過PROFIBUS-DP總線傳送到各個智能控制器,獨(dú)立完成各軸的控制。粗插補(bǔ)運(yùn)算和精插補(bǔ)運(yùn)算并非同步進(jìn)行,但各個智能控制器的精插補(bǔ)運(yùn)算必須同步進(jìn)行,以保證各軸之間的正確聯(lián)動。各軸的狀態(tài)通過智能控制器反饋到PC機(jī),PC機(jī)要完成故障的診斷并對智能控制器發(fā)出相應(yīng)指令,這也對主站和從站有同步要求。PROFIBUS-DP通過MS3報文,主站將實(shí)時時間標(biāo)記發(fā)送給所有的從站,將從站的時鐘同步到系統(tǒng)時間,誤差小于1ms,保證了系統(tǒng)具有高精度的同步性。
系統(tǒng)各項任務(wù)被分配到主站和各個從站完成,主站完成的任務(wù)包括文件管理、參數(shù)設(shè)置、粗插補(bǔ)程序等非實(shí)時任務(wù)和實(shí)時任務(wù),各個從站分別控制各軸,完成精插補(bǔ)、速度控制、位置控制等實(shí)時任務(wù)。由于從站具有高度的自治性,能夠獨(dú)立地完成自己的任務(wù),主站的粗插補(bǔ)與各個從站的精插補(bǔ)、速度控制、位置控制不必同步進(jìn)行,主站可以離線進(jìn)行插補(bǔ)運(yùn)算,然后將運(yùn)算結(jié)果根據(jù)需要傳送到從站,從而降低了主站的實(shí)時性要求,保證了系統(tǒng)任務(wù)調(diào)度的高成功率。系統(tǒng)的主站和從站都具有高度自治性,所需處理任務(wù)的性質(zhì)不同,因此采用不同的調(diào)度策略。
系統(tǒng)從站的任務(wù)主要包括精插補(bǔ)、位置控制、速度控制、狀態(tài)檢測、與主站通信等,這些任務(wù)都是實(shí)時周期性任務(wù),特別是位置控制、速度控制等任務(wù)在執(zhí)行過程中,除系統(tǒng)故障外,不允許被其它任何任務(wù)中斷。由于從站的任務(wù)比較穩(wěn)定,且周期性強(qiáng),各個任務(wù)執(zhí)行的順序和所需時間都是固定的,故采用時間片輪換調(diào)度的方法,系統(tǒng)的各個任務(wù)按照固定的順序進(jìn)入任務(wù)隊列排隊,在上一個任務(wù)完成后由調(diào)度程序?qū)⑾乱粋€任務(wù)轉(zhuǎn)入運(yùn)行狀態(tài),同時時間中斷服務(wù)程序開始計時,該任務(wù)在規(guī)定的時間片內(nèi)完成后,又轉(zhuǎn)到下一個任務(wù)執(zhí)行,如此不斷循環(huán)執(zhí)行。這是一種單調(diào)速率的調(diào)度算法,具有運(yùn)行開銷小、穩(wěn)定性和可預(yù)測性好的優(yōu)點(diǎn)。
3.3.1 主站的彈性周期調(diào)度策略
系統(tǒng)主站是一種混合任務(wù)系統(tǒng),既包括周期任務(wù),也包括非周期任務(wù),其調(diào)度目標(biāo)是:①周期性實(shí)時任務(wù)采用最早截止時間優(yōu)先調(diào)度算法(EDF),所有周期任務(wù)能夠在規(guī)定的結(jié)束時刻Ti之前完成,在周期性任務(wù)執(zhí)行的間隙,能有足夠的資源使得突發(fā)性實(shí)時任務(wù)和非實(shí)時任務(wù)得以調(diào)度執(zhí)行;②通過動態(tài)調(diào)整重復(fù)周期Ti,使周期性任務(wù)執(zhí)行間隔時間盡可能短,CPU的利用率和作業(yè)丟失率維持在一個合理的水平。
本文設(shè)計了一種彈性周期調(diào)度策略,其調(diào)度框架如圖3所示。任務(wù)調(diào)度服務(wù)程序是整個調(diào)度框架的核心,它接受就緒任務(wù)的調(diào)度申請,并根據(jù)任務(wù)可調(diào)度性分析結(jié)果,判定是否有足夠的CPU資源和內(nèi)存資源,將該就緒任務(wù)由就緒等待狀態(tài)變?yōu)檫\(yùn)行狀態(tài)。具體的調(diào)度算法如下:
(1)一個新的任務(wù)到來后,通過任務(wù)狀態(tài)管理程序?qū)⑵渌腿敕菍?shí)時就緒任務(wù)隊列或?qū)崟r就緒任務(wù)隊列;
(2)非實(shí)時任務(wù)的優(yōu)先級低,在CPU完成實(shí)時任務(wù)的間隙,采用分時調(diào)度策略處理。非實(shí)時任務(wù)在非實(shí)時就緒任務(wù)隊列中排隊,按先進(jìn)先出的順序等待調(diào)度;
(3)實(shí)時就緒任務(wù)在實(shí)時就緒任務(wù)隊列排隊,并動態(tài)設(shè)置優(yōu)先級,實(shí)時任務(wù)采用搶占式調(diào)度策略,優(yōu)先級最高的任務(wù)得以調(diào)度執(zhí)行;
(4)為了提高調(diào)度的成功率,調(diào)度前進(jìn)行可調(diào)度性分析,只有在CPU資源、內(nèi)存資源、時序要求等運(yùn)行條件滿足時,任務(wù)才得以調(diào)度;
(5)當(dāng)滿足運(yùn)行條件時,任務(wù)調(diào)度服務(wù)程序激活優(yōu)先級最高的任務(wù),將該任務(wù)由就緒等待狀態(tài)變?yōu)檫\(yùn)行狀態(tài),并分配運(yùn)行所需要的資源。如果該任務(wù)是先前掛起的任務(wù)模塊,則為該任務(wù)進(jìn)行斷點(diǎn)復(fù)原。
(6)由時間中斷服務(wù)程序提供時間中斷服務(wù),運(yùn)行任務(wù)必須在規(guī)定時限內(nèi)完成。若任務(wù)完成,則在就緒任務(wù)隊列中注銷該任務(wù)。當(dāng)前運(yùn)行任務(wù)有可能在完成之前中斷運(yùn)行,轉(zhuǎn)入掛起狀態(tài),進(jìn)行斷點(diǎn)保護(hù),并進(jìn)入掛起任務(wù)隊列,這主要是以下3種情況導(dǎo)致:①就緒任務(wù)隊列有比當(dāng)前運(yùn)行任務(wù)優(yōu)先級更高的任務(wù),中斷當(dāng)前任務(wù)的運(yùn)行;②當(dāng)前運(yùn)行任務(wù)的運(yùn)行條件變?yōu)椴粷M足,被迫轉(zhuǎn)入掛起狀態(tài);③當(dāng)前運(yùn)行任務(wù)的時限已到。對于第①種和第②種情況,當(dāng)運(yùn)行條件滿足時,任務(wù)調(diào)度服務(wù)程序為其進(jìn)行斷點(diǎn)復(fù)原,重新運(yùn)行;對于第③種情況,若該任務(wù)對后續(xù)任務(wù)處理無影響,則在就緒任務(wù)隊列中注銷該任務(wù),否則該任務(wù)通過任務(wù)狀態(tài)管理程序進(jìn)入實(shí)時就緒任務(wù)隊列重新排隊;
(7)周期調(diào)節(jié)程序根據(jù)CPU的利用率和作業(yè)丟失率來調(diào)節(jié)觀測周期Tt,若CPU利用率太低,則縮短觀測周期Tt,若作業(yè)丟失率太高,則延長觀測周期Tt。

圖3 彈性周期調(diào)度框架模型
3.3.2 運(yùn)行周期的動態(tài)設(shè)定
定義1 觀測周期Tt:觀測CPU的利用率和作業(yè)丟失率時,以觀測周期Tt為時間基準(zhǔn)進(jìn)行觀測。為了盡量減少任務(wù)跨越觀測周期,提高觀測準(zhǔn)確性,Tt取值為各周期性任務(wù)周期T的最小公倍數(shù)。
定義2 處理器利用率:為混合任務(wù)中所有任務(wù)對處理器的利用率之和。
處理器利用率U=UP+UN。
定義3 作業(yè)丟失率:作業(yè)丟失率L(k)為觀測周期Tt內(nèi),超過時限的實(shí)時任務(wù)的數(shù)量與實(shí)時任務(wù)的總數(shù)之比。對于周期性任務(wù),如果實(shí)際完成時間超過截止時間T,則該任務(wù)丟失;對于非周期任務(wù),其實(shí)際執(zhí)行時間為Ts=t-e,其中t為當(dāng)前時刻,e為任務(wù)實(shí)際開始時刻,當(dāng)達(dá)到條件Ts>Tmax,則該任務(wù)丟失。
理想情況下,只要滿足U<1,則所有的任務(wù)都能夠調(diào)度執(zhí)行。但實(shí)際上在觀測周期Tt內(nèi),不可能所有任務(wù)都按理想情況均勻發(fā)生,突發(fā)性任務(wù)的發(fā)生是隨機(jī)的,當(dāng)U越接近1,作業(yè)丟失的概率越高,為了保證任務(wù)調(diào)度的成功率,給出一個處理器利用率的上限參考值UH,當(dāng)處理器的實(shí)際利用率U<UH時,就基本能夠保證作業(yè)丟失率在一個合理的水平;同時,為了防止因周期任務(wù)的周期過長,處理器利用率過低而導(dǎo)致實(shí)時性變差,給出一個處理器利用率的下限參考值UL。
(1)當(dāng)處理器實(shí)際利用率U>UH時,則處理器利用率過高,會造成過高的作業(yè)丟失率,這時可以采用延長周期性任務(wù)重復(fù)周期的方法,降低系統(tǒng)處理器的利用率到合理水平。為了防止頻繁啟動周期延長程序,每次當(dāng)實(shí)際利用率U>UH時,通過延長周期任務(wù)的重復(fù)周期T而使處理器利用率達(dá)到U1,U1的取值為處理器的允許最高利用率UH和最低利用率UL之間的一個值。
為了將處理器利用率由U降到U1,則需要降低利用率ΔU=U-U1,如果使周期任務(wù)的處理器利用率降低ΔU,因為非周期任務(wù)的處理器利用率也會同時降低,則處理器的實(shí)際利用率會低于U1。理想情況下,周期任務(wù)都能夠調(diào)度執(zhí)行,在觀測周期Tt內(nèi),所有周期任務(wù)的實(shí)際執(zhí)行時間P是固定的,故周期任務(wù)的處理器利用率UP是確定的。在周期延長前,有:

延長周期后,假設(shè)對應(yīng)的觀測周期由Tt延長到Tt+ Δt,則有:UP-ΔU=P/(Tt+Δt) (2)
由式①和式②可得:

對于任一周期任務(wù),假設(shè)其在一個觀測周期內(nèi)執(zhí)行K個周期,在周期延長前,有:

在周期延長后有:

由式③和式④可得:

(2)當(dāng)處理器實(shí)際利用率U<UL時,則處理器利用率過低,會造成系統(tǒng)實(shí)時性較差,這時可以采用縮短周期性任務(wù)重復(fù)周期的方法,維持系統(tǒng)處理器的利用率到合理水平。為了防止頻繁啟動周期縮短程序,每次當(dāng)實(shí)際利用率U<UL時,通過縮短周期任務(wù)的重復(fù)周期T而使處理器利用率達(dá)到U2,U2的取值為處理器的允許最高利用率UH和最低利用率UL之間的一個值。
為了將處理器利用率由U升到U2,則需要升高利用率ΔU=U2-U,如果使周期任務(wù)的處理器利用率升高ΔU,因為非周期任務(wù)的處理器利用率也會同時升高,則處理器的實(shí)際利用率會高于U2。理想情況下,周期任務(wù)都得以調(diào)度執(zhí)行,在觀測周期Tt內(nèi),所有周期任務(wù)的實(shí)際執(zhí)行時間P是固定的,故周期任務(wù)的處理器利用率UP是確定的。在周期縮短前,有:

縮短周期后,假設(shè)對應(yīng)的觀測周期由Tt縮短到Tt- Δt,則有:

由式⑤和式⑥可得:

對于任一周期任務(wù),假設(shè)其在一個觀測周期內(nèi)執(zhí)行K個周期,在周期縮短前,有:

在周期縮短后有:

由式⑦和式⑧可得:

3.3.3 彈性周期動態(tài)設(shè)定算法驗證
對彈性周期動態(tài)設(shè)定算法進(jìn)行仿真驗證,在驗證中將 UL、UH、U1、U2分別設(shè)定為 15%、95%、80%、50%,驗證方法為:每隔5ms采樣一次CPU的利用率,統(tǒng)計數(shù)據(jù)如表1所示,數(shù)控系統(tǒng)在正常運(yùn)行情況下CPU的利用率為60%左右,通過觸發(fā)一個實(shí)時突發(fā)任務(wù),該任務(wù)執(zhí)行周期0.1s,檢測到CPU在10ms時刻利用率接近95%,然后在彈性周期調(diào)節(jié)程序作用下,檢測到CPU在20ms時利用率穩(wěn)定在80%左右,系統(tǒng)能夠快速從飽和狀態(tài)收斂到穩(wěn)定狀態(tài)。

表1 CPU利用率統(tǒng)計表
(1)系統(tǒng)采用基于PROFIBUS-DP現(xiàn)場總線的分布式結(jié)構(gòu),結(jié)構(gòu)清晰,軟硬件設(shè)計簡單;分布式結(jié)構(gòu)大大提高了系統(tǒng)的組態(tài)性能,增強(qiáng)了系統(tǒng)的柔性和開放性;由于每個智能控制單元控制一個軸,需要實(shí)時處理的任務(wù)少,可以達(dá)到更好的控制性能。
(2)系統(tǒng)從站自治性較強(qiáng),主站和從站相對獨(dú)立;由于系統(tǒng)的粗插補(bǔ)與精插補(bǔ)并非同步進(jìn)行,從而降低了系統(tǒng)對主站實(shí)時性的要求。
(3)系統(tǒng)主站采取彈性周期調(diào)度策略,通過動態(tài)調(diào)整周期任務(wù)的重復(fù)周期,使主站CPU的利用率和作業(yè)丟失率維持在一個最佳平衡點(diǎn);智能從站采取一種單調(diào)速率調(diào)度算法,主站周期任務(wù)重復(fù)周期的動態(tài)調(diào)整對從站基本上沒有影響,而從站直接控制各軸,系統(tǒng)的加工質(zhì)量直接取決于從站的實(shí)時性;因為系統(tǒng)根據(jù)任務(wù)的特點(diǎn),主站和從站采取不同的任務(wù)調(diào)度策略,使得主站和從站均能充分發(fā)揮自身設(shè)備性能的特點(diǎn),系統(tǒng)達(dá)到整體性能最優(yōu)。
[1]周剛,鄔義杰,潘曉弘.數(shù)控系統(tǒng)軟件模塊實(shí)時調(diào)度方法[J]. 機(jī)械工程學(xué)報,2009(1):162-166.
[2]秦承剛,于東,吳文江,等.一種面向數(shù)控系統(tǒng)的動態(tài)反饋調(diào)度模型[J].小型微型計算機(jī)系統(tǒng),2010(4):788-792.
[3]梁宏斌,王永章.基于Windows的開放式數(shù)控系統(tǒng)實(shí)時問題研究[J].計算機(jī)集成制造系統(tǒng),2003(5):403-406.
[4]郭偉.基于全分布式數(shù)控系統(tǒng)的自治式控制單元及關(guān)鍵技術(shù)研究[D].上海:上海交通大學(xué),2008.
[5]謝經(jīng)明,周祖德,陳幼平,等.基于現(xiàn)場總線的開放式數(shù)控系統(tǒng)體系結(jié)構(gòu)研究[J].華中科技大學(xué)學(xué)報,2002(4):1-4.
[6]姚鑫驊,潘雪增,傅建中,等.數(shù)控系統(tǒng)的混合任務(wù)模型及其最優(yōu)調(diào)度算法研究[J].浙江大學(xué)學(xué)報(工學(xué)版),2006(8):1315-1319.
[7]鄭飛,王時龍,簡毅.可重構(gòu)分布式數(shù)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)集成制造系統(tǒng),2008(4):637-643.