A6シリーズで検証しています
皆さんは、装置の発振にお悩みではないですか?
位置決めの再現性が低い
稼働中に異音が発生する
納品後の装置でトラブルが起きる
このような問題は、ソフトウェア制御のモーションコントローラーで解決できる場合があります。特に、WMXとPanasonic製サーボモーターの連携により、高精度かつ高応答な制御を実現する方法を解説します。
そもそもサーボの発振とは
サーボモータは、指令とモータの現在位置の偏差を常にゼロにしようと動作します。この応答の鋭敏さを調整するのがサーボゲインです。
応答性が良すぎるため、目標位置を少しでも通り過ぎると、急激に逆方向へ修正しようとします。この動きが繰り返されることで、発振(ハンチング)が発生します。特に、装置の剛性が低い場合に顕著に現れます。
発振状態を再現する
発振させる状況を意図的に作りました。ゲイン調整を行う人には見たくない波形ですね。

発振状態では、以下のような警告が出ます。アラームではないので装置の稼働は可能です。

サーボの機能で振動レベルの値を
標準で以下の項目があります

SDO通信でサーボアンプから警告の値をコードで取得
【失敗した方法】サーボの発振を検知させるため、フラグの取得
サーボアンプの機能で、サーボの発振を知らせるフラグがあります。4DA0h:14hを読み込めば取得できそうなので、検証をおこないました。DataTypeは32bitなのでSDOのデータサイズは4を指定します。

サーボが悲鳴を上げている状態で、値を取得してもなぜか動きませんでした。
以下はRTXのC++で実行した物です。想定では配列[1]に値が入っていて欲しい。

あきらめて、別の方法を考えることにしました。
【方法2】アラーム番号で発振を検出する

A6の表示になります。
サーボを発振させると、この表示になります。

Visual Studioのデバック実行を行いました。

indexの24639は16進数の603Fです。関数から帰ってきた値の配列0番の166(10進数)は16進数の”A6″です。
この値を、使ってユーザーに知らせる事ができます。
補足
自動でゲインを変えるモード(リアルタイムオートチューニング)を使っている時は注意してください

おわりに
ゲイン設定とサーボの発振
攻めた(高い)ゲイン設定は、サーボモーターの応答性を向上させる反面、経年劣化によりシステムが不安定になり、発振を引き起こすリスクがあります。今回紹介した機能は、この発振などの異常を早期に検知し、ユーザーに通知することで、予期せぬ装置停止や損傷を防ぐことに役立ちますね。
EtherCATスレーブ機能の活用方法
この記事を通じて、EtherCATスレーブが持つ機能の活用方法を具体的にイメージしていただけたのではないでしょうか。WMXを使えば、簡単にEtherCATプロトコルが提供するSDO (Service Data Object)を介して、パラメータを動的に設定・読み出しできます。
異なるメーカーの機器を使用する場合でも、基本的なプログラミング手法は共通しています。ただし、SDOのアドレスやデータ構造はメーカーやモデルによって異なるため、必ず製品の取扱説明書やマニュアルを参照し、適切なSDOアドレスに修正してコーディングしてください。これにより、システムの移植性や保守性が向上します。
それでは、良いWMX開発ライフを!
コメント