開放式數(shù)控系統(tǒng)中控制信息的表達(dá)與傳遞書
點(diǎn)擊:2119
A+ A-
所屬頻道:新聞中心
構(gòu)建開放式數(shù)控系統(tǒng)的一個(gè)基本原則就是模塊化,通過模塊化進(jìn)行系統(tǒng)功能和結(jié)構(gòu)的分解,降低耦合、增強(qiáng)內(nèi)聚并控制粒度,以提高模塊的復(fù)用性。很多學(xué)者開展了有關(guān)這方面的研究工作,我們也在這個(gè)領(lǐng)域進(jìn)行了一些探索,并發(fā)表了一些研究成果,圍繞模塊的接口設(shè)計(jì)、建模方法、系統(tǒng)配置等問題都進(jìn)行了探討和研究。
隨著研究的深入,我們認(rèn)識到除上述內(nèi)容之外,控制信息在各模塊間的傳遞也是值得研究的問題。本文主要針對數(shù)控系統(tǒng)內(nèi)控制信息的表述及傳遞的問題,結(jié)合自主開發(fā)的開放式系統(tǒng)HITCNC進(jìn)行深入探討。首先介紹HITCNC系統(tǒng)的組成,然后重點(diǎn)闡述如何利用嵌套式任務(wù)單元實(shí)現(xiàn)信息的表達(dá)與有效傳遞,最后通過實(shí)驗(yàn)加以驗(yàn)證。
1 開放式數(shù)控系統(tǒng)HITCNC的模塊化構(gòu)成
我們采用Windows NT+RTX(Real—time exten-sion for Windows)為系統(tǒng)平臺(tái),以軟件化方式實(shí)現(xiàn)運(yùn)動(dòng)控制和邏輯控制功能,建立了基于PC機(jī)的軟件型開放式數(shù)控系統(tǒng)HITCNC。它與外部設(shè)備之間的數(shù)據(jù)通訊通過遵循SERCOS協(xié)議的SofiSercans通訊卡完成,系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1開放式效控系統(tǒng)HITCNC的模塊化系統(tǒng)結(jié)構(gòu)
HITCNC是“軟件數(shù)控”,即CNC功能全部由軟件實(shí)現(xiàn),各部分功能被分解到不同的軟件模塊中。其中人機(jī)接口、任務(wù)生成器模塊是在Windows環(huán)境下運(yùn)行的COM組件;任務(wù)協(xié)調(diào)器、軸組、離散邏輯控制器、軸模塊、控制規(guī)律模塊則是運(yùn)行于RTX實(shí)時(shí)環(huán)境下的動(dòng)態(tài)鏈接庫。
各模塊具體功能如下:
(1)任務(wù)協(xié)調(diào)器進(jìn)行任務(wù)分配,負(fù)責(zé)系統(tǒng)內(nèi)各模塊的協(xié)調(diào)與調(diào)度。
(2)任務(wù)生成器根據(jù)一定的語法規(guī)則對數(shù)控加工程序進(jìn)行語法檢查,完成譯碼工作,生成包含運(yùn)動(dòng)信息的運(yùn)動(dòng)段指令和邏輯控制指令,并對運(yùn)動(dòng)指令進(jìn)行刀具補(bǔ)償。
(3)軸組模塊完成加減速處理、插補(bǔ)任務(wù),對譯碼得到的運(yùn)動(dòng)段按照一定的進(jìn)給速度要求進(jìn)行細(xì)分,得到單個(gè)插補(bǔ)周期內(nèi)的直線段進(jìn)給量,然后分解并輸出給各個(gè)軸模塊。
(4)軸模塊接收來自軸組模塊的指令,同時(shí)讀取外部的反饋信息,根據(jù)用戶需求選擇性地調(diào)用伺服控制規(guī)律完成位置控制或速度控制等功能,并將控制信息發(fā)送給外部執(zhí)行單元。
(5)控制規(guī)律模塊負(fù)責(zé)伺服控制規(guī)律的計(jì)算,提供多種控制策略。
(6)離散邏輯控制模塊負(fù)責(zé)對外部輸入和內(nèi)部狀態(tài)變量進(jìn)行布爾運(yùn)算得到相應(yīng)輸出和內(nèi)部狀態(tài)變量,并對外部輸入輸出設(shè)備進(jìn)行控制,包括機(jī)電設(shè)備的啟停、刀具的交換等。
2 控制信息的抽象與表達(dá)
2.1 任務(wù)單元
對數(shù)控系統(tǒng)而言,其所要處理的信息主要來自數(shù)控加工程序。在本系統(tǒng)中,數(shù)控程序經(jīng)任務(wù)生成器處理得到的控制信息(包括運(yùn)動(dòng)控制與邏輯控制)采用有限狀態(tài)機(jī)FSM(Finite State Machine)進(jìn)行描述。這里,將包含控制信息的FSM對象稱為任務(wù)單元。有限狀態(tài)機(jī)通常采用狀態(tài)轉(zhuǎn)移圖來表示,其構(gòu)成要素包括狀態(tài)、轉(zhuǎn)移、事件、動(dòng)作。簡化的任務(wù)單元狀態(tài)轉(zhuǎn)移圖參見圖2。其中“未初始化、已初始化、運(yùn)行、停止、結(jié)束”表示狀態(tài);“初始化、執(zhí)行、刷新、復(fù)位、完成、停止”表示事件;“initialization()、runningAction()、stopAction()、resetAction()”表示動(dòng)作;當(dāng)任務(wù)單元處于“未初始化”狀態(tài),并接收到事件“初始化”時(shí),它會(huì)執(zhí)行動(dòng)作“initialization()”,并完成由“未初始化”狀態(tài)向“已初始化”狀態(tài)的轉(zhuǎn)移。任務(wù)單元本身就是一個(gè)有限狀態(tài)機(jī)對象。有限狀態(tài)機(jī)的基本概念和軟件化實(shí)現(xiàn)方法參見文獻(xiàn),這里不再詳述。
圖2簡化的任務(wù)單元狀態(tài)轉(zhuǎn)移圖
2.2 任務(wù)單元的種類
根據(jù)任務(wù)單元所要完成功能,本系統(tǒng)定義了多種任務(wù)單元類,如圖3。
圖3任務(wù)單元的種類
(1)運(yùn)動(dòng)任務(wù)單元對應(yīng)于輸入軸組模塊的數(shù)據(jù)FSM,分為直線、圓弧運(yùn)動(dòng)任務(wù)單元等。除了具有基本的FSM管理和參數(shù)化方法之外,運(yùn)動(dòng)任務(wù)單元還包括速率、待加工的幾何信息等以及負(fù)責(zé)刀具軌跡規(guī)劃的速度輪廓生成器。它們在軸組模塊內(nèi)按照圖2規(guī)劃的FSM運(yùn)行,通過執(zhí)行動(dòng)作initilization()和runningAc—tion()分別完成插補(bǔ)的初始化和插補(bǔ)計(jì)算任務(wù)。
(2)離散邏輯任務(wù)單元對應(yīng)于輸入離散邏輯模塊的數(shù)據(jù)FSM。離散邏輯單元負(fù)責(zé)對外部輸人輸出單元的協(xié)調(diào)和控制。如主軸的啟停、冷卻液的開關(guān)等。
(3)執(zhí)行步任務(wù)單元在任務(wù)協(xié)調(diào)器內(nèi)的FSM對象,包括運(yùn)動(dòng)任務(wù)執(zhí)行步和離散邏輯任務(wù)執(zhí)行步,分別負(fù)責(zé)監(jiān)控和管理運(yùn)動(dòng)任務(wù)單元和離散邏輯任務(wù)單元的執(zhí)行。例如直線運(yùn)動(dòng)任務(wù)單元就是在運(yùn)動(dòng)執(zhí)行步的監(jiān)控下運(yùn)行的,具體實(shí)現(xiàn)過程將在下文詳細(xì)解釋。對于圖3中的各種任務(wù)單元,采用面向?qū)ο缶幊碳夹g(shù),以基類任務(wù)單元模板來抽象表示它們的共性,則每一種具體類型的任務(wù)單元都通過從任務(wù)模板基類派生定制實(shí)現(xiàn)。
3 控制信息的傳遞與系統(tǒng)模塊的協(xié)作
任務(wù)單元是可以嵌套的,一個(gè)任務(wù)單元能夠包含其它的任務(wù)單元。當(dāng)外層任務(wù)單元的有限狀態(tài)機(jī)被激活時(shí),它能夠向下層模塊發(fā)送其內(nèi)嵌的任務(wù)單元。這樣,就可以將數(shù)控程序包含的控制信息以任務(wù)單元的形式在模塊間傳送,被傳送的任務(wù)單元成為下層模塊內(nèi)活動(dòng)的狀態(tài)機(jī),從而控制下層模塊的行為。外層任務(wù)通過對嵌套任務(wù)的管理就可以實(shí)現(xiàn)對下層邏輯和運(yùn)動(dòng)控制模塊的協(xié)調(diào)調(diào)度。在本系統(tǒng)中,執(zhí)行步任務(wù)單元屬于外層任務(wù),它負(fù)責(zé)嵌套包含運(yùn)動(dòng)任務(wù)單元和離散邏輯任務(wù)單元。通過下面的例子來說明當(dāng)數(shù)控系統(tǒng)執(zhí)行一個(gè)加工程序時(shí),模塊間的協(xié)作關(guān)系與數(shù)據(jù)流的傳遞過程,如圖4所示。執(zhí)行步驟如下:
圖4模塊間的協(xié)作與數(shù)據(jù)傳遞
步驟1 加工程序在任務(wù)生成器中被翻澤為一系列執(zhí)行步任務(wù)單元,以鏈表的形式存在;每個(gè)執(zhí)行步任務(wù)單元都是嵌套的,內(nèi)部包含有等待執(zhí)行的運(yùn)動(dòng)任務(wù)單元或邏輯控制單元。
步驟2 任務(wù)協(xié)調(diào)器通過調(diào)用getTasks()獲取執(zhí)行步單元。在本系統(tǒng)中,任務(wù)生成器是一個(gè)COM組件,在Windows環(huán)境下運(yùn)行;任務(wù)協(xié)調(diào)器是一個(gè)實(shí)時(shí)動(dòng)態(tài)鏈接庫,在實(shí)時(shí)操作系統(tǒng)RTX環(huán)境下運(yùn)行。兩個(gè)模塊通過共享內(nèi)存?zhèn)鬟f具有嵌套結(jié)構(gòu)的執(zhí)行步任務(wù)單元。
步驟3 任務(wù)協(xié)調(diào)器調(diào)用執(zhí)行步單元提供的exe—cuteUnit()激活其包含的狀態(tài)機(jī)。步驟3會(huì)重復(fù)執(zhí)行多次,因?yàn)樗c下層模塊保持同步(例如,等待當(dāng)前嵌套的運(yùn)動(dòng)任務(wù)單元被完成)。
步驟4 在任務(wù)協(xié)調(diào)器內(nèi)處于活動(dòng)狀態(tài)的執(zhí)行步任務(wù)單元將內(nèi)嵌的運(yùn)動(dòng)任務(wù)單元發(fā)送到軸組模塊的運(yùn)動(dòng)隊(duì)列中,通過調(diào)用setNextMotionSegment()實(shí)現(xiàn)。運(yùn)動(dòng)任務(wù)單元被加載到軸組隊(duì)列后等待被激活。
步驟5 加載到軸組隊(duì)列首位的運(yùn)動(dòng)單元首先被激活,軸組模塊周期性調(diào)用該運(yùn)動(dòng)任務(wù)單元的exe-cuteUnit()方法,運(yùn)動(dòng)任務(wù)單元依照它的有限狀態(tài)機(jī)規(guī)劃開始運(yùn)行。此時(shí)外層執(zhí)行步的狀態(tài)機(jī)在任務(wù)協(xié)調(diào)器內(nèi)同步運(yùn)行,并不斷查詢運(yùn)動(dòng)任務(wù)單元的狀態(tài),直至運(yùn)動(dòng)任務(wù)單元轉(zhuǎn)變?yōu)椤敖Y(jié)束”狀態(tài)為止。
圖5給出了上述任務(wù)單元在控制系統(tǒng)內(nèi)的被傳遞和執(zhí)行過程中自身狀態(tài)所發(fā)生的轉(zhuǎn)變,同時(shí)可以看出它們的管理對象也發(fā)生了變化。首先,嵌套任務(wù)單元由任務(wù)生成器譯碼得到,任務(wù)協(xié)調(diào)器調(diào)用外層執(zhí)行步任務(wù)單元的executeUnit()方法激活其有限狀態(tài)機(jī)進(jìn)行一系列更新操作,執(zhí)行步由“未初始化”轉(zhuǎn)變?yōu)椤耙殉跏蓟睜顟B(tài),同時(shí)完成動(dòng)作initiationAction(),把內(nèi)嵌的運(yùn)動(dòng)任務(wù)單元發(fā)送到軸組的運(yùn)動(dòng)隊(duì)列中。軸組調(diào)用運(yùn)動(dòng)任務(wù)單元的executeUnit()方法,使運(yùn)動(dòng)任務(wù)單元在軸組內(nèi)被激活,周期性刷新,依次處理“初始化”、“執(zhí)行”事件,完成動(dòng)作“runningAction()”進(jìn)行插補(bǔ)計(jì)算直至插補(bǔ)結(jié)束。在此過程中,位于上層任務(wù)協(xié)調(diào)器中的執(zhí)行步進(jìn)入“運(yùn)行”狀態(tài),它也通過自身的“runningAction()”動(dòng)作不斷查詢其內(nèi)嵌運(yùn)動(dòng)任務(wù)單元是否為“結(jié)束”狀態(tài)。當(dāng)運(yùn)動(dòng)任務(wù)單元結(jié)束時(shí),軸組將其從運(yùn)動(dòng)隊(duì)列中刪除;任務(wù)協(xié)調(diào)器中的執(zhí)行步繼續(xù)監(jiān)控它所包含的下一任務(wù)單元或者將控制權(quán)移交給下一個(gè)執(zhí)行步。圖中兩側(cè)所示為執(zhí)行步任務(wù)單元與運(yùn)動(dòng)任務(wù)單元在不同時(shí)刻所對應(yīng)的管理對象。
圖5嵌套任務(wù)單元在系統(tǒng)內(nèi)的執(zhí)行過程
通過上面的例子可以看出,利用有限狀態(tài)機(jī),任務(wù)單元通過在其內(nèi)部封裝一系列狀態(tài)變化,進(jìn)而實(shí)現(xiàn)了系統(tǒng)預(yù)期完成的操作和功能;更重要的是,任務(wù)單元的嵌套結(jié)構(gòu)設(shè)計(jì)就象是一棵樹上的主干和分支,實(shí)現(xiàn)了信息在系統(tǒng)內(nèi)的有序流動(dòng)和傳遞,而且這種嵌套設(shè)計(jì)使任務(wù)單元具有智能特征,具備了協(xié)調(diào)下層運(yùn)動(dòng)模塊和邏輯控制模塊的能力。
4 實(shí)驗(yàn)驗(yàn)證
筆者開發(fā)的開放式數(shù)控系統(tǒng)其組成如前所述,配備于一臺(tái)三軸銑床上。為了驗(yàn)證任務(wù)單元的設(shè)計(jì)是否實(shí)現(xiàn)了控制信息的有效表達(dá)與傳遞,進(jìn)行了下面實(shí)驗(yàn)。
(1)直線、圓弧運(yùn)動(dòng)任務(wù)單元的驗(yàn)證:我們所開發(fā)的系統(tǒng)最初只具有直線、圓弧加工能力,因此利用該三軸銑床進(jìn)行了圖6所示的鼠標(biāo)殼體的加工。實(shí)驗(yàn)表明包含F(xiàn)SM的嵌套式任務(wù)單元設(shè)計(jì)合理,控制信息在模塊間傳遞無誤,數(shù)控系統(tǒng)具有實(shí)用性,整體性能良好。
(2)運(yùn)動(dòng)任務(wù)單元的派生——擴(kuò)充NURBS曲線加工能力:系統(tǒng)功能擴(kuò)充的途徑之一就是派生新的運(yùn)動(dòng)任務(wù)單元,創(chuàng)建滿足特定加工能力的子類。為了在常規(guī)插補(bǔ)的基礎(chǔ)上擴(kuò)充NURBS插補(bǔ),從運(yùn)動(dòng)任務(wù)單元來派生CNurbsSegment運(yùn)動(dòng)任務(wù)單元,其封裝實(shí)現(xiàn)了NURBS曲線插補(bǔ)功能。CNurbsSegment運(yùn)動(dòng)任務(wù)單元仍然采用執(zhí)行步任務(wù)單元嵌套管理方式,最終系統(tǒng)具有了NURBS曲線加工能力。圖7就是利用NURBS曲線插補(bǔ)功能所加工的電鉆殼體模具。CNurbsSegment運(yùn)動(dòng)任務(wù)單元部分代碼如下
正是由于采用了嵌套式任務(wù)單元的設(shè)計(jì),系統(tǒng)功能擴(kuò)充過程中只需對任務(wù)生成器和任務(wù)協(xié)調(diào)器進(jìn)行代碼的添加,而不用修改構(gòu)成系統(tǒng)的其它部分,模塊的可重用性大大增強(qiáng)。
5 結(jié)語
本文提出了一種采用FSM數(shù)據(jù)形式封裝控制信息,并以嵌套結(jié)構(gòu)形式使其在數(shù)控系統(tǒng)各模塊中智能化地傳遞的方法。實(shí)驗(yàn)證明,該方法不僅保證了模塊間信息的有序傳遞和模塊問的相互協(xié)作,而且系統(tǒng)功能擴(kuò)展能力易于實(shí)現(xiàn),模塊的可重用性大大增強(qiáng)。
(審核編輯: 智匯張瑜)
分享