RX72M EtherCAT MII管理通信機能について

今までにEtherCATスレーブ開発はそれなりにこなしてきています(ESCとしてET1100をはじめRIN32-ECも使ったことがあります)。

PHYにはMicrelのKSZ8081MNXをよく採用します。RX72MマイコンのEtherCATは初めてなのでRTKOEMXDE 0C00000BJを購入して回路図面 R12TU0146EJ0100-MOTOR.PDF も確認しての質問です。

このPHYはアドレス0がブロードキャストに割り当てられているのでESC側でアドレスオフセットさせるかB -CAST_OFFをプルアップすることでブロードキャストを無効化することでポートごとにアドレスを割り当ててMII管理通信が可能になります。

今までの開発ではESCにアドレスオフセット機能がないものだったので B-CAST_OFFを使っていました。RTKOEMXDE 0C00000BJの回路図面でもPHYアドレスが0、1ではなく1, 2が使われているのはアドレスオフセットESC .PHYOFFレジスタを使えばできるのは理解できます。

私が理解できないのはCATn_LINKSTAがLED0ピンにつながっている点です。

このPHYのLED動作モード設定、リセット後はLED Mode=00が割り当てられているためLED0の動作はパケットが来るたびにトグル動作します。これはESCはリンクが切れたと通知を受け取ることになります。これを解決するためにはMII管理通信を使ってLED Mode=01にした後にESCから使えるようにする必要があります。私の知っている範囲でESCのMII通信レジスタはEtherCATマスター側からのアクセスが最初に有効化され、スレーブ側へアクセス権側渡されるまではMII通信を行えません。RX72Mではそれを避ける方法がるのでしょうか?例えばESCペリフェラルが動いていない状態でPHYのMII管理通信だけ行った後にESCペリフェラルを動かすというような方法という意味でです。

なお、今までのRX72M以外でのEtherCATスレーブ開発で、MII通信でLEDモードの切り替えができないのでLED1を利用しておりました。LED1はリンク状態で100BASEにならないとアクティブになりません(LED Mode=00時)。

  • 現在回路設計段階です。

    LED1で動くのは過去の実装で実績があるので今回もLED1を利用します。

    この場での質問はなぜ評価ボードでLED0が採用できているか?という技術的な関心による質問です。

  • Yamamotoさん、こんにちは。NoMaYです。

    > 例えばESCペリフェラルが動いていない状態でPHYのMII管理通信だけ行った後にESCペリフェラルを動かすというような方法という意味でです。

    EtherCATに関しては何も分かりませんが、気になってRX72Mの端子割り当てを調べてみたところ、端子が以下の通り兼用されていました。それで、RXマイコン(やRL78マイコン等も)で時々使用する技法として、プログラム動作中に端子機能を切り替えつつ所望の動作を(無理矢理にでも)実現させる、というのがあるのですが、本件も(EtherCAT slave controler起動前に限らず起動後でも)端子機能を切り替えることでPMGI0で任意にMDC/MDIOを制御することが出来ると思うのです。

    以下、RX72Mグループ ユーザーズマニュアル ハードウェア編の画面コピーです。


     

  • 方法は、これですかね?

    私が心配なのはRIN32M3-ECの時の体験でPHYをESC動作前に同じような方法でいくつかレジスタの値を変えてESCを動かすと、ハードウェア実装されたMII通信で自動的に特定の値に再度設定されるという仕様があったことです。その当時はEtherCAT追加仕様で自動ネゴシエーションを無効化する仕様が出てきて、これもできるのか?を試したときに気がつき、これはメーカー問い合わせで確認しています。

    RIN32M3-ECは内蔵PHYなので特別なことしてても当然なのですが、RX72Mも何かそういうことをするというようなドキュメント化されていない仕様が存在するのでは?という心配をしています。

  • Yamamotoさん、こんにちは。NoMaYです。

    今回の案件は、完全に掌握出来なくても、「これかも?」というのに思い至れば良かったりしませんでしょうか?安全確実で自分が安心出来る回路設計案があるのであれば、そちらでも良いように思うのですけれども。(undocumentedな仕様の有無に関しては、これはもう常に付きまとう気掛かりなことですね、、、)

    マイコンベンダのリファレンスボード通りに設計しておくのも、サンプルプログラムを入手してそれを改造することを検討中の場合、それも定石ですけれども、このボード用のサンプルプログラムをルネサスさん/Beckhoff Automation社から入手する計画はありますでしょうか?そういうサンプルプログラムがありそうであれば、ソースを入手出来ないか先に問い合わせてみるのも良さそうに思います。(漠然とした予感ですけれども、このあたりのサンプルプログラムになりますと、守秘契約を結ぶこと、ぐらいは要求されそうですけれども。これは釈迦に説法ですかね。)

    [追記]

    すみません、心揺らぐことには、この辺が何か関係するのですかね。

    > LED1はリンク状態で100BASEにならないとアクティブになりません

  • 先に書いてある通りでLED1を使えばそういった初期化作業がいらない。逆に言えばLED0が必須なのでなんでかな?という技術的な疑問で質問しています。

  • Yamamotoさん、こんにちは。NoMaYです。

    つまり、兼用機能の設定を細工することで出来るとしても、どうしてわざわざ話がややこしくなる回路設計をしているのかな?ということですよね。すみません、ちょっと私では、この先リプライ出来そうにないですので、他の人からのリプライを待って頂けませんか。

  • ズバリその通りです。評価ボードなのに・・・ちょっと他に同じことになっていないか?調べるとテセラ・テクノロジーも同様のLED0を使用した回路、RX72M-Starter-Kit-Plusも別型番のPHYですが同じくレジスタ初期値では正しく動かない方のピンを利用していました。細工できるという話がわかると設定ピンのプルアップ・プルダウンの省略とかできるから出来るのか?できないのか?わかるとありがたいですこともあります。

  • Yamamotoさん、こんにちは。NoMaYです。

    以下のブログ記事にEtherCATのサンプルプログラムへのリンクがあったのですけれども、試しにダウンロードされてはどうでしょうか?(ごめんなさい、同様な回路なのかどうか回路図を探して比較する根気までは無かったです、、、) (少なくとも、ブログ記事の写真は、本件のボードだったのですけれども、、、)

    RX72MでEtherCAT通信を用いたステッピングモータ制御を簡単に評価できます
    www.renesas.com/jp/ja/blogs/rx72m-offers-effortless-evaluation-stepper-motor-control-ethercat
     

  • 最終的な確認ができました。

    技術サポートに問い合わせしたら初期化時にMII管理通信を使っていて具体的にはEtherCATサンプルを見てくれとのことでした。この回答を得られた時にちょうど忙しくなってサンプルのどのソースコードだよ!と思いながら時間が取れたので確認しました。phy.cの中でwrite_phyregという関数が処理していました。Beckhoff系のIPはMII管理用のレジスタはEtherCATマスタ側からのMII管理通信発行ができてもPDI側(この場合はマイコンであるRX72Mとかですが)はマスタが通信側からアクセス権を渡さないと使えない仕様だったのですがルネサスはMIIPDIACCSSTATというレジスタを用意していてこれでESCのMII管理をマイコン初期化後はPDIから使えるようにしてあったということがわかりました。

    これにてクローズします。