ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Chart

有限ステート マシンで制御ロジックを実装

  • ライブラリ:
  • Stateflow

説明

有限ステート マシンは、イベントドリブン (リアクティブ) システムの表現です。イベントドリブン システムでは、1 つのステート (モード) から別のステートへと遷移することでシステムがイベントに応答します。この遷移は、変更の定義条件が真になった場合に発生します。

Stateflow® チャートは、有限ステート マシンのグラフィカル表現です。"ステート" と "遷移" によって、システムの基本要素が形成されます。ステートのないフロー チャートとしての表現も可能です。

たとえば、Stateflow チャートを使用すると、温度や圧力センサーなどのイベント、時計やユーザーによるイベントに応じて施設を制御することができます。

また、ステート マシンを使用して、自動車のオートマチック トランスミッションを表すこともできます。トランスミッションの動作状態としては、パーキング、リバース、ニュートラル、ドライブ、1 速など多くの操作ステートがあります。ドライバーがセレクト レバーを操作すると、システムはその操作に応じて、あるステートから別のステート (たとえば、パーキングからリバース) に遷移します。

Stateflow チャートでは、MATLAB または C をアクション言語として使用し、制御ロジックを実装できます。

このブロック線図は、原料を組み立てラインの別の部分に供給する、組み立てライン上の機械を表現しています。これには MATLAB をアクション言語として使用するチャート Feeder が含まれています。

チャートを開くには、モデルの Feeder ブロックをダブルクリックします。

このモデルのチュートリアルについては、組み立てライン供給装置のモデル化を参照してください。

端子

入力

すべて展開する

[シンボル] ウィンドウで入力データを作成すると、Stateflow により入力端子が作成されます。作成した入力データは、データの作成後に表示される入力端子に対応しています。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

出力

すべて展開する

[シンボル] ウィンドウで出力データを作成すると、Stateflow により出力端子が作成されます。作成した出力データは、データの作成後に表示される出力端子に対応しています。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

パラメーター

すべて展開する

[コード生成] タブのパラメーターには Simulink® Coder™ または Embedded Coder® が必要です。

メイン

Chart ブロック アイコンに端子ラベルを表示する方法を選択します。

なし

端子ラベルを表示しません。

FromPortIcon

対応する端子アイコン上に信号名が表示される場合、Chart ブロック上に信号名を表示します。それ以外の場合は、端子のブロック名を表示します。

FromPortBlockName

Chart ブロック上に対応する端子のブロック名を表示します。

SignalName

信号名が存在する場合、Chart ブロック上の端子に接続されている信号の名前を表示します。それ以外の場合は、対応する端子のブロック名を表示します。

プログラムでの使用

パラメーター: ShowPortLabels
: 文字ベクトル
: 'FromPortIcon' | 'FromPortBlockName' | 'SignalName'
既定の設定: 'FromPortIcon'

チャートのコンテンツへのユーザー アクセスを制御します。

ReadWrite

チャートのコンテンツを開き、変更することができます。

ReadOnly

チャートを開くことはできますが、変更することはできません。チャートがブロック ライブラリに存在する場合、チャートへのリンクを作成して開くことができます。また、チャートのローカル コピーを作成して変更することはできますが、アクセス許可や元のライブラリ インスタンスの内容を変更することはできません。

NoReadOrWrite

チャートを開くことも変更することもできません。チャートがライブラリに存在する場合、モデルにあるチャートへのリンクを作成することはできますが、チャートを開いたり、変更したりすることはできません。また、アクセス許可の変更や、チャートのローカル コピーの作成もできません。

プログラムでの使用

パラメーター: Permissions
: 文字ベクトル
: 'ReadWrite' | 'ReadOnly' | 'NoReadOrWrite'
既定の設定: 'ReadWrite'

ブロック メソッドの実行順序を決定するときに、Simulink でチャートをユニットとして扱います。

オフ

ブロック メソッドの実行順序を決めるときに、チャート内のすべてのブロックを、モデルの階層構造内でチャートと同じ階層にあるものとして取り扱います。この階層の処理により、チャート内のブロックのメソッドが、チャート外部のブロックのメソッドと交互に実行されます。

オン

ブロック メソッドの実行順序を決めるときに、チャートをユニットとして扱います。たとえば、Simulink でチャートの出力を計算する必要がある場合、Simulink は、チャート ブロックと同じレベルにある他のブロックの出力メソッドを呼び出す前に、チャートのすべてのブロックの出力メソッドを呼び出します。

依存関係

このパラメーターをオンにすると、[代数ループの発生の最小化][サンプル時間][関数のパッケージ化] の各パラメーターが有効になります。[関数のパッケージ化] には Simulink Coder ソフトウェアが必要です。

プログラムでの使用

パラメーター: TreatAsAtomicUnit
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

参考

オフ

Atomic サブチャートを含むすべての人為的な代数ループを削除しません。

オン

Atomic サブチャートを含むすべての人為的な代数ループを削除しようとします。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] パラメーターをオンにします。

プログラムでの使用

パラメーター: MinAlgLoopOccurrences
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

このチャートのすべてのブロックを同じレートで実行しなければならないか、異なるレートで実行できるかを指定します。

  • チャートのブロックを異なるレートで実行できる場合、チャートのサンプル時間を継承 (-1) に指定します。

  • すべてのブロックを同じレートで実行しなければならない場合、[サンプル時間] パラメーターの値として、このレートに相当するサンプル時間を指定します。

  • チャート内の任意のブロックで異なるサンプル時間 (-1 または inf 以外) が指定されていると、Simulink は、モデルを更新またはシミュレートするときにエラー メッセージを表示します。たとえば、チャート内のすべてのブロックを 1 秒につき 5 回実行しなければならないとします。この時間を確実にするには、チャートのサンプル時間を 0.2 に指定します。この例では、チャート内の任意のブロックで 0.2-1 または inf 以外のサンプル時間が指定されると、Simulink はモデルを更新またはシミュレートするときにエラーを表示します。

-1

継承されたサンプル時間を指定します。チャートのブロックを異なるレートで実行できる場合は、このサンプル時間を使用します。

[Ts 0]

周期的なサンプル時間を指定します。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] パラメーターをオンにします。

プログラムでの使用

パラメーター: SystemSampleTime
: 文字ベクトル
: '-1' | '[Ts 0]'
既定の設定: '-1'

バリアント条件を Variant Source ブロックから、または Variant Sink ブロックに伝播すると、Simulink はチャートをユニットとして処理します。

オン

Simulink は、バリアント条件を Variant Source ブロックから、または Variant Sink ブロックに伝播するときにチャートをユニットとして処理します。たとえば、Simulink ではチャートのバリアント条件を計算するときに、その条件をチャート内のすべてのブロックに伝播します。

オフ

バリアント条件を決める際に、Simulink はチャート内のすべてのブロックを、モデルの階層構造内でチャート自体と同じ階層にあるものとして処理します。

プログラムでの使用

パラメーター: TreatAsGroupedWhenPropagatingVariantConditions
: 文字ベクトル
: 'on' | 'off'
既定の設定: 'on'

コード生成

Atomic (非バーチャル) サブチャートに対して生成されるコード形式を指定します。

自動

Simulink Coder は、モデル内に存在するチャートのインスタンスのタイプと数に基づき、システムに最適な形式を選択します。

インライン

Simulink Coder は、無条件にチャートをインライン化します。

再利用できない関数

Simulink Coder は、個々の関数を個々のファイルに明示的に生成します。このように設定されたチャートは、関数インターフェイス, Function interface関数インターフェイスFunction interface (Simulink)パラメーターの設定に基づく引数をもつ関数を生成します。生成された関数とファイルは、関数名, Function name関数名Function name (Simulink)およびファイル名 (拡張子なし), File name (no extension)ファイル名 (拡張子なし)File name (no extension) (Simulink)パラメーターを使用して名前を付けることができます。これらの関数は再呼び出し可能ではありません。

再利用可能な関数

Simulink Coder は、モデルがチャートの複数のインスタンスを含む場合、チャートのコードの再利用を可能にする引数をもつ関数を生成します。

このオプションは、参照モデル全体にわたりチャートの複数のインスタンスを含むモデル参照階層の生成コードで、チャートのコードの再利用を可能とする引数をもつ関数を生成します。この場合、チャートはライブラリに含まれていなければなりません。

ヒント

  • チャートの複数のインスタンスを 1 つの再利用可能な関数として表す場合、それぞれ [自動] または [再利用可能な関数] として指定できます。両方を使用すると、各指定につき 1 つずつ、2 つの再利用可能な関数が作成されるため、どちらか一方を使用するのが最適です。これらの選択の結果は、再利用が不可能な場合にのみ異なります。[自動] を選択しても、チャートのコードの関数やファイル名は制御できません。

  • [再利用可能な関数][自動] のオプションは両方とも、チャートのインスタンスが複数存在するかどうかと、コードが再利用可能かどうかを判定します。コードの再利用が不可能な場合はオプションの動作が異なります。この場合、[自動] はインライン化されたコードを生成し、インライン化が禁止されている場合は、チャートのインスタンスごとに別の関数を生成します。

  • 生成コードがソース管理対象の場合に [再利用可能な関数] を選択する際は、[ファイル名オプション][サブシステム名を使用][関数名を使用][ユーザー指定] のいずれかに設定します。そうしないと、モデルを変更するたびにコード ファイルの名前が変更され、ファイルのソース管理ができません。

依存関係

  • このパラメーターには Simulink Coder が必要です。

  • このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

  • このパラメーターを [再利用できない関数] または [再利用可能な関数] に設定すると、以下のパラメーターが有効になります。

    • 関数名オプション

    • ファイル名オプション

    • 初期化/終了関数のメモリ セクション (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)

    • 実行関数のメモリ セクション (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)

  • このパラメーターを [再利用できない関数] に設定すると、[別々のデータをもつ関数] が有効になります (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)。

プログラムでの使用

パラメーター: RTWSystemCode
: 文字ベクトル
: 'Auto' | 'Inline' | 'Nonreusable function' | 'Reusable function'
既定の設定: 'Auto'

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための Verilog および VHDL のコードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

R2013b で導入