Main Content

Stateflow API の概要

Stateflow® アプリケーション プログラミング インターフェイス (API) を使用すると、MATLAB® コマンド ウィンドウから Stateflow チャートの作成や変更ができます。Stateflow API コマンドを MATLAB 関数またはスクリプトに配置すると、次のことができます。

  • 1 つのコマンドで複数の変更ステップを実行することにより、チャート変更操作を自動化する。

  • アプリケーションのテンプレートとして再使用できる "ベース" Stateflow チャートを生成して、チャート作成ステップを繰り返さずにすむようにする。

  • モデルの特殊レポートを生成する。

Stateflow API は、Stateflow チャートのグラフィカル オブジェクトと非グラフィカル オブジェクトを表すオブジェクトで構成されます。たとえば、API オブジェクト Stateflow.State および Stateflow.Transition は、Stateflow チャートのステートと遷移を表します。API オブジェクトのプロパティを変更した場合、または API オブジェクトのオブジェクト関数のいずれかを呼び出した場合、Stateflow チャートで対応するオブジェクトに影響します。Stateflow エディターを使用してチャート内のオブジェクトに対して演算を実行すると、対応する API オブジェクトに影響します。

メモ

Stateflow API を使用して Stateflow エディターで実行した演算は、元に戻せません。API で編集操作を実行すると、クイック アクセス ツール バーの [元に戻す] ボタンと [やり直し] ボタンが無効になります。

Stateflow API オブジェクトの階層

Stateflow API オブジェクトは包含階層に整理されています。たとえば、Stateflow チャートでステート A にステート B が含まれている場合、ステート A の API オブジェクトにはステート B の API オブジェクトが含まれます。Stateflow API 階層は、Stateflow オブジェクト階層と同じ包含ルールに従っています。たとえば、チャートにはステートを含めることができますが、ステートにチャートを含めることはできません。詳細については、Stateflow オブジェクトの概要を参照してください。

以下の図は、Stateflow API のオブジェクトの階層を示しています。

Diagram showing the four levels of the hierarchy of API objects.

この階層には包含のレベルが 4 つあります。

  • ルートSimulink.Root オブジェクトはすべての Stateflow API オブジェクトの親です。これは Stateflow API 階層の最上位にあるプレースホルダーで、Stateflow オブジェクトを Simulink® モデル内の他のオブジェクトと区別します。Stateflow チャート、State Transition Table ブロック、Truth Table ブロック、または MATLAB Function ブロックを Simulink モデルに追加する場合、またはこれらのブロックのいずれかが含まれるモデルを読み込んだ場合、Simulink.Root オブジェクトが自動的に作成されます。

  • マシン — Stateflow の視点からは、Stateflow.Machine オブジェクトは Simulink モデルと等価です。Stateflow.Machine オブジェクトには、モデル内の Stateflow チャート、 State Transition Table ブロック、Truth Table ブロック、MATLAB Function ブロックを表すオブジェクトが含まれています。

  • チャートStateflow.ChartStateflow.StateTransitionTableChartStateflow.TruthTableChartStateflow.EMChart オブジェクトは、それぞれ Stateflow チャート、State Transition Table ブロック、Truth Table ブロック、MATLAB Function ブロックを表します。階層のこのレベルにあるオブジェクトには、ステート、関数、ボックス、データ、イベント、メッセージ、遷移、ジャンクション、entry 端子と exit 端子、および注釈を表すオブジェクトを含めることができます。

  • ステート、関数、ボックス — 階層のこのレベルには、Stateflow.StateStateflow.FunctionStateflow.Box の各オブジェクトが含まれ、それぞれステート、関数、ボックスを表します。これらのオブジェクトには、ステート、関数、ボックス、データ、イベント、メッセージ、遷移、ジャンクション、entry 端子と exit 端子、および注釈を表す他のオブジェクトを含めることができます。入れ子のレベルは際限なく深くできます。

この階層図には、包含階層の外部に存在する 2 つのオブジェクト タイプが示されています。

Stateflow API オブジェクトへのアクセス

Stateflow API を使用するには、最初に Simulink.Root オブジェクトにアクセスします。このオブジェクトは Stateflow API にあるすべてのオブジェクトの親です。Simulink.Root オブジェクトは、モデル内の他の API オブジェクトにアクセスするために使用します。以下に例を示します。

  1. 関数 sfnew を呼び出して、空の Stateflow チャートをもつ Simulink モデルを作成します。

    sfnew

  2. 関数 sfroot を使用して、Simulink.Root オブジェクトにアクセスします。

    rt = sfroot;

  3. 関数 find を呼び出して、モデル内のチャートに対応する Stateflow.Chart オブジェクトにアクセスします。

    ch = find(rt,"-isa","Stateflow.Chart");

  4. 関数 Stateflow.State を呼び出して、ステートをチャートに追加します。この関数は、新しいステートに対応する Stateflow.State オブジェクトを返します。

    st = Stateflow.State(ch);

  5. 新しいステートを Stateflow エディターで表示します。

    view(st)

詳細については、Stateflow チャート内のオブジェクトへのアクセスStateflow API を使用したチャートの作成を参照してください。

API オブジェクトのプロパティの変更

API オブジェクトには、Stateflow エディターで設定した値に対応するプロパティがあります。たとえば、エディターを使用してステートの位置を変更するには、ステートをクリックしてドラッグします。Stateflow API を使用してステートの位置を変更するには、対応する Stateflow.State オブジェクトの Position プロパティを変更します。

st.Position = [10 20 100 80];
詳細については、Stateflow オブジェクトのプロパティの変更と関数の呼び出しを参照してください。

API オブジェクト関数の呼び出し

API オブジェクトには、Stateflow エディターのアクションに対応する関数があります。たとえば、エディターを使用して遷移の [プロパティ] ダイアログ ボックスを開くには、遷移を右クリックして [プロパティ] を選択します。Stateflow API を使用してこのダイアログ ボックスを開くには、対応する Stateflow.Transition オブジェクトの関数 dialog を呼び出します。

dialog(tr);
詳細については、Stateflow オブジェクトのプロパティの変更と関数の呼び出しを参照してください。

参考

関数

オブジェクト

関連するトピック