ブログトップ

電子工作やってみたよ

カテゴリ:PID制御 オートチューニング( 2 )

フィードバック制御の動作をパソコン上でシュミレートするには制御対象の応答特性が数式化されていないと出来ません。
先日書いたブログ ”PID制御 オートチューニングとシュミレーション”を出したあと気づいたのですが、この時やったことは、まさしく応答特性の数式化そのものですね。  あるブラックボックスに様々な入力を加えて、その時の出力を測定しておきます。 
次にブラックボックスの代わりに数式をいれ、同じ入力を入れて出力が前回と一致するように数式を設定すればその数式がブラックボックスの中身である。 何かの証明方法でこんなのありましたよね。
しかし 数式化しなくても 回路シュミレータ上でやる限りそのままですべて完了するようですね
なんか 頭が混乱してきましたが 回路図にちゃんと置き換えられるなら数式はなくてもすむということですよね

前回オートチューニングで定数を求めた電気炉の等価回路
c0335218_20364137.jpg






回路を数式化したもの、一次遅れが3個直列になっている
c0335218_20245203.jpg








以前 まったく逆のことを経験した事があります。 ある分析装置で化学反応をさせながらフィードバック制御をするというものです。 すでに量産されているものでコストダウンとCPUのワンチップ化を行いました。最後PID定数の調整になってどうしてもうまく合わないのです。化学反応に時間がかかるため一回の動作確認に3時間ほどかかります。装置の性質上 オーバーシュートは絶対許されず且つ応答時間は短くないといけないのです。
以前の装置では きれいに応答していたのですが、そのPID定数がわかりません。
プログラムを作った人はすでにこの世におらず、リストは断片的で何度見てもよくわかりません。調整のため徹夜もやりました。
そんな時 フッと思いついたのが、”うまく動いているものが目の前にあるのだからそれを測ればいいじゃないか”、 と言うことです。 PID制御回路にステップ入力を与えその時の出力を記録しました。あとは新型も同じ出力が出るようにソフトをいじればいいだけの話でした。
修正後 動作させたら一発でうまく行ったのは本当にうれしかったです。 
このPID定数自体がひとつの価値ある商品ですね。
そしてデジタルでのPID制御は再現性抜群だなと思いました。

PID回路にステップ入力を加えた時のシュミレート波形

c0335218_19020028.jpg









ステップ入力を加えた時のPID出力波形
c0335218_20251457.jpg









以上 説明べたですいませんが実際にうまくいったはなしです



by telmic-gunma | 2014-10-18 21:44 | PID制御 オートチューニング | Trackback | Comments(0)

昔 電気炉の温度制御をやっていて そのPID定数の設定に四苦八苦していました。
その後PID制御もアナログ回路からマイコンの演算でやり PID制御定数も制御機自身でオートチューニングで求めることが出来るようになりました。
いまインターネットで ”PID制御 オートチューニング” で検索するとたくさん出てきますね。
メーカーのものや大学のレポートなどみな難しい数式などでていねいに(?)説明してあり私には理解することが難しいです。

今回 回路シュミレータに置き換えてオートチューニング から PID制御まで遊んでみます。
定性的だったり現実とかけ離れた数値でやっても役に立たないので 最初は実際の電気炉をオートチューニング動作させて種データを取ります。 方法は目標温度を設定しておいてON-OFF制御を行い発信周期と温度の振れ幅を求めます。
実物電気炉は 100V 1kW 1000℃まで 熱電対はK(CA)というものを使用しました。 制御回路が何も無いので人力(じんりき)で実験をしました。  目標温度以下ではコンセントを入れ目標を超えたらコンセントを抜くという方法を何回か繰り返してデータを取りました。 
目標温度 350℃ 周期は28秒  ハンチング幅は7.5℃でした。

c0335218_21514939.jpgc0335218_21512352.jpg























c0335218_21511715.jpg



























使用した回路シュミレータはマイクロネットのサーキットビュアVer4.0を使いました。  ちょっと制約のあるものが ただでダウンロードできます。  回路シュミレータはいくつも発売されていますが これが最高だと思います。 とにかく使い方が簡単で必要な部品は必要最小限に揃っています。 ライブラリーなどの下準備に時間をとられること無くちょっと疑問に思ったことはすぐ回路図を描いて試すことができます。
電気炉の応答特性は3次遅れときめて 実際の応答に近づくように定数を変えては試すことをくりかえします。 
1000℃を10Vとしたのでハンチング幅7.5℃は0.075Vとなります。
なぜ3次遅れにしたかというと 2次遅れでは位相遅れは180度しかならず発信が持続せず現実とは合いません。 4次以上では変数が多くなって手間が大変です。 そこで横着してかつ現実的な必要最小限ということで3次遅れに当てはめてやってみました。 得られた定数は 50秒 50秒 0.5秒 でした。  これで実物の実験で得られた値にほぼ近い形になりました。  コツとしては 大きい値は2つ一緒に変えて周期を設定し 一つだけ小さい値でハンチング幅を調整するのがやりやすいように思います。

c0335218_21513957.jpg







c0335218_21513093.jpg

オートチューニング動作から得られた値からPID定数をきめます。 以下のことはあくまで私流のやり方です。 自分流のやり方を作るのがよいと思います。  
(ハンチング幅/制御機のフルスパン)*3*100 = 最適Gain
現実の値を代入してみます。
(7.5 / 1000) * 3 * 100 = 2.25
PID制御回路部の入力は 熱電対で1000℃=10V  です。  出力はヒーターパワー1000とします。  入力偏差1℃のとき出力2.2%を出すのを制御回路のGainとして上の数式を作りましたので
1/1000 かける ある値 = 2.25/100
0.001 X = 0.025 となり X=22.5  これがP定数のGainとなります。
次 積分定数はハンチング周期の半分が具合良かったので 28秒*0.5 = 14秒とします
次 微分定数は積分定数の4分の1として3.5秒としました。

以上の値入れて回路を構成したのが上記の回路図です。 オシロ画面では一番上(緑)が 目標値を0V(0℃) 1V(100度)の間で繰り返したものです。   
その次(紫)が電気炉の熱電対の出力です。  動作させてみて25%減衰でうまく動作しているのが分ります。

今回の反省点
ブログ上で回路図が小さくなって数値定数がまったく見えない またブログ上での数式の表示 いい方法ありませんか。
ヒータによる加熱はプラス方向には行くけれどマイナス方向には行かないはずなのでその条件を加味する。

この回路シュミレータ 物理や機械 政治などあらゆるものに使えるのでないですか?。
こころの問題などこんなのでシュミレートできたら面白いとおもいます。 どなたかトライしている人いますか。
ブログ作り始めて一週間 見にくくてすいませんでした。
私のやり方 おかしなところが有りましたら御意見 よろしくお願いします。




by telmic-gunma | 2014-10-09 10:19 | PID制御 オートチューニング | Trackback | Comments(5)