Chart
有限ステート マシンで制御ロジックを実装
ライブラリ:
Stateflow
説明
Chart ブロックは、有限ステート マシンの状態遷移図に基づくグラフィカル表現です。Stateflow® チャートでは、ステートと遷移によって順序論理システムの基本構成ブロックが形成されます。ステートは動作モードに対応し、遷移はステート間の経路を表します。詳細については、Stateflow チャートを使用した有限ステート マシンのモデル化を参照してください。
Stateflow チャートで制御ロジックを実装するには、MATLAB® または C をアクション言語として使用できます。詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。
チャートのプロパティは、Stateflow チャートが Simulink® モデルとどのように連動するかを指定します。チャートのプロパティは、[プロパティ インスペクター]、モデル エクスプローラー、または [チャート プロパティ] ダイアログ ボックスで変更できます。詳細については、Stateflow チャートのプロパティの指定を参照してください。あるいは、チャートのプロパティは、Stateflow.Chart
オブジェクトを使用してプログラムで変更することもできます。Stateflow プログラム インターフェイスの詳細については、Stateflow API の概要を参照してください。
例
端子
入力
Port_1 — 入力端子
スカラー | ベクトル | 行列
[シンボル] ペインで入力データを作成すると、Stateflow により入力端子が作成されます。作成した入力データは、データの作成後に表示される入力端子に対応しています。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
出力
Port_1 — 出力端子
スカラー | ベクトル | 行列
[シンボル] ペインで出力データを作成すると、Stateflow により出力端子が作成されます。作成した出力データは、データの作成後に表示される出力端子に対応しています。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
パラメーター
[コード生成] タブのパラメーターには Simulink Coder™ または Embedded Coder® が必要です。
メイン
端子ラベルを表示 — 端子ラベルの表示方法の選択
FromPortIcon
(既定値) | なし
| FromPortBlockName
| SignalName
Chart ブロック アイコンに端子ラベルを表示する方法を選択します。
なし
端子ラベルを表示しません。
FromPortIcon
対応する端子アイコン上に信号名が表示される場合、Chart ブロック上に信号名を表示します。それ以外の場合は、端子のブロック名を表示します。
FromPortBlockName
Chart ブロック上に対応する端子のブロック名を表示します。
SignalName
信号名が存在する場合、Chart ブロック上の端子に接続されている信号の名前を表示します。それ以外の場合は、対応する端子のブロック名を表示します。
プログラムでの使用
パラメーター: ShowPortLabels |
型: string スカラーまたは文字ベクトル |
値: "none" "FromPortIcon" | "FromPortBlockName" | "SignalName" |
既定の設定: "FromPortIcon" |
読み取り/書き込み権限 — チャートのコンテンツへのアクセスの選択
ReadWrite
(既定値) | ReadOnly
| NoReadOrWrite
チャートのコンテンツへのユーザー アクセスを制御します。
ReadWrite
チャートのコンテンツを開き、変更することができます。
ReadOnly
チャートを開くことはできますが、変更することはできません。チャートがブロック ライブラリに存在する場合、チャートへのリンクを作成して開くことができます。また、チャートのローカル コピーを作成して変更することはできますが、アクセス許可や元のライブラリ インスタンスの内容を変更することはできません。
NoReadOrWrite
チャートを開くことも変更することもできません。チャートがライブラリに存在する場合、モデルにあるチャートへのリンクを作成することはできますが、チャートを開いたり、変更したりすることはできません。また、アクセス許可の変更や、チャートのローカル コピーの作成もできません。
プログラムでの使用
パラメーター: Permissions |
型: string スカラーまたは文字ベクトル |
値: "ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
既定の設定: "ReadWrite" |
代数ループの発生の最小化 — 代数ループの削除の制御
オフ (既定値) | オン
- オフ
Atomic サブチャートを含むすべての人為的な代数ループを削除しません。
- オン
Atomic サブチャートを含むすべての人為的な代数ループを削除しようとします。
プログラムでの使用
パラメーター: MinAlgLoopOccurrences |
型: string スカラーまたは文字ベクトル |
値: "off" | "on" |
既定の設定: "off" |
サンプル時間 — 時間間隔の指定
-1
(既定値) | Ts
| 0
Stateflow チャートのサンプル時間を指定します。Stateflow チャートのサンプル時間を設定するために "サンプル時間" を使用することは推奨されません。代わりに、Stateflow チャートのプロパティでサンプル時間を設定します。詳細については、Stateflow チャートのプロパティを参照してください。
-1
継承されたサンプル時間を指定します。
Ts
離散サンプル時間を指定します。
0
連続サンプル時間を指定します。
プログラムでの使用
パラメーター: SystemSampleTime |
型: string スカラーまたは文字ベクトル |
値: "-1" | "[Ts 0]"
|
既定の設定: "-1" |
コード生成
関数のパッケージ化 — コード形式の選択
自動
(既定値) | インライン
| 再利用できない関数
| 再利用可能な関数
Atomic (非バーチャル) サブチャートに対して生成されるコード形式を指定します。
自動
Simulink Coder は、モデル内に存在するチャートのインスタンスのタイプと数に基づき、システムに最適な形式を選択します。
インライン
Simulink Coder は、無条件にチャートをインライン化します。
再利用できない関数
Simulink Coder は、個々の関数を個々のファイルに明示的に生成します。このように設定されたチャートにより生成される関数は、"関数インターフェイス" (Simulink) のパラメーター設定に応じた引数をもつ場合があります。生成された関数とファイルには、"関数名" (Simulink) および "ファイル名 (拡張子なし)" (Simulink) のパラメーターをそれぞれ使用して名前を付けることができます。これらの関数は再呼び出し可能ではありません。
再利用可能な関数
Simulink Coder は、モデルがチャートの複数のインスタンスを含む場合、チャートのコードの再利用を可能にする引数をもつ関数を生成します。
このオプションは、参照モデル全体にわたりチャートの複数のインスタンスを含むモデル参照階層の生成コードで、チャートのコードの再利用を可能とする引数をもつ関数を生成します。この場合、チャートはライブラリに含まれていなければなりません。
ヒント
チャートの複数のインスタンスを 1 つの再利用可能な関数として表す場合、それぞれ
[自動]
または[再利用可能な関数]
として指定できます。両方を使用すると、各指定につき 1 つずつ、2 つの再利用可能な関数が作成されるため、どちらか一方を使用するのが最適です。これらの選択の結果は、再利用が不可能な場合にのみ異なります。[自動]
を選択しても、チャートのコードの関数やファイル名は制御できません。[再利用可能な関数]
と[自動]
のオプションは両方とも、チャートのインスタンスが複数存在するかどうかと、コードが再利用可能かどうかを判定します。コードの再利用が不可能な場合はオプションの動作が異なります。この場合、[自動]
はインライン化されたコードを生成し、インライン化が禁止されている場合は、チャートのインスタンスごとに別の関数を生成します。生成コードがソース管理対象の場合に
[再利用可能な関数]
を選択する際は、[ファイル名オプション] を[サブシステム名を使用]
、[関数名を使用]
、[ユーザー指定]
のいずれかに設定します。そうしないと、モデルを変更するたびにコード ファイルの名前が変更され、ファイルのソース管理ができません。
依存関係
このパラメーターには Simulink Coder が必要です。
このパラメーターを
[再利用できない関数]
または[再利用可能な関数]
に設定すると、以下のパラメーターが有効になります。関数名オプション
ファイル名オプション
初期化/終了関数のメモリ セクション (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)
実行関数のメモリ セクション (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)
このパラメーターを
[再利用できない関数]
に設定すると、[別々のデータをもつ関数] が有効になります (Embedded Coder および ERT ベースのシステム ターゲット ファイルが必要)。
プログラムでの使用
パラメーター: RTWSystemCode |
型: string スカラーまたは文字ベクトル |
値: "Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
既定の設定: "Auto" |
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加の構成オプションがあります。
このブロックには既定の HDL アーキテクチャが 1 つあります。
HDL コードにアクティブ ステートを示す出力端子を生成するには、チャートの [プロパティ] ウィンドウで [監視する出力の作成] を選択します。出力は列挙データ型です。アクティブ ステート出力の組み込みによる Stateflow チャートの簡略化を参照してください。
チャートの出力を 1 シミュレーション サイクル遅延させる出力レジスタを挿入するには、[OutputPipeline] (HDL Coder) ブロック プロパティを使用します。
ClockDrivenOutput | 組み合わせ論理によって出力が駆動されるのを防止し、クロック信号およびステートが変化したときに即時に出力が更新されるようにするには、クロック駆動の出力を有効にします。既定の設定は |
ConstMultiplierOptimization | 正準符号付き桁数 (CSD) または因数分解された CSD による最適化。既定の設定は |
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することで、出力に配置されるレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
DistributedPipelining | パイプライン レジスタの分散、あるいはレジスタのリタイミング。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
InstantiateFunctions | 各関数について VHDL® |
LoopOptimization | ループの展開またはストリーム、または最適化なし。既定の設定は |
MapPersistentVarsToRAM | 永続配列を RAM にマッピング。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ResetType | リセット ロジックの生成を抑制。既定値は |
SharingFactor | 単一の共有リソースにマッピングされる、機能的に等価なリソースの数。既定の設定は 0 です。リソース共有 (HDL Coder)も参照してください。 |
VariablesToPipeline | 警告
1 つ以上の指定された MATLAB 変数の出力にパイプライン レジスタを挿入。変数のリストは文字ベクトルとして指定し、変数の間をスペースで区切ります。 |
このブロックは、複素数信号のコード生成をサポートしています。
チャートの使用に関する制限の詳細については、Stateflow HDL コード生成の紹介 (HDL Coder)を参照してください。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
UseExternalDefinition | 生成コード内でブロック定義を抑制。既定の設定は |
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入R2023b: チャートへの変換
状態遷移表に変換するには、オブジェクト関数 convertToSTT
を使用します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)