このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
Stateflow®は,“有限ステートマシン”に基づくグラフィカルなプログラミング環境です。Stateflowを使用して設計のテストとデバッグを行い、さまざまなシミュレーション シナリオを検討し、ステート マシンからコードを生成することができます。
有限ステートマシンは,1つの動作モード(ステート)から別のモードへと遷移する動的システムを表現したものです。ステートマシンには次の特徴があります。
複雑なソフトウェア設計プロセスにおける高水準の開始点として機能する。
動作モードと1つのモードから次のモードへの移行に必要な条件に注目できる。
モデルの複雑度が増しても明確さと簡潔さが維持されるようなモデルの設計に役立つ。
制御システムの設計は,複雑なロジックを管理するためのステートマシンに大きく依存します。用途には,航空機,自動車,およびロボット工学の制御システムの設計が含まれます。
Stateflowチャートでは,ステート,遷移,およびデータを組み合わせて有限ステートマシンを実装します。このStateflowチャートは,自動車の4速オートマチックトランスミッションシステムのギアをシフトするロジックの簡易モデルを示しています。チャートでは,ギアの各ポジションが第一个
、第二个
、第三
、第四
というラベルの付いた四角形で示されるステートによって表されます。これらのステートは,それぞれが表すギアと同様に排他的なので,一度に1つのステートのみがアクティブになります。
図の左側の矢印はデフォルト遷移を表し,最初にアクティブになるステートを示しています。チャートを実行すると,キャンバスでこのステートが強調表示されます。他の矢印はステート間で可能な遷移を示しています。ステートマシンのダイナミクスを定義するには、それぞれの遷移を論理条件またはトリガー イベントに関連付けます。たとえば、このチャートは自動車の速度を監視して、速度がある固定のしきい値を横切ると別のギアにシフトします。シミュレーション中、異なるステートがアクティブになるとチャートの強調表示が変わります。
このチャートは,エンジンスピードやトルクなどの重要な要因を無視したシンプルな設計を提供します。このStateflowチャートを,MATLAB®や仿金宝app真软件®内の他のコンポーネントとリンクすることにより,さらに包括的で現実的なモデルを作成できます。考えられる3つの方法は次のとおりです。
この例では,ステートの階層,時相論理,入力イベントを組み込んだオートマチックトランスミッションシステムの修正バージョンを示します。
階層:チャートは,前の例の4速オートマチックトランスミッションチャートを囲むスーパーステートgear_logic
で構成されます。このスーパーステートが,自動車の速度と加速度を制御します。実行中、gear_logic
は常にアクティブです。
時相論理:ステートgear_logic
では,アクション在每一个(0.25秒)
が自動車の速度を決定します。演算子每一个
で作成されるMATLABタイマーにより,チャートが実行され,チャートデータ速度
が0.25秒ごとに更新されます。
入力イベント:入力イベント加速
、巡航
および经济放缓
は,チャートデータδ
の値をリセットします。このデータにより,実行ステップごとに自動車が加速するか速度を維持するかが決まります。
このチャートは,コマンドウィンドウで直接,またはスクリプトを使用して,MATLAB内のオブジェクトとして実行できます。また,グラフィカルユーザーインターフェイスを使用してチャートのステートを制御するMATLABアプリをプログラミングすることもできます。たとえば,このユーザーインターフェイスでは,ボタンをクリックすると入力イベントがチャートに送信されます。チャート内で,MATLAB関数小部件
がインターフェイス上のゲージとランプの値を制御します。
この例を開始するには,软件设计师のツールストリップで,[実行]をクリックします。ユーザーインターフェイスウィンドウを閉じるまで,この例は引き続き実行されます。
あるいは,Stateflowエディターの[ステートチャート]タブで,[実行]をクリックします。車の速度を制御するには,[シンボル]ペインの(加速)、(减速)、(游轮)の各ボタンを使用します。この例を停止するには,[停止]をクリックします。
StateflowチャートをMATLABオブジェクトとして実行することに関する詳細については,MATLABでの実行を参照してください。
この例では,より複雑なオートマチックトランスミッションシステムの設計を示します。Stateflowチャートは、Simulink モデル内でブロックとして表示されます。モデル内の他のブロックは、関連する自動車のコンポーネントを表します。チャートは、入出力の接続を使ってデータを共有することにより、他のブロックと連動します。チャートを開くには、shift_logic
ブロックの左下隅にある矢印をクリックします。
このチャートはステートの階層,パラレル化,アクティブステートデータ,ローカルイベント,および時相論理を組み合わせたものです。
階層:ステートgear_state
には4速オートマチックトランスミッションチャートの修正バージョンが含まれています。ステートselection_state
には,定常状態,アップシフト,およびダウンシフトの各動作モードを表すサブステートが含まれています。ハイギアまたはローギアへのシフトが必要な状況では,これらのステートがアクティブになります。
パラレル化:パラレルステートであるgear_state
とselection_state
は,破線の境界をもつ四角形として表示されます。これらのステートは,その中にあるサブステートのオンとオフが切り替わっても,同時に動作します。
アクティブステートデータ:出力値齿轮
にはシミュレーション時のギアの選択が反映されます。チャートはgear_state
のアクティブなサブステートからこの値を生成します。
ローカルイベント:このチャートは,論理式条件の代わりにローカルイベント向上
および下来
を使用してギア間の遷移をトリガーします。これらのイベントは,自動車の速度が選択されたギアの動作範囲外になったときに,selection_state
内の发送
コマンドから発生します。金宝app仿真软件関数calc_th
は,選択されたギアとエンジンの速度に基づいて動作範囲の境界値を決定します。
時相論理:短時間の連続ギアチェンジを避けるために,selection_state
は,時相論理演算子后
を使用して,向上
イベントと下来
イベントのブロードキャストを遅延させます。ギアチェンジに所定時間TWAIT
よりも長い時間が必要な場合にのみ,ステートはこれらのうちいずれかのイベントをブロードキャストします。
モデルのシミュレーションを実行するには,次を行います。
用户输入ブロックをダブルクリックします。信号编辑ダイアログボックスの[アクティブなシナリオ]リストで,事前定義されたブレーキ対スロットルのプロファイルを選択します。既定のプロファイルは通过操作
です。
[実行]をクリックします。Stateflowエディターでは、チャート アニメーションによって、シミュレーション中にアクティブ ステートが強調表示されます。アニメーション速度を遅くするには、[デバッグ]タブで,[アニメーション速度)ドロップダウンリストから慢
を選択します。
范围ブロックで,シミュレーションの結果を確認します。各スコープには,シミュレーション中にその入力信号のグラフが表示されます。
この例では,自動車のトランスミッションシステムをモデル化する別の方法を示します。Stateflowチャートは、Simulink モデル内でブロックとして表示されます。モデル内の他のブロックは、関連する自動車のコンポーネントを表します。チャートは、入出力の接続を使ってデータを共有することにより、他のブロックと連動します。チャートを開くには、Gear_logic
ブロックの左下隅にある矢印をクリックします。
このチャートはステートの階層,アクティブステートデータ,および時相論理を組み合わせたものです。
階層:このモデルでは4速オートマチックトランスミッションチャートをスーパーステート齿轮
内に配置します。スーパーステートは車両とエンジンの速度を監視してギアチェンジをトリガーします。ステート齿轮の左上隅にリストされているアクションは、選択されたギアの動作しきい値と、論理条件向上
および下来
の値を決定します。ラベル恩,杜
は,ステートがはじめてアクティブになるとき(在
=条目
)とそれ以降ステートがアクティブな間(杜
=在
)の各タイムステップでステートアクションが実行されることを示します。
アクティブステートデータ:出力値齿轮
にはシミュレーション時のギアの選択が反映されます。チャートは齿轮
のアクティブなサブステートからこの値を生成します。
時相論理:短時間の連続ギアチェンジを避けるために,論理条件向上
および下来
は,時相論理演算子持续时间
を使用してギア間の遷移を制御します。条件は,自動車の速度が,選択されているギアの動作範囲外である時間が所定時間TWAIT
(秒単位で測定)よりも長くなったときに有効になります。
モデルのシミュレーションを実行するには,次を行います。
用户输入ブロックをダブルクリックします。信号编辑ダイアログボックスの[アクティブなシナリオ]リストで,事前定義されたブレーキ対スロットルのプロファイルを選択します。既定のプロファイルは通过操作
です。
[実行]をクリックします。Stateflowエディターでは、チャート アニメーションによって、シミュレーション中にアクティブ ステートが強調表示されます。アニメーション速度を遅くするには、[デバッグ]タブで,[アニメーション速度)ドロップダウンリストから慢
を選択します。
范围ブロックで,シミュレーションの結果を確認します。シミュレーション中に,選択されたギアのグラフがスコープに表示されます。