« 新型MG995が到着 | メイン | フリースケールのマイコンMC9S08QG8/QG4に日本語版データ・シートが »

2007年05月08日

制御理論の勉強中...

制御理論は、20数年前に授業で習ったのですが、仕事ではパルスモータやACサーボモータなどを使っているので、制御理論を使うことはありませんでした。ですので、習っておきながら全く身についてません。
検索したところこんな資料が見つかったので、理解してみようと読み進めてます。

でも、やっぱり微分Dのところが感覚的に理解できないでいます。
PID制御に関して同様の解説があるPIC本で有名な後閑さんのページを見ると、Dの項は、目標位置に速く動かすための項とある。(ある意味オーバーシュートさせるための項ともいえるかもしれません)

でも、目標と現在位置の差というのは、目標に近づけば減っていくわけで、目標と現在位置の差の微分はマイナスの値を取ります。制御量にマイナスの値が入ると、目標に速く近づけたりオーバーシュートぎみにしたりなんかとは、逆の効果になるとしか思えません。

うーん。やっぱり杉浦登さんのロボマガの連載にもあるように octave を入れてシミュレーションで理解するしかないのでしょうか。

投稿者 hiranoy : 2007年05月08日 23:50

コメント

平野さん、こんにちは。

微分Dは、スピードを抑える効果があります。

制御周期にもよりますが、周期が早ければ早いほどA/Dの変化は少ないためDがPを超えることはありません。
目標値付近になればPの制御量も減少し、スピードも落ちているのでA/Dの変化量も少なくなり、Dの計算結果も減少するという感じになります。

あとは係数の調整次第ではありますが、PやPIよりも、PDの方が目標値付近まで到達しやすく、オーバーシュートや発散などが発生しにくいのでお勧めです。

例えば・・・
目標値180°、現在の値110°、前回の値100°
(目標値-現在の位置) - (目標値-前回の位置)
= 70 - 80 = -10

PDの場合
kp x 70 + kd x (-10)
(あくまでも角度の話なので、実際はこの結果をモーターの制御量に変えないといけません。)

長々とすみません。m(_ _)m
それでは、失礼いたします。

投稿者 u-hirohito : 2007年05月09日 16:04

Dには振動を抑える効果がある,というのをどこかで見たような気がします.
例えば,PIだけでも制御できるが,実際は係数が悪いと発振してしまう,これを抑えるのにDで発振を検出して補正を加える,
と考えることもできます.間違っていたらごめんなさい.

投稿者 k_com : 2007年05月09日 19:19

こんばんは えまのんです
微分の成分は、指令値が変わったり、外乱で出力の値が変化した瞬間、現在より偏差が大きくなって一瞬だけ大きな操作量を出すことになります

オーバシュートして偏差の+-が変わったときも操作量を大きくします
微分の係数を大きくすると目標値を境に発振する恐れがあり、いつまでも収束しないこともあります

投稿者 えまのん : 2007年05月10日 08:19

u-hirohitoさん、k_comさん、えまのんさん、コメントありがとうございます。
Dは、急激な変動の抑制方向に働くようですね。資料の読み方がまずかったようです。
いろいろ係数を変えての実験は週末にやってみます。
ご助言ありがとうございました。

投稿者 平野 : 2007年05月11日 02:22

コメントしてください




保存しますか?