Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MATLAB スクリプトを使用したチャートの作成

以下の例では、Stateflow® API コマンドを MATLAB® 関数またはスクリプトにインクルードする方法を説明します。API コマンドのスクリプトを作成すると、チャート作成ステップを繰り返さずにすみ、また 1 つのコマンドで同じモデルを再度作成することもできます。詳細については、Stateflow API の概要を参照してください。

MATLAB 関数の実行

関数 makeMyModelこのページの最後で定義されています。この関数により "ベース" Stateflow チャートが生成され、アプリケーションのテンプレートとして再使用できます。

ch = makeMyModel;
view(ch)

Stateflow chart with a hierarchy of states. The outer state is called A. It contains two inner states called A1 and A2.

ベース チャート関数の作成

この関数は Stateflow チャートを作成し、対応する Stateflow.Chart オブジェクトを返します。

function ch = makeMyModel

モデルを作成し、新しい Stateflow.Chart オブジェクトにアクセスします。

    rt = sfroot;
    prev_machines = find(rt,"-isa","Stateflow.Machine");
    sfnew;
    curr_machines = find(rt,"-isa","Stateflow.Machine");
    m = setdiff(curr_machines,prev_machines);
    ch = find(m,"-isa","Stateflow.Chart");

チャートでステート A を作成します。

    sA = Stateflow.State(ch);
    sA.Name = "A";
    sA.Position = [50 50 310 200];

ステート A の中にステート A1 を作成します。

    sA1 = Stateflow.State(ch);
    sA1.Name = "A1";
    sA1.Position = [80 120 90 60];

ステート A の中にステート A2 を作成します。

    sA2 = Stateflow.State(ch);
    sA2.Name = "A2";
    sA2.Position = [240 120 90 60];

A1 から A2 への遷移を作成します。

    tA1A2 = Stateflow.Transition(ch);
    tA1A2.Source = sA1;
    tA1A2.Destination = sA2;
    tA1A2.SourceOClock = 3;
    tA1A2.DestinationOClock = 9;

ステート A にデフォルト遷移を追加します。

    dtA = Stateflow.Transition(ch);
    dtA.Destination = sA;
    dtA.DestinationOClock = 0;
    dtA.SourceEndPoint = dtA.DestinationEndpoint-[0 30];
    dtA.MidPoint = dtA.DestinationEndpoint-[0 15];

ステート A1 にデフォルト遷移を追加します。

    dtA1 = Stateflow.Transition(ch);
    dtA1.Destination = sA1;
    dtA1.DestinationOClock = 0;
    dtA1.SourceEndPoint = dtA1.DestinationEndpoint-[0 30];
    dtA1.MidPoint = dtA1.DestinationEndpoint-[0 15];
end

参考

関数

オブジェクト

関連するトピック