Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

マス-バネ-ダンパー システムの変数の初期化

この例では、ブロック変数の初期化の使用方法、さらにその初期化が単純な機械システムのシミュレーション結果に与える影響を説明します。

モデルは古典的な束縛のないマス-バネ-ダンパー システムであり、マスの振動はバネの初期変形に起因します。

モデルの作成と設定

  1. 単純なマス-バネ-ダンパー システムを作成します。MassTranslational SpringTranslational DamperMechanical Translational ReferenceIdeal Translational Motion SensorPS-Simulink ConverterSolver ConfigurationScope の各ブロックを使用し、次の図に示すように接続します。

  2. Translational Damper ブロックのダイアログ ボックスで、[減衰係数] パラメーターを 10 [N/(m/s)] に設定します。その他すべてのブロックには既定のパラメーター値を使用します。

  3. シミュレーションに向けてモデルを準備します。モデル ウィンドウで [モデル化] タブを開き [モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスが開き、[ソルバー] ペインが表示されます。[ソルバー][ode23t (mod.stiff/Trapezoidal)] に、[最大ステップ サイズ][0.2] に設定します。また、[終了時間]2.0 に設定して、[シミュレーション時間] を 0 ~ 2 秒に調整します。

  4. バネの初期変形を指定します。Translational Spring ブロックをダブルクリックします。ブロック ダイアログ ボックスの [初期ターゲット] セクションを展開し、[変形] 変数の横にあるチェック ボックスをオンにします。[優先順位][高] のままにします。[値]0.1 に変更し、単位は [m] のままにしておきます。

  5. バネの変形に対して補正するように、センサーの初期位置を調整します。Ideal Translational Motion Sensor ブロックをダブルクリックし、[初期位置] パラメーターの値も 0.1 [m] に設定します。このように設定すると、モデルのシミュレーション時にマスの振動中心が約 0 になります。

  6. モデルのシミュレーションを実行します。

  7. 変数ビューアーを開きます。モデル ウィンドウの [デバッグ] タブで、[Simscape][変数ビューアー] をクリックします。

    下の行にある Translational Spring 変数 x の優先順位は高、ターゲット値は 0.1 m です。これは、ブロック ダイアログ ボックスで設定した [変形] の変数です。この実際の開始値はターゲット値に一致するので、[ステータス] 列には緑の円が表示されています。

    このモデルで優先順位が高い他の 2 つの変数は、Ideal Translational Motion Sensor ブロックの位置 x と Mass ブロックの速度 v です。これらの変数はブロックが正しく動作するために不可欠であるため、コンポーネント ファイル内で高い優先順位に設定されています。これらの両方の変数についても、実際の開始値がターゲット値に一致しており、[ステータス] 列に緑の円が表示されています。

    モデルの残りの変数には初期化の優先順位が指定されていないので、それらの [ステータス] 列にも緑の円が表示されています。変数ビューアー ウィンドウの下部にある全体のステータスにも緑の円が表示され、すべてのターゲットが満たされていることを示します。

初期化のターゲットの変更

さまざまな変数のターゲットを指定することにより、システムの初期化とシミュレーション結果にどのように影響を及ぼすかがわかります。

  1. マスの初期速度を変更します。Mass ブロックをダブルクリックし、[初期ターゲット] セクションを展開して変数 [速度] の横にあるチェック ボックスをオンにし、[優先順位][高] のままにして、開始値 10 を入力します。単位は m/s のままにします。

    変数の優先順位とターゲットを変更するとき、あるいはブロック パラメーターを調整するときに、変数ビューアーの結果は自動更新されません。代わりに、[更新] ボタンに警告記号 (黄色の丸の感嘆符) が表示され、ビューアー ウィンドウ下部のタイムスタンプでビューアー内のデータがモデルの最新の変更を反映していないことが示されます。

  2. [更新] をクリックして、変数ビューアーを更新します。

    ソルバーが別の初期解を検出したことが表示されます。この初期解は、バネの変形とマスの速度の変数ターゲットを満たします。[ステータス] 列に緑の円が表示されます。変数ビューアー ウィンドウの下部にある全体のステータスにも緑の円が表示され、すべてのターゲットが満たされていることを示します。

  3. 変数ビューアーを更新すると、スコープが空白になります。これは、ソルバーがシミュレーションを 0 秒実行して初期解を検出し、変数ビューアーに表示したからです。

    シミュレーションを再実行し、[速度] および [位置] のスコープ ウィンドウで、マス速度の新規の初期値がシミュレーションに及ぼす影響を調べます。

指定過剰の処理

変数ターゲットの指定をしていくうちに、制約が指定過剰になることがあります。

  1. Translational Damper ブロックをダブルクリックし、[初期ターゲット] セクションを展開して変数 [力] の横にあるチェック ボックスをオンにし、[優先順位][高] に変更して、値 200 を入力します。単位は N のままにします。

  2. 変数ビューアーを更新します。

    変数ビューアー ウィンドウの下部にある全体のステータスに赤の円が表示され、ソルバーが優先順位の高い変数ターゲットをすべて満たすことができないことを示します。ターゲットが満たされていない優先順位の高い 2 つの変数の [ステータス] 列に赤の四角が表示されています。

    ソルバーがモデルの初期解を見つけられたことに注意してください。シミュレーションを再実行すると、エラーなしで実行され、新規のシミュレーション結果が表示されます。

    ただし、変数ビューアーには、モデルの初期解がブロック変数のターゲット値を満たしていないことが表示されます。この理由は、マス-バネ-ダンパー システムの 3 つすべての要素に優先順位高の制約を指定したことにより、矛盾が生じているからです。矛盾している変数ターゲットの一部について優先順位を緩和することにより、指定過剰の問題を解決できます。

  3. Translational Damper ブロックを再度ダブルクリックし、変数 [力] の優先順位を [低] に変更します。

  4. 変数ビューアーを更新します。

    変数ビューアー ウィンドウの下部にある全体のステータスに黄色の三角形が表示され、優先順位の高いすべてのターゲットは満たされているが、優先順位の低い一部のターゲットが満たされていないことを示します。Translational Damper の優先順位が低い力の変数 f の [ステータス] 列に黄色の三角形があります。

    基本的に、この場合に見つけられた解は、前にマス速度に優先順位の高いターゲットを指定したときと同じであり、シミュレーションは同じ結果を返します。

  5. 指定過剰を処理するもう 1 つの方法は、ダンパーの力の優先順位を高に保持し、マスの初期速度の優先順位を緩和することです。Translational Damper ブロックを再度ダブルクリックし、変数 [力] の優先順位を [高] に戻します。次に、Mass ブロックをダブルクリックし、変数 [速度] の優先順位を [低] に変更します。

  6. 変数ビューアーを更新します。

    再度、変数ビューアーのステータスは、優先順位の高いすべてのターゲットが満たされており、優先順位の低い一部のターゲットが満たされていないことを示します。ただし、変数の優先順位を変更したので、ソルバーはマス速度ではなくダンパーの初期の力を満たそうとし、この場合の解およびシミュレーション結果は異なります。

関連するトピック