このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
跳ねるボールの連続時間でのモデル化
この例では、跳ねるボールを連続時間でシミュレートする Stateflow® チャートの設定方法を説明します。ボールは空中を連続的に運動し、地面に衝突した時点で不連続が発生します。その結果、ボールは急激に方向や速度を変えます。詳細については、Stateflow の連続時間モデルを参照してください。
モデル sf_bounce
には、連続時間で更新されるチャートが含まれています。ローカル変数は、位置と速度の観点から、自由落下するボールのダイナミクスを記述します。シミュレーション中、モデルはゼロクロッシング検出を使用して、ボールが地面に衝突するタイミングを特定します。
跳ねるボールのダイナミクス
重力の下でボールがどのように自由落下するかを、位置 "p" と速度 "v" の観点から以下の 1 階微分方程式系で指定できます。
p <= 0 のとき、ボールは地面に衝突して跳ねます。ボールの位置と速度を更新することにより、跳ね返りをモデル化できます。
位置を p = 0 にリセットします。
ボールが地面に衝突する直前に、速度を負の値にリセットします。
エネルギー損失を考慮するには、新しい速度と分布係数 (-0.8) を乗算します。
連続時間シミュレーション用のチャートの構成
モデル内で、BouncingBall チャートは、自由落下の連続ダイナミクスと、跳ね返りに関連する離散的変化をシミュレートするモーダル ロジックを実装します。[チャート] プロパティ ダイアログ ボックスで、以下の設定を行うと、BouncingBall チャートは連続時間でシミュレート可能になります。
[更新方法] を
Continuous
に設定すると、チャートは連続時間シミュレーションを採用して、跳ねるボールのダイナミクスをモデル化します。[ゼロクロッシング検出を有効にする] を選択すると、ボールが地面に衝突する時間を Simulink® ソルバーが正確に判定できます。それ以外の場合、Simulink モデルは物理現象を正確にシミュレートできず、ボールは地面の下まで降下するように見えます。
連続時間変数の定義
BouncingBall チャートには、位置 (position) に対応する p
、速度 (velocity) に対応する v
という 2 つの連続時間変数があります。これらの変数はそれぞれ次のとおりです。
[スコープ] は
Local
。[型] は
double
。[更新方法] は
Continuous
。
チャートの連続状態を Simulink モデルに提示するために、BouncingBall チャートには、p_out
と v_out
の 2 つの出力変数があります。これらの変数はそれぞれ次のとおりです。
[スコープ] は
Output
。[型] は
double
。[更新方法] は
Discrete
。
チャートは、連続時間変数の時間導関数を暗黙的に定義します。
p_dot
は位置p
の導関数です。v_dot
は速度v
の導関数です。
モデル エクスプローラーで、連続時間ローカル変数と、チャート内の対応する出力を表示できます。暗黙的な導関数の変数は、モデル エクスプローラーや [シンボル] ペインには表示されません。
自由落下の連続ダイナミクスのモデル化
BouncingBall チャートは、自由落下の微分方程式を数値的に解く Falling
という単一のステートで構成されています。このステートへのデフォルト遷移では、初期位置は 10 m、初期速度は 15 m/s に設定されます。このステートでの during
アクションは次のとおりです。
位置と速度の導関数を定義する
ボールの位置と速度の値を出力変数
p_out
およびv_out
に代入する
跳ね返りの離散効果のモデル化
Falling
ステートには自己ループ遷移が含まれています。これにより、跳ね返りの不連続が、ボールが急激に方向転換するときの瞬間的なモードの変化としてモデル化されます。遷移の条件によってエッジ検出演算子 falling
が呼び出されます。この演算子は、位置がしきい値ゼロを越えて負になるタイミングを検出することにより、ボールが地面に衝突するタイミングを判定します。条件が有効な場合、条件アクションは、ボールが地面に衝突するときの位置と速度をリセットします。
チャート セマンティクスの検証
BouncingBall チャートは、連続時間シミュレーションのガイドラインで定義されている設計要件を満たしています。具体的には、チャートには以下の特徴があります。
デフォルト遷移でローカル変数 p および v を初期化する
during
アクションで導関数 p_dot および v_dot に値を代入する遷移アクションでローカル変数 p および v に書き込む
イベント、内部遷移、イベントベースの時相論理、または変化検出演算子を含まない
シミュレーション結果の表示
モデルの実行後、Scope ブロックにボールの位置と速度のグラフが表示されます。位置のグラフは、予想どおりの跳ね返りパターンを示します。