Main Content

高速ダイナミクスの削減

高速ダイナミクス、すなわち高周波数のダイナミクスのソースを特定して減らすことで、モデルをリアルタイム対応にすることができます。リアルタイム対応モデルとは、リアルタイム マシン上でオーバーランを発生させずに許容可能な結果を出力するモデルです。この例では、線形化されたモデルの周波数応答と極配置を調べることによって高速ダイナミクスを特定する方法を説明します。また、高速ダイナミクスのソースを特定して除外する方法も示します。

高速ダイナミクスを削減する理由

高速ダイナミクスをもつモデルの計算コストは通常高くなります。高速ダイナミクスを除外すると、計算コストが下がり、固定ステップ、固定コストのシミュレーションに指定できる最小ステップ サイズが大きくなります。使用するステップ サイズが大きいと、モデルがリアルタイム対応となる可能性が高くなります。

周波数応答解析

"周波数応答" は、正弦波入力に対するシステムの定常状態応答を表します。線形システムの場合、正弦波入力は、周波数 ω が同じで振幅と位相 θ の異なる正弦波を出力します。

周波数解析は、与えられた周波数の範囲で振幅と位相がどのように変化するかを示します。小さな周波数の変化で振幅または位相が大きく変化するのは、システムに高速ダイナミクスがあることを示しています。この例では、振幅 (dB 単位の振幅) と位相が周波数の関数としてどのように変化するかを見ることができるボード線図を使用します。

極解析

高速極も、高速ダイナミクスがあることを示します。高速極は高速で応答または発振する極です。複素平面上で虚軸から左に離れた実数部をもつ極の応答速度は速くなります。実軸から離れた虚数部をもつ複素共役極対は高速で発振します。たとえば、-1500 の実極は -1000 の実極より応答速度が速く、-500 ± 1500i の複素共役極対は -500 ± 500i の複素共役極対より発振速度が速くなります。

状態空間モデルでは、極は A 行列の固有値です。この例では、状態空間モデルを決定してから A 行列値の固有値を計算しプロットすることによって極の速度を調べる方法を説明します。

モデルの線形化

この例のモデルは線形ではありません。周波数応答解析および極解析を実行する前に、モデルの平衡化 (つまり、線形化のための操作点を抽出して指定) と線形化を行います。

  1. モデルを開いて調べます。MATLAB® コマンド プロンプトに以下を入力します。

    %% Open the model
    open_system('ssc_hydraulic_actuator_digital_control')

    信号の生成、操作、経路指定、および可視化を行う各ブロックの他に、次のブロックがモデルに含まれています。

    • Controller — 制御システムの連続時間表現を定義する Transfer Fcn ブロック。モデルのコールバック関数は、伝達関数の分子 num と分母 den を、変数としてワークスペースに保存します。

    • — 連続時間制御システムの離散時間実装を展開する際の、計算遅延とサンプルアンドホールド関数に関連する遅延を表す Transport Delay ブロック。

    • Linearization I/O points — 平衡化の場合は閉ループ、線形化の場合は開ループとしてシステムを構成できるようにするサブシステム。ワークスペースで ClosedLoop を 1 に設定すると、モデルのコールバック関数はシステムを閉ループとして構成します。

    • Hydraulic Actuator — プラントの物理モデルを含むサブシステム。

  2. システムの線形化に適した操作点を見つけます。モデルをシミュレートし、Simscape™ ログ ノードからデータを抽出したうえで、結果をプロットして調べます。

     モデル シミュレーションおよび結果のプロット用スクリプト

    カスタム双方向バルブは、シミュレーション時間 t が 2 ~ 3 秒のときに開いています。

  3. モデルを平衡化します。バルブが開いている t = 2.5 秒の時間を操作点として使用し、閉ループ シミュレーションを実行します。

     モデル平衡化用スクリプト

  4. 関数 linmod を使用して連続時間モデルの開ループ構成を線形化し、状態変数 a、b、c、d をワークスペースに保存します。

     モデル線形化用スクリプト

周波数応答解析と極速度解析の実行

  1. ボード線図を生成します。

     ボード線図生成用スクリプト

    周波数 ω が 102 Hz から 103 Hz になる間に、位相は約 600 度低下します。位相シフト θ の急激な変化は、システムに高速ダイナミクスがあることを示しています。

  2. 関数 eig を使用して行列 a の固有値を計算し、複素平面に極をプロットします。

     行列 A の固有値計算およびプロット用スクリプト

    発振している可能性のある 2 つの極の対を含め、6 つの高速極があります。

  3. 極の対があることを確認します。関数 eigs を使用して、6 つの高速極の値をコマンド ウィンドウに出力します。

     極値出力用スクリプト

    ans =
    
       1.0e+03 *
    
      -2.0000 + 1.1547i
      -2.0000 - 1.1547i
      -0.4614 + 1.4208i
      -0.4614 - 1.4208i
      -1.0314 + 0.0000i
      -1.0000 + 0.0000i
    

    2 組の極の対があります。

高速ダイナミクスのソースの特定と排除

高速ダイナミクスの潜在的ソースについてモデルを調べます。

  1. モデルを線形化するために、この例では関数 linmod を使用します。linmod のドキュメンテーションでは、Transport Delay ブロックを含むモデルの線形化にこの関数を使用しない方がよいとされています。Transport Delay ブロックのドキュメンテーションでは、線形化ルーチンのパデ近似によってモデルに動的状態が付加される可能性があることが指摘されています。このブロックがモデルの線形化をもたらす高速極のソースであるかどうかを判定します。

  2. Transport Delay ブロックの影響を排除してモデルをシミュレートするには、このブロックをコメント スルーします。

     Transport Delay ブロックのコメント アウト用スクリプト

    Transport Delay のアイコンの表示が薄くなり、このブロックがコメント スルーされたことがわかります。

  3. Transport Delay ブロックに影響されていないモデルの周波数応答を調べるため、モデルの平衡化、線形化、およびシミュレーションを行い、その後ボード線図を更新します。

     モデルの平衡化と線形化、およびボード線図の更新用スクリプト

    周波数 ω が 102 Hz から 103 Hz になる間に、位相は約 250 度しか低下しません。

  4. 高速極を計算してプロットします。

     行列 A の固有値計算およびプロット用スクリプト

    Transport Delay ブロックが、-2000 ± 1.1547i rad/s の発振極対がなくなっている原因です。

  5. シミュレート結果をプロットして、元の結果と十分に一致しているかどうかを確認します。

     モデル シミュレーションおよび結果のプロット用スクリプト

    結果は同じように見えます。

  6. ズームして、より詳細に精度を評価します。

     ズーム イン用スクリプト

    このレベルでは、修正モデルの結果にわずかな違いがみられます。しかしながら、シミュレーションは十分に正確であり、結果は実測データと理論データに基づく予測と一致しています。

  7. モデルには、液圧圧縮性、すなわち油柱共鳴が含まれています。油柱共鳴が 2 番目の発振極対の原因となっていることを確認するため、圧縮性をオフにして、周波数応答解析と極解析を繰り返します。

     圧縮性排除、周波数応答および極解析用スクリプト

    位相低下のさらなる減少は、高周波数のダイナミクスの縮小を反映しています。高速極は 2 つになっています。一方の高速極が虚軸からさらに離れて移動しても、高速ダイナミクスは減少しますが、これは、458.8 ± 1.4273i rad/sec で発振している極の対が除外されているためです。

  8. 残りの 2 つの高速極の値をコマンド ウィンドウに出力します。

     極値出力用スクリプト

    two_fast_poles =
    
       1.0e+03 *
    
       -2.6767
       -1.0000
    

    -2677 rad/s の高速極は、油圧サブシステム内の 2 つのオリフィス コンポーネントによって生じる負荷質量と油圧の減衰に対応しています。これらのダイナミクスは、シミュレーション結果の中核をなす部分です。-1000 rad/s の高速極は、コントローラーの分母 0.001 s+1 に対応します。伝達関数はコントローラーの設計に不可欠です。重要なシステムレベルの動作を変えずに、これ以上動的モードを排除することはできません。

  9. シミュレート結果をプロットして、元の結果と十分に一致しているかどうかを確認します。

     シミュレーション結果のプロット用スクリプト

    更新されたモデルの精度は許容可能であるように見えます。

  10. ズームして、より詳細に精度を評価します。

     ズーム イン用スクリプト

    このレベルでは、修正モデルの結果にわずかな違いしか加わっていないことがわかります。シミュレーションの精度は許容可能です。

参考

ブロック

関数

関連する例

詳細