Main Content

単純な振子の解析

この例では、モデルに追加できる力やトルクについて確認します。次に、運動検出機能をもつブロックを使用してモデルの動的応答を解析します。最終的には、時間領域と位相の一連のプロットを、力とトルクの組み合わせごとに 1 つずつ生成します。これらのプロットは、Simscape™ Multibody™ の運動出力を引数として指定し、MATLAB® コマンドを使用して作成します。

まず、単純な振子のモデル化で単純な振子モデルを作成します。このモデルに力とトルクを追加することで、振子を、減衰のない自由な状態から減衰と駆動のある状態へと段階的に変更していきます。適用する力とトルクには、以下が含まれます。

  • 重力 (Fg) — すべてのボディに対し、その質量に正比例して働くグローバルな力。加速度ベクトル g として指定します。このベクトルは、Mechanism Configuration ブロックを使用して指定します。

  • ジョイントの減衰 (Fb) — 振子とジョイント固定具の間の内部トルク。線形減衰係数としてパラメーター化します。このパラメーターは、振子をジョイント固定具に接続する Revolute Joint ブロックを使用して指定します。

  • 作動トルク (FA) — 振子とジョイント固定具間の駆動トルク。振子をジョイント固定具に接続する Revolute Joint ブロックを使用して Simscape 物理量信号として直接指定します。

振子運動検出情報の出力

まず、simple_pendulum モデルを更新して位置と速度のデータを出力し、そのデータを MATLAB ベース ワークスペースに出力します。

  1. チュートリアル単純な振子のモデル化で作成した simple_pendulum モデルを開きます。

  2. Revolute Joint ブロックのダイアログ ボックスの [Z Revolute Primitive (Rz)][Sensing] セクションで、次のパラメーターを選択します。

    • Position

    • Velocity

    このブロックには、[q] および [w] の 2 つの物理量信号端子が追加表示されており、ワールド座標系に対する振子の角度位置と角速度をそれぞれ出力します。

  3. 次のブロックをモデルに追加します。これらのブロックを使用して、ジョイントの位置と速度を MATLAB ベース ワークスペースに出力します。

    ライブラリブロック
    [Simscape][Utilities]PS-Simulink Converter2
    [Simulink][Sinks]To Workspace2

  4. To Workspace ブロックのダイアログ ボックスの [変数名] パラメーターを、qw に変更します。これらの変数により、To Workspace ブロックがシミュレーション中に出力するジョイントの変数を特定しやすくなります。位置は Revolute Joint ブロックの端子 [q] から出力され、速度は Revolute Joint ブロックの端子 [w] から出力されます。変数名からキーワード out を削除するには、Simulink® ツールストリップの [モデル化] タブで [モデル設定] をクリックし、[データのインポート/エクスポート] を選択して [単一のシミュレーション出力] パラメーターの選択を解除します。

  5. 次の図のようにブロックを接続します。変数名 q をもつ To Workspace ブロックが PS-Simulink Converter ブロックを介して Revolute Joint ブロックの端子 [q] に接続し、変数名 w をもつ To Workspace ブロックが Revolute Joint ブロックの端子 [w] に接続していることを確認してください。

  6. 両方の PS-Simulink Converter ブロックの [ベクトル形式] パラメーターの値を [1 次元配列] に変更します。

  7. モデルに simple_pendulum_analysis のような別の名前を付けて保存します。

非減衰振子の解析

  1. シミュレーションを実行します。Mechanics Explorer が開き、単純な振子モデルの 3D アニメーションが表示されます。

  2. MATLAB コマンド プロンプトで次のコードを入力し、ジョイントの位置と速度を時間に対してプロットします。

    figure; 
    hold on;
    plot(q);
    plot(w); 
    次の図は結果のプロットを示しています。

  3. MATLAB コマンド プロンプトで次のコードを入力し、ジョイントの角速度を角度位置に対してプロットします。

    figure;
    plot(q.data, w.data);
    
    結果は開始位置が水平面に対し 0 度に対応している、ジョイントの位相プロットになります。

    さまざまな開始角度を使用して、モデルをシミュレートしてみましょう。[Z Revolute Primitive (Rz)][State Targets] セクションの [Specify Position Target] で、Revolute Joint ブロックのダイアログ ボックスの [Value] パラメーターを指定します。次の図は、開始角度が -80 度、-40 度、0 度、40 度および 80 度の複合位相プロットを示しています。

減衰振子の解析

  1. Revolute Joint ブロックのダイアログ ボックスで、[Z Revolute Primitive (Rz)][Internal Mechanics][Damping Coefficient]8e-5 (N*m)/(deg/s) に設定します。減衰係数によって運動中にエネルギーが散逸し、その結果、振子の振動振幅が徐々に減少します。

  2. [Z Revolute Primitive (Rz)][State Targets][Specify Position Target][Value]0 度に設定されていることを確認します。

  3. シミュレーションを実行します。

  4. ジョイントの位置と速度を時間に対しプロットします。これを行うには、MATLAB コマンド プロンプトで次のコードを入力します。

    figure; 
    hold on;
    plot(q);
    plot(w);
    次の図は結果のプロットを示しています。減衰のため、振子の振動が時間とともに小さくなることに注意してください。減衰値を大きくすると振子が減衰過剰になり、振動は消滅します。

  5. ジョイントの位相プロットを作成します。これを行うには、MATLAB コマンド プロンプトで次のコードを入力します。

    figure;
    plot(q.data, w.data);
    次の図は結果のプロットを示しています。

    さまざまな開始角度を使用して、モデルをシミュレートしてみましょう。[Specify Position Target][Z Revolute Primitive (Rz)][State Targets] セクションで、Revolute Joint ブロックのダイアログ ボックスの [Value] パラメーターを指定します。次の図は、開始角度が -240 度、-180 度、-120 度、-60 度、0 度、および 60 度の複合位相プロットを示しています。

減衰と駆動のある振子の解析

  1. Revolute Joint ブロックのダイアログ ボックスの [Actuation] セクションで、[Torque] パラメーターを [Provided by Input] に設定します。このブロックには物理量信号の入力端子 [t] が表示されており、これを使用してジョイントの作動トルクを指定できます。

  2. 次のブロックをモデルに追加します。

    ライブラリブロック
    [Simscape][Utilities]Simulink-PS Converter
    [Simulink][Sources]Sine Wave

    Sine Wave ブロックは、周期的なトルク入力を Simulink 信号として提供します。Simulink-PS Converter ブロックは、Simulink 信号を、Simscape Multibody ブロックと互換性のある物理量信号に変換します。

  3. 次の図のようにブロックを接続します。

  4. Sine Wave ブロックのダイアログ ボックスで、[Amplitude] パラメーターを 0.06 に設定します。この振幅は -0.06 N から 0.06 N の間で振動する作動トルクに対応します。

  5. Revolute Joint ブロックのダイアログ ボックスの [Z Revolute Primitive (Rz)][State Targets] セクションの [Specify Position Target] で、[Value] パラメーターを 0 度に設定します。

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

  7. ジョイントの位置と速度を時間に対しプロットします。これを行うには、MATLAB コマンド プロンプトで次のコードを入力します。

    figure; 
    hold on;
    plot(q);
    plot(w);
    次の図は結果のプロットを示しています。

  8. ジョイントの位相プロットを作成します。これを行うには、MATLAB コマンド プロンプトで次のコードを入力します。

    figure;
    plot(q.data, w.data);
    次の図は結果のプロットを示しています。

参考

| |

関連するトピック