Skip to main content

シンプルステートマシン

単純なステートマシンは、状態、状態遷移を制御する遷移、およびアクションまたはメソッドで構成されます。これにより、有限マシンの動作を設計および実装できます。

ステートチャートを使用したアプリケーションの作成

  1. で新しいプロジェクトを作成します 標準プロジェクト テンプレート。ために PLC_PRGの、 を選択 UMLステートチャート 実装言語。

    プロジェクトが作成されます。

  2. デバイスツリーで、アプリケーションを選択して[ オブジェクトの追加→POU コンテキストメニューで。

  3. 名前の付いた機能ブロックを作成します FB_Simple_Machine の中に UMLステートチャート(SC) 実装言語。

    _uml_img_sc_simple_device_tree.png
  4. プログラムで機能ブロックをインスタンス化します PLC_PRG 関数ブロックインスタンスの呼び出しを実装します。

    PROGRAM PLC_PRG
    VAR
        fb_Simple_Machine_A : FB_Simple_Machine;
    END_VAR
    fb_Simple_Machine_A();
  5. プロジェクトを名前を付けて保存 SimpleMachine.project

ステートチャートとしてのフローロジックの設計

マシンの要件の例:

  • 機械は状態にあります Idle 初期化フェーズの後。

  • イベントが発生すると、マシンは状態に切り替わります DoIt

  • すべてのアクションとメソッドが処理されると、完了イベントがトリガーされ、マシンはアイドル状態に戻ります。

  • 機械をアイドル状態から状態に切り替えることができます Exit そして最後の状態に。

この場合の機械の設計は以下のとおりです。

_uml_img_sc_simple_machine_design.png

デザインには、フローロジックを制御するガード条件はまだ含まれていません。さらに、アクションまたはメソッドはまだ呼び出されていないため、マシンはまだ動作していません。

デバイスツリーで、機能ブロックをダブルクリックします FB_Simple_Machine エディターを開き、上記の図を作成します。

ガード条件の変数の宣言

PROGRAM FB_Simple_Machine
VAR
    bInitDone : BOOL := FALSE;
    bShutDown : BOOL := FALSE;
    bDoSomething : BOOL := FALSE;
    bDoFinished : BOOL := FALSE;
END_VAR

ユーザー入力は、通常、ユーザーインターフェイスを介してユーザーが外部で設定するブール変数にマップされます。ステートチャートでガード条件として変数を割り当てると、フローロジックが切り替え可能になります。変数は制御変数として機能します。

_uml_img_sc_simple_machine_control.png

メソッドとアクションの追加

フローロジックをステートチャートとして実装したら、状態と遷移に機能を追加します。そうすることで、あなたは州を拡張します ENTRYDO、 と EXIT アクションまたはメソッド。アクションまたはメソッドを遷移に追加することもできます。これは、状態遷移で1回呼び出されます。

いずれかを選択して、状態にアクションを追加できます。 _uml_icon_sc_action_entry.png_uml_icon_sc_action_do.png、 また _uml_icon_sc_action_exit.png シンボル。あなたはクリックすることができます _uml_icon_sc_transition_action.png トランジションにアクションを追加するための記号。

_uml_img_sc_simple_machine_function.png

遷移にアクションを割り当てると、時間の動作がわずかに異なる同様のロジックを設計できます。

_uml_img_sc_simple_machine_function_as_well.png

の中に デバイス ビューでは、アクションとメソッドの割り当てを追跡できます。アクションとメソッドはで作成されました ST 実装言語。

_uml_img_sc_simple_machine_devices.png