主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

有限ステートマシンのモデル化

Stateflow®は,“有限ステートマシン”に基づくグラフィカルなプログラミング環境です。Stateflowを使用して設計のテストとデバッグを行い、さまざまなシミュレーション シナリオを検討し、ステート マシンからコードを生成することができます。

有限ステートマシンは,1つの動作モード(ステート)から別のモードへと遷移する動的システムを表現したものです。ステートマシンには次の特徴があります。

  • 複雑なソフトウェア設計プロセスにおける高水準の開始点として機能する。

  • 動作モードと1つのモードから次のモードへの移行に必要な条件に注目できる。

  • モデルの複雑度が増しても明確さと簡潔さが維持されるようなモデルの設計に役立つ。

制御システムの設計は,複雑なロジックを管理するためのステートマシンに大きく依存します。用途には,航空機,自動車,およびロボット工学の制御システムの設計が含まれます。

Stateflowチャートの例

Stateflowチャートでは,ステート,遷移,およびデータを組み合わせて有限ステートマシンを実装します。このStateflowチャートは,自動車の4速オートマチックトランスミッションシステムのギアをシフトするロジックの簡易モデルを示しています。チャートでは,ギアの各ポジションが第一个第二个第三第四というラベルの付いた四角形で示されるステートによって表されます。これらのステートは,それぞれが表すギアと同様に排他的なので,一度に1つのステートのみがアクティブになります。

标有第一、第二、第三和第四状态的状态流程图。当速度高于或低于指定的量时,图表在状态之间转换。

図の左側の矢印はデフォルト遷移を表し,最初にアクティブになるステートを示しています。チャートを実行すると,キャンバスでこのステートが強調表示されます。他の矢印はステート間で可能な遷移を示しています。ステートマシンのダイナミクスを定義するには、それぞれの遷移を論理条件またはトリガー イベントに関連付けます。たとえば、このチャートは自動車の速度を監視して、速度がある固定のしきい値を横切ると別のギアにシフトします。シミュレーション中、異なるステートがアクティブになるとチャートの強調表示が変わります。

图表动画显示状态和转换激活。

このチャートは,エンジンスピードやトルクなどの重要な要因を無視したシンプルな設計を提供します。このStateflowチャートを,MATLAB®や仿金宝app真软件®内の他のコンポーネントとリンクすることにより,さらに包括的で現実的なモデルを作成できます。考えられる3つの方法は次のとおりです。

チャートをMATLABオブジェクトとして実行

この例では,ステートの階層,時相論理,入力イベントを組み込んだオートマチックトランスミッションシステムの修正バージョンを示します。

  • 階層:チャートは,前の例の4速オートマチックトランスミッションチャートを囲むスーパーステートgear_logicで構成されます。このスーパーステートが,自動車の速度と加速度を制御します。実行中、gear_logicは常にアクティブです。

  • 時相論理:ステートgear_logicでは,アクション在每一个(0.25秒)が自動車の速度を決定します。演算子每一个で作成されるMATLABタイマーにより,チャートが実行され,チャートデータ速度が0.25秒ごとに更新されます。

  • 入力イベント:入力イベント加速巡航および经济放缓は,チャートデータδの値をリセットします。このデータにより,実行ステップごとに自動車が加速するか速度を維持するかが決まります。

このチャートは,コマンドウィンドウで直接,またはスクリプトを使用して,MATLAB内のオブジェクトとして実行できます。また,グラフィカルユーザーインターフェイスを使用してチャートのステートを制御するMATLABアプリをプログラミングすることもできます。たとえば,このユーザーインターフェイスでは,ボタンをクリックすると入力イベントがチャートに送信されます。チャート内で,MATLAB関数小部件がインターフェイス上のゲージとランプの値を制御します。

この例を開始するには,软件设计师のツールストリップで,[実行]をクリックします。ユーザーインターフェイスウィンドウを閉じるまで,この例は引き続き実行されます。

あるいは,Stateflowエディターの[ステートチャート]タブで,[実行]をクリックします。車の速度を制御するには,[シンボル]ペインの(加速)(减速)(游轮)の各ボタンを使用します。この例を停止するには,[停止]をクリックします。

StateflowチャートをMATLABオブジェクトとして実行することに関する詳細については,MATLABでの実行を参照してください。

ローカルイベントを使用して仿真金宝app软件ブロックとしてチャートをシミュレート

この例では,より複雑なオートマチックトランスミッションシステムの設計を示します。Stateflowチャートは、Simulink モデル内でブロックとして表示されます。モデル内の他のブロックは、関連する自動車のコンポーネントを表します。チャートは、入出力の接続を使ってデータを共有することにより、他のブロックと連動します。チャートを開くには、shift_logicブロックの左下隅にある矢印をクリックします。

このチャートはステートの階層,パラレル化,アクティブステートデータ,ローカルイベント,および時相論理を組み合わせたものです。

  • 階層:ステートgear_stateには4速オートマチックトランスミッションチャートの修正バージョンが含まれています。ステートselection_stateには,定常状態,アップシフト,およびダウンシフトの各動作モードを表すサブステートが含まれています。ハイギアまたはローギアへのシフトが必要な状況では,これらのステートがアクティブになります。

  • パラレル化:パラレルステートであるgear_stateselection_stateは,破線の境界をもつ四角形として表示されます。これらのステートは,その中にあるサブステートのオンとオフが切り替わっても,同時に動作します。

  • アクティブステートデータ:出力値齿轮にはシミュレーション時のギアの選択が反映されます。チャートはgear_stateのアクティブなサブステートからこの値を生成します。

  • ローカルイベント:このチャートは,論理式条件の代わりにローカルイベント向上および下来を使用してギア間の遷移をトリガーします。これらのイベントは,自動車の速度が選択されたギアの動作範囲外になったときに,selection_state内の发送コマンドから発生します。金宝app仿真软件関数calc_thは,選択されたギアとエンジンの速度に基づいて動作範囲の境界値を決定します。

  • 時相論理:短時間の連続ギアチェンジを避けるために,selection_stateは,時相論理演算子を使用して,向上イベントと下来イベントのブロードキャストを遅延させます。ギアチェンジに所定時間TWAITよりも長い時間が必要な場合にのみ,ステートはこれらのうちいずれかのイベントをブロードキャストします。

モデルのシミュレーションを実行するには,次を行います。

  1. 用户输入ブロックをダブルクリックします。信号编辑ダイアログボックスの[アクティブなシナリオ]リストで,事前定義されたブレーキ対スロットルのプロファイルを選択します。既定のプロファイルは通过操作です。

  2. [実行]をクリックします。Stateflowエディターでは、チャート アニメーションによって、シミュレーション中にアクティブ ステートが強調表示されます。アニメーション速度を遅くするには、[デバッグ]タブで,[アニメーション速度)ドロップダウンリストからを選択します。

  3. 范围ブロックで,シミュレーションの結果を確認します。各スコープには,シミュレーション中にその入力信号のグラフが表示されます。

時間条件を使用して仿金宝app真软件ブロックとしてチャートをシミュレート

この例では,自動車のトランスミッションシステムをモデル化する別の方法を示します。Stateflowチャートは、Simulink モデル内でブロックとして表示されます。モデル内の他のブロックは、関連する自動車のコンポーネントを表します。チャートは、入出力の接続を使ってデータを共有することにより、他のブロックと連動します。チャートを開くには、Gear_logicブロックの左下隅にある矢印をクリックします。

このチャートはステートの階層,アクティブステートデータ,および時相論理を組み合わせたものです。

  • 階層:このモデルでは4速オートマチックトランスミッションチャートをスーパーステート齿轮内に配置します。スーパーステートは車両とエンジンの速度を監視してギアチェンジをトリガーします。ステート齿轮の左上隅にリストされているアクションは、選択されたギアの動作しきい値と、論理条件向上および下来の値を決定します。ラベル恩,杜は,ステートがはじめてアクティブになるとき(条目)とそれ以降ステートがアクティブな間()の各タイムステップでステートアクションが実行されることを示します。

  • アクティブステートデータ:出力値齿轮にはシミュレーション時のギアの選択が反映されます。チャートは齿轮のアクティブなサブステートからこの値を生成します。

  • 時相論理:短時間の連続ギアチェンジを避けるために,論理条件向上および下来は,時相論理演算子持续时间を使用してギア間の遷移を制御します。条件は,自動車の速度が,選択されているギアの動作範囲外である時間が所定時間TWAIT(秒単位で測定)よりも長くなったときに有効になります。

モデルのシミュレーションを実行するには,次を行います。

  1. 用户输入ブロックをダブルクリックします。信号编辑ダイアログボックスの[アクティブなシナリオ]リストで,事前定義されたブレーキ対スロットルのプロファイルを選択します。既定のプロファイルは通过操作です。

  2. [実行]をクリックします。Stateflowエディターでは、チャート アニメーションによって、シミュレーション中にアクティブ ステートが強調表示されます。アニメーション速度を遅くするには、[デバッグ]タブで,[アニメーション速度)ドロップダウンリストからを選択します。

  3. 范围ブロックで,シミュレーションの結果を確認します。シミュレーション中に,選択されたギアのグラフがスコープに表示されます。

参考

|||

関連するトピック