Main Content

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

跳ねるボールの連続時間でのモデル化

この例では、跳ねるボールを連続時間でシミュレートする Stateflow® チャートの設定方法を説明します。ボールは空中を連続的に運動し、地面に衝突した時点で不連続が発生します。その結果、ボールは急激に方向や速度を変えます。詳細については、Stateflow の連続時間モデルを参照してください。

モデル sf_bounce には、連続時間で更新されるチャートが含まれています。ローカル変数は、位置と速度の観点から、自由落下するボールのダイナミクスを記述します。シミュレーション中、モデルはゼロクロッシング検出を使用して、ボールが地面に衝突するタイミングを特定します。

跳ねるボールのダイナミクス

重力の下でボールがどのように自由落下するかを、以下の連立 1 階微分方程式によって、位置 p と速度 v の観点から指定できます。

$$ \dot{p} = v $$

$$ \dot{v} = -9.81 $$

p <= 0 のとき、ボールは地面に衝突して跳ねます。ボールの位置と速度を更新することにより、跳ね返りをモデル化できます。

  • 位置を p = 0 にリセットします。

  • ボールが地面に衝突する直前に、速度を負の値にリセットします。

  • エネルギー損失を考慮するには、新しい速度と分布係数 (-0.8) を乗算します。

連続時間シミュレーション用のチャートの構成

モデル内で、BouncingBall チャートは、自由落下の連続ダイナミクスと、跳ね返りに関連する離散的変化をシミュレートするモーダル ロジックを実装します。[チャート] プロパティ ダイアログ ボックスで、以下の設定を行うと、BouncingBall チャートは連続時間でシミュレート可能になります。

  • [更新方法]Continuous に設定すると、チャートは連続時間シミュレーションを採用して、跳ねるボールのダイナミクスをモデル化します。

  • [ゼロクロッシング検出を有効にする] を選択すると、ボールが地面に衝突する時間を Simulink® ソルバーが正確に判定できます。それ以外の場合、Simulink モデルは物理現象を正確にシミュレートできず、ボールは地面の下まで降下するように見えます。

連続時間変数の定義

BouncingBall チャートには、位置 (position) に対応する p、速度 (velocity) に対応する v という 2 つの連続時間変数があります。これらの変数の設定は次のとおりです。

  • [スコープ]Local

  • [型]double

  • [更新方法]Continuous

チャートの連続状態を Simulink モデルに提示するために、BouncingBall チャートには、p_outv_out の 2 つの出力変数があります。これらの変数の設定は次のとおりです。

  • [スコープ]Output

  • [型]double

  • [更新方法]Discrete

チャートは、連続時間変数の時間導関数を暗黙的に定義します。

  • p_dot は位置 p の導関数です。

  • v_dot は速度 v の導関数です。

モデル エクスプローラーで、連続時間ローカル変数と、チャート内の対応する出力を表示できます。暗黙的な導関数の変数は、モデル エクスプローラーや [シンボル] ペインには表示されません。

自由落下の連続ダイナミクスのモデル化

BouncingBall チャートは、自由落下の微分方程式を数値的に解く単一のステート Falling で構成されています。このステートへのデフォルト遷移では、初期位置は 10 m、初期速度は 15 m/s に設定されます。ステートの during アクションでは、以下の処理が行われます。

  • 位置と速度の導関数を定義します。

  • ボールの位置と速度の値を出力変数 p_out および v_out に割り当てます。

跳ね返りの離散効果のモデル化

Falling ステートには自己ループ遷移が含まれています。これにより、跳ね返りの不連続が、ボールが急激に方向転換するときの瞬間的なモードの変化としてモデル化されます。遷移の条件では、位置 p <= 0 と速度 v < 0 をチェックすることにより、ボールが地面に衝突するタイミングを判定します。条件が有効な場合、条件アクションは、ボールが地面に衝突するときの位置と速度をリセットします。

p == 0 をチェックしない理由

ボールは、位置 p がゼロの時点で地面に衝突します。条件を緩和することで、位置の符号が変化するタイミングを Simulink ソルバーで検出できる許容誤差が大きくなります。

v < 0 をチェックする理由

条件の 2 番目の部分は、ゼロクロッシングの頻度を最小化することで、Simulink ソルバーの処理効率を維持できるようにします。2 番目のチェックがなければ、ステート遷移後も条件は真のままになり、ゼロクロッシングが 2 回連続で発生することになります。

チャート セマンティクスの検証

BouncingBall チャートは、連続時間シミュレーションのガイドラインで定義されている設計要件を満たしています。具体的には、チャートには以下の特徴があります。

  • デフォルト遷移でローカル変数 p および v を初期化する。

  • during アクションで導関数 p_dot および v_dot に値を割り当てる。

  • 遷移アクションでローカル変数 p および v に書き込む。

  • イベント、内部遷移、イベントベースの時相論理、および変化検出演算子を含まない。

シミュレーション結果の表示

モデルを実行後、スコープに位置と速度のグラフが表示されます。位置のグラフは、予想どおりの跳ね返りパターンを示します。

関連するトピック