蔣子峰,劉 奇
● (中船重工第704研究所)
層次狀態機在船舶電站監控系統中的應用
蔣子峰,劉 奇
● (中船重工第704研究所)
采用層次狀態機的方法設計相關軟件,層次狀態機可使監控系統中各種狀態結構清晰、性能穩定,并能減少代碼重用,降低軟件復雜度。
船舶電站;監控系統;層次狀態機
船舶電站監控系統對電站分系統實施自動控制、管理、監測、越限報警和安全保護功能,以保護電站分系統經濟、安全、連續和穩定運行,保障電站分系統的生命力。控制軟件需要實時維護電站中的發電機組啟動、停機、合閘、分斷、加減速和升降壓等半自動操作狀態,機組失電自啟動、功率增減機、故障換機等自動操作狀態,及各種狀態之間的轉換[1-2]。由于整個系統牽涉到各種行為狀態之間的復雜轉換以及狀態轉換的觸發條件,找到一種能對電站各種復雜狀態統一歸類,并能使由特定事件觸發的狀態轉換能清晰明了,已成為電站監控軟件要解決的重要問題。
層次狀態機(Hierarchy State Machine)是對狀態行為建模的最直觀方法,也是實現事件驅動系統的形式方法,主要用來描述行為狀態及其子狀態的生命周期。通過層次狀態機可了解到一個對象能到達所有狀態以及對象收到的事件對對象狀態的影響等。它能說明事件是如何改變一個對象的狀態,從而實現狀態與狀態之間的轉換[3-4]。
層次狀態機中幾個重要的概念如下,狀態:狀態是對象生命周期中滿足某種條件,執行某些動作或等待某些事件發生的一個階段;事件:事件是一個在時空中顯示出現的特定現象,可以觸發狀態轉換;轉換:轉換是從一個狀態結點到另一個狀態結點的移動。
層次狀態機的一個顯著特點是引入了層次式狀態。它較非層次狀態機多了狀態嵌套的概念,外層狀態稱為父狀態,內層狀態稱為子狀態。行為狀態的層次化就是把所有行為狀態按層次分類并規定了行為狀態的轉換規則——事件到來后首先交給相應的子狀態處理,如果子狀態不處理,再把此事件交給子狀態的父狀態處理。從某種程度上講,層次狀態機限制了狀態的跳轉,狀態內的狀態不需要關心外部狀態的跳轉,這樣就實現了無關狀態間的隔離,從而降低了狀態機的復雜度。
根據層次狀態機的原理,創建層次狀態機狀態的基本事件類型,代碼如下:

采用狀態層次化的方法設計船舶電站監控系統,首先需要把系統中所有狀態分類,分類的原則應采用“里氏替代法則”(Liskov Substitution Principle,LSP)來進行判斷,LSP要求:在所有使用父類的場合,其子類能夠完全代替父類。
電站機組啟動、停機、合閘、分閘、加減速、升降壓由機組控制器管理,其行為狀態圖如圖 1所示。其中HSM_TOP為狀態機的頂層。
S_CONTROL_TOP為機組控制器層,在此層該狀態除了接收上述提到的4個基本事件外,同時處理包括應急停機、控制方式轉換、繞阻過熱跳閘、異常分斷、異常停機等事件信號;對于啟動、停機、合閘、分斷和卸載狀態,各有兩個子狀態用于細化相應過程的實現;其余狀態均為沒有子狀態的一般狀態。
電站跨接開關和岸電開關的合閘、分斷,失電自啟動、功率增減機和故障換機由電站控制器負責管理,其行為狀態如圖2所示。

圖1 機組控制器層次狀態圖

圖2 電站控制器層次狀態圖
其中HSM_TOP為狀態機的頂層;S_CONTROL_TOP為電站控制器層,在此層該狀態除了接收上述提到的4個基本事件外,同時處理包括失電自啟動和控制方式轉換等事件信號;對于跨接和岸電的合分閘狀態,各有兩個子狀態用于細化相應過程的實現;其余狀態均為沒有子狀態的一般狀態。
層次狀態機的狀態轉換是和entry、exit操作綁定在一起的,規定任何一個狀態轉換只能進入一個沒有子狀態的狀態,由于層次繼承關系的存在,實際上嵌套的各個狀態形成了一個樹形結構。層次狀態機定義狀態的轉換操作為:確定原狀態和目標狀態的最小公共父狀態(least common ancestor,LCA),執行原狀態到LCA之間的exit操作,再執行狀態轉換的事件操作,最后執行LCA到目標狀態的entry操作。尋找LCA的代碼算法為:
步驟1 計算原狀態到top狀態的路徑;
步驟2 計算目標狀態到top狀態的路徑;
步驟3 比較top狀態到原狀態和目標狀態前一狀態是否相等,若不相等,top狀態則為兩者的LCA,否則把top狀態放入其前一狀態,并轉入步驟1。
比如機組控制器需要從S_IDLE狀態轉移到S_STOP狀態,按照層次狀態機狀態轉換的規則,狀態轉換的具體流程為:首先計算S_IDLE和S_STOP的公共最小父狀態LCA,為S_CONTROL_TOP;S_IDLE執行exit操作直至進入LCA;執行此狀態轉換的事件操作;最后執行LCA到S_STOP的entry操作。
機組控制程序設置一個沒有子狀態的idle狀態接收各種機組控制信號,并根據機組控制器控制策略判斷滿足各種狀態情況下層次狀態機應該轉入的其他狀態。機組控制器狀態轉換圖,如圖3所示。

圖3 機組控制器狀態轉換圖
電站控制程序設置一個沒有子狀態的 idle狀態接收各種電站控制信號,并根據電站控制器控制策略判斷滿足各種狀態情況下層次狀態機應該轉入的其他狀態。電站控制器狀態轉換圖,如圖4所示。
描述了一種新型的用于船舶電站監控系統的軟件設計方法——層次狀態機,更好的實現了船舶電站中各種復雜狀態的建模和狀態轉換。采用層次狀態機方的優點在于使得電站狀態邏輯更加嚴密、性能高效,對狀態圖的操作接近狀態操作的理想程度,從而使得需要特殊處理的邏輯點較少,特別適用于對穩定性要求較高的軍用船舶電站監控系統。

圖4 電站控制器狀態轉換
[1]肖濤森, 羅克露. 層次狀態機在集群設備中的應用[J].微計算機信息.
[2]褚華, 陳平,一種層次狀態圖的自動生成方法[J]. 西安電子科學大學學報, 2005, 32(5): 15-18.
[3]劉志聲. 談系統分層 [EB/oL]. http: //blog.csdn.net/liuzhisheng/archive/2007/12/18/1950121.aspx.
[4]Stephen Prata. C++Prinmer Plus(中文版)[M]. 北京: 人民郵電出版社, 2005.
又一艘Havyard 833 PSV-MV“Kongsborg”命名交船
2013年6月5日Havyard集團在挪威Stavanger市舉行新一艘Havyard 833型平臺供應船,船號111的命名儀式,向法羅群島船東Skansi Offshore交付了MV Kongsborg。命名儀式完成后,MV Kongsborg直接開赴工作海域。船東Sansi Offshore已與挪威BG公司簽訂了1+2年的期租合同,服務于Flor?海上油田的半潛平臺Transocean Searcher。
船東Skansi Offshore目前有三艘平臺供應船為挪威BG公司和BP公司服務,另二艘平臺供應船為挪威Statoil公司服務,她們都是Havyard設計建造。
Havyard 833型平臺供應船是在原成功的設計Havyard 832型基礎上研發的大型平臺供應船。
Havyard 832型已交付16艘,Havyard 833型也已交付3艘。她們的設計滿足了當前海洋石油領域對平臺供應船大型化,多功能,深水區域,安全以及高效環保的要求。此船的設計還具備250人的救助功能,溢油回收滿足NOFO 2009,優良的線型和優化的機械系統配置使其在不同工況下都能達到較低燃油消耗率。
Application of Hierarchical State Machine in Monitoring System of Ship Power Station
JIANG Zi-feng, LIU Qi
(No.704 Research Institute, CSIC, Shanghai 200031, China)
Using hierarchical state machine can not only make the structure of monitoring system in different states clear, it can also stabilize the performance, reduce the code reuse and reduce the complexity of the software.
ship power station;monitoring system; hierarchical state machine
T183
A
蔣子峰(1984-),男,助理工程師。主要研究方向:船舶電站。