[スタートガイド] QEC-M-01 および NPM PULSERVOII & EC-AD シリーズ

[チュートリアル]

リアルタイムの高性能モーション コントロールを実現するために、エンジニアやシステム インテグレーターが QEC‑M‑01 (EtherCAT MDevice) を NPM PULSERVOII および NPM EtherCAT シリーズ サーボ ドライバー と組み合わせて使用​​できるようにする新しい技術ガイドをご紹介します。

このガイドでは、半導体、エレクトロニクス、産業オートメーション業界をより適切にサポートするために、EtherCAT ベースのモーション コントロール アプリケーションのパフォーマンスを最大限に高めるのに役立つステップバイステップのセットアップ プロセス、実用的なコード例、統合のヒントを提供します。


1. 新しいガイドのハイライト

QEC-M-01は、リアルタイム・マルチタスク・アーキテクチャと統合開発ツールを搭載した、コンパクトでパワフルなEtherCAT MDeviceです。オープンソースの86Duino IDEを搭載し、シンプルでありながら強力な自動化開発プラットフォームを提供します。

CiA402 プロファイル位置 (PP) モードで NPM PULSERVOII および EC-AD シリーズ製品と組み合わせると、要求の厳しいモーション システムでも正確で応答性の高い制御が可能になります。

NPM PULSERVOIIおよびEC-ADシリーズドライバは、高精度と安定性を実現するEtherCAT対応のクローズドループモーター制御ソリューションです。PULSERVOIIシリーズは、ステッピングモーターの利点とエンコーダフィードバックを組み合わせることで、ステップミスをなくし、スムーズで信頼性の高いモーション制御を実現します。EC-ADシリーズは、CiA402規格に準拠し、最速250μsの分散クロック(DC)同期により、高精度な多軸協調を実現します。

どちらのドライバーもコンパクトで応答性が高く、次のような用途に最適です。

  • 高速組立システム: 自動化されたアームと検査ステージにおける正確な位置決めと安定性を確保します。
  • 精密機器: CNC マシンや半導体ツールのスムーズな加速、減速、原点復帰操作を実現します。
QEC_NPM_1

1.1 スタートガイドの利点

  • ステップバイステップのセットアップガイド:
    初心者でも経験豊富な開発者でも、このガイドは、NPM EtherCAT ドライバーを使用して QEC-M-01 を正しく接続して構成するのに役立ちます。
  • プログラミング例:
    このガイドには、CiA 402 - プロファイル位置 (PP) モードの詳細なプログラミング例が含まれており、正確な位置決めから柔軟な制御まで、あらゆることを実現できます。
  • アプリケーションシナリオ:
    コンパクトな設計と高精度のフィードバックにより、PULSERVOII ドライバと EC-AD ドライブは、多軸ステージ、ロボット ピックアンドプレース アーム、SMT またはパッケージ ラインの高速フィーダーに最適です。

2. QEC-M-01とNPM EtherCATドライバーの使用を開始する

EtherCAT を初めて使用する方でも、経験豊富なモーション コントロール開発者でも、当社のガイドには、QEC-M-01 と NPM EtherCAT ドライバーの統合を開始するために必要なすべてのツールが記載されています。

2.1 PULSERVO II: プロファイルポジション(PP)モード

次のプログラムは、NPM Pulservo II を CiA402 プロファイル位置 (PP) モードに設定します。

  • EtherCAT サイクル時間: 1 ミリ秒。
  • EtherCAT モード: ECAT_SYNC。

The    object (“mdevice”) represents the QEC-M-01, while the EthercatDevice_CiA402 object (“motor”) represents the NPM Pulservo II driver.

#include "Ethercat.h"

EthercatMaster mdevice;
EthercatDevice_CiA402 motor;

int pp_state = 0;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.print("Begin: "); Serial.println(mdevice.begin());
  Serial.print("Slave: "); Serial.println(motor.attach(0, mdevice));
  Serial.print("Start: "); Serial.println(mdevice.start(1000000, ECAT_SYNC));

  motor.setCiA402Mode(CIA402_PP_MODE);
  Serial.print("Enable: "); Serial.println(motor.enable());
  motor.pp_SetMotionProfileType(0); // Linear ramp (trapezoidal profile)
  motor.pp_SetVelocity(100000);
  motor.pp_SetAcceleration(5000);
  motor.pp_SetDeceleration(5000);
}

void loop() {
  Serial.print("Pos: "); Serial.println(motor.getPositionActualValue());
  switch (pp_state)
  {
    case 0:
      if (motor.pp_Run(100000) == 0)
        pp_state++;
      break;
    case 1:
      if (motor.pp_IsTargetReached())
        pp_state++;
      break;
    case 2:
      if (motor.pp_Run(-100000) == 0)
        pp_state++;
      break;
    case 3:
      if (motor.pp_IsTargetReached())
        pp_state = 0;
      break;
  }
}

2.2 PULSERVO II: 周期同期位置(CSP)モード

次のプログラムは、NPM Pulservo II を CiA402 周期同期位置 (CSP) モードに設定します。

  • EtherCAT サイクル時間: 1 ミリ秒。
  • EtherCAT モード: ECAT_SYNC。
  • 分散クロック:オープン サイクルタイムに従います。

The    object (“master”) represents the QEC-M-01, while the EthercatDevice_CiA402 object (“motor”) represents the NPM Pulservo II driver. Motion is generated inside a 1 ms cyclic callback by stepping a command position at a fixed rate (constant velocity) and flipping direction at the travel limits.

#include "Ethercat.h"

EthercatMaster master;
EthercatDevice_CiA402 motor;

int32_t position = 0;

void MyCyclicCallback()
{
  if (motor.getCiA402State() != CIA402_OPERATION_ENABLED) return;

  // Set the target position under csp.
  static int dir = +1;
  if (position >= 100000)  dir = -1;
  else if (position <= -100000) dir = +1;
  position += dir * 100;
  motor.setTargetPosition(position);
}

void setup() {
  Serial.begin(115200);

  Serial.print("Begin: ");
  Serial.println(master.begin());

  Serial.print("Slave: ");
  Serial.println(motor.attach(0, master));
  motor.setDc(1000000);
  motor.setCiA402Mode(CIA402_CSP_MODE);

  // Register a callback function.
  master.attachCyclicCallback(MyCyclicCallback);
  Serial.print("Start: ");
  Serial.println(master.start(1000000, ECAT_SYNC));

  // Set target position to current position for safe.
  motor.setTargetPosition(position = motor.getPositionActualValue());
  Serial.print("Enable: ");
  Serial.println(motor.enable());
}

void loop() {
  // Print Position.
  Serial.print("Position: ");
  Serial.println(motor.getPositionActualValue());
  delay(1000);
}

さらに詳しく知りたい場合は、以下のリンクをクリックして完全なガイドをご覧ください。


私たちは、よりスマートで高速、そして効率的な制御システムを実現する、堅牢で革新的なEtherCATオートメーションプラットフォームの提供を継続していきます。パートナー様と開発者の皆様には、革新的なオートメーションプロジェクトに向けてQECソリューションをご検討いただければ幸いです。

詳細情報やサンプルのご要望については、info@icop.com.tw までメールをお送りいただくか、最寄りの ICOP 支店 までお電話いただくか、ワールドワイド正規販売代理店までお問い合わせください。

上部へスクロール