天天看點

有限狀态機FSM的設計與實作

1

       很多實時系統,特别是實時控制系統,其整個分析機制與系統的狀态有相當大的關系。有限狀态機由有限的狀态和互相之間的轉移構成,在任何時候隻能處于給定數目的狀态中的 一個。當接收到一個輸人事件時,狀态機産生一個輸出,同時也可能伴随着狀态的轉移。主要有兩種方法來建立有限狀态機,一種是“狀态轉移圖”,另一種是“狀态轉移表” ,分别用圖形方式或表格方式建立有限狀态機。實時系統經常會應用于較大型的系統中,這時采用圖形或表格方式對了解複雜的系統具有很大的幫助。下面介紹子產品的有限狀态機的實作。

2

一 狀态變遷圖

    在事件驅動機制的程式中,對象的行為往往是根據對象目前的狀态和所收到的事件,一起結合起來,決定要做出的反應執行動作,最後狀态變為另一新狀态。下面用一張二維表格就能夠很好的描述這一過程。

         變遷後的狀态

狀态

事件1 事件2
狀态1 狀态11 狀态12
狀态2 狀态21 狀态22

    其實這就是表格驅動機制,假設對象目前的狀态 為1,在收到事件1後,,通過查找狀 态表,獲得事件處理完狀态變遷後狀态。變遷過程是由兩部分組成。

1)狀态1 –>事件1

2)事件1–>狀态11

過程表示舊狀态在獲得事件後的出口過程,此時執行一系列的出口動作,過程表示獲得 事件後進人新狀态的人口過程,此時執行一系列的人口動作

3

二 狀态事件動作規則的描述

我們定義了類TStateDef描述狀态的屬性,TEventDef描述事件屬性,TStateRule描述狀态變遷規則,在收到xx事件後,狀态為xx。TStateActive描述了動作類型,動作編碼,參數等屬性,詳細見下。

有限狀态機FSM的設計與實作

4

三 有 限 狀态機 的 程 序 實 現

下圖是有限狀态機在程式中的兩個主要資料鍊,事件鍊中定義了系統用到的所有事件,每一個事件用一個節點存放。狀态鍊中定義了系統用到的所有狀态,每一個狀态用一個節點描述,狀态節點中除了有狀态屬性字段之外,還有兩個重要資料鍊。

有限狀态機FSM的設計與實作

(1)狀态變遷規則鍊,規則節點中定義了該狀态在某一事件中變遷後到一新的狀态。

  (2)動作鍊,動作節點主要分兩種類型、 入口動作和出口動作,人口動作指狀态變遷到一新狀态後,執行新狀态的人口動作,出口動作指原狀态變遷到一新狀态中,執行原狀态的 出口動作。

5

      四 流程狀态機的解釋執行

有限狀态機FSM的設計與實作

      五 應用對象的狀态機的具體執行

有限狀态機FSM的設計與實作

       有限狀态機提供了描述和控制應用邏輯的非常強大的方法。他們可 應用于通信協定、圖形界面控制和其他很多應用中。FSM也是個不錯 的工具。很多複雜的邏輯可以在一張小圖表中表述。他們很強大也很好用使因為他們的規則簡單、 可讀性和可驗證性。同時,他還可自動生成代碼。

繼續閱讀