• 締切済み

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

油圧モータを電流比例弁を介して目標回転数に合わせこむ ソフトを検討しております 制御はPID制御を使います PID制御の書籍を何冊か見ましたがブロック線図の説明止まりで 具体的な計算式やプログラミングまで落とし込んだ書籍が見当たりません。 PID制御は各方面で使われており、ハッキリ言ってしまえば 定石のプログラミングも存在していると思います どなたかご教示お願いいたします 特に積分 微分のPGM計算式への展開の仕方がわかりません ----------------------------------------- コントローラはH8マイコン PGM言語はCです モータの回転数を回転センサ→fv変換→電圧入力しています コントローラ電流→ 制御弁油圧出力 → 油圧モータ回転 制御周期は1秒を予定しています

  • OTL-
  • お礼率39% (56/143)
  • 科学
  • 回答数1
  • ありがとう数4

みんなの回答

noname#198419
noname#198419
回答No.1

ブロック線図の四角いブロックに書き込むべきデバイスはどれも個々のゲインつまり相関式を微分した関数を持っているはずです。 それで、系の操作をはじめると、時間に対して系全体のゲインに比例して出力が積分されてゆく。 といったイメージがアレゲなところではないかと。 余計なことを言うと、スリット式の回転センサや、モータブラシの電流パルスから回転数を知ろうとするばあいに、パルスはマイコンで直接扱えるのでfv変換は不要にできる場合があります。 系の安定性とか応答性の評価につきましては、ナイキスト判定の極座標平面の虚数軸0実数軸マイナスとなる角速度のところで、最適化された系は実数軸-1をとおる螺旋になります。でも、0から-1までが安定で、-1が拡散と安定の臨界で、螺旋が-1より外側(小さい値)をとおると拡散してしまいます。

OTL-
質問者

お礼

ご回答ありがとうございます ご回答の文章を式に展開するところがわからいんですが、、 過去の質問に似たような質問が載っており、見ましたが内容が不明で 理解できませんでした  http://oshiete1.goo.ne.jp/qa2989145.html 同ページの中で ki=kp/Ti , kd=kp*Td ですので、  (Ti=積分時間、td=サンプル時間) n=Ti/Td  (n=サンプル回数) として、 ei= Σe/n (ei=積分時間あたりの偏差の平均) ed= en - en-1 (ed=前回偏差と今回偏差の差) とし、 M= kp*( en + ei + ed ) と、操作量を決めてあげました。 と説明がありますがこれが理解できれば自分の問題も解決するのでは 考えています この中でわからないのが下記です ”ki=kp/Ti , kd=kp*Td ですので・・・” これですと ki kd はkpで決まり独立パラメータにならないのでは と思いますが・・  本当は当人に聞いてみたいですけど回答も古く期待できませんので お分かりならご教示をお願いします

関連するQ&A

  • PID制御について。

    制御においてPID制御というのがあるのですが、それらの調整法を教えていただきたいです。 ちなみにPID制御のPは比例動作、Iは積分動作、Dは微分動作です。 ブロック線図で入力と出力の計算をして、実際にコンピュータをつかってDCモータに出力を与えていました。

  • 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制御をあるプラントに対して施したときに、I、Dの制御に必要な、状態量の積分量、微分量は、普通コントローラの中でもとの量から積分したり微分したりして数値計算で求めてるものなのでしょうか?それともそれを測定するセンサによって得られるものなのでしょうか? 要するに、たとえば位置を制御するためにPID制御を採用したとき、、って考えるとやっぱり計算でだしてるんですかね。(位置の積分量を計るセンサって意味わかんないし、速度センサって意外となさそう。。) 実際の現場で使用されているPIDコントローラがどうなっているのかが知りたいです。どなたか詳しい方、回答していただけると幸いです。

  • インバーター、モータのPID制御について

    インバータ、モータのPID制御につきまして、おしえてください。 初心者のため、的外れや、間違いあるかもしれませんが、その場合はご指摘頂ければ幸いです。 1)ステッピングモータを用いたバルブと流量センサで、流量のPID制御を行いたいと考えて います。流量センサの信号をマイコンにフィードバックさせ、目標値(目標流量)と流量センサ の測定値が同じとなるように、制御する予定です。。。予定というかPID制御したいと思っています。 この場合、ステッピングモータの操作量は何になるのでしょうか?速度でしょうか? PID制御は目標値と測定値から偏差を求めて操作量を変化させ動かすことは知っていますが、 この場合は、偏差が大きいときは、速度を速く、小さいときは速度を遅くして制御するという 認識で宜しいのでしょうか? 2)上記は流量センサをフィードバックしますが、DCモータ等では、ポテンショメータ等で位置 をフィードバックし目標開度とポテンショメータ測定開度が同じとなるように、制御する手法も あると思います。 この場合、PID制御の操作量は何になるのでしょうか。またこの操作量は変化するのでしょうか? 目標開度とポテンショメータ位置が同じになるようにモータを回すだけだと思うので、操作量 の変化というもの自体がないと思うのですが(モータを回すか回さないかのみ??)、、、、 特にステッピングモータでポテンショをフィードバック制御した場合は、指定開度でピッタシ止まる ので、操作量変化はないように思います。PID制御は偏差に応じて操作量が変化するものと思い ますが、上記のような制御は(特にステッピングモータを用いて測定値をフィードバックし制御する 方法)PID制御とは言わないのでしょうか? またインターネットで、位置型PID、速度型PIDがあることを知りましたが、どういったものか教えて 頂けないでしょうか? 3)インバータにもPID制御があると思います。その場合は回転数を制御しているものと思います。 例えばですが、流量センサをフィードバックし、目標流量と同じとなるようにポンプ周波数をPID 制御するとします。 その場合の目標流量=測定流量となるまでの周波数変化はどのようになるのでしょうか? 動き始めは、目標流量>測定流量(フィードバック値)が大きく、(例えば)100Hzとしたら、 目標流量と測定流量が近くなるにつれて、周波数はさがっていくという認識で宜しいでしょうか? (75Hz・・・50Hzといった感じに) そして、同じとなった周波数で回転数変化停止ということで宜しいでしょうか? 今一、ピンときていないのですが、目標流量と測定流量が近くなったとしても、まだ目標流量>測定流量が成り立っている場合に、周波数をさげてしまうと、逆に目標値と測定流量の差は大きく なるものではないかとイメージ的に考えてしまうのですが。。。。動きはじめ100HZで動かしている にも関わらず目標流量に到達していないところを周波数をさげてもよいのでしょうか? 的外れなことが多々あると思いますが、よろしくお願いいたします。

  • 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制御について

    色々な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*/

  • DCモータのトルク制御とは?

    DCモータの回転数を制御する場合、モータに印加する電圧の大きさを調整しますよね。 DCモータのトルクを制御する場合は、何を調整しているのでしょうか? もちろん、トルクの大きさを変えるということは電流の大きさを変えるということだと思いますが、電流の大きさはどうやって変えるのでしょうか?電流の大きさというのは、モータに掛かる負荷によって決定されてしまうのではないのでしょうか? 一定の負荷が掛かる負荷器にDCモータを繋いでトルク(電流値)を制御する場合、その電流の大きさはどのようにして調整されるのでしょうか?

  • DCモータのPWM制御について

    DCモータのPWM制御について 会社の課題で、DCモータ(5W程度)の回転数をPWM制御によってコントロールするという物が出ました。 また、制御の条件として (1)ボリューム等によって回転数を0から最大まで可変できること。 (2)正転、逆転ができること。 (3)回転速度の補償をすること(回転数フィードバックあり) 上記以外の仕様は自由。マイコンの使用はOK、ただし市販キットによる代用は不可。 というようになっています。 当方は電気系の学科を卒業していますが、電子工作の経験はあまりありません。 なので1から勉強しなおしたいので、上記の制御について詳しく書かれている書籍・サイトをお教え 願えないでしょうか。(できれば回路図まで載っているものを) 電子工作をする上でのアドバイスも歓迎します。 特に(3)に関しての情報が欲しいです。タコジェネレータとPID制御を用いればよさそうなことはわかりますが・・・。

  • 単相100Vモータのインバータ制御について

    無知なんですが、皆さん教えて下さい。 単相100Vインダクションモータをインバータ制御しようと 思っているのですが、その時、必要回転数の周波数に設定した時の 電流値を測定したいです。(モータの負荷状態を知りたいため) メーカーからは周波数で回転数を制御しているため、電流値を測定しても インバータとモータの間(二次側)の電流値は一時側とほとんど変わりが ないので測定しても意味が無いと言われました。 設定回転数まではトルクが上がり、電流値も上がると思うのですが、 なぜ電流値があまり変わらないのでしょうか? また、上記に関連して・・・・ ・周波数と電流値の関係を教えて下さい。 ・また、電流値を測定し、そのデータをパソコンに取り込む方法も ご教授下さい。宜しくお願い致します。

  • モータのベクトル制御について

    今晩は、 モータのベクトル制御について、教えて下さい。 1、 ベクトル制御の原理は、「電流位相」を制御して行う。すなわち励磁電流を一定にして、変動するトルクに合わせて、トルク電流を変えることと理解しております。すなわち、「電流」を制御する。 2、 一方、実際には、モータを制御するのは、電圧型インバータであり、インバータ出力の「電圧振幅」「電圧周波数」「電圧位相」を調整して、目的の回転速度、トルクに制御しているはずです。 原理は、「電流」位相を制御するはずなのに、実際はインバータの「電圧」を変化させてモータを制御している。この溝は、どのようにして埋まっているのでしょうか?また上記の考え方で間違いがあれば、訂正願います。