Stateflow API の概要
R2026bStateflow® アプリケーション プログラミング インターフェイス (API) を使用すると、MATLAB® コマンド ウィンドウから Stateflow チャートと状態遷移表の作成や変更ができます。Stateflow API コマンドを MATLAB 関数またはスクリプトに配置すると、次のことができます。
1 つのコマンドで複数の編集ステップを実行することにより、チャートまたは表の変更操作を自動化する。
アプリケーションのテンプレートとして再利用可能な "ベース" となる Stateflow チャートまたは状態遷移表を生成して、チャートまたは表の作成ステップを繰り返さずにすむようにする。
モデルの特殊レポートを生成する。
Stateflow API は、Stateflow チャートまたは状態遷移表のグラフィカル オブジェクトと非グラフィカル オブジェクトを表すオブジェクトで構成されます。たとえば、API オブジェクト Stateflow.State および Stateflow.Transition は Stateflow チャートのステートと遷移を表し、API オブジェクト Stateflow.StateTransitionTableRow および Stateflow.StateTransitionTableCell は状態遷移表の行と遷移セルを表します。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 のオブジェクトの階層を示しています。

この階層には包含のレベルが 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.Chart、Stateflow.StateTransitionTableChart、Stateflow.TruthTableChart、Stateflow.EMChartオブジェクトは、それぞれ Stateflow チャート、State Transition Table ブロック、Truth Table ブロック、MATLAB Function ブロックを表します。階層のこのレベルにあるオブジェクトには、ステート、関数、ボックス、データ、イベント、メッセージ、遷移、ジャンクション、entry 端子と exit 端子、および注釈を表すオブジェクトを含めることができます。ステート、関数、ボックス — 階層のこのレベルには、
Stateflow.State、Stateflow.Function、Stateflow.Boxの各オブジェクトが含まれ、それぞれステート、関数、ボックスを表します。これらのオブジェクトには、ステート、関数、ボックス、データ、イベント、メッセージ、遷移、ジャンクション、entry 端子と exit 端子、および注釈を表す他のオブジェクトを含めることができます。入れ子のレベルは際限なく深くできます。
この階層図には、包含階層の外部に存在する 2 つのオブジェクト タイプが示されています。
エディター —
Stateflow.Editorオブジェクトは、チャートと状態遷移表のグラフィカル要素へのアクセスを可能にします。Stateflow.ChartまたはStateflow.StateTransitionTableChartオブジェクトのそれぞれについて、Stateflow エディターの位置、サイズ、倍率のレベルの制御に使用できるStateflow.Editorオブジェクトがあります。詳細については、Stateflow チャートの拡大表示、Stateflow チャートの縮小表示および倍率の設定を参照してください。クリップボード —
Stateflow.ClipboardオブジェクトにはcopyとpasteToの 2 つの関数があります。これらの関数は、Stateflow API にコピーアンドペースト機能を実装するためのステージング領域としてクリップボードを使用します。詳細については、グループ化によるコピーと貼り付けとオブジェクトの配列のコピーと貼り付けを参照してください。
Stateflow API オブジェクトへのアクセス
Stateflow API を使用するには、最初に Simulink.Root オブジェクトにアクセスします。このオブジェクトは Stateflow API にあるすべてのオブジェクトの親です。Simulink.Root オブジェクトは、モデル内の他の API オブジェクトにアクセスするために使用します。以下に例を示します。
関数
sfnewを呼び出して、空の Stateflow チャートをもつ Simulink モデルを作成します。sfnew
関数
sfrootを使用して、Simulink.Rootオブジェクトにアクセスします。rt = sfroot;
関数
findを呼び出して、モデル内のチャートに対応するStateflow.Chartオブジェクトにアクセスします。ch = find(rt,"-isa","Stateflow.Chart");
関数
Stateflow.Stateを呼び出して、ステートをチャートに追加します。この関数は、新しいステートに対応するStateflow.Stateオブジェクトを返します。st = Stateflow.State(ch);
新しいステートを Stateflow エディターで表示します。
view(st)
詳細については、Stateflow チャート内のオブジェクトへのアクセスとStateflow API を使用したチャートの作成を参照してください。
API オブジェクトのプロパティの変更
API オブジェクトには、Stateflow エディターで設定した値に対応するプロパティがあります。たとえば、エディターを使用してステートの位置を変更するには、ステートをクリックしてドラッグします。Stateflow API を使用してステートの位置を変更するには、対応する Stateflow.State オブジェクトの Position プロパティを変更します。
st.Position = [10 20 100 80];
API オブジェクト関数の呼び出し
API オブジェクトには、Stateflow エディターのアクションに対応する関数があります。たとえば、エディターを使用して遷移の [プロパティ] ダイアログ ボックスを開くには、遷移を右クリックして [プロパティ] を選択します。Stateflow API を使用してこのダイアログ ボックスを開くには、対応する Stateflow.Transition オブジェクトの関数 dialog を呼び出します。
dialog(tr);
参考
関数
オブジェクト
Stateflow.Box|Stateflow.Chart|Stateflow.Clipboard|Stateflow.Editor|Stateflow.EMChart|Stateflow.Function|Stateflow.Machine|Stateflow.State|Stateflow.StateTransitionTableCell|Stateflow.StateTransitionTableChart|Stateflow.StateTransitionTableRow|Stateflow.Transition|Stateflow.TruthTableChart