• 締切済み

離散化したP制御

サーボモータの速度制御をc言語で行いたいです. http://www.picfun.com/motor05.html ↑のページを参考にして以下のように考えましたが うまくいきませんでした.プログラム中の変数は, ・vel_ref:希望速度指令値 ・vel_fb :モータからのフィードバック速度 ・ref_now:モータへの速度指令値 としました.ゲインや必要な変換定数は書いてありませんが,アルゴリズムとして評価いただければ幸いです.制御に詳しい方のご指導がいただければうれしいです.よろしくお願いします. vel_err = vel_ref - vel_fb; delta = Kp*(vel_err - vel_err_old); ref_now = ref_old + delta; ref_old = ref_now; vel_err_old = vel_err;

みんなの回答

回答No.2

vel_refとvel_fbの単位をあわせて計算しなければいけないと思います。 P制御だけであれば ref_now= Kp*vel_err で大丈夫だと思います。ですがref_nowに上限値、下限値を設定しておく必要があると思います。それは定格以上の速度で回転させないようにするためです。 if(ref_now > 上限値){  ref_now= 上限値; } 下限(逆方向の回転)の場合も同様です。 あくまでも参考までに。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

ref_nowってモータへの電圧、もしくは電流(やトルク)の操作信号ではないかとおもいますが。 一旦(vel_err - vel_err_old)と誤差の差分を生成する理由は? 単純に、 ref_now=Kp*vel_err; としてまずい理由がなにかあるのでしょうか?

maryu0709
質問者

お礼

早速の御回答ありがとうございます. ref_nowはモータへの速度指令電圧です. 私もfoobarさんの言われるように ref_now=Kp*(vel_ref - vel_fb); で一度組んでみたところ,vel_refとvel_fbが一致しません(2倍程度違います).何か問題があるのかと疑問に思いながら上記のページを参考に組みなおしてみました.おそらく上記のページでは,PIDを前提に書かれているかと思います.ですから単純にP制御でよければfooberさんの方法でいいはずですよね. おそらく他の部分に問題がありそうです. もう一度他の部分をあたってみます.ありがとうございました.

関連するQ&A

  • サーボモーターの速度制御について

    サーボモーターについて教えて下さい。 ステッピングモーターの速度制御はパルスの周波数を変えれば速度も変わると思いますが、サーボモーターのカタログを見ると、速度制御はアナログ速度指令とあります。 トルク制御と同様にアナログ電圧にて制御するものと思いますが、 サーボモーターの速度制御は一般的にアナログ速度指令で行われるのでしょうか? もし、どちらも可能であるならば、その違いについても教えて下さい。

  • サーボモーターの速度指令について

    お世話になります。 三菱の講習用テキストを見て、サーボモーターの勉強を始めました。 以下、位置と速度を同時に制御する場合についてですが、私の認識は以下です。 (1)モーターの指令値(指令バルス周波数)とモーターの現在値(帰還パルス周波数)の差の「累積」  が溜りパルスとなる (2)溜りパルスが速度指令となる (3)モーター回転数の指令値と現在値が同じになると速度指令(溜りパルス)は一定になる (4)溜りパルスはゼロになると位置決めが完了する(モーターが止まる) 分からないのは2つです。 ひとつめは、速度フィードバックがなぜ必要になるかです。溜りパルスが一定になれば速度は目標値に追従している訳ですから、位置フィードバックだけで、位置も速度も制御されるのではないかと思うのですが、なぜ速度フィードバックが必要になるのでしょうか? ふたつめは、速度指令についてです。テキストでは溜りパルスが速度指令になるという様な書き方をしていますが、なぜそうなるのかが分かりません。単純に溜りパルスを速度指令にはできないと思うのですが、このあたりを詳しく説明しているWEBなどあればご教示頂けませんでしょうか。 よろしくお願いします。

  • DCモータの逆起電力による速度制御

    DCモータをエンコーダやタコジェネ等のセンサを使用しないで 逆起電力をフィードバックして速度制御する方法を調べています。 モータはDC24V 20W クラスで 速度制御IC等は使えません。 私の調べたかぎりでは大容量のものはありませんでしたが・・・。 モータ専門メーカで製造している逆起電力による速度制御装置の ブロック図をみればモータの端子電圧から逆起電力を検出して フィードバックしていることはわかるのですが どのようにして逆起電力を検出しているかはわかりません。 原理的には下記HPに記載されているようなものでしょうか? http://www.picfun.com/P12F/p12f06.html ご存じの方、ご教授をお願いします。

  • インバーターのトルク制御

    初心者です。考え方を教えて頂けませんでしょうか。 インバーターで速度制御は使用した事がありますが、トルク制御が理解できていません。モーターに対して速度指令ではなくトルク指令(例えば材料を巻き取る力)を与えると理解ています。もしモーター単体でトルク制御でトルク指令を与えた場合、負荷が無いのでモーターは指令のトルクを出そうとして暴走状態になるのでしょうか? また、回転数とトルクは別々に設定する事は可能なのでしょうか? 例えば1000rpmでトルク50%の様な指令です。 それともトルク制御の場合はトルク指令に釣り合うような回転数に落ち着くような感じになるのでしょうか? 漠然とした質問ですが、ネットで調べてもモーターの挙動がどうなるか見つからなかったので、よろしくお願いします。 ※OKWAVEより補足:「技術の森( FA・自動化)」についての質問です。

  • サーボ2軸によるトルク制御

    サーボ2軸によるトルク制御に関して困っています。 負荷トルク耐久試験装置で、短冊型のトルク波形を描く必要があるのですが うまく描けません。 装置情報としては ・3.5kWのサーボモータ2台 ・モータのギヤ比が1/17(両軸とも) 制御情報としては ・棒状のワークの両端をモータにつないで回転 ・片側を位置制御、反対側をトルク制御で使用 回転速度の加減速やトルク指令の加減速等いろいろ試しましたが、 トルク指令の加速レートを小さくすると短冊形の波形にならず、 トルク指令の加速レートを大きくするとモーターがハンチングして 安定しない、またはひげ状のピークトルクが発生してしまいます。 何かよい制御方法、またはヒントでも結構ですので ご教示頂けませんでしょうか。 宜しくお願いします。

  • I-P制御の制御則について

    制御系を勉強中の初心者です。 速度制御系の設計につかわれるI-P制御の制御側を時間領域でしめせという問題がありました。 入力:Ωr(s)←モータ速度目標値ωr(t)のラプラス変換 制御則からの出力:U(s)←トルク指令値u(t)のラプラス変換 出力:Ω(s)←モータ出力ω(t)のラプラス変換 となっています。これらをそのまま利用すると制御則は U(s) = -Kiv・Ωr(s) + Kpv∫(Ωr(s)-Ω(s))dt となると思われるのですが、’時間領域’となるとラプラスを逆変換する必要があるのでしょうか?

  • DCモータ制御について

    質問です。  複数のDCモータ(PC用ファン)をPWMで制御したいと思っています。 以下のような製品を見つけました。 http://www.robotsfx.com/robot/AGB_SC_01.html が、RCサーボモータのコントロールを行うようです。 RCサーボモータの制御信号でDCモータを回転(速度調整)させることは 可能でしょうか? また、複数のDCモータを簡単にシリアル接続で制御できる方法などありましたら、お教えください。 よろしくお願いします。

  • PD制御について

    インターネットで確認すると、PD制御の式は下記のように記載されているのは確認しました。 u=kp(y(t)-y0)+kd(v(t)-v0) u:モータ出力 y(t):実際の角度 y0:目標角度 v(t):実際の速度 v0:目標速度 モータで制御する場合、kp、kdの値で停止精度が変わると思うのですが、正負はどのように作用するのかが分かりません。 ただkp,kdが正の場合は時計回り、kp,kdが負の場合は反時計回りになるだけなのでしょうか。

  • ステッピングモータのフィードバック制御について

    ステッピングモータのフィードバック制御を使って、シミュレーションを使いたいのですが、 何をフィードバックすればいいのかわかりません。 ACモータの場合は、速度と変位をフィードバックすればいいと思うのですが、 ステッピングモータの場合は、どうすればいいのでしょうか。 ご教授お願いいたします。 ちなみにHB型ステッピングモータを使用したいと思っています。 シミュレーションはSIMULINKを使っています。 もし可能であれば簡単な回路図も教えてくれるとうれしいです。

  • 制約条件下でのブラシ付きDCモータの角度制御

    制約条件下でのブラシ付きDCモータの角度制御について教えてください. ブラシ付きDCモータの角度制御の制御シミュレーションをMATLABでしています.連続時間系です. 制御対象のモデルは,「印可電圧を入力,電流を出力とする1次遅れ系の伝達関数」→「電流を入力,モータ軸の角速度を出力とする1次遅れ系の伝達関数」→「角速度から角度に変換するための積分器」,および「角速度から印可電圧に負帰還する逆起電力のフィードバック信号」から構成されています. 制御構造は,電流フィードバックループ(PID制御),角速度フィードバックループ(PD制御),角度フィードバックループ(PID制御)をから成るカスケード制御系です. 制約の無い条件下ではシミュレーションが上手くいったのですが,制御入力(印可電圧)に上限値を設定するとワインドアップが発生しました.そこで,アンチリセットワインドアップ補償器を付けたのですが,制御量(角度)が目標値に収束しません.角度フィードバックループを外して,電流フィードバックループ(PID制御)と角速度フィードバックループ(PD制御)からなる角速度フィードバック制御系にすると,アンチワインドアップ補償器を付けると制御量(角速度)が目標値に収束します. なぜ角度フィードバックループを付けると,アンチリセットワインドアップをつけても目標値に収束しないのでしょうか?どうすれば収束しますでしょうか? ご教授の程よろしくお願い致します.