Main Content

ステップ サイズの決定

リアルタイム モデルの準備のワークフローの最初のステップでは、Simscape™ モデルの参照モデルの可変ステップ シミュレーションから結果を取得します。参照結果は、モデルを修正する際に精度を判断する基準になります。この例では、次を実行するために、参照結果と、可変ステップ ソルバーが使用するステップ サイズを解析する方法を説明します。

  • 固定ステップ シミュレーションに利用できる最大ステップ サイズの推定

  • 最大ステップ サイズを制限する可能性のあるイベントの特定

不連続点や急激な変化がある場合、これらのダイナミクスを正確にキャプチャするためにステップ サイズを小さくする必要があります。固定ステップ シミュレーションに使用する最大ステップ サイズは、正確な結果を確実に得るために十分に小さくしなければなりません。モデルにそのようなダイナミクスが含まれている場合、正確な結果を得るために必要なステップ サイズ Tsmax が小さくなりすぎる可能性があります。ステップ サイズが小さすぎると、リアルタイム コンピューターでは、シミュレーションのどのステップでも解の計算を完了できなくなります。

この例の解析は、固定ステップ ソルバーで使用可能で、かつ正確な結果が得られる最大ステップ サイズを推定するのに役立ちます。さらに、この解析を使用して、正確な結果を得るための最大ステップ サイズに影響を与える要素を判断できます。参照結果の取得とステップ サイズ解析の実行が、リアルタイム シミュレーション用のモデルの準備にどのように役立つかについての詳細は、モデルを準備する目的を参照してください。

  1. 参照モデルを開くには、MATLAB® コマンド プロンプトで次を入力します。

    model = 'ssc_pneumatic_rts_reference';
    open_system(model)

  2. モデルをシミュレートします。

    sim(model)
  3. ソルバーのステップ サイズがシミュレーション中にどのように変化するかを示す片対数プロットを作成します。

    h1 = figure;
    semilogy(tout(1:end-1),diff(tout),'-x')
    title('Solver Step Size')
    xlabel('Time (s)')
    ylabel('Step Size (s)')

    シミュレーションの大部分では、ステップ サイズはプロットの Tsmax の値より大きくなります。対応する値である約 0.001 秒は、モデルの固定ステップ シミュレーション中に正確な値を得るための、推定最大ステップ サイズです。リアルタイム シミュレーションで固定ステップ ソルバーのステップ サイズを設定する方法の詳細は、ステップ サイズと反復回数の選択を参照してください。

    プロットの x のマーカーは、ソルバーがシミュレーションのその時点で単一のステップを実行するためにかかった時間を示します。ステップ サイズ データは離散的です。離れた点同士を結ぶラインは、シミュレーション全体の中で、個々の実行時間の順序を示すためにのみ使用されています。

    ステップ サイズの大幅な減少は、ソルバーがゼロクロッシング イベントを検出したことを示しています。信号値の符号が変わったり、信号値がしきい値を超えたりすると、ゼロクロッシングが検出される可能性があります。シミュレーションでは、ステップ サイズを小さくして、ゼロクロッシング イベントのダイナミクスを正確にキャプチャします。ソルバーがゼロクロッシング イベントのダイナミクスを処理した後、シミュレーションのステップ サイズが増える可能性があります。ソルバーが複数の小さいステップを実行してから、ゼロクロッシング イベント前のステップ サイズに戻る可能性もあります。赤いボックスの領域には、可変ステップ ソルバーの回復時間の変化が含まれています。

  4. ゼロクロッシング後のさまざまな動作を確認するには、時間 (t) = 約 1 秒の時点にある赤いボックスの領域にズームします。

     ズーム イン用スクリプト

    t = 1.005 秒の後、ステップ サイズが約 10e-3 秒から 10e-13 秒未満に減少してイベントをキャプチャします。ステップ サイズは約 10e-5 秒まで急速に増加し、次に約 10e-4 秒までゆっくりと増加します。ステップ サイズは、2 番目のイベントをキャプチャするために減少し、急速に回復した後に、ゆっくりと最初のイベント前のステップ サイズまで回復します。ゆっくりとした回復は、モデルの要素のダイナミクスをキャプチャするために、シミュレーションで小さいステップが使用されていることを示します。必要なステップ サイズによって、最大固定ステップ サイズが十分に小さい値に制限されると、リアルタイム コンピューターでシミュレーションの実行を試みたときにオーバーランが発生する可能性があります。

    小さいステップ サイズを必要とする要素のタイプには次のようなものがあります。

    • ハードストップやスティックスリップ摩擦など、不連続点を発生させる要素

    • 小さい時定数をもつ要素。たとえば、減衰が少なくスティッフなバネの小さい質量や、圧縮可能な小さいボリュームをもつ油圧回路などがあります

    ステップ サイズは、t = 1.02 秒の前に発生するイベントの処理で速度を落とした後、より急速に回復します。このイベントでは、正確な結果を得るために小さいステップ サイズが必要になる可能性は高くありません。

  5. ソルバーの回復が遅い別のタイプの箇所を確認するには、t = 約 4.2 秒の時点にある赤いボックスの領域にズームします。

    h1;
    xZoomStart2 = 4.16;
    xZoomEnd2 = 4.24;
    yZoomStart2 = 10e-20;
    yZoomEnd2 = 10e-1;
    axis([xZoomStart2 xZoomEnd2 yZoomStart2 yZoomEnd2]);

    ソルバーを遅くするイベントにさまざまな種類があるように、ソルバーの回復速度の遅さにも種類があります。t = 4.19 秒および 4.2 秒の直前で発生するイベントは、どちらもゼロクロッシングを伴います。ソルバーは、少しずつステップを大きくしながら、イベント発生前のステップ サイズに到達します。Slow Recovery A ではゼロクロッシングに続いて非常に小さなステップが大量に発生していることから、ゼロクロッシングを発生させた要素が数値的にスティッフでもあることがわかります。

    t = 4.2 秒で発生するイベントの後でステップ サイズの増加が速くなることから、Slow Recovery B の前にゼロクロッシングを発生させた要素が、Slow Recovery A の前のイベントほど数値的にスティッフではないことがわかります。

  6. 結果を確認するには、Simscape 結果エクスプローラーを開きます。

    sscexplore(simlog)

  7. 角速度を調べます。Simscape 結果エクスプローラー ウィンドウのシミュレーション ログのツリー階層で、[Measurements][Ideal Rotational Motion Sensor] [w] を選択します。

  8. 気体の流れのプロットを追加するため、[Measure Flow][Pneumatic Mass & Heat Flow Sensor] を選択してから、Ctrl + クリックを使って [G_ps] を選択します。

    回復時間が遅くなるのは、シミュレーションの初期化時と、t = 約 1、4、5、8、9 秒の時点です。小さいステップが発生するこれらの時間は、次の時間に一致します。

    • モーター回転数が 0 rpm に近い場合 (シミュレーション時間 t = 約 1、5、9 秒)

    • モーター回転数のステップ変化が定常状態の回転数から開始され、新たな回転数に移行する場合 (時間 t = 約 4、8 秒)

    • 流量のステップ変化が定常状態の速度から開始され、新たな流量に移行する場合 (時間 t = 約 4、8 秒)

    • 体積流量が 0 kg/s に近い場合 (t = 約 1、4、5 秒)

    これらの結果は、ステップ サイズの回復が遅い理由として最も考えられるのが、摩擦を伴うモデルの要素、または圧縮可能な小さいボリュームをもつモデルの要素であることを示しています。問題のある要素を特定して修正し、シミュレーション速度を上げる方法についての詳細は、数値的剛性の軽減ゼロクロッシングの削減を参照してください。

参考

関連する例

詳細