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 ブロックをダブルクリックします。ブロック ダイアログ ボックスの [変数] タブをクリックし、[変形] 変数の横にあるチェック ボックスをオンにします。[優先][High] に変更します。[開始値]0.1 に変更します。[単位][m] のままにしておきます。

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

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

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

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

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

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

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

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

  1. マスの初期速度を指定します。Mass ブロックをダブルクリックして [変数] タブに移動し、変数 [速度] の横にあるチェック ボックスをオンにし、[優先][High] に変更して、開始値 10 を入力します。単位は m/s のままにします。

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

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

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

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

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

指定過剰の処理

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

  1. Translational Damper ブロックをダブルクリックして [変数] タブに移動し、変数 [力] の横にあるチェック ボックスをオンにし、[優先][High] に変更して、開始値 200 を入力します。単位は N のままにします。

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

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

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

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

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

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

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

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

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

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

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

関連するトピック