今日も引き続き制御アルゴリズムを変えてモータを回す。今日は位置→速度のP-PI制御を試す。このような制御はカスケード(「滝」の意味)制御とも呼ばれる。位置のPIDと違うのは,位置偏差の制御量が次の速度偏差の入力量になるという2段階の制御になるところ。このような多重ループにするかというと,モータの速度は位置に比べ変化が速いため,速度をマイナーループとして制御すると見かけのモータ応答が高速化される効果が期待できるため。追従に一定の遅れ(定常偏差)を生じているが,速度が急激に変化する部分でのオーバーシュートが位置のみの制御に比べ抑えられている。P-PI制御はステップ応答では定常偏差はゼロになる。よってこの制御則では「途中の軌跡は多少アバウトでも良いから速くてオーバーシュートのない収束が欲しい!」といった用途に適していると言える。ここから少しずつアドバンストPIDの制御性能を試していこうと思う。目標値をいろいろなパタンに変化させて追従性能を見る。PIDが非常に優秀な結果を出した。次にSinカーブをだんだん速くしていった場合。途中から目標値の変化がモータの限界応答周波数を越えてどの制御でもついてこれなくなっている。注目すべきは前半の大きく指令値が変動するポイントで,ここでもI項の効果が良い結果を上げている。前回の実験では,I項を追加すると過去の偏差の積み上げがあるためなかなか制御量が変化せず目標値近傍での応答が鈍くなる感じだったのだが,意外にも目標値を連続的に変化させた場合には逆にしっかり追従するようになった。P,PDでは定常偏差が残ったまま振り回されるのが良くないのかもしれない。今日は積分項をプラスしてPID制御を試す。積分項を大きく効かせて素早く定常偏差を無くそうとすると,目標値を大きくオーバーシュートしてしまう。今回は積分制御量がDuty上限値を超えないようにクリッピングしているが,それでも一度上限まで上がってしまうとゆっくりとしか変化してこない。PIDでは定常偏差がなくなる代わりにPDほどの高速応答性は期待できない。遅くても定常偏差が許容できない場合はPIDを選択すると良さそうだ。D項,I項の実験で微分,積分操作がどう働くのか,何となく感覚がつかめてきた。今日も制御アルゴリズムをいじる。今日はPD制御を入れて収束性を比較する。P制御のみに対してDで減衰がかけられるため,Pゲインはかなり高く取ってもオーバーシュートしない。今回の実験システムはエンコーダ分解能が低いのでDを入れるのは苦しいと読んでいたが,意外に良い収束を見せた。グラフは振動が発生し始める直前まで追い込んでみたところ。ほとんどバンバン制御に近いところまで来た。今日からいろいろな制御則を試し始める。モータのように制御入力が飽和する系で最短収束を得ようとすると,最初にフル加速(正の最大Duty入力)し,あるタイミングでフルに減速(負の最大Duty入力)して停止させると良い。これをバンバン(Bang-Bang)制御という。どこで逆転に切り換えるかが問題だが,今回はリファレンス取りが目的なので適当に目視で合わせ込んだ。前回のP制御と比較すると以下のようになった。それなりにチューニングしたP制御と比べると60msecの収束時間の差となった。制御よりも早く収束させることは理論上不可能なので,今後はこれを理想の状態としてこの収束具合にどれだけ近づけられるか試していきたい。休日は本をまとめ読みしてその中でアドバンストPID制御に関する本がおもしろかった。そこで自分でも実験をしてみるべく田宮のギヤードモータモータを引っ張り出した。あり合わせのdsPICボードに東芝TB6549FPを刺し,モータの出力軸にてきとうなインクリメンタルエンコーダをつけて準備完了。モータドライバの性能を見るためにPWMと回転数の関係を測る。低速の動き出しがひどく重たいが,まぁ出力はだいたい比例しているので良しとしよう。TB6549FPはHブリッジが全N-CH-MOSタイプで構成されていて100kHzまでの電流連続型PWMが可能だ。次は単純な比例制御でステップ応答を見る。無負荷でもモータ自身のイナーシャが大きい。イナーシャが大きく制御しにくい対象の方が制御アルゴリズムの効果を見るには都合が良いのではないだろうかと思う。このP制御のみの特性がどのくらい良くなるのかいろいろなアルゴリズムを試していこうと思う。(08/01)新適当マイコン電子工作研究所:知能ロボットコンテスト・フェスティバル2009を見てきました。