測定されたステップ応答を使用して制御システムを調整する方法


17

測定されたステップ応答を使用して、PIDまたは畳み込み制御スキームを調整する方法

この回答*に触発されて、測定されたステップ応答に基づいて制御システムを実装する方法のより詳細な説明に興味があります。

すべての効果を推測しようとはしません。おそらくいくつかの非自明なことが進行中であり、すべてのパラメーターを知ることはできません。

ステップ応答を測定します。ボールがチューブ内で測定可能な範囲内にある2つのポンプ設定を見つけます。次に、コントローラーをある設定から別の開ループに突然切り替えます。その間、ボールが何をするかを測定します。それがステップ応答です。それの導関数を取り、インパルス応答を得ることができます。インパルス応答から、これが線形システムであると仮定して、ポンプ設定の履歴についてボールの動きを予測できます。これはおそらく、ボールを通常の範囲内に保つために、小さな設定範囲で十分に線形です。

これをシミュレーションベースとして使用して、旧式のPIDコントロールのパラメーターを見つけることができます。または、インパルス応答を直接使用して畳み込み制御を行うことができます。ポンプが実際にリバーシブルでボールを吸い戻せない限り、コンボリューションカーネルが負にならないように、制御入力を十分にローパスフィルターする必要があります。

これはどのくらい正確に機能しますか?PIDの調整は困難です。「畳み込み制御」は極-零点または伝達関数の使用であると想定していますが、パラメーターを取得する方法は正確にはわかりません。

関連:制御システムのシステムモデリング
*チューブ内のピンポンボール浮揚のダンパーとしての伝達関数のモデリング

回答:


23

前書き

最初に、システムのインパルス応答と呼ばれるこのことを正確に理解し、それが何を意味するかを考慮する必要があります。これは、視覚化するために少し考えを要する抽象的な概念です。私は厳密な数学に入るつもりはありません。私のポイントは、この事が何であるか直観を与えようとすることです。

制御問題の例

温度センサーが取り付けられた大きな太い電力抵抗器があると想像してください。すべてが周囲温度で始まります。電源を入れると、センサーの温度が最終的に上昇して安定することがわかりますが、正確な方程式を予測するのは非常に困難です。システムの時定数は約1分ですが、「時定数」は完全に適用できるわけではありませんが、温度が単極のシステムのように指数関数的に上昇しないため、時定数は1つです。 。温度を正確に制御し、適切な電力レベルでスイッチを入れて待機した場合よりも、温度を新しいレベルに変更し、着実に大幅に速く維持したいとします。

基本的に、制御システムに問題があります。開ループ応答は合理的に再現可能であり、それを十分にモデル化する式がどこかにありますが、問題はその式を導き出すにはあまりにも多くの不明な点があることです。

PID制御

これを解決する古典的な方法の1つは、PIDコントローラーを使用することです。アナログ電子機器でこれを行う必要があった更新世に戻ると、人々は賢くなり、手元のアナログ機能とうまく機能するスキームを思いつきました。そのスキームは、比例積分、および微分の「PID」と呼ばれていました。

Pターム

エラーの測定を開始します。これは、測定されたシステム応答(この場合、センサーによって報告される温度)から制御入力(望ましい温度設定)を引いたものです。通常、これらは電圧信号として利用できるように配置できます。そのため、エラーを見つけるのはアナログの違いにすぎず、これは十分簡単です。これは簡単だと思うかもしれません。あなたがしなければならないのは、誤差が大きいほど高い電力で抵抗を駆動することです。それは、寒すぎると自動的に暑くなり、暑すぎると寒くなります。それはうまくいきます。この方式では、ゼロ以外の制御出力(抵抗を駆動する電力)を発生させるためにいくらかの誤差が必要であることに注意してください。実際、それは、必要な電力が大きいほど、エラーが大きくなることを意味します。これが、高電力を得るための唯一の方法だからです。これで、高出力でもエラーが許容できるようにゲインを上げるだけでいいと言うかもしれません。結局のところ、これは、多くの回路でオペアンプがどのように使用されるかの基本です。あなたは正しいですが、現実の世界では通常、それで逃げることはできません。これはいくつかの単純な制御システムで機能する場合がありますが、応答にあらゆる種類の微妙なしわがあり、ゲインが高すぎる場合に振動する何かになることがあります。言い換えると、システムは不安定になります。しかし、反応にあらゆる種類の微妙なしわがあり、かなりの時間がかかる場合は、ゲインが高すぎるときに振動する何かになります。言い換えると、システムは不安定になります。しかし、反応にあらゆる種類の微妙なしわがあり、かなりの時間がかかる場合は、ゲインが高すぎるときに振動する何かになります。言い換えると、システムは不安定になります。

上記で説明したのは、PIDのP(proprotional)部分です。出力をエラー信号に比例させることができるように、エラーの時間微分と積分に比例する項を追加することもできます。これらのP、I、およびD信号はそれぞれ、制御出力信号を生成するために合計される前に、独自の個別のゲインを持っています。

私は用語

Iという用語は、エラーが時間とともにゼロになることを可能にします。正のエラーがある限り、I項は累積し続け、最終的には全体的なエラーがなくなるポイントまで制御出力を上げます。この例では、温度が一貫して低い場合、出力温度が最終的に低くなくなるまで、抵抗器への電力が絶えず増加します。高いP項よりもさらに速く不安定になる可能性があることを願っています。AI用語自体は簡単にオーバーシュートを引き起こし、簡単に振動になります。

Dターム

D用語は時々省略されます。D項の基本的な使用法は、PおよびI項がより積極的になるように、少し安定性を追加することです。Dの用語は基本的に、すでに正しい方向に向かっているのであれば、私が今そこに着いているように見えるので、ガスに少しレイオフします。

PIDの調整

PID制御の基本は非常に単純ですが、P、I、およびDの用語を適切に取得することはそうではありません。これは通常、多くの実験と微調整で行われます。最終的な目的は、出力が可能な限り迅速に応答するシステム全体を取得することですが、過度のオーバーシュートやリンギングはなく、もちろん安定している必要があります(独自に発振を開始しない)。PID制御、方程式に小さなしわを追加する方法、特にそれらを「調整」する方法について書かれた多くの本がありました。チューニングとは、最適なP、I、およびDゲインを分割することです。

PID制御システムは機能しますが、それらを適切に機能させるには、確かに多くの伝承とトリックがあります。ただし、PID制御は制御システムの唯一の正しい答えではありません。そもそもPIDが選ばれた理由を人々は忘れてしまったようです。これは、ある種の普遍的な最適制御スキームというよりも、アナログエレクトロニクスの制約に関係しているのです。残念ながら、今日ではあまりにも多くのエンジニアが「制御システム」とPIDを同一視していますが、これは小さな考えのニージャーク反応にすぎません。これにより、今日の世界ではPID制御が間違っているわけではありませんが、制御の問題を攻撃する多くの方法の1つにすぎません。

PIDを超えて

今日、温度の例のようなもののための閉ループ制御システムは、マイクロコントローラで行われます。これらは、単にエラー値の導関数と積分を取るだけでなく、もっと多くのことができます。プロセッサでは、除算、平方根、最近の値の履歴の保持などを行うことができます。PID以外の多くの制御スキームが可能です。

インパルス応答

そのため、アナログエレクトロニクスの制限を忘れて戻って、最初の原則に戻るシステムをどのように制御できるかを考えてください。制御出力の小さな部分ごとに、システムが何をするかを知っていたらどうでしょう。連続制御出力は、多数の小さな断片の合計になります。各ピースの結果が何であるかを知っているので、制御出力の以前の履歴の結果が何であるかを知ることができます。ここで、制御出力の「小さな部分」がデジタル制御にうまく適合することに注意してください。制御出力がどうあるべきかを計算し、それを設定し、戻って入力を再度測定し、それらから新しい制御出力を計算して再度設定する、などです。制御アルゴリズムをループで実行しています。そして、入力を測定し、ループの繰り返しごとに新たに制御出力を設定します。入力は離散時間で「サンプリング」され、出力も同様に固定間隔で新しい値に設定されます。これを十分に速く行うことができる限り、これが継続的なプロセスで発生していると考えることができます。通常、落ち着くまでに数分かかる抵抗加熱の場合、確かに毎秒数回は、システムが本質的に意味のある方法で応答するよりもはるかに速いので、たとえば4 Hzでの出力の更新はシステムに連続して見えます。これは、40〜50 kHzの範囲で個別に出力値を実際に変更するデジタル録音された音楽とまったく同じで、耳が聞こえないほど速く、オリジナルのように連続して聞こえます。これは継続的なプロセスで起こると考えることができます。通常、落ち着くまでに数分かかる抵抗加熱の場合、確かに毎秒数回は、システムが本質的に意味のある方法で応答するよりもはるかに速いので、たとえば4 Hzでの出力の更新はシステムに連続して見えます。これは、40〜50 kHzの範囲で個別に出力値を実際に変更するデジタル録音された音楽とまったく同じで、耳が聞こえないほど速く、オリジナルのように連続して聞こえます。これは継続的なプロセスで起こると考えることができます。通常、安定するのに数分かかる抵抗加熱の場合、確かに毎秒数回は、システムが本質的に意味のある方法で応答するよりもはるかに速いので、4 Hzでの出力の更新はシステムにとって連続しているように見えます。これは、デジタル録音された音楽が実際に出力値を40〜50 kHzの範囲で個別のステップで変更し、耳が聞こえないほど速く、元のように連続して聞こえるのとまったく同じです。確かに、1秒あたり数回は、システムが本質的に意味のある方法で応答するよりもはるかに高速であるため、4 Hzでの出力の更新はシステムにとって連続しているように見えます。これは、デジタル録音された音楽が実際に出力値を40〜50 kHzの範囲で個別のステップで変更し、耳が聞こえないほど速く、元のように連続して聞こえるのとまったく同じです。確かに、1秒あたり数回は、システムが本質的に意味のある方法で応答するよりもはるかに高速であるため、4 Hzでの出力の更新はシステムにとって連続しているように見えます。これは、デジタル録音された音楽が実際に出力値を40〜50 kHzの範囲で個別のステップで変更し、耳が聞こえないほど速く、元のように連続して聞こえるのとまったく同じです。

それで、1つの制御出力サンプルが原因でシステムが時間の経過とともに何をするかを知るこの魔法の方法があれば、何ができるでしょうか?実際の制御応答は単なるサンプルのシーケンスであるため、すべてのサンプルからの応答を合計し、結果のシステム応答がどうなるかを知ることができます。つまり、任意の制御応答波形に対するシステム応答を予測できます。

それはクールですが、システムの応答を予測するだけでは問題を解決できません。ただし、ここにahaの瞬間があります。これを逆にして、必要なシステム応答を得るために必要な制御出力を見つけることができます。これは、制御問題を正確に解決していることに注意してください。ただし、単一の任意の制御出力サンプルに対するシステム応答を何らかの方法で知ることができる場合のみです。

だから、あなたはおそらく、それを簡単に考えて、それを単に大きなパルスを与えて、それが何をするか見てください。はい、それは理論的には機能しますが、実際には通常は機能しません。これは、1つのコントロールサンプルが、たとえ大きいものであっても、全体的なスキームが非常に小さいため、システムが測定可能な応答をほとんど持っていないためです。また、コントロールサンプルのシーケンスがシステムに対して連続的であると感じるように、各コントロールサンプル物事のスキームにおいて小さくなければならないことを忘れないでください。したがって、このアイデアが機能しないわけではありませんが、実際にはシステムの応答は非常に小さいため、測定ノイズに埋もれています。抵抗器の例では、100 msで100 Wの抵抗器を押しても、測定するのに十分な温度変化は生じません。

ステップ応答

しかし、まだ方法があります。単一の制御サンプルをシステムに入れると、個々のサンプルへの応答が直接得られますが、制御応答の既知の制御されたシーケンスをシステムに入れて、それらへの応答を測定することで推測できます。通常、これは制御ステップを入れることで行われます私たちが本当に望んでいるのは、小さなブリップへの応答ですが、単一のステップへの応答は、まさにその積分です。抵抗器の例では、すべてが0 Wで定常状態であることを確認してから、突然電源を入れて抵抗器に10 Wを投入できます。これにより、最終的に出力で適切に測定可能な温度変化が生じます。適切なスケーリングを使用したその導関数は、直接測定することはできませんでしたが、個々のコントロールサンプルに対する応答を示しています。

要約すると、ステップ制御入力を未知のシステムに入力し、結果の出力を測定できます。それはステップ応答と呼ばれます。次に、その時間微分を取得します。これは、インパルス応答と呼ばれます。1つの制御入力サンプルから生じるシステム出力は、単にその制御サンプルの強度に適切にスケーリングされたインパルス応答です。制御サンプルの全履歴に対するシステム応答は、各制御入力に対して時間内で加算、スケーリング、およびスキューされたインパルス応答全体です。最後の操作はたくさん出てきて、畳み込みという特別な名前があります。

畳み込み制御

したがって、システム出力の任意のセットについて、その出力を引き起こす制御入力のシーケンスを思い付くことができると想像できるはずです。しかし、落とし穴があります。システムから望むもので攻撃的になりすぎると、それを達成するための制御入力には、高い値と低い値が必要になります。基本的に、システムの応答が速くなるほど、両方向の制御値を大きくする必要があります。抵抗器の例では、すぐに新しい温度に到達するように数学的に言うことができますが、達成するには無限の制御信号が必要になります。温度の新しい値への変化が遅いほど、抵抗にダンプできる最大電力が低くなります。別のしわは、抵抗器への電力も時々下げる必要があるということです。あなたはできる'

これに対処する1つの方法は、内部で使用する前に、制御システムがユーザー制御入力をローパスフィルター処理することです。図ユーザーはユーザーがやりたいことをします。入力をすばやく叩きます。内部的には、ローパスフィルターを使用して、それを平滑化し、抵抗に入れることができる最大電力と最小電力を考慮して、実現できる最速まで減速します。

実世界の例

以下は、実世界のデータを使用した部分的な例です。これは実際の製品に組み込まれたシステムからのもので、特に数十個のヒーターを制御してさまざまな化学物質リザーバーを特定の温度に維持する必要があります。この場合、顧客はPID制御を行うことを選択しましたが(それは彼らが快適に感じたものです)、システム自体はまだ存在し、測定することができます。以下は、ヒーターの1つをステップ入力で駆動した場合の生データです。ループの繰り返し時間は500ミリ秒でした。これは、システムが2時間後もこのスケールグラフにまだはっきりと収まっていることを考えると、明らかに非常に短い時間です。

この場合、ヒーターはサイズが約0.35のステップ(「Out」値)で駆動されたことがわかります。長い間、完全な1.0ステップを入力すると、温度が高すぎます。初期オフセットを削除し、結果をスケーリングして小さな入力ステップを考慮してユニットステップ応答を推測できます。

これから、インパルス応答を取得するために連続するステップ応答値を差し引くだけだと思います。これは理論上は正しいですが、実際にはシステムは500ミリ秒でほとんど変化しないため、実際には測定ノイズと量子化ノイズがほとんど発生します。

値の小さなスケールにも注意してください。インパルス応答は10 6でスケーリングされて表示されます。

個々の読み取り値または数個の読み取り値の間の明らかに大きな変動は単なるノイズであるため、これをローパスフィルター処理して高周波(ランダムノイズ)を取り除くことができます。1つの試みを次に示します。

それは良いことであり、本当に意味のあるデータがありますが、それでもノイズが多すぎることを示しています。以下は、生のインパルスデータのローパスフィルタリングで得られる、より有用な結果です。

これは実際に作業できるものです。残りのノイズは信号全体に比べて小さいため、邪魔にならないようにしてください。信号はまだほとんど残っているようです。これを確認する1つの方法は、240のピークが、前のプロットをすばやく視覚的に確認し、眼球をフィルター処理した結果であることに気付くことです。

それでは、このインパルス応答が実際に何を意味するのかを考えてください。まず、1M倍表示されることに注意してください。したがって、ピークは実際にはフルスケールの0.000240です。これは、理論的には、システムが500 msのタイムスロットの1つのみに対して単一のフルスケールパルスで駆動された場合、これは結果として生じる温度がそのままにされることを意味します。直感的に理にかなっているように、500 msの期間からの寄与は非常にわずかです。これはまた、インパルス応答の直接測定が機能しない理由です。フルスケールの0.000240(4000分の1)がノイズレベルを下回っているからです。

これで、制御入力信号のシステム応答を簡単に計算できます。500ミリ秒の制御出力サンプルごとに、その制御サンプルのサイズでスケーリングされたこれらのインパルス応答のいずれかを追加します。最終システム出力信号に対するそのインパルス応答の寄与の0時間は、その制御サンプルの時点です。したがって、システム出力信号は、互いに500ミリ秒オフセットされたこれらのインパルス応答の連続であり、それぞれがその時点のコントロールサンプルレベルにスケーリングされます。

システム応答は、制御入力とこのインパルス応答の畳み込みであり、すべての制御サンプル、この例では500 msごとに計算されます。これから制御システムを作成するには、目的のシステム出力をもたらす制御入力を決定するために逆方向に作業します。

このインパルス応答は、古典的なPIDコントローラーを実行する場合でも、非常に便利です。PIDコントローラーの調整には、多くの実験が必要です。実際のシステムでは、各反復に1〜2時間かかり、反復チューニングが非常に遅くなります。インパルス応答を使用すると、コンピューター上のシステム応答を数秒でシミュレートできます。これで、新しいPID値を変更できる限り早く試すことができ、実際のシステムが応答を示すまで1〜2時間待つ必要はありません。もちろん、実際のシステムで最終値を常にチェックする必要がありますが、ほとんどの作業はほんの少しの時間でシミュレーションで行うことができます。これは、質問で引用した文章の中で、「これをシミュレーションベースとして使用して、旧式のPIDコントロールのパラメーターを見つけることができます」という意味です。


4
ありません。も。みすぼらしい。
ニックハルデン

4
ここでは、いくつかのセクションの見出しが本当に価値があると思います。しかし、驚くべきことが当てはまります。
コルトゥク

私はパーティーに遅れていますが、それでも印象的な答え、オーリン!:)
ビットマック

7

Jonが述べたように、FIRおよびIIRフィルターは、名前が示すように(Finite \ Infinite Impulse Response)のインパルス応答の畳み込みを直接実装するデジタルフィルターです。

インパルス応答を信号(時間領域)に畳み込むことは、伝達関数を信号の変換(周波数領域)に乗算することとまったく同じです。そして、基本的に、フィルターのインパルス応答を信号の変換バージョンに乗算することで構成されます(フィルター応答は時間で固定され、信号は時間で連続的に変化するという事実を考えてください)。

デジタルフィルターでは、インパルス応答は、特定のポイントで信号を乗算する固定数の係数に低減されます。ポイントは、その取得し、遅延によって分離されている0ながら、乗算信号の瞬時値をkは後に同じ信号を乗算するk個の遅延ユニット。

ここに画像の説明を入力してください

この図は、13タップ(遅延数)FIRフィルターの係数が取得される一般的なフィルター(この場合はローパス)のインパルス応答を示しています。

いくつかの伝達関数を取得するには、FIRフィルターは無限の係数を必要とします。これらの場合、フィードバックを使用してIIR(無限インパルス応答)フィルターを取得します。これらのフィルターは、より良い伝達関数(例:フィルターの通過帯域と抑制帯域の間の狭い遷移)を取得できますが、FIRフィルターは構造上安定しています。

この種のフィルターはアナログ回路で設計できますが、係数に調整された正確なアンプと正確な遅延回路が必要であり、タップ数を増やすとハードウェアが大幅に増加します。多くの場合、これらのフィルターはDSPに実装され、デジタル信号で操作がはるかに簡単に実行されます。

したがって、あなたの質問直接答えるために:デジタルフィルタの調整は、係数を離散化されたインパルス応答に設定するだけで行われます。

更新

OPはステップ応答とインパルス応答について質問しました。まあ、OlinとJonが言ったように、インパルス応答はステップ応答の導関数であり、明らかにステップ応答はインパルス応答の積分です。

ステップ応答は、制御システムで最も重要なことを示しているため、制御システムで広く使用されています。入力の高速な変化にどれだけ迅速に応答するか、また安定していて経時エラーを最小限に抑えることができるかどうかです。

しかし、インパルス応答は非常に重要です。特定の瞬間の入力信号が出力で引き起こすことを計算するために使用できるため、入力信号に乗算されたインパルス応答の結果を積み重ねて、完全な出力信号を取得できます。畳み込みであり、魔法が発生する場所です。はい、インパルス応答はレギュレータの伝達関数のフーリエ逆変換に他ならないためです。

これがデジタルフィルターの威力です。インパルス応答を直接実装し、ステップ応答(制御システムの場合)または伝達関数(フィルターの場合)を再現するかどうかは、インパルス応答を導き出し、FIRの係数を抽出します。


素晴らしい答えです!それを完了するために、ステップからインパルス応答を取得する方法を含めることができますか?(@JonWatteの答えでそれを参照してください。)
tyblu

4

通常、畳み込みはFIRフィルターであり、従来の再帰フィルターの極と零点で得られるようなIIRではありません。さて、ステップ応答がある場合、これを反転し、それによって応答信号を事前に畳み込むことができます。最終結果は、システム全体が正確にステップ応答を示すことです。ただし、一般的なケースでは、逆応答を「プリロード」する必要があるため、グループ遅延が発生します。制御システムでは、これにより望ましくないレイテンシが発生する可能性があります。


@JohWatte、例?
-Kortuk

1
または、制御信号にローパスフィルターを適用しました。理想的には、ステップインはステップアウトを生成しますが、出力は無限になる必要があるため、物理的に不可能です。制御入力をフィルター処理して、ステップ入力が実現可能なものになるようにします。つまり、コンボリューション値は、出力ドライブが生成できるものを決して超えません。特に、負の値はしばしば不可能です。たとえば、抵抗ヒーターで温度を調整している場合、負の熱を発生させることはできません(ペルチェを使用すると、値が負になる可能性があります)。
オリンラスロップ

ステップ応答をどのように反転しますか?「応答信号」は望ましい出力ですか?
tyblu

簡単に言うと、正しく思い出せば、ステップ応答をインパルス応答に変換します。次に、出力信号から入力信号で畳み込まれたインパルス応答(インパルスを取り出したもの)を減算します。群遅延(レイテンシー)を追加するのはこの畳み込みです。オーディオDSPのマイクと部屋のモデリングに関しては、十数年前に良い参考資料を見たことを覚えています。
ジョンワット

2

私はこれを好転させます、そして、あなたがあなたのシステムのステップ応答を測定する能力を持っているならば、あなたは多くの理論を近道にして、あなたの制御パラメータを最適化するだけで始めることができます。開ループ応答を測定して理想的な制御パラメーターを計算するのではなく(最適化の適切な開始点を見つけるのに役立ちますが)、閉ループ応答を測定することでシステムを調整できます。

主なアイデアは、ステップ応答を測定すると、制御システムが低減衰、過減衰、または臨界減衰(理想的な場合)であるかどうかを(おおよそ)確認できるということです。

ステップ応答を測定し、リンギングが見られる場合、減衰が不十分であることがわかります。ステップ応答を測定して、出力がゆっくりと最終値に達する場合は、減衰が不十分であることがわかります。ステップ応答を繰り返し測定しながらコントローラーを調整できる場合、リンギングなしで最速の応答が得られるように調整するだけで、最適な応答に近いことがわかります。

P用語を使用するだけで開始できます。結果が満足のいくものでない場合は、IとDの項を追加します。Iという用語は、応答の長いテール、または出力が目的の値にまったく到達しないケースを取り除くのに役立ちます。D項は、入力が次に進む場所を「予測」することで応答を高速化するのに役立ちます。(私は、制御の専門家ではありませんが、P項は絶対項で最適化できますが、I項とD項の最適な選択は、制御下のシステムの応答だけでなく、入力信号の周波数成分や振幅などの機能)

リンギングなしで得られる最速の応答を得たら、温度が変化するか、システムが振動に調整されないように、わずかに過減衰に調整します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.