PID制御についての質問

このQ&Aのポイント
  • PID制御についての友人のプログラムと自分のプログラムで動きが違う
  • 友人のプログラムのkp,ki,kdを自分のプログラムに入れたが動きが変化しない
  • PID制御の計算式を説明してもらいたい
回答を見る
  • ベストアンサー

PID制御について

色々なHP等を見て分かりやすくPID制御プログラムを組み モータを駆動しているのですが友人も違った式でPID制御を実現して おり実現したプログラムのkp,ki,kdをこちらのkp,ki,kdに入れて見た所 どうも違った動きをしており不安になったので質問させていただきました。 よろしければご教授ください。 //// 各成分の計算 //// // Pパラメータ // iP = Kp * def; /* 定数 * 偏差値 */ // Iパラメータ // iI = Ki * def_inte; /* 定数 * 偏差累積値 */ // Dパラメータ // iD = Kd * (def - def_before); /* 定数 * 今回の偏差-前回の偏差 */ iRet = iP + iI + iD;    /*iRet = 出力duty*/

noname#230109
noname#230109

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

コメントが正しければ、合ってますよ。 ただし、 I成分とD成分を偏差からどう求めるか (どの程度のサンプリングで行うか)は、 設計者によって異なるかもしれません。

noname#230109
質問者

お礼

早速コメントありがとうございます。 正しいのですね。よかったです。安心しました。 もしかしたら相手のほうに問題があるのかもしれませんね。確認してみます。

関連するQ&A

  • PID制御のプログラミング2

    先ほど、PID制御のプログラミングについて質問したのですが、もう少しわからないところがあるので教えてください。 1.ステップ応答から各パラメータを求める方法   http://www.picfun.com/motor05.htmlのページの一番下のほうに書かれており、   Kiの値=0.6~0.7/KL、Kdの値=0.3~0.45T/Kとなっています。   このLとTの単位は[sec]と考えていいのでしょうか。   KpはLとTで打ち消されて、単位を考える必要ないですが、KiとKdは単位により結果が違います。 2.サンプリングデータにより制御する場合のサンプリング時間について上記アドレスにPID制御のアルゴリズムの説明があるのですが、   サンプリング時間が考慮されていません。   サンプリング時間により前回の偏差との差や、積分の場合足しこむ回数が違ってくると思うのですが、どのように補正すればよいですか。   このときも単位を1[sec]秒として補正すればよいでしょうか。

  • PID制御と伝達関数についてです

    PID制御の伝達関数と応答についてです。 PID制御の伝達関数K(s)=Kds+Kp+Ki/sとしたとき Kp=0.1,Kd=Ki=0の比例動作を考えます。 この比例動作におけるステップ応答が下の図のようになる理由が分かりません。 K(s)=Kpにおいて K(s)*1/sのフィードバックを考え (K(s)*1/s)/(1+K(s)*1/s)として逆ラプラス変換をしても この図のようにはならないと思うんですけど。

  • PID制御のプログラミング

    実際にPID制御のプログラミングを使用とした場合、サンプリングした離散データを元に制御を行うことになりますが、以下のページの説明ではやり方が異なるようです。どちらが正しいのでしょうか。 1.http://www.picfun.com/motor05.html   ΔMVn = Kp(en-en-1) + Ki en + Kd((en-en-1) - (en-1-en-2))   MVn、MVn-1:今回、前回操作量  ΔMVn:今回操作量差分   en,en-1,en-2:今回、前回、前々回の偏差 2.http://www.mech.utsunomiya-u.ac.jp/ozaki/education/kikaijyoho-2000/sec1.html   p=e   i=i+e   d=e-e1   y=Kp(p+Ki×i+Kd×d)

  • ペルチェ素子によるPID制御のときの比例ゲイン

    ペルチェ素子を用いて温度制御をしようと考えています。 ペルチェ素子は電流の方向を切り換えることで加熱・冷却を切り換えることが出来ますので、それを用いる予定です。 そこでふと気になったのですが、ペルチェ素子は冷却に比べて (通電によるジュール熱のため) 加熱の出力が大きいです。 そうすると、偏差が+1℃あったときの冷却出力と、偏差が-1℃あったときの加熱出力では、出力のエネルギーが異なります。 この場合、どうすれば良いのか、どのように行うのが一般的なのか、よくわかっていません。 とりあえず、いくつか考えました。 案1: 比例ゲインを2つ用意する 加熱用の比例ゲイン Kp_warm と、冷却用の比例ゲイン Kp_cool を用意し、 ・SV > PV のとき、MV = Kp_warm * (e + Σe/Ti + Δe*Td ) ・SV < PV のとき、MV = Kp_cool * (e + Σe/Ti + Δe*Td ) ・ΔMV = MV(n) - MV(n - 1) で計算する。 (なお、MV > 0 のときが加熱出力、MV < 0 のときは冷却出力、としています) 案2: 比例ゲイン1 (偏差だけ) で計算し、出力時に比例ゲインをかける 比例ゲイン Kp = 1 とし、 ・MV = 1 * (e + Σe/Ti + Δe*Td ) ・ΔMV = MV(n) - MV(n - 1) で計算し、操作出力段階で ・MV > 0 のとき、MV * Kp_warm ・MV < 0 のとき、MV * Kp_cool を出力する 案3: 制御上は別々のものとして制御する ペルチェモジュールなので、加熱と冷却を同時に出力出来るわけではないが、加熱出力と冷却出力があるものとし、 ・加熱用PID制御 (PIDw) と冷却用PID制御 (PIDc) を用意する ・それぞれでPID計算し、それぞれの操作出力を足し合わせ、最終的な操作出力とする 質問ですが、これらのうち、どれが一般的でしょうか?それとも、別の考え方があるのでしょうか? どうぞよろしくお願いします。

  • 制御 定常偏差について

    制御工学が非常に苦手なのでご教授願います。 PD制御のフィードバック制御系に、単位ステップ入力を与えた時の定常偏差を、求めて下さい。この時のPゲインKpは10,IゲインKiは10です。おそらく最終値の定理を用いて求めると思うのですがわかりません。 質問の文章が正しいか自信ありませんがよろしくお願いします。途中計算を入れてくださると嬉しいです。

  • I-P制御について

    PID制御に関して、特にIP制御について勉強中なのですが、 PI制御式 : y=Kp(e+1/Ti∫e dt)+bo とした場合、同じ形でI-P制御式を表現すると どのようになるのでしょうか? 伝達関数を使わずに表現したいのですが…? 意味が分からなかったらすみません。 IP制御を調べているのですが、 伝達関数の話ばかりが出てきてしまって 混乱してしまったので…。 よろしくお願いします。

  • フィードバック制御

    図Iのようなフィードバック制御系に単位ステップ入力を印加したとき、図IIのような定常偏差が残る応答を示した。この系に補償要素を追加したとき、任意の大きさのステップ入力に対する定常偏差がなくなるものはどれか。 系は、安定な範囲であるものとし、K1、K2はそれぞれ有限な非ぜろの定数とする。

  • エネ管の制御の問題がなんか変です

    エネルギー管理士の熱利用設備及びその管理の問題でわからないがあります。 PID制御、フィードバック制御、P動作のみのオフセット偏差の問題です。 設定値70℃、比例ゲイン4、偏差0バイアス50% スパン100℃ 出力70%でバランス、 出力=比例ゲイン×偏差+バイアス の時の偏差は? 70=4×偏差+50→偏差5℃だそうです。 別の問題2019問12で 設定値75℃、比例帯PB50%、偏差0バイアス50% スパン150℃ 出力60%でバランス、 出力=100/PB×偏差+バイアス の時の偏差は? 60=100/50 ×偏差+50→偏差5℃では答え❌ だそうです。なんで? 問題に与えられた条件で解くと、正しいはずですがダメみたいです。 なんかスパン150℃と比例帯50%でスパンの読み替え?75℃として比例直線の範囲が決まるみたいな図が載ってました。 そうすると、偏差は7.5℃になるみたいです。 なんかおかしいです。 比例ゲインKp=100/PBであってますよね? %のまま代入したりなんかおかしいかなーっと思うんですが、一つの問題では、それで正解、片方では不正解になってます。テキストが間違ってるのでは?

  • PI制御と位相進み補償について

    (カテゴリ間違えて投稿してしまって、かつ以前に書き込んだものを消す方法が分からないので、他のところと重複してます。すいません。) 今演算ソフトを使ってDCモータの制御シミュレーションやってます。 ブロック線図とか書いて、PI制御と位相進み補償を適用しようと思ってます。 http://pict.or.tp/img/19503.png DCモータの等価回路:画像(1)、(2) (誘起電圧定数ke=トルク定数kt、モータの角速度ω(t)) から求めた入力電圧から角速度の伝達関数は、 Ω/V = kt/(LJs^2 + RJs + kt^2) (ここで、R=5Ω、L=10mH、kt=1/π[V/(rad/sec)]、J=1×10^-4kgm^2) になると思います。 画像(3)はPI制御を適用した図、画像(4)は(3)に位相進み補償を適用した図です。 (1)このとき、PI制御の比例ゲインKpと積分時定数Tiは、どのような値になるか教えていただきたいです・・・。 自分なりにやってみたら、Kp=0.5、Ti=0.005になりました。 この際、減衰係数ζ=0.8、固有角周波数ωn=318でした。 自分もよく分かってない状態ですが、固有角周波数はコレ大きいですか? ちなみにそのときの位相余裕は51degくらいでした。 (2)あと、位相進み補償のパラメータ(K,T,α)はまったくよく分かりません…。 手順は調べたんですが、肝心のKとゲイン交差周波数の設定の仕方が分かりませんでした。 結局K=1にして他のパラメータを求めました。 この際、位相余裕が60degくらいにしようとして、59.3くらいでした。 (位相進み補償を入れなくても十分安定してますが、そういう課題なので・・・汗) もし、これらが詳しく記されているサイト等があったら、そちらもお願いします・・・。

  • フィードバック制御においての「追従誤差」とは?

    フィードバック制御においての「追従誤差」とは 正確に何でしょうか 例えば以下の図の場合は、 まずrからyの伝達関数を求めると E=R - KdY Y=Gc(s)KpE=Gc(s)Kp(R -KdY) rからy伝達関数 Y/R=GcKp/(1+KdGcKp) Y=R*GcKp/(1+KdGcKp) ここで「追従誤差」を求めなさいっていうことは (1)単に偏差の定義? から 「偏差e=目標値r - 出力値y」 に基づいて、 E = R-Y にY=R*GcKp/(1+KdGcKp)を代入 E = R-Y = R-R*GcKp/(1+KdGcKp) = R*(1+KdGcKp-GcKp)/(1+KdGcKp) でこれを逆ラプラス変換しe(t)を求める。 (2)図で、設定したところのeがそのまま「追従偏差」のことになり 「偏差e=目標値r-Kd*出力値y」になって E = R-KdY E = R-KdY = R-Kd*R*GcKp/(1+KdGcKp) = 1/(1+KdGcKp) でこれを逆ラプラス変換しe(t)を求める。 (1)より(2)の方が式が奇麗なので(2)が正しくてほしいですが、 どうやら自分がネットと本で調べたところ、(2)の意見も居つつ、ある本では(1)が合ってるという本もあったので…困っています 誰かはっきりさせて欲しいです・・・ 助けてください。宜しくお願いします

専門家に質問してみよう