12-17-2020 05:19 AM
最近LabVIEWを勉強し始めた初学者です。
勉強の一環でLabVIEWに本来あるPID制御器のviではなく、自分でPIDの式から作ることは出来ないかと思いviを製作しました。目標角を与えた場合の応答を波形チャートにより、目視できるようにしています。制御対象としてサンプルviにありましたPlantSystem.viを用いて、1次遅れむだ時間のゲイン2.5、時定数1.5、むだ時間0.3(数値は適当に選択しました)とした対象の制御を行いました。このときCHR法のオーバーシュート0%における式を用いてPID制御器のそれぞれのゲインを決定しました。(Kp=1.19,Ki=0.79,Kd=0.17)
これを用いて制御を行ったときに波形が発散してしまい収束しませんでした。
自分なりに原因を探してみたのですが、見つけることが出来なかったので質問させていただきました。
自身で作ったものとPlantSystem.viを添付しました。
何が間違っているか、ご教授いただけますと幸いです。
よろしくお願い致します。
解決済! 解決策の投稿を見る。
12-18-2020 02:19 AM
nitoro77さん こんにちは、
PID制御の知識はあまりないのですが、参考になればと思い返信します。
Plant System.viの制御例としてはイグザンプルのSimulation - Tank Level.viがシンプルでよいと思いました。まずSimulation - Tank Level.viの動作を確認して、nitoro77さんの期待する動作をするかどうかチェックしたら良いのではないかと思います。
良い感じであれば、このVIで使われている”PID Advanced.vi”をご自身で作ったサブVIに置き換えて同じ動作になるかどうか調べるのが良いのではないでしょうか。
[Kp=1.19,Ki=0.79,Kd=0.17]でPlant System.viを制御したときに、どんな挙動になるかよく分からなかったので、イグザンプルのSimulation - Tank Level.viで動かしてみました。
(Kc,Ti,Tdへの変換が正しいかどうか自信はないのですが、、、、)
Simulation - Tank Level.viが拠り所になるようであれば、nitoro77さん独自のプログラム作成も進むのではないでしょうか。
NIのドキュメントで参考になりそうなもの。
12-18-2020 04:17 AM
おおはしさん
ご回答ありがとうございます。Simulation - Tank Level.viで動作確認してみます。
LabVIEWとは別でMATLABの方で同一のパラメータで確認したところ、目標角に収束したので制御器に問題があることは分かっているのですが、原因が不明という形です。
一応、目標角10としたときの制御器の応答をエクセルファイルにて添付致します。
12-18-2020 06:15 AM
最後に送ってもらったVIは私のところでは10に収束しています。
見やすいようにグラフだけ追加しましたが、処理には手を加えていません。
2020版で添付しますがバージョンが違って開けなかったら連絡ください。
なんでだろう。
12-18-2020 08:36 PM
おおはしさん
検証ありがとうございます。送って頂いたviを起動してみたところ収束しました。
しかし、Plantsystem.viのパラメータが自分が収束したときだとK=2.5,T=2.5,L=0.01でした。一番始めに検証していたK=2.5,T=1.5,L=0.3でもう一度試したところ、やはり発散してしまいました。
一旦、PIDの勉強を始めからやり直してみます。
12-21-2020 08:47 PM
nitoro77さん
状況を理解するまでに時間がかかってしまいましたが、最初に添付されたVIを整理してみたところ積分計算のところでサンプリング周期を乗算していないのが不具合の原因のように思います。
いかがでしょうか?
12-22-2020 01:08 AM
おおはしさん
viを修正したところ、収束しました。
お手を煩わしてしまい申し訳ありません。
本当にありがとうございました。