国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向活動對象的可重構數(shù)控系統(tǒng)軟件設計

2013-07-25 04:02朱華炳羅祖平董伯麟王治森
中國機械工程 2013年6期
關鍵詞:狀態(tài)機投遞數(shù)控系統(tǒng)

朱華炳 羅祖平 董伯麟 王治森

合肥工業(yè)大學,合肥,230009

0 引言

數(shù)控系統(tǒng)是現(xiàn)代制造裝備的核心??芍貥嫈?shù)控系統(tǒng)具有在一定范圍內(nèi)迅速調(diào)整其結構和功能的能力,能夠快速適應市場的迅猛變化和系統(tǒng)自身的改變,從20世紀90年代開始已成為數(shù)控技術研究的一個熱點[1-2]。!

數(shù)控系統(tǒng)的重構包括硬件可重構和軟件可重構。目前對數(shù)控系統(tǒng)軟件可重構的研究主要有:①將數(shù)控軟件的功能封裝并抽象成標準“軟件芯片”,以“軟件芯片”庫為基礎,通過庫中的“軟件芯片”組合實現(xiàn)系統(tǒng)可重構[3];②以開放式體系結構為基礎,將功能模塊設計成標準組件,組件通過標準接口通信實現(xiàn)系統(tǒng)的可重構[4];③以標準總線為基礎,通過總線的易擴展性實現(xiàn)系統(tǒng)的可重構[5-6]。

以上研究的特點是,采用將功能和數(shù)據(jù)封裝成一個對象,通過對象的復用實現(xiàn)系統(tǒng)的重構。但是這些對象均為被動對象,每次重構都需要設計所有對象的調(diào)用才能運行。數(shù)控系統(tǒng)是個行為復雜的系統(tǒng),當對象的數(shù)目增多時,調(diào)用方法和順序?qū)兊檬謴碗s,從而導致數(shù)控系統(tǒng)的重構變得繁瑣和低效。

本文提出面向活動對象的可重構數(shù)控系統(tǒng)軟件設計?;顒訉ο笾g無需設計相互的調(diào)用。通過“訂閱”外部事件,以事件驅(qū)動其執(zhí)行。通過“出版”事件,以事件同外部進行通信。在該模式下,活動對象耦合性小、可復用程度高,系統(tǒng)集成簡單、重構能力強。

1 面向活動對象的設計

活動對象(active object)是“一個擁有其自己的控制線程的對象”[7],它不被外部的對象所調(diào)用,通過異步事件交換的方式同其他活動對象通信,以RTC(run-to-completion)的方式執(zhí)行事件處理。圖1所示是一個活動對象,它包含一個控制線程(事件循環(huán))、一個事件隊列和一個狀態(tài)機,即“活動對象=(控制線程+事件隊列+狀態(tài)機)”[8]。

1.1 活動對象RTC事件處理

圖1 活動對象及其事件循環(huán)

在圖1右側顯示了事件循環(huán)的流程。queue.get()從事件隊列中取出事件,通過dispatch()派送到狀態(tài)機進行處理。在處理完成后返回queue.get(),并從事件隊列中取出下一個事件,重復上面的過程,如此循環(huán)。事件循環(huán)保證了每個活動對象處理事件的RTC形式。RTC形式固有地排除了內(nèi)部并發(fā)問題,在第二個事件被處理前,dispatch()操作必須完成并且返回到事件循環(huán)。這里的RTC指的是單個活動對象內(nèi)部的事件處理。在優(yōu)先級搶占的多任務系統(tǒng)中,當高優(yōu)先級的活動對象有事件需要處理時,低優(yōu)先級的活動對象會被掛起,將CPU的控制權讓給高優(yōu)先級的對象。在高優(yōu)先級的活動對象處理完后,CPU控制權重新歸還當前懸掛對象,使其繼續(xù)執(zhí)行。

RTC形式可以進行有效堵塞。當事件隊列為空時,活動對象會堵塞在queue.get()上(此時不占有CPU),直到有新事件出現(xiàn),才會繼續(xù)執(zhí)行,從而提高了CPU的利用率。

1.2 活動對象異步事件交換

活動對象與其他對等實體的事件交換采用異步方式。每個活動對象擁有一個自己的事件隊列,所有的事件異步地投遞到事件隊列中,活動對象通過事件隊列唯一地接收事件。一方面,當活動對象在忙碌時,可以自動地對輸入事件進行排隊。另一方面,事件生產(chǎn)者僅需將事件投遞到活動對象的事件隊列中,而不必一直等待其處理完成。除此,活動對象可以不區(qū)分事件來源地接收事件并統(tǒng)一處理。事件可以是其他活動對象產(chǎn)生,也可以是中斷產(chǎn)生,還可以是自身產(chǎn)生。

1.3 活動對象的狀態(tài)機行為規(guī)劃

數(shù)控系統(tǒng)根據(jù)輸入的信息(如數(shù)控程序、操作面板的輸入、傳感器的反饋信息)控制機床移動,實現(xiàn)加工操作(如軸運動、換刀、停止機床等),屬于典型的反應式系統(tǒng)[9]。反應式系統(tǒng)(reactive system)是一個對外部和內(nèi)部刺激做出響應的事件驅(qū)動系統(tǒng)(event-driven system)。在確定性的反應式系統(tǒng)中,系統(tǒng)輸入的順序和數(shù)值決定了系統(tǒng)的響應順序和數(shù)值[10]。因此,需要專門的方法來描述系統(tǒng)的行為。狀態(tài)機(state machines)是說明和實施事件驅(qū)動系統(tǒng)最有名的形式,先進的UML狀態(tài)機代表著狀態(tài)機理論和表示法的當前藝術狀態(tài)[8]。本文以UML狀態(tài)機(Statecharts,也稱狀態(tài)圖)來表示并規(guī)劃活動對象的行為。

圖2所示是一個簡單的狀態(tài)圖,圖中包含A、B、C、D 4個狀態(tài),處于某一狀態(tài)意味著系統(tǒng)只響應所有允許輸入的一個子集(如處于D狀態(tài)只響應a輸入和c輸入),只產(chǎn)生可能響應的一個子集(轉(zhuǎn)移到A狀態(tài)或轉(zhuǎn)移到B狀態(tài)),并且改變狀態(tài)也只是可能狀態(tài)的一個子集(對于輸入事件除了可以發(fā)生狀態(tài)改變還可以有其他的輸出)。C狀態(tài)是一個父狀態(tài),包含A和B兩個子狀態(tài),子狀態(tài)可以繼承父狀態(tài)的響應(如在A狀態(tài)遇到d輸入會轉(zhuǎn)移到D狀態(tài))。Statecharts相關信息及優(yōu)點請參考文獻[7,11]。

圖2 一個簡單的Statecharts

1.4 活動對象“出版-訂閱”事件投遞

面向活動對象的設計將應用分解成若干功能專一的活動對象,它們通過異步事件交換進行通信。因此,如何將事件投遞到目標對象至關重要。

最簡單的方法是活動對象彼此直接發(fā)送事件。然而,它們要求活動對象密切“知道”彼此。不僅需要擁有一個指向?qū)獙嶓w對象的指針或引用,而且還必須知道對方可能感興趣的事件類型。這種密切的“知識”存在于所有參與的活動對象之間,使得系統(tǒng)難以改變和擴展。例如,加入一個新的活動對象是困難的,因為已經(jīng)存在的活動對象不了解新來的對象,并且不會向其發(fā)送事件。

觀察者(OBSERVER)模式(又稱出版-訂閱(publish-subscribe)模式)定義了一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。中介者(MEDIATOR)模式用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。

圖3所示的“出版-訂閱”框架結合了觀察者和中介者兩種設計模式。“出版社”是一個觀察者,同時又是一個中介者,活動對象是觀察者。活動對象從“出版社”訂閱自己感興趣的事件,并將自己要出版的事件投遞到“出版社”?!俺霭嫔纭笔盏绞录蟀凑沼嗛喠斜硪灰煌哆f給所有的訂閱者(活動對象)?!俺霭嫔纭背私邮栈顒訉ο笸哆f的事件外,同時還接收中斷投遞的事件。

圖3 “出版-訂閱”框架

在這種方式下,所有事件被公眾所知,活動對象無需相互“知道”,只向“出版社”“訂閱”自己想要的事件。系統(tǒng)內(nèi)部活動對象之間具有松的耦合性。一個活動對象可以不用知道其他活動對象是如何運行的,而只需知道系統(tǒng)中具有哪些事件,根據(jù)這些事件,自己該如何運行。一個活動對象的行為邏輯發(fā)生了改變,不會影響到其他活動對象的運行。一個新活動對象的加入可以很好地融入系統(tǒng),又不影響系統(tǒng)其他部分的運行。

2 活動對象的實現(xiàn)

圖4所示為活動對象的實現(xiàn)類圖?;顒訉ο罄^承基類CActive,CActive聯(lián)合了3個基本要素:狀態(tài)機(來自CHsm類)、事件隊列和執(zhí)行線程。

圖4 活動對象類圖

2.1 執(zhí)行線程的實現(xiàn)

執(zhí)行線程具有平臺依賴性,不同的操作系統(tǒng)具有不同的執(zhí)行方式。圖5所示為創(chuàng)建及執(zhí)行線程的偽代碼。首先在CActive::Start()內(nèi)創(chuàng)建好事件隊列及執(zhí)行線程,在CActive::run()內(nèi)通過for(;;)循環(huán)從事件隊列中獲取事件,并將其投遞到狀態(tài)機進行處理。

2.2 事件隊列的實現(xiàn)

很多實時操作系統(tǒng)天生具有自己的消息隊列(有時稱為郵箱或消息郵箱),此時可以將消息隊列映射成所需要的事件隊列,從而實現(xiàn)對事件的排隊和堵塞。對于不具備消息隊列的操作系統(tǒng),需要設計自己的事件隊列來處理事件排隊、回收、堵塞等機制。事件隊列的實現(xiàn)可參考文獻[8]。

圖5 活動對象的執(zhí)行線程

2.3 狀態(tài)機的實現(xiàn)

活動對象的狀態(tài)機是通過繼承CHsm類實現(xiàn)的。CHsm類是一個能夠處理層次狀態(tài)轉(zhuǎn)移的狀態(tài)機抽象類,它封裝了狀態(tài)機的狀態(tài)轉(zhuǎn)移機制等。通過這種方式,活動對象對狀態(tài)機的實現(xiàn)只需編寫所有狀態(tài)的狀態(tài)處理函數(shù)。圖6所示為一段事件處理代碼,在狀態(tài)處理函數(shù)內(nèi),根據(jù)事件類型進行狀態(tài)轉(zhuǎn)移或進行相應的事件處理。

圖6 活動對象的狀態(tài)處理函數(shù)

2.4 事件“出版-訂閱”的實現(xiàn)

圖7所示為事件的“出版-訂閱”訂閱者列表,在該列表中,每個事件對應一個清單,清單中保存著訂閱該事件的所有活動對象的優(yōu)先級編號(每個活動對象對應唯一的一個優(yōu)先級編號)。當有事件出版時,根據(jù)該事件的清單對訂閱者一一進行投遞。通?;顒訉ο笤诔跏蓟瘍?nèi)部狀態(tài)機時通過PB::subscribe(CActive*a,Signal sig)接口訂閱該活動對象感興趣的事件,在運行的任何時候通過接口PB::publish(Event*e)出版自己的事件。

圖7 訂閱者列表

3 D-Max ENC數(shù)控系統(tǒng)應用

D-Max ENC是以 Windows CE6.0為軟件平臺的可重構嵌入式數(shù)控系統(tǒng),按照設計要求它需具有快速重構能力,可以根據(jù)客戶需求重構出具有不同聯(lián)動軸數(shù),或不同刀庫,或不同用戶界面,或增加其他功能(如,增加機械手或增加遠程監(jiān)控)的數(shù)控系統(tǒng)。

3.1 D-Max ENC M3數(shù)控系統(tǒng)硬件結構

圖8所示為D-Max ENC M3銑削加工中心的硬件結構。該系統(tǒng)具備三軸聯(lián)動,自動換刀等功能。系統(tǒng)采用主從式多CPU結構,X86工業(yè)主板具有主CPU,通過PC/104總線分別與FPGA運動控制卡及PC/104數(shù)據(jù)采集卡相連,通過串口總線與刀庫PLC相連。

圖8 D-Max ENC M3硬件結構

3.2 D-Max ENC M3數(shù)控系統(tǒng)軟件實現(xiàn)

D-Max ENC M3系統(tǒng)共包含IO活動對象、TC活動對象、MC活動對象、Core活動對象和HMI活動對象5個活動對象(圖4)。

IO活動對象:主要檢測I/O信號,管理MDI鍵盤的按鍵輸入。該對象的狀態(tài)機只有一個狀態(tài),其簡化狀態(tài)圖如圖9所示。在該狀態(tài)下,活動對象不斷檢查是否有鍵按下。當有鍵按下時,創(chuàng)建一個該按鍵的事件,并將該事件出版。

TC活動對象:負責與刀庫的PLC通信,從而控制刀庫選擇相應的刀具。該活動對象簡化狀態(tài)圖如圖10所示,活動對象有Idle和Busy兩個狀態(tài)。在Idle狀態(tài),可以接收選擇刀具的事件(SELECT_TOOL),并進入Busy。此時,若再收到選擇刀具的事件,將不會進行處理(可以有效防止破壞換刀的控制邏輯),直到收到刀庫處理完成事件(TM_PROCESSED)后,重新轉(zhuǎn)移到Idle狀態(tài)。MC活動對象:管理運動控制卡的行為。根據(jù)所控制的運動控制卡有批處理和立即處理兩種模式,且在批處理模式有數(shù)據(jù)緩存區(qū)、允許暫停和取消功能,其簡化狀態(tài)圖如圖11所示。在Idle狀態(tài)和Hungry狀態(tài)可以接收插補指令事件,而在Full狀態(tài)不會處理接收的插補指令。進入Suspend狀態(tài)后,插補會暫停,在收到START事件后,又會恢復到上一個狀態(tài)。

圖9 IO活動對象簡化狀態(tài)圖

圖10 TC活動對象簡化狀態(tài)圖

Core活動對象:編譯程序,并將編譯后的指令通過事件出版出去。由于指令具有多種類型以及單次處理的指令長度有限,為了保證事件出版后其他活動對象能夠進行處理,需要將編譯后的指令按類型及長度分成多個指令段,并訂閱運動控制卡數(shù)據(jù)處理完成事件(MC_PROCESSED)、運動控制卡數(shù)據(jù)饑渴事件(MC_HUNGRY)和刀庫處理完成事件(TM_PROCESSED)。在這些事件的驅(qū)動下,將分段指令出版。除此,該活動對象還訂閱了插補、急停、復位、進給保持、啟動等事件,從而控制整個過程的執(zhí)行。其簡化狀態(tài)圖如圖12所示。

圖12 Core活動對象簡化狀態(tài)圖

HMI活動對象:負責程序的編輯、參數(shù)設置、顯示以及自動或手動的數(shù)據(jù)準備等。其簡化狀態(tài)圖如圖13所示。該活動對象訂閱了所有的按鍵事件,通過模式選擇事件進入不同狀態(tài),不同的狀態(tài)只處理固定的按鍵事件。如,在Auto狀態(tài)收到START按鍵事件后會出版帶有零件程序參數(shù)的編譯事件,在JOG狀態(tài)會處理X+等軸控制按鍵事件,而不會處理START按鍵事件。

圖13 HMI活動對象簡化狀態(tài)圖

3.3 D-Max ENC M5E數(shù)控系統(tǒng)軟件重構

圖14所示為面向活動對象軟件設計的重構流程。

圖14 面向活動對象的軟件重構流程

首先,根據(jù)新的系統(tǒng)需求,分析判斷已有活動對象的行為是否發(fā)生了改變,包括其狀態(tài)圖及事件的處理方式是否需要發(fā)生改變;其次,在已有活動對象修改完成后,對比新系統(tǒng),查看已有活動對象無法完成的功能,設計并添加新的活動對象;然后,重新對所有活動對象檢查,檢查是否有出版的事件漏處理或未出版等;最后,整合所有活動對象進行驗證、仿真、測試等,最終得到新的系統(tǒng)。

D-Max ENC M5E系統(tǒng)是一五軸聯(lián)動數(shù)控系統(tǒng),該系統(tǒng)除具有五軸聯(lián)動外,還具有網(wǎng)絡監(jiān)控功能。通過互聯(lián)網(wǎng)可以遠程監(jiān)視其運行狀況,或傳送數(shù)據(jù)控制機床運行(在Online模式)。表1及圖15、圖16所示為D-Max ENC M3重構為D-Max ENC M5E系統(tǒng)的軟件重構內(nèi)容。

表1 D-Max ENC M5E軟件重構內(nèi)容

圖15 重構后HMI活動對象簡化狀態(tài)圖

圖16 Monitor活動對象簡化狀態(tài)圖

從上述重構過程可以看出:

(1)活動對象通過事件出版進行通信,沒有相互的調(diào)用,避免了重構過程“牽一發(fā)而動全身”。如,IO的改變并沒有影響到TC活動和MC活動對象的行為;加入Monitor活動對象,并沒有干涉到IO活動對象、TC活動對象、MC活動對象、Core活動對象的活動。通過減小相互間的耦合,從而可以降低重構難度,提高活動對象的復用程度。

(2)活動對象以一狀態(tài)機來控制其行為,通過狀態(tài)圖將控制邏輯圖形化。使得重構的分析和設計更加便捷和清晰。避免了閱讀控制邏輯復雜代碼和大量描述文檔的繁復和耗時,從而可以節(jié)省時間,提升效率。

(3)活動對象的實現(xiàn)采用了抽象和繼承(圖4),復雜的邏輯運算均已被抽象的CActive類實現(xiàn),活動對象只實現(xiàn)通過狀態(tài)處理函數(shù)實現(xiàn)對事件的處理(圖6)。從而使得重構后創(chuàng)建新的活動對象和修改已有活動對象更加容易。

[1]Koren Y,Heisel U,Jovane F,et al.Reconfigurable Manufacturing Systems[J].Annals of the CIRP,1999,48(2):527-540.

[2]王濤,劉清建,王太勇,等.具有3層重構能力的可重構數(shù)控系統(tǒng)[J].中國機械工程,2011,22(2):197-201.

Wang Tao,Liu Qingjian,Wang Taiyong,et al.Research on Three-ply Reconfigurable CNC System[J].China Mechanical Engineering,2011,22(2):197-201.

[3]魏仁選,周祖德,陳幼平,等.可重用面向?qū)ο髷?shù)控軟件及其開發(fā)環(huán)境研究[J].華中理工大學學報,1999(3):19-21.

Wei Renxuan,Zhou Zude,Chen Youping,et al.Study on Reusable Object-oriented CNC Software and Its Development Environment[J].Journal of Huazhong University of Science and Technology,1999(3):19-21.

[4]文立偉,王永章,路華,等.基于開放結構控制器的可重構數(shù)控系統(tǒng)[J].計算機集成制造系統(tǒng)-CIMS,2003,9(11):1483-1489.

Wen Liwei,Wang Yongzhang,Lu Hua,et al.Recon Figurable CNC System Based on Open Architecture Controller[J].Computer Integrated Manufacturing Systems,2003,9(11):1483-1489.

[5]齊繼陽,竺長安,王歡.基于USB和組件技術的可重構數(shù)控系統(tǒng)的研制[J].制造技術與機床,2007(12):17-20.

Qi Jiyang,Zhu Changan,Wang Huan.Development of Reconfigurable CNC System Based on USB and Component Technologies[J].Manufacturing Technology & Machine Tool,2007(12):17-20.

[6]王太勇,李波,萬淑敏,等.基于現(xiàn)場總線的可重構數(shù)控系統(tǒng)的研究[J].計算機集成制造系統(tǒng),2006,10(12):1662-1667.

Wang Taiyong,Li Bo,Wan Shumin,et al.Reconfigurable CNC System Based on Field Bus[J].Computer Integrated Manufacturing Systems,2006,10(12):1662-1667.

[7]OMG.OMG Unified Modeling Language(OMG UML),Superstructure(v2.4.1)[EB/OL],(2011-08-06)[2011-10-01].http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF

[8]Miro Samek.PRACTICAL UML STATECHARTS IN C/C++,Second Edition[M].Burlington:Newnes,2008.

[9]李霞,王永章,梁宏斌,等.有限狀態(tài)機在開放式數(shù)控系統(tǒng)中的應用[J].計算機集成制造系統(tǒng)-CIMS,2005,11(3):428-432.

Li Xia,Wang Yongzhang,Liang Hongbin,et al.Finite State Machine Application in Open CNC[J].Computer Integrated Manufacturing Systems,2005,11(3):428-432.

[10]Chito S,Michael J,Wang Shige,et al.Specifying Reconfigurable Control Flow for Open Architecture Controllers[J].Proceedings 1998Japan- USA Symposium on Flexible Automation,1998,7(2):659-666.

[11]Harel D.Statecharts:A Visual Formalism for Complex Systems[J].Science of Computer Programming,1987,8(3):231-274.

猜你喜歡
狀態(tài)機投遞數(shù)控系統(tǒng)
傳統(tǒng)與文化的“投遞”
基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
基于Spring StateMachine的有限狀態(tài)機應用研究
基于FANUC 32i A數(shù)控系統(tǒng)的外部測量設計
西門子840D sl數(shù)控系統(tǒng)在SC125大型車銑鏜床技術改造中的應用
基于FANUC Oi mate TD數(shù)控系統(tǒng)的手動功能開發(fā)
數(shù)控系統(tǒng)中GUI軟件平臺設計和實現(xiàn)
大迷宮
基于反熔絲FPGA的有限狀態(tài)機加固設計
基于VHDL的一個簡單Mealy狀態(tài)機
襄城县| 铜陵市| 剑阁县| 延川县| 清流县| 博乐市| 新乡市| 桦甸市| 万宁市| 兴海县| 漠河县| 六枝特区| 瑞金市| 田林县| 石嘴山市| 义马市| 西昌市| 泸定县| 太白县| 元阳县| 铜鼓县| 广灵县| 城固县| 常宁市| 繁昌县| 调兵山市| 永济市| 谢通门县| 揭西县| 芮城县| 甘孜| 辉南县| 凯里市| 松原市| 新郑市| 东城区| 林西县| 突泉县| 高平市| 南木林县| 罗平县|