モーター評価ボード「24V Motor Control Evaluation System for RX23T」 使用ノウハウについて

初めて投稿させて頂きます。yamaと申します。

マイコンを使用したモーター制御システムの開発業務を受けて、対応しております。

 ■仕様ツール・機器

   ツール ・CS+ for CC V8.03.00 [21 Nov 2019]

       ・CC-RX V3.02.00

       ・Renesas Motor Workbench V2.00.01

   エミュレータ ・E1

   サンプルコード 永久磁石同期モータのセンサレスベクトル制御RX23T実装編

         RX23T_MRSSK_SPM_LESS_FOC_CSP_RV101

         永久磁石同期モータのエンコーダベクトル制御 (RX23T実装編)

                          RX23T_MRSSK_SPM_ENCD_FOC_CSP_RV101

■やりたい事

 モーター評価ボード「24V Motor Control Evaluation System for RX23T」を使用して

 評価ボードに付属しているモーター以外の別モーターでエンコーダベクトル制御を行いたい。

■現在の状況

 現在、別モーターをRenesas Motor Workbench V2.00.01のチューナー機能にてパラメータを確認し、

 そのパラメータをサンプルコード「永久磁石同期モータのエンコーダベクトル制御 (RX23T実装編)」に組み込んで

 まずはサンプルコード通りにボードから別モーターを回転させようとしていますが、モーターが一回転程度振動しながら

 動いた後に停止してしまいます。

 (別モーターを上記のようにチューナー機能を使い「永久磁石同期モータのセンサレスベクトル制御RX23T実装編」で

  使用した際は回転しましたので、本評価ボードの能力で回転させれる事は確認しています。)

■質問したい内容 

 本評価ボードで違うモーターを使用する時に注意する事・変更しなければならない所などのノウハウ・資料など

 ないでしょうか?

  • アプリケーションノートやモーターワークベンチのマニュアル、評価ボードの仕様などを、全く見ていないのですが、モーターの極数のパラメータが合っていないか、エンコーダ取付けが良くないことはないでしょうか?

    ・チューナー機能で取得したパラメータでセンサレス制御は動作することから、電気角での制御は正常と思われます。「制御では4極のモーターを3600rpmで回転のつもりが、実際は6極のモーターを2400rpmで回転させている」となっても、センサレスなので問題なく動作します。

    ・エンコーダ付きの時「一回転程度振動しながら」との表現から、
     1:インクリメンタル型エンコーダを使っている時の初期動作(位相0度の推定)中にストールしている
     2:絶対位置の分かるエンコーダ(*)の場合、エンコーダの0度位置とモータの0度位置がずれているため、最初の一周から正常に動作していない
    の2つの可能性が考えられます。
    (* Z相のあるインクリメンタル型、またはアブソリュート型)

    あくまで推測なので、参考までに。
  • 参考意見ありがとうございます。

    チューナー機能はエンコーダ制御用・センサレス制御用で用意されており、エンコーダ制御用を
    使用しましたので極数やパラメータは正しいのではと考えています。

    また、エンコーダはZ相無しのインクリメンタル型となっております。
    記載頂いた1が可能性として高いのではないかと考えております。

    ただ私のプログラム知識が未熟な事もあり、調べていくにしてももう少しとっかかりのような
    ものが欲しいと考えております。

    社内に今回のようなモーター制御の経験をした人間もおらず、
    評価ボード購入先が代理店でない為、フォローを受けられず困っております。
  • 私もタイミングよく(?)同様な現象に遭遇しました。まだ解決していません。

    RX24T エンコーダー制御のサンプルで、Nidecのモータは無事に制御できたのですが、手元の別モータが動きませんでした。現象としては同じように、ちょっと動いて止まる感じです。

    TunerでDrive Testをしても動きませんでした。以下はそのときの波形画像です。Encode Countsはデフォルトの1200から仕様書に記載の500にしています。

    ちょっと識者にたずねているところですが、タイミングが一緒だったもので同じ悩みを投稿させていただきました。

     

  • 確かに似たような状況ですね。
    識者様からの情報で動作したら参考にお教え頂けると
    幸いです。
  • Okamiya Yuuki さんが添付していただいた画像を見て、「なんかかっけ~(^^)」と思い、「Renesas Motor Workbench」のマニュアルを見ました。
    チューナー機能のチューニング実行前に定格電流値と極対数(極数の1/2)の入力を求められますが、これらの値は事前に入力させるという点から、チューニング結果で変更されないパラメータかもしれません。
    これらの値が間違っている可能性はありませんか?
    (例えば、極対数の欄に極数を入れてしまっているなど)


    また、Okamiya Yuuki さんの波形情報ですが、
    ・スピードが正弦波状に振動=モーター位置(角度・位相)も正弦波状に振動
    ・q軸電流が指令値を中心に振動しているが、その周期はモーター位置振動周期の半分
    ・d軸電流もしいどうしてるが、こちらはモーター位置振動と同じ周期
    の3点が見えます。
    ただ、それ以上についてはモーター制御の専門で無いため厳しいです。

    ※モーター制御については、四半世紀前の大学修士時代に、同じ研究室のメンバーが隣で実験しているのを見聞きした知見までなので、ここに書ける内容も中途半端になり、申し訳ないです。
  • 吉光屋の次男坊さん

    アドバイスをいただきありがとうございます。

    極数と極対数は確かにその通りで、モータ仕様書には極数10とあったため、TunerのPole Paires(極対数)の設定では5にしました。

    あれから、エンコーダのパルスを確認したところ、正常動作したものとA相、B相が逆に配線されていました。

    これは位相計数モードのレジスタ設定を変えればよいのですが、Tunerはmotしか公開されていないため、配線をケーブル配線を変えました。

    ただ、これだけでは解決できず、識者に確認したところ、エンコーダのカウントとしてはパルスの数でなく、A相/B相のエッジの数を指定するようです。

    つまりA相のHi-Low、Low-Hi、B相のHi-Low、Low-Hiと、パルス×4を指定しないといけないようで、モータの仕様に記載の500P/Rを4倍にした2000を指定したところ、TunerのDrive Testで正常に回転しました。そのときの画像は以下です。

     

    ただ、もとに戻って、エンコーダ制御のサンプルはまだ動いてません。

    多分、Configだけでなく、driver/r_mtr_ctrl_encoder.hの以下のパラメータを変えればよいと思いますが、MTR_ENCD_CPR_MECHの(1200)を(2000)に変えただけでは、きちんと動きませんでした。この辺をもう少し識者に聞いてみます。

    #define MTR_ENCD_CPR_MECH (1200) /* encoder counts per revolution (mechanical) */
    #define MTR_ENCD_ANGLE_ADJ_TIME (128) /* encoder angle adjustment time [ms] */
    #define MTR_ENCD_CNTAVG (4) /* encoder pulse width average */
    #define MTR_ENCD_ZEROSPEED_PW (20000000) /* encoder pulse width[counts] considered as zero speed */
    #define MTR_ENCD_ANGLE_DIFF (MTR_TWOPI / (float)MTR_ENCD_CPR_MECH)
    /* encoder minimum angle [rad]*/
    #define MTR_ENCD_CALC_AVG (MTR_ENCD_CNTAVG * MTR_ENCD_TIMER_FREQ * 1000000.0f)
    /* encoder avg calc parameter */
  • yamaさん、

    私の方では動きました。私の原因と対策は以下でした。
    ・エンコーダの信号がA相、B相逆だったため配線をし直した。
    ・エンコーダのパルス数を4倍した。指定するのはA相、B相の合計エッジ数。
     #define MTR_ENCD_CPR_MECH (1200)の値を(2000)に変更

    識者に確認したところ、driver/r_mtr_ctrl_encoder.hの変更点はMTR_ENCD_CPR_MECHだけでよかったです。
    もう一度ビルドして、電源を入れなおしたら正常に位置制御、速度制御の両方が動きました。
  • 確かに、二相エンコーダは回転方向(時計回り/反時計回り)の判断もしますので、逆に接続されていると実際とは逆方向の回転と認識されてしまいますね。
    結果、位相がー180度~+180度の間で行ったり来たりとなったのでしょう。
    (A相パルスの立上り時にB相がHかLかで、回転方向の判断が可能。同様にA相パルス立下り時のB相の状態、B相パルス立上り、立下り時のA相の状態でも判断可能となります。)

    センサレスで動いてセンサ有りで動かないから、センサ周りに問題が・・・と素直に見れば、解決に近づけたわけですね(yamaさんの件は、まだ違う可能性もありますが)。
    ※う~む、自分はひねくれてて、率直に見れないのかなぁ。
  • Okamiya Yuuki さん
    吉光屋の次男坊さん

    アドバイスありがとうございます。
    A、B相の繋ぎはあっていたのでエッジ数が非常に怪しいです。

    ルネサスさんにも別途質問を投げていたのですが
    そちらも同様の回答が返ってきていました。

    昨日は1日外出だったので試せませんでしたが、
    本日試してみます!