• ベストアンサー

モータの制御

永久磁石同期モータを速度制御をする場合  電流制御をマイナーループとした制御系を構成するとします。このとき、電流制御系のサンプリング間隔が速度制御系よりも短いサンプリング間隔で電流制御をすると思います。この場合、アルゴリズム(C言語でのプログラム)はどのようにしたらよいのでしょうか? マイナーループの電流指令の生成の部分がよくわかりません。 説明がわかりにく部分があるかもしれませんがよろしくお願いします。

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

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

マイコンの場合などは2つのタイマーを使って実現すると思います。 例えば、速度制御は1秒間隔、電流制御は0.1秒間隔とか。 擬似的には時刻判定を使えばいいと思います。 ただ、時刻を要求すると現在時刻でなく、プログラム開始時刻を返すものもあるので 注意が必要です。 他のプログラムによって実行が一時とまることもあるのでこの辺の注意も必要です。

goo_taro1982
質問者

補足

回答ありがとうございます。 タイマー2つ使うんですか…。 速度制御の間隔が1秒、電流制御を0.1秒、速度制御器にはPI、電流制御器にはPを使うと仮定します。 例えば、1秒から2秒の間の電流指令は一定値になるのでしょうか?速度制御器の出力が電流指令になり、速度制御が1秒ごとに更新されるので。 わかりにく説明で申し訳ないのですがよろしくお願いします。

その他の回答 (3)

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

タイマー1個使って、回数で制御することも可能かと。 例えば、 void 制御(){ static int i=0; i++; if(i>=n){ 速度制御(); i=0; } 電流制御(); } みたいな感じで、コーディングして、制御()をタイマーで定期的に起動するとか如何でしょうか。 (速度制御()は制御()がn回起動される毎に、電流制御()は制御()が起動される毎に実行されるかと。) 電流指令値のホールドは、速度制御以外では電流指令値を変更しないようにすれば、よさそうな気がします。

goo_taro1982
質問者

お礼

どうもありがとうございました。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

No.1です。 > タイマー2つ使うんですか…。 タイマー一つで回数をカウントしてn回に1回速度制御という方法もあります。 このときは、回数を引き継ぐのが結構大変そうですが。 > 例えば、1秒から2秒の間の電流指令は一定値になるのでしょうか? どういう構成なのかわかりませんがどこかで目標電流値をホールドする必要があります。

goo_taro1982
質問者

お礼

どうもありがとうございました。

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

いろいろな実装方法があるでしょうし、OSに依存するところもあると思いますが、 ・電流制御のモジュールと速度制御のモジュールを独立して作り、リアルタイムOSが提供するタイマで異なる周期で呼び出す。(例えば、電流制御を10ms毎に、速度制御を50ms毎に呼び出す) ・例えば、電流制御モジュールを5回呼び出す毎に、速度制御ループを1回呼び出す、という具合に回数で制御する。 ・電流制御と速度制御系を同じサンプリング間隔で構築する。制御利得を適切に設定して、速度制御系の応答が電流制御系よりも充分遅くなる(制御利得を低めに)ように設定する。 といった手法がとられるかと思います。

goo_taro1982
質問者

お礼

回答ありがとうございます。 実装しているシステムにタイマー1つしかないので一番下の方法でやるしかないんですね。 どうもありがとうございました。

関連するQ&A

  • 永久磁石モータの制御

    こんにちは、 永久磁石モータの制御について下記を教えて下さい。 1.永久磁石モータの弱め磁界制御とは、 2.瞬時空間ベクトルとは?

  • モータの制御システム

    モータの制御システム図を見ると、どれも位置制御が一番外側にあって、その中に速度制御、電流制御と順番にフィードバックのループになっていますが、なぜそういうふうになっていますか? その順番を変えたら、だめですか? 制御の初心者です。わかりやすいご回答がいただけたらありがたいです。 先輩方よろしくお願いいたします。

  • SPMSMモーター センサレスベクトル制御について

    現在、勉強&開発を兼ねてインバータで表記制御を行おうとしています。 あるインバータキットを使用おり、制御部を自在に組み込めるというものを使用してテストしています。 センサ情報はU相とV相の電流センサです。 モータの速度起電力を得るために、ある回転数までオープンループでd軸電流に一定の強い電流を流し、q軸は0[A]に制御して回します。 (位置推定がオープンループで、厳密には電流センサからd,q軸電流のPI制御はあります) ある回転数まで到達したら、位置推定の計算を開始し、センサレス制御に切り替えています。 位置推定には電流推定誤差を用いた手法で計算しています。 (dq軸とδγ軸の角度誤差を0にするように制御、モータの速度起電力を元に計算) 今困っているのが、オープンループ制御で回してセンサレス制御に切り替えた時にモーターがなぜか逆転してしまいます。 もちろん逆転するときにはモーターは一旦0[rpm]で停止して逆転を開始します。 ですので引き込みきれず、脱調する場合も多々あります。(ゲイン調整が悪い可能性もあるかと思いますが・・・) 考え付くのはIPMへのPWM信号がどこかで逆転している、電流センサの読み取りが反転しているorU相、V相が振り変わっている?? ただ、これらの場合はオープンループ制御と呼んでいますが、d,q軸のPI制御があるので仮にどこか振り変わっていたらとても始動しないのでは?と思っています。 乱文申し訳ありませんが、原因、考えられることをご教授いただきたく、よろしくお願いします。 (専門の方が見られたら情報が足りない、表現がわからない等あると思いますのでご指摘下さい)

  • 誘導モータ間接ベクトル制御の位相について

     DSPに、誘導モータの速度センサ付間接ベクトル制御の実装を行うとしている者です。 座標変換に必要な位相角 θr について、質問をさせてください。  永久磁石同期モータのベクトル制御では、ロータ角度 θr = 0 は、 磁束が最大になる点(誘起電圧 = 0)という物理的に検知可能な点になりますが、 誘導モータでは、θr の原点は、具体的にはどこになるのでしょうか?  教科書の間接ベクトル制御のブロック図では、θrを、単にモータ回転速度を積分して 求めていますが、 ・どのロータ位置から速度の積分を開始しても問題ないのでしょうか?  ・ずっと速度を積分し続けていると、速度センサの誤差が蓄積して、θr 値が狂ってくるような  気がするのですが、問題ないのでしょうか?   どうも永久磁石同期モータのイメージで理解しようとして、何か間違っているような 気がします。 よろしくお願いします。  

  • モータの位置制御系の問題

    今制御工学の問題を解いているのですが、そのうちの以下の問題がよく分かりません。 もしよろしければ分かりやすく解説、もしくはそのようなサイト等があったらよろしくお願い致します。 ●モータの位置制御系では,速度マイナーループがよく用いられる.   この理由を説明せよ. ●制御器と制御対象からなる直結FB系で目標値応答および   外乱応答に対して定常偏差が0となる条件を示せ.

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

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

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

    モーターをトルクで制御したいのですが、それには電流制御が必要です。モーターはPWM駆動ですが、その時の電流値の推定法がわかりません。この場合の電流値を与える制御式又は制御回路などの方法がありましたら教えてください。お願いします

  • モーターのトルク制御

    モーターをトルクで制御したいのですが、それには電流制御が必要です。モーターはPWM駆動ですが、その時の電流値の推定法がわかりません。この場合の電流値を与える制御式又は制御回路などの方法がありましたら教えてください。お願いします

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

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

  • 永久磁石式同期モータ ベクトル制御の1次側電流算出

    永久磁石式同期モータのベクトル制御に関するアドバイスを頂きたいです。 マイコンでインバータの2次側の電圧及び電流のベクトル制御を行い、モータを回しています。 モータのロータの水平軸方向をd軸、それに対して垂直方向をq軸として、各電流の制御を行い、3相に変換してIPMにて出力しています。 ここで、ベクトル制御で算出した2次側の出力(d軸電流、q軸電流及び電圧)値から1次側の電流値を算出する方法等ありますでしょうか。 考え方及び原理等助言を頂きたいです。内容がわからない若しくは不足部分もありましたら、ご指摘お願いします。

専門家に質問してみよう