Z変換から派生したPID実装の利点は何ですか?


29

このような多くのPIDの記事を見てきましたが、一般的なPID方程式のZ変換を使用して、ソフトウェア(またはこの場合はFPGA)に実装できるクレイジーな差分方程式を導き出します。私の質問は、PhDなしの従来のはるかに直感的なPIDに対して、そのような実装の利点は何ですか?型の実装?後者の方が理解しやすく、実装も簡単です。P項はストレート乗算であり、積分はランニングサムを使用し、微分は現在のサンプルから前のサンプルを減算することによって推定されます。Integral Windup保護などの機能を追加する必要がある場合、それは単純な代数です。Integral Windup保護または他の機能を差分型アルゴリズム(上記のリンクなど)に追加しようとすると、はるかに複雑になるようです。そのような実装を使用する理由はありますか?「私は楽しいのにZ変換をするのが好きな悪い尻」タイプの自慢する権利以外にありますか?

編集:私がリンクしたPHDの記事なしのPIDは、積分項に連続和を使用し、微分項に連続するサンプル間の差を使用するより単純な実装の例です。確定的な方法で固定小数点演算を使用して実装でき、必要に応じてリアルタイムの時定数情報を計算に含めることができます。基本的に、Z変換メソッドの実用的な利点を探しています。私はそれがどのように速くなるか、またはより少ないリソースを使用する方法を見ることができません。積分の累積和を保持する代わりに、Zメソッドは前の出力を使用し、前のPおよびD成分を減算するように見えます(計算により積分和に到達します)。だから、誰かが私が見逃している何かを指し示すことができない限り、私はそれらが本質的に同じであるというAngryEEのコメントを受け入れます。

最終編集:回答いただきありがとうございます。私はそれぞれについて少し学んだと思いますが、結局のところ、Angryはそれが好みの問題であるという点で正しいと思います。2つの形式:

ek2=ek1

u(k)=u(k1)+Kp(e(k)e(k1)+KiTie(k)+KdTi(e(k)2e(k1)+e(k2))
u k 1 = u k
e(k2)=e(k1),e(k1)=e(k)
u(k1)=u(k)

または

のu K = Kのp個の E K + K I T iが合計 + K Dを

sum=sum+e(k)
u(k)=Kpe(k)+KiTisum+KdTi(e(k)e(k1))
e(k1)=e(k)

本質的に同じことを評価します。最初のものはDSPまたはFPGAでより速く実装できると言う人もいますが、私はそれを買いません。どちらもベクトル化できます。最初の操作には2つのpost操作が必要で、2番目の操作には1つのpre操作と1つのpost操作が必要なため、均等に表示されます。最初のものは、実際の計算でさらに1回の乗算が必要です。


「微分方程式」という意味ですか?
ケビンフェルメール

少なくとも私がしたフィードバックに基づいて、私はあなたのコメントを誤解したに違いありません。コメントを削除します!
-Kortuk

1
dsp.stackexchange.comに移動してください
ジェイソンS

回答:


7

Z変換のすべての空想に困惑しています。2つのアプローチは基本的に同じです。PHDを使用しないPIDアプローチでは、添え字が少なくなります。それらは同じ基本機能を実行し、同じ基本数学を使用します。

私が見ることができる2つの唯一の大きな違いは、PHDなしのPIDではサンプリング時間が考慮されていないことです。不安定になる可能性のあることを行うには、サンプリング時間は非常に重要な考慮事項です。この場合のZ変換アプローチの利点は、サンプリング時間を考慮せずにZ変換アプローチを使用できないことです。これにより、作業を表示せざるを得なくなり、より安定したシステムを設計できます。

また、Z変換アプローチを実装したケーススタディは、非常に決定的であるように設計されているようです。これにより、FPGAの使用が説明されます-計算には常に同じ時間がかかります。PHD実装のないPIDは決定論的ではありません。固定小数点の実装の代わりに変数としてdoubleを使用すると、浮動小数点ユニットを持たないマイクロコントローラー(およびおそらくFPUを備えたuCでも)で非決定的な動作が発生します。ケーススタディは、PID w / o PHDアプローチと比較して、まったく異なるレベルの複雑さに取り組んでいます。

したがって、数学と制御のアプローチは基本的に同じですが、ケーススタディ/ Z変換のアプローチはより厳密で、理論的に根拠があります。PID w / o PHDアプローチは、比較的安定した非常にシンプルでタイムクリティカルでないシステムでのみ機能します。


PHDのないPIDの記事は、より単純な実装の例にすぎません。この実装では、積分に連続和を使用し、微分に連続サンプル間の差を使用します。この記事では、サンプル時間が一貫している必要があると述べています。サンプリング時間はIおよびD計算に簡単に追加できますが、ほとんどの場合、実際の計算では行われません。コントローラーのGUI(または他のインターフェース)は、ループ時間に基づく秒数でユーザーにIとDの用語を提示します。
bt2

@ bt2博士号なしのPIDが最良のアプローチであるという非常に特殊なケースがあるように聞こえます。ほとんどのシステムには、IおよびD用語の表示は一切ありません。これは、システム全体に何らかの変更を加えたPIDコントローラーの結果であり、その後、それ自体にループバックされます。ユーザーに表示するだけの場合、安定性を心配する理由はありません。
ケレンブ

「PIDなしのPIDアプローチは非常に単純な場合にのみ機能します」-私は同意しません。Z変換解析を使用してデジタル制御システムを確実に最適化することはできますが、逆に、システムを非常に正確にモデリングすることに追いつくことができるので、森のために森林を見逃してしまいます。
ジェイソンS

10

PIDコントローラーを設計するZ変換方法は、最終的にはるかに効率的な実装をもたらします。これは、アプリケーションで最小のFPGA / DSP /マイクロコントローラーを設計する場合に重要です。

前述の「PHDのないPID」は、おそらくソフトウェアでPID制御を実装する最も簡単な方法ですが、サンプリングレートが高くなると面倒になります。

さらに、Z変換は、離散(デジタル)ドメインでの設計により適しています。従来の(ラプラス変換)設計方法は、連続時間に適しています。2つの間で変換する複数の方法(ゼロ次ホールド、線形補間、極配置、双線形/タスティン)があり、それぞれにシステムの安定性と応答に関する長所と短所があります。一般に、設計全体を個別のドメインで実行する方が簡単です。

簡単に言えば、比較的「遅い」システムを使用している場合(主要な動作はすべて100kHz程度で大幅に発生する)、最初の設計はおそらく問題ありません。マイクロコントローラーまたはPCに実装して、それで完了です。システムが高速になると、必要な速度を得るためにZ変換メソッドを使用する必要がある場合があります(A / DおよびDACが追いつくことができると仮定して、記事では9.5MHzに言及しています)。


1
同じ数の数学演算、異なる数の表現。倍精度は、ケーススタディで使用される固定小数点法よりもはるかに複雑な数値表現です。複雑さが減ると、(シリコン上での)操作が少なくなります。
AngryEE

2
@ bt2、DSPチップがSIMD(単一命令、複数データ)命令セット用にセットアップされているという意味で、より効率的だと思います。数学演算の数は同じですが、Z変換を使用すると、1命令サイクルですべての乗算を実行し、1サイクルで結果のベクトルのすべての要素を合計できます(プラットフォームに依存)。そのため、数学は同じですが、時間の複雑さは大幅に低くなり、高速化が実現します。
mjcarroll

1
@ bt2 z-formは、過去の出力と現在の入力のみに依存する差分方程式としての実装に役立ち、ある時点でオーバーフロー(またはアンダーフロー)する合計を必要としません。DSPは、差分方程式アプローチによりデジタルフィルターを効率的に実装できるように設計されています。en.wikipedia.org/wiki/Digital_filter espを参照してください。直接形式-それがDSPの最適化です。
フリースペース

1
あなたは何かが欠けていると思います。実行中の合計は、通常の状況では決してオーバーフローしません。IIRフィルターは常に飽和するとは限りません。PID制御の場合、通常はそうではありません。あるアルゴリズムではそれを行うが、別のアルゴリズムではしないと言うのは誤りです。同様に、現在の合計は以前の出力に基づいています。オーバーフローが発生する場合、両方とも発生します。このように考えると、2回目の打ち込みが最初であり、いくつかの数学が考慮されます... u(k-1)-kp(e(k-1)-kd / Ti(e(k-1)-e( k-2)==(ランニングサム)
bt2

1
-1:Z変換は、より効率的な実装を提供しません。実際、「単純な」デジタル手法を使用した1極ローパスフィルターと双線形変換を使用した1極ローパスフィルターを比較すると、このアプローチでは実装の効率がやや低下します。フィルターの派生に関係なく、同じ状態変数の数=実装の効率はほぼ同じです。多くの場合、これはフィルターの設計方法から独立した量です。
ジェイソンS

5

私の経験では、これが取引です。

  • Z変換はいくつかの分析に役立ちます。離散時間サンプリングシステムの理論は、Z変換を介して最適にモデル化されます。
  • PIDコントローラーまたはローパスフィルターの設計は、微分/積分を連続時間から離散時間に変換するために使用されるいくつかの近似法の1つを使用して、Z変換と従来の分析の両方で実行できます。極と零点がサンプルレートに比べて低い周波数にある場合、問題ではありません。最も自信を持っていると感じるアプローチに固執します。
  • 多くの場合、フィルターとコントローラーのZ変換の派生により、これらのフィルターとコントローラーのパラメーターの物理的な意味があいまいになります。積分ゲイン、比例ゲイン、および微分ゲインを備えたPIDループがある場合、これらのパラメーターのそれぞれが直接行うことを知っています。Z変換を使用する場合、それらは何らかの方法で導出しなければならなかった単なる数字です。
  • フィルターとコントローラーの実装は、それらのフィルターとコントローラーのパラメーターの物理的な意味をあいまいにする場合としない場合があります。この品質は、以前のポイントから大部分独立しています。Z変換ベースのデザインがある場合、クラシックな外観の実装に変換できます。逆の場合も同様です。2番目の実装では、積分器( " sum")を独自の状態変数で分離しているため、FINAL EDITでの例は良い例です。その状態変数には意味があります。最初の実装では、状態変数をエラーの過去の履歴として保持します。それには意味がありますが、私の意見ではあまり洞察が得られません。

最後に、非線形性または分析に関連する他の問題があります。多くの場合、ある実装を別の実装よりも選択します(私にとっては常にコントローラーの古典的なアプローチであり、FIRフィルターの場合はZ変換であり、1極または2極のIIRフィルターの場合は通常古典的なアプローチ):

  • コントローラーの場合、過去のエラーサンプルではなく、常に状態変数として積分器を保持します。その理由は、実際のシステムではアンチワインドアップが必要な場合が多く、積分が正または負になりすぎないようにする必要があるためです。(また、固定小数点で実装している場合、とにかくこれを行う必要があります。オーバーフローをヒットしたときのラップアラウンド条件は、制御ループの動作に悪いことをするからです)

  • 同じ理由で、出力参照の方法で積分器を常に計算します。たとえばsum += Ki*error; out = stuff + sumではなくsum += error; out = stuff + Ki*sum。2番目のアプローチでは、ゲインKiを変更すると、出力に対するインテグレーターの効果が増減しますが、これはおそらく望みではなく、ゲインによって制限が変化します。積分する前に誤差をKiで乗算すると、積分器の単位は制御ループ出力の単位と同じになり、物理的な意味がより明確になります。

(更新:このトピックに関するブログエントリを詳細に記述しました。)


4

編集

Z変換を使用すると、分析のためにLTIシステムを簡単に結合および簡素化できます。たとえば、伝達関数H1、H2、...、Hkを備えたカスケード型のk個のLTIシステムは、単純な積として結合されますH = H1*H2*...*Hk。また、負のフィードバックループの伝達関数はですT = G/(1 + G*H)。ここで、Hはフィードバックパス上にあります。全体的な伝達関数が得られたら、安定性(極の位置)と性能(過渡、定常状態誤差)を分析し、フィルターとフィードバックを追加して設計を最適化できます。

高次のサブシステムの場合、システム関数を分割し、一連のカスケードバイクアッドとして(つまり、複素共役または反復根などの零点と極のペアによって)実装することができます。正規形式のバイカッド:

バイクアッドセクション


あなたの答えは印象的に聞こえますが、私はあなたの言ったことをほとんど知りません。たとえば、量子化の安定性とは何ですか?方程式の1つの形式が他の形式よりもどのように優れていますか?
bt2

1
伝達関数H(z)は有理関数B(z)/ A(z)です。zの各多項式は、N次システムのN個のゼロの係数です。分母にあるA(z)のゼロは極と呼ばれます(これはフィードバックパスです)。一定のスケーリング係数に対して、線形時不変(LTI)システムはその零点と極によって記述されます。
エリック

1
離散時間LTIシステムは、すべての極がz平面上の単位円内にある場合、安定しています。しかし、有限のデジタル精度での量子化は、システムをわずかに安定、不安定、または時間の経過とともに不安定にドリフトさせるノイズをもたらします。H(z)を製品の双二次(双二次)に因数分解することにより、この種のエラーは最小限に抑えられます。
エリックサン

2
実数係数をもつ多項式のゼロは実数または複素共役のペアであるため、バイカッドが推奨される最小パーティションです。バイカッドB(z)/ A(z)は(b0 + b1z ^ -1 + b2z ^ -2)/(a0 + a1z ^ -1 + a2z ^ -2)です。
エリック

カスケードされた2次と直接の4次ポリを比較する量子化ノイズの例を追加し、削除しました。しかし、それは多すぎました。寝る必要があります。申し訳ありませんが、tyblu。
エリック

3

PIDコントローラーの難しい部分は、コード自体ではありません。コントローラーを最適化しようとすると、実際に問題が発生します。確かに試行錯誤をしてかなりまともなコントローラーを手に入れることができますが、一部のシステムは、試行錯誤法を簡単に実行するにはあまりにも複雑すぎます。これらの同じシステムは、まともなコントローラーではなく、非常に優れたコントローラーを必要とする傾向があります。この場合、Z変換の分析ははるかに簡単です。

考えるべきもう1つのことは、システムの安定性です。不安定になるのがやや難しいシステムを扱っているかもしれませんし、たとえそれが何かを傷つけていない場合でもそうかもしれません。しかし、コントローラーが原因でシステムが不安定になった場合、壊滅的な結果を招く可能性のある多くのシステムがあります。Z変換は、問題があるかどうかを識別するのがはるかに簡単な別の場所です。

そして最後のメモ。システム全体を分析する場合、システム内のすべてのコンポーネントの方程式を取得する必要があります。確かに、PhDなしのPIDから取得できますが、既にZ変換メソッドでそれを使用している場合は、やり直す必要のある作業がはるかに少なくなります。

現在、個人的な好みとして、私は常にPID w / oa PhDメソッドを使用しています。これは、コントローラーにひどく依存していないシステムでマイクロコントローラーを使用しているからです。


2

Z変換形式の有用性が高い理由はいくつかあります。

時間ベース/シンプル/ sans-PHDアプローチを推進している人に、Kd用語の設定を尋ねてください。彼らは「ゼロ」と答える可能性が高く、Dは不安定であると言う可能性があります(ローパスフィルターなし)。このすべてがどのように結びつくかを学ぶ前に、私はそのようなことをして、言ったでしょう。

Kdの調整は時間領域では困難です。伝達関数(PIDサブシステムのZ変換)を見ると、その安定性がすぐにわかります。また、D項が他のパラメーターと比較してコントローラーにどのように影響するかがすぐにわかります。Kdパラメーターが0.00001をz多項式係数に寄与しているが、Ki項が10.5になっている場合、D項は小さすぎてシステムに実際の影響を与えません。KpとKiの条件のバランスも確認できます。

DSPは、有限差分方程式(FDE)を計算するように設計されています。これらには、1命令サイクルで係数を乗算し、合計してアキュムレータに加算し、バッファ内の値をシフトするオペコードがあります。これは、FDEの並列性を活用します。マシンにこのオペコードがない場合... DSPではありません。Embedded PowerPC(MPC)には、FDEの計算専用のペリフェラルがあります(デシメーションユニットと呼ばれます)。DSPは、伝達関数をFDEに変換するのは簡単なので、FDEを計算するように設計されています。16ビットは、係数を簡単に量子化するのに十分なダイナミックレンジではありません。多くの初期のDSPには、この理由で実際に24ビットワードがありました(今日では32ビットワードが一般的だと思います)。

IIRC、いわゆる双線形変換は、伝達関数(時間領域コントローラーのz変換)を取り、それをFDEに変換します。それが「ハード」であることを証明し、それを使用して結果を得るのは簡単です-必要なのは拡張形式(すべてを乗算)で、多項式係数はFDE係数です。

PIコントローラーは優れたアプローチではありません-より良いアプローチは、システムの動作のモデルを構築し、エラー修正にPIDを使用することです。モデルはシンプルで、あなたがしていることの基本的な物理に基づいている必要があります。これは、制御ブロックへのフィードフォワードです。PIDブロックは、制御下のシステムからのフィードバックを使用してエラーを修正します。

正規化された値[-1 .. 1]または[0 ... 1]を設定点(参照)、フィードバック、およびフィードフォワードに使用する場合、1つの2極2ゼロアルゴリズムを実装できます。 DSPアセンブリを最適化し、それを使用して、PIDおよび最も基本的なローパス(またはハイパス)フィルターを含む2次フィルターを実装できます。これがDSPに正規化された値を推定するオペコードがある理由です。たとえば、範囲(0..1)の逆平方根の推定値を出力するオペコードです。2つの2p2zフィルターを直列に配置して4p4zフィルターを作成できます。これにより、 2p2z DSPコードを活用して、たとえば4タップのローパスバタワースフィルターを実装します。

ほとんどの時間領域の実装では、dt項をPIDパラメーター(Kp / Ki / Kd)に焼き付けます。ほとんどのzドメインの実装にはありません。dtはKp、Ki、およびKdをとる方程式に入れられ、それらをa []およびb []係数に変換するため、PIDコントローラーのキャリブレーション(調整)は制御速度に依存しなくなります。それを10倍高速に実行し、a []&b []演算を実行すると、PIDコントローラーのパフォーマンスが安定します。

FDEを使用する自然な結果は、アルゴリズムが暗黙的に「グリッチレス」であることです。実行中にゲイン(Kp / Ki / Kd)をオンザフライで変更できます。これは適切に動作します-時間領域の実装によっては、これが悪い場合があります。

通常、統合的な巻き上げを防ぐために、時間領域PIDコントローラーに多大な労力が費やされます。FIDフォームには、PIDを適切に動作させる簡単なトリックがあり、その値を履歴バッファーに固定できます。(Kp / Ki / Kdパラメーターに関して)これがフィルターの動作にどのように影響するかを確認するための計算は行っていませんが、経験的な結果は「スムーズ」です。これは、FDEフォームの「グリッチのない」性質を利用しています。フィードフォワードモデルは積分ワインドアップの防止に貢献し、D項の使用はI項のバランスをとるのに役立ちます。PIDは、Dゲインでは意図したとおりに機能しません。(過剰な巻き上げを防ぐためのもう1つの重要な機能は、セットポイントの回転です。)

最後に、Z変換は「Ph.D」ではなく学部生のトピックです。複雑な分析でそれらのすべてについて学んだはずです。これはあなたが行く大学、あなたが持っているインストラクター、そしてあなたが数学を学び、利用可能なツールを使用する方法を学ぶことに注ぐ努力は、産業界で実行する能力に大きな違いをもたらすことができます。(私の複雑な分析クラスは恐ろしいものでした。)

デファクトインダストリーツールはSimulink(コンピューター代数システムCASがないため、一般的な方程式を作成するには別のツールが必要です)。MathCADまたはwxMaximaは、PCで使用できるシンボリックソルバーであり、TI-92計算機を使用してそれを行う方法を学びました。TI-89にもCASシステムがあると思います。

PIDおよびローパスフィルターについては、ウィキペディアでzドメインまたはラプラスドメインの方程式を検索できます。ここに私が理解できないステップがあります。PIDコントローラーの離散時間ドメイン形式が必要であり、それからz変換を行う必要があると思います。ラプラス変換はz変換と非常によく似ていて、PID {s} = Kp + Ki / s + Kd・sとして与えられます。z変換は次の式でDtをよりよく説明すると思います。Dtはdelta-t [ime]です。この定数を微分 'dt'と混同しないようにDtを使用します。

b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt

a[1] = -1
a[2] = 0

そして、これは2p2z FDEです。

y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]

DSPには通常、乗算と加算(乗算と減算ではない)のみが含まれていたため、a []係数に否定がロールバックされることがあります。極を増やすにはbを追加し、ゼロを増やすにはaを追加します。


1

一般にZ変換メソッドを使用することをお勧めします。これにより、同等のアナログシステムの正確な動作を維持できるためです。Ziegler-Nicholsのようなよく知られたチューニング方法があります。これは、公開されたとおりにアナログ領域で動作します。Z変換メソッドを使用する場合、P、I、Dゲインの同じ値に対して、結果のコントローラーが同じことを行い、それらのゲインが与えられた場合、アナログドメインで行うという数学的に厳密な期待があります。さらに、システムの離散根軌跡を描画し、特定のゲインセットの安定性を予測できます。これは、コード内でアドホックコントローラーを直接作成した場合は不可能です。

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