xit 在機械加工領域,控制邏輯規定了機床控制器完成特定功能所必須的步驟或事件的序列。當向機床中添加新的部件、增加新的控制算法或替換已存在的子系統時,其控制邏輯必然發生改變。為使控制軟件具有復用性和重構能力,需要研究控制邏輯的建模方法和軟件重構。控制邏輯反映了系統的動態特征,采用動態行為模型來構造。在面向對象方法中,行為表示對象為完成某種功能而進行的一系列處理操作,是指對象做什么;動態行為模型表示瞬時的、行為化的系統的控制性質,它規定了系統中對象的合法變化序列。
本文采用面向對象的編程技術,基于模塊化思想構造開放式數控系統以層級式有限狀態機(Fi2nite State Machine , FSM) 作為其行為模型,建立了有限狀態機基礎類庫,以確保有限狀態機機制的實施。該類庫具有定義和修改有限狀態機的接口,使模塊內部控制邏輯的定義與實現相分離。當擴充系統功能時,如添加對刀具的狀態監控,可以基于有限狀態機機制完成對系統的行為重構。
1 有限狀態機
FSM由一定數目的狀態和相互之間的轉移構成,在任何時候只能處于給定數目狀態中的一個。它以一種事件驅動的方式工作,當接收到一個事件時,狀態機產生一個輸出,同時也可能伴隨著狀態的轉移。它包括以下一些構成要素:
(1) 狀態 是對象的生命周期中滿足某種條件、執行某些動作或等待某些事件發生的一個階段,能持續一段時間。
(2) 轉移 是從一個狀態節點(源狀態) 到另一個狀態節點(目標狀態) 的移動,發生狀態轉移時,對象會相應地執行某些動作。
(3) 事件 是一個在時空中顯式出現的特定現象,它可以觸發狀態轉移。事件可以來自外部,也可以是內部生成的。
(4) 動作 是對象在狀態發生轉移時所作的一系列處理操作。
對于復雜系統,如采用上述基本FSM 建模,可能存在成百上千的狀態,導致系統效率下降,且難于驗證和維護。因此,出現了對基本FSM 的擴充,如層級式FSM。層級式FSM 由一系列基本FSM 按照層級方式組織起來,一個或多個下層FSM 對應于上層FSM 中的某一狀態(稱其為組合狀態) 。當FSM 處于某一組合狀態時,一個或多個下層FSM可以并行或順序執行。
2 基于有限狀態機的行為模型
2.1 機床的行為建模
FSM 經常用來模型化反應式系統,反應式系統對外部和內部事件作出反應,屬于事件驅動系統。在確定性的反應式系統中,輸入事件的順序和數值決定了系統響應的順序和數值。
數控系統根據輸入的信息(如數控程序、操作面板的輸入、傳感器反饋信息) 控制機床移動,實現加工操作(如軸運動、換刀、停止機床等) ,其行為是可預見的,屬于典型的反應式系統。因此,將外部輸入的信息表示為FSM 的輸入事件,將機床的加工操作表示為FSM 的動作,采用FSM 作為機床的行為模型。
采用狀態轉移圖表示機床行為的簡化FSM ,它描述了該系統可以根據用戶的命令實現軸進給、停止,并在監控到刀具破損后停止軸運動。其FSM 包含3 個狀態:系統就緒( system ready) 、軸運動(axis moving) 和刀具破損(tool broken) 。可以處理3 個事件:其中兩個代表用戶的請求即進給(move) 和停止( stop) ,一個代表傳感器反饋信息即刀具破損。機床可完成的操作被抽象為FSM 中的動作moveAxis () 、stopAxis () 。機床的動態行為以FSM 方式被清晰、規范化地描述出來。可以看出,在FSM 中,狀態轉移觸發動作的過程就是機床實現加工操作的過程。
實際應用中機床行為復雜,其狀態數目龐大,筆者將整個系統按照層級方式分解為一系列子功能模塊,整個系統的行為被分解為子系統的行為,并用單獨的FSM 描述,然后再把這些模塊集成起來構成系統,得到層級式FSM 所表述的整個系統行為模型 。采用層級式FSM 進行行為建模,可實現系統行為的結構化、層次化表達。最終,機床的行為可以看作是各模塊行為的集成,機床的加工過程就是各模塊FSM 的轉移過程。
2.2 行為建模方法
本文基于FSM ,采用以下方法來模型化機床的行為:
(1) 考察對象的運行周期,識別相應的、較固定的、具有某些相同特點的時間段,將其抽象為狀態。
(2) 考察對象能否從一個狀態變為另一個狀態,如果能變,探究狀態變化的原因(抽象為事件) ,確定是否伴隨發生一些反應(抽象為動作) ,從而定義轉移,轉移=〈事件,動作,目標狀態〉。另外,還存在一種自身轉移,它是源狀態等于目標狀態的轉移,觸發自身轉移的事件可能是對象內部自生成的,如刷新事件(up date) ,可參見下文的例子。
(3) 考察每個狀態,看其是否應該分解。通過對狀態的層次結構分解,將一個大的狀態分解為若干子狀態,分解層數的多少取決于系統的復雜程度;再逐步細化,直到所有的狀態都是原子的(不再分解的) ,確定原子狀態之間的轉移形成狀態機。通過上述方法完成系統的有限狀態機規劃。
3 基于有限狀態機的行為重構機理
機床FSM 的內容實際上由狀態集合、事件集合、轉移集合和動作集合組成,稱之為狀態表。在實際應用中,由于系統的配置發生變化(增刪設備、引入新功能或新的控制算法等) 而改變系統的行為時,對數控軟件系統而言,則需重新規劃FSM ,創建新的狀態表。
狀態表可以采用鏈表的結構,鏈表中的每個單元都包含一個狀態標志,還有一個指向轉移集合的指針。每個轉移又包含一個觸發它的事件標志和動作集,以及指向下一個狀態的指針,其中動作集是狀態轉移時被調用函數的完整集合。狀態表的組織結構。每個狀態具有一系列轉移(轉移集) , 其中, 狀態state7 為組合狀態, 對應狀態state7. 1 和state7. 2 構成的下一層FSM。當系統需求改變而導致行為發生變化時,對應狀態表內容的添加、刪除和替換,如圖3 中陰影表格所示,可以進行動作的替換(采用modifiedAction ()替換action3 () ) ,添加新的狀態( newState) 、新的轉移( &t ran7) 和新的事件(newEvent1) 。通過對狀態表的修改來完成基于FSM 的系統行為重構。由于FSM 采用層級式管理,行為改變通常僅對特定子系統產生影響,只需要修改相應模塊的狀態表即可。一般情況下,將一個新的狀態表以文件的形式保存,在系統啟動時加載,就可以實現執行代碼級別的行為重構。為此,對于每個模塊,設計了多個狀態表來規定它在不同系統模式下的不同行為,系統啟動時只加載其中一個狀態表,使同一模塊可以滿足于不同的應用。當系統行為變化涉及到修改動作集時,就需要編寫源代碼,因為動作是在狀態轉化時被調用的函數。
為了便于創建和修改狀態表,還設計了FSM基礎類庫。它不僅提供了定義、查詢和修改狀態表的接口,而且是FSM 機制運行的驅動中心,其作用與硬件設備驅動程序類似。系統運行時,FSM 基礎類庫負責接收事件,在狀態表中根據當前狀態查找對應的轉移,觸發規定的動作,進而實現了系統的特定功能。FSM 基礎類庫是實現系統行為重構的關鍵。
因此,在行為重構過程中, 設計者不必關心FSM 機制的實施細節,只需負責FSM 的重新規劃和動作集合的編程(如果需要) ,可大大減少重構的時間和成本。
4 重構實例驗證
現以一個實例,即向已有三軸銑床數控軟件中添加監控刀具破損功能,來演示系統行為重構的能力。
4.1 三軸銑床軟件系統的原始構成
(1) 任務協調器 進行任務分配,并協調各個模塊的運行。
(2) 譯碼模塊 完成語法檢查、譯碼和刀具補償功能。
(3) 軸組模塊 完成加減速處理和插補功能,向各軸發送相應的設定點協調它們的運動。
(4) 軸模塊 接收來自軸組的設定點,進行單軸控制,向外部設備發送信號。
按照前述的行為建模規則,任務協調模塊、軸組模塊、軸模塊的簡化FSM 其中,任務協調器是控制軟件的調度中心,FSM 位于系統的頂層,其他模塊FSM 在其管理下并行運行,狀態的自動(auto) 或手動(manual) 方式對應于系統的加工模式。
4.2 重構實現
下面在原有系統中集成監控功能,以監控刀具破損為例,證實基于FSM 構造的系統具有行為重構能力。
監控刀具破損功能指在主軸刀具發生破損或斷裂時,系統能夠及時檢測到該情況,并自動停止所有軸。筆者編制了單獨的模塊,以實現刀具破損監控功能。通過讀取外部傳感器測得的主軸功率,依據一定的規則判定刀具破損,發出刀具破損(broken)事件(刀具破損判定規則不在本文研究范圍內) 。監控刀具破損模塊也在任務協調器的調度下周期性運行,在發生刀具破損時,它向任務協調器的標準接口發送broken 事件。
任務協調器對broken 事件做出反應,其行為發生變化,因此需要規劃FSM ,修改狀態表,包括增加新的狀態、事件、轉移和動作,虛線框內為新增FSM 部分。在其處理broken 事件的動作(對應于任務協調器的成員函數toolBrokenAction() ) 中向軸組發出stop 事件,而軸組模塊已經具有處理stop 事件的能力,控制邏輯不發生改變,因此軸組和軸模塊的FSM 不受影響,無需作任何修改。對狀態表內容的修改包括增加一個刀具破損Tool_Broken”狀態,以及和刀具破損狀態相關的兩個轉移,還有與循環加工Incycle”狀態相關的一個轉移。這些新增條目可以利用FSM 類庫提供的方法addTransition 來創建。該函數原型為CFiniteS2tateMachine : :addTransition ( st ring state , st ring e2vent , st ring next State , CFSMAction action) 。其中,CFiniteStateMachine 表示FSM 類, st ring 表示字符串類, state 表示對象當前所處狀態的名稱,e2vent 表示對象接收事件的名稱,nextState 表示對象將轉移的下一狀態的名稱,CFSMAction 表示FSM動作類,action 表示對象轉移過程中被觸發的動作。
void CTaskCoordinator ∷setup FSM() / / 任務協調器建立FSM { addTransition (Idle, setAuto , Auto ”, & CTaskCoordina2 tor : : setAutoAction) ;/ / 原有轉移 ? / / 添加刀具破損、恢復、復位事件對應的轉移 addTransition ( InCycle , ; broken, Tool _ Broken , &CTaskCoordinator : :toolBrokenAction) ; addTransition ( Tool _ Broken , resume , InCycle , &CTaskCoordinator : : resumeAction) ; addTransition ( Tool _ Broken , reset , Idle , &CTaskCoordinator : : resetAction) ; }
可以看出,通過FSM 基礎類庫提供的方法能夠方便、高效地改變狀態表。此外,模塊開發者還需要完成斷刀處理動作, 即toolBrokenAction , re2sumeAction 和resetAction 的編程。
每個模塊都要經過調試正確后進行集成,最終可獲得具有刀具破損監控功能的三軸數控銑床xi't 。上述重構過程已在一開放式三軸數控銑床實驗臺上實現,達到了系統重構的目標。通過在三軸銑床系統中添加刀具破損檢測功能,說明本系統也能夠集成其他外部傳感器信號,實施用戶特有的控制策略。
5 結論
FSM 作為系統的動態行為模型,使系統具有了行為重構能力,大大增強了開放性。基于有限狀態機的行為建模的優點是:提供了構造系統動態行為的統一方式;可以對每個模塊的行為單獨檢驗,有助于錯誤的發現; FSM 采用層級方式管理,使系統的行為變化轉變為對部分模塊FSM 的修改;有限狀態機基礎類庫提供了修改和存取模塊內部控制邏輯的接口,使控制邏輯的定義與實現相分離。
(審核編輯: 智匯張瑜)
分享