蔣子峰,劉 奇
● (中船重工第704研究所)
層次狀態(tài)機(jī)在船舶電站監(jiān)控系統(tǒng)中的應(yīng)用
蔣子峰,劉 奇
● (中船重工第704研究所)
采用層次狀態(tài)機(jī)的方法設(shè)計(jì)相關(guān)軟件,層次狀態(tài)機(jī)可使監(jiān)控系統(tǒng)中各種狀態(tài)結(jié)構(gòu)清晰、性能穩(wěn)定,并能減少代碼重用,降低軟件復(fù)雜度。
船舶電站;監(jiān)控系統(tǒng);層次狀態(tài)機(jī)
船舶電站監(jiān)控系統(tǒng)對(duì)電站分系統(tǒng)實(shí)施自動(dòng)控制、管理、監(jiān)測(cè)、越限報(bào)警和安全保護(hù)功能,以保護(hù)電站分系統(tǒng)經(jīng)濟(jì)、安全、連續(xù)和穩(wěn)定運(yùn)行,保障電站分系統(tǒng)的生命力??刂栖浖枰獙?shí)時(shí)維護(hù)電站中的發(fā)電機(jī)組啟動(dòng)、停機(jī)、合閘、分?jǐn)唷⒓訙p速和升降壓等半自動(dòng)操作狀態(tài),機(jī)組失電自啟動(dòng)、功率增減機(jī)、故障換機(jī)等自動(dòng)操作狀態(tài),及各種狀態(tài)之間的轉(zhuǎn)換[1-2]。由于整個(gè)系統(tǒng)牽涉到各種行為狀態(tài)之間的復(fù)雜轉(zhuǎn)換以及狀態(tài)轉(zhuǎn)換的觸發(fā)條件,找到一種能對(duì)電站各種復(fù)雜狀態(tài)統(tǒng)一歸類,并能使由特定事件觸發(fā)的狀態(tài)轉(zhuǎn)換能清晰明了,已成為電站監(jiān)控軟件要解決的重要問題。
層次狀態(tài)機(jī)(Hierarchy State Machine)是對(duì)狀態(tài)行為建模的最直觀方法,也是實(shí)現(xiàn)事件驅(qū)動(dòng)系統(tǒng)的形式方法,主要用來描述行為狀態(tài)及其子狀態(tài)的生命周期。通過層次狀態(tài)機(jī)可了解到一個(gè)對(duì)象能到達(dá)所有狀態(tài)以及對(duì)象收到的事件對(duì)對(duì)象狀態(tài)的影響等。它能說明事件是如何改變一個(gè)對(duì)象的狀態(tài),從而實(shí)現(xiàn)狀態(tài)與狀態(tài)之間的轉(zhuǎn)換[3-4]。
層次狀態(tài)機(jī)中幾個(gè)重要的概念如下,狀態(tài):狀態(tài)是對(duì)象生命周期中滿足某種條件,執(zhí)行某些動(dòng)作或等待某些事件發(fā)生的一個(gè)階段;事件:事件是一個(gè)在時(shí)空中顯示出現(xiàn)的特定現(xiàn)象,可以觸發(fā)狀態(tài)轉(zhuǎn)換;轉(zhuǎn)換:轉(zhuǎn)換是從一個(gè)狀態(tài)結(jié)點(diǎn)到另一個(gè)狀態(tài)結(jié)點(diǎn)的移動(dòng)。
層次狀態(tài)機(jī)的一個(gè)顯著特點(diǎn)是引入了層次式狀態(tài)。它較非層次狀態(tài)機(jī)多了狀態(tài)嵌套的概念,外層狀態(tài)稱為父狀態(tài),內(nèi)層狀態(tài)稱為子狀態(tài)。行為狀態(tài)的層次化就是把所有行為狀態(tài)按層次分類并規(guī)定了行為狀態(tài)的轉(zhuǎn)換規(guī)則——事件到來后首先交給相應(yīng)的子狀態(tài)處理,如果子狀態(tài)不處理,再把此事件交給子狀態(tài)的父狀態(tài)處理。從某種程度上講,層次狀態(tài)機(jī)限制了狀態(tài)的跳轉(zhuǎn),狀態(tài)內(nèi)的狀態(tài)不需要關(guān)心外部狀態(tài)的跳轉(zhuǎn),這樣就實(shí)現(xiàn)了無關(guān)狀態(tài)間的隔離,從而降低了狀態(tài)機(jī)的復(fù)雜度。
根據(jù)層次狀態(tài)機(jī)的原理,創(chuàng)建層次狀態(tài)機(jī)狀態(tài)的基本事件類型,代碼如下:
采用狀態(tài)層次化的方法設(shè)計(jì)船舶電站監(jiān)控系統(tǒng),首先需要把系統(tǒng)中所有狀態(tài)分類,分類的原則應(yīng)采用“里氏替代法則”(Liskov Substitution Principle,LSP)來進(jìn)行判斷,LSP要求:在所有使用父類的場合,其子類能夠完全代替父類。
電站機(jī)組啟動(dòng)、停機(jī)、合閘、分閘、加減速、升降壓由機(jī)組控制器管理,其行為狀態(tài)圖如圖 1所示。其中HSM_TOP為狀態(tài)機(jī)的頂層。
S_CONTROL_TOP為機(jī)組控制器層,在此層該狀態(tài)除了接收上述提到的4個(gè)基本事件外,同時(shí)處理包括應(yīng)急停機(jī)、控制方式轉(zhuǎn)換、繞阻過熱跳閘、異常分?jǐn)唷惓MC(jī)等事件信號(hào);對(duì)于啟動(dòng)、停機(jī)、合閘、分?jǐn)嗪托遁d狀態(tài),各有兩個(gè)子狀態(tài)用于細(xì)化相應(yīng)過程的實(shí)現(xiàn);其余狀態(tài)均為沒有子狀態(tài)的一般狀態(tài)。
電站跨接開關(guān)和岸電開關(guān)的合閘、分?jǐn)?,失電自啟?dòng)、功率增減機(jī)和故障換機(jī)由電站控制器負(fù)責(zé)管理,其行為狀態(tài)如圖2所示。
圖1 機(jī)組控制器層次狀態(tài)圖
圖2 電站控制器層次狀態(tài)圖
其中HSM_TOP為狀態(tài)機(jī)的頂層;S_CONTROL_TOP為電站控制器層,在此層該狀態(tài)除了接收上述提到的4個(gè)基本事件外,同時(shí)處理包括失電自啟動(dòng)和控制方式轉(zhuǎn)換等事件信號(hào);對(duì)于跨接和岸電的合分閘狀態(tài),各有兩個(gè)子狀態(tài)用于細(xì)化相應(yīng)過程的實(shí)現(xiàn);其余狀態(tài)均為沒有子狀態(tài)的一般狀態(tài)。
層次狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換是和entry、exit操作綁定在一起的,規(guī)定任何一個(gè)狀態(tài)轉(zhuǎn)換只能進(jìn)入一個(gè)沒有子狀態(tài)的狀態(tài),由于層次繼承關(guān)系的存在,實(shí)際上嵌套的各個(gè)狀態(tài)形成了一個(gè)樹形結(jié)構(gòu)。層次狀態(tài)機(jī)定義狀態(tài)的轉(zhuǎn)換操作為:確定原狀態(tài)和目標(biāo)狀態(tài)的最小公共父狀態(tài)(least common ancestor,LCA),執(zhí)行原狀態(tài)到LCA之間的exit操作,再執(zhí)行狀態(tài)轉(zhuǎn)換的事件操作,最后執(zhí)行LCA到目標(biāo)狀態(tài)的entry操作。尋找LCA的代碼算法為:
步驟1 計(jì)算原狀態(tài)到top狀態(tài)的路徑;
步驟2 計(jì)算目標(biāo)狀態(tài)到top狀態(tài)的路徑;
步驟3 比較top狀態(tài)到原狀態(tài)和目標(biāo)狀態(tài)前一狀態(tài)是否相等,若不相等,top狀態(tài)則為兩者的LCA,否則把top狀態(tài)放入其前一狀態(tài),并轉(zhuǎn)入步驟1。
比如機(jī)組控制器需要從S_IDLE狀態(tài)轉(zhuǎn)移到S_STOP狀態(tài),按照層次狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的規(guī)則,狀態(tài)轉(zhuǎn)換的具體流程為:首先計(jì)算S_IDLE和S_STOP的公共最小父狀態(tài)LCA,為S_CONTROL_TOP;S_IDLE執(zhí)行exit操作直至進(jìn)入LCA;執(zhí)行此狀態(tài)轉(zhuǎn)換的事件操作;最后執(zhí)行LCA到S_STOP的entry操作。
機(jī)組控制程序設(shè)置一個(gè)沒有子狀態(tài)的idle狀態(tài)接收各種機(jī)組控制信號(hào),并根據(jù)機(jī)組控制器控制策略判斷滿足各種狀態(tài)情況下層次狀態(tài)機(jī)應(yīng)該轉(zhuǎn)入的其他狀態(tài)。機(jī)組控制器狀態(tài)轉(zhuǎn)換圖,如圖3所示。
圖3 機(jī)組控制器狀態(tài)轉(zhuǎn)換圖
電站控制程序設(shè)置一個(gè)沒有子狀態(tài)的 idle狀態(tài)接收各種電站控制信號(hào),并根據(jù)電站控制器控制策略判斷滿足各種狀態(tài)情況下層次狀態(tài)機(jī)應(yīng)該轉(zhuǎn)入的其他狀態(tài)。電站控制器狀態(tài)轉(zhuǎn)換圖,如圖4所示。
描述了一種新型的用于船舶電站監(jiān)控系統(tǒng)的軟件設(shè)計(jì)方法——層次狀態(tài)機(jī),更好的實(shí)現(xiàn)了船舶電站中各種復(fù)雜狀態(tài)的建模和狀態(tài)轉(zhuǎn)換。采用層次狀態(tài)機(jī)方的優(yōu)點(diǎn)在于使得電站狀態(tài)邏輯更加嚴(yán)密、性能高效,對(duì)狀態(tài)圖的操作接近狀態(tài)操作的理想程度,從而使得需要特殊處理的邏輯點(diǎn)較少,特別適用于對(duì)穩(wěn)定性要求較高的軍用船舶電站監(jiān)控系統(tǒng)。
圖4 電站控制器狀態(tài)轉(zhuǎn)換
[1]肖濤森, 羅克露. 層次狀態(tài)機(jī)在集群設(shè)備中的應(yīng)用[J].微計(jì)算機(jī)信息.
[2]褚華, 陳平,一種層次狀態(tài)圖的自動(dòng)生成方法[J]. 西安電子科學(xué)大學(xué)學(xué)報(bào), 2005, 32(5): 15-18.
[3]劉志聲. 談系統(tǒng)分層 [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集團(tuán)在挪威Stavanger市舉行新一艘Havyard 833型平臺(tái)供應(yīng)船,船號(hào)111的命名儀式,向法羅群島船東Skansi Offshore交付了MV Kongsborg。命名儀式完成后,MV Kongsborg直接開赴工作海域。船東Sansi Offshore已與挪威BG公司簽訂了1+2年的期租合同,服務(wù)于Flor?海上油田的半潛平臺(tái)Transocean Searcher。
船東Skansi Offshore目前有三艘平臺(tái)供應(yīng)船為挪威BG公司和BP公司服務(wù),另二艘平臺(tái)供應(yīng)船為挪威Statoil公司服務(wù),她們都是Havyard設(shè)計(jì)建造。
Havyard 833型平臺(tái)供應(yīng)船是在原成功的設(shè)計(jì)Havyard 832型基礎(chǔ)上研發(fā)的大型平臺(tái)供應(yīng)船。
Havyard 832型已交付16艘,Havyard 833型也已交付3艘。她們的設(shè)計(jì)滿足了當(dāng)前海洋石油領(lǐng)域?qū)ζ脚_(tái)供應(yīng)船大型化,多功能,深水區(qū)域,安全以及高效環(huán)保的要求。此船的設(shè)計(jì)還具備250人的救助功能,溢油回收滿足NOFO 2009,優(yōu)良的線型和優(yōu)化的機(jī)械系統(tǒng)配置使其在不同工況下都能達(dá)到較低燃油消耗率。
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-),男,助理工程師。主要研究方向:船舶電站。