5

I can build a PID controller in the Haskell FRP library netwire using loop from the ArrowLoop instance provided for Wires.

I can also implement switching between controllers or between a controller and a manual input using switch.

How can I implement bumpless transfer, for example using the "tracking" strategy explained here (or in any number of control engineering articles/books)? Another strategy might be acceptable if it has good performance, but the tracking approach is appealing for my application because it also address anti-windup.

I'm having trouble squinting at the block diagram hard enough to make it look like the type of two (or one?) loop applications.

4

1 に答える 1

2

loop各ダイアグラムには 2 つの があります。すべての入力がすべての要素の同じ側に入り、すべての出力が同じ他の側から出て、可能であれば線の交差を最小限に抑えるように、ダイアグラムを再描画するループを見つけるときに役立ちます。これらの図では、入力は要素の下、左、または上から入り、出力は右から出ます。

システム全体には 1 つloopの があり、エラー比較のためにプロセスの出力を減算に送ります。

全体的な PID プロセス

制御システムには 1 つloopの があり、コントローラー (PID コントローラーまたは手動制御) の選択後に最終的な制御出力を追跡 PID コントローラーに送ります。全体的な出力は、右端の出力です。

手動でオーバーライドされた PID コントローラー

トラッキング PID コントローラーには 2 つloopの があります。1 つは導関数のフィードバック ループです。派生物のloopは、別のコンポーネント内で消える可能性があります。もう 1 つloopは、PID コントローラーの出力を、PID コントローラーの出力と実際にプロセスを制御する制御出力との比較にフィードバックします。P、D、および I 分岐の順序は、この図では交差を削除するために異なることに注意してください。

トラッキング PID コントローラー

追跡 PID コントローラーに独自の出力が追跡に接続されている場合、最初の減算との差は 0 になり、積分分岐は 0 の追加によって変更されないことに注意してください。

于 2014-07-24T16:59:46.333 に答える