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 のオブジェクトの階層を示しています。
この階層には包含のレベルが 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.StateTransitionTableChart
|Stateflow.Transition
|Stateflow.TruthTableChart