我想找...

搜尋

函式庫參考

目錄

[ 入門指南 ] QEC-M-01 與 Delta ASDA-B3/A2 交流伺服系列

[教程]

我們很高興推出全新的技術 Start Guide,協助工程師與系統整合商快速上手 QEC-M-01 EtherCAT 主站(MDevice)與 Delta ASDA-B3 / ASDA-A2 交流伺服馬達與驅動器。

本系列指南提供完整的逐步設定流程、實用的程式碼範例與整合技巧,涵蓋兩種最常用的 CiA 402 運動模式—— Cyclic Synchronous Position (CSP) 以及 Profile Position (PP) ,讓你以最少的工夫就能透過 EtherCAT 讓一軸 Delta 伺服上線運轉。

Delta-ASDA-B3-A2-Start-Guide-Article-1

這些指南提供了逐步設定流程、實用的編碼範例和整合技巧,涵蓋了CiA 402 CSP(循環同步位置)PP(輪廓位置)模式,因此您可以加快啟動速度並減少工程時間。


1. 新指南亮點

QEC-M-01 是一款體積精巧且效能強大的 EtherCAT 主站,採用即時多工架構。它執行 86Duino Coding IDE 並內建完整的 EtherCAT 函式庫,讓開發者能以熟悉的 Arduino 風格 setup() / loop() 程式碼設定網路、對應 PDO 並控制 CiA 402 驅動器。搭配 Delta ASDA 伺服家族,可從接線到運動一氣呵成。

1.1 Delta ASDA-B3/ASDA-A2(為什麼選 Delta ASDA?)

Delta ASDA-B3 與 ASDA-A2 是廣泛應用的交流伺服馬達與驅動器,內建符合 CiA 402 運動規範的 EtherCAT 介面。兩者皆適合對成本敏感、又需要可靠閉迴路定位的精巧型自動化應用。

對 EtherCAT 使用者而言的重點:

  • CiA 402 over EtherCAT ——兩款驅動器皆提供標準 CiA 402 物件並支援 PP 與 CSP 運作,因此同一套 QEC-M-01 應用邏輯可通用於任一型號。
  • 寬廣電源範圍 ——ASDA-B3 支援單相/三相 200–230 V(≤3 kW)與三相 380–400 V(1–7.5 kW);ASDA-A2 則支援單相/三相 200–230 V,涵蓋 200 W–3 kW 範圍。
  • 高解析度回饋 實現精確、穩定的定位,並具有自動調諧功能,簡化調試過程。
  • 內建回生電阻 ,足以應付多數應用;高慣量負載時可外接電阻。
  • 安全與保護 ——ASDA-B3 提供 STO(CN10)輸入,須在啟用時生效才能 Enable 驅動器;CN1 I/O 則可接 ORG 與 POT/NOT 極限開關,用於歸原點與運動保護。

請造訪 Delta ASDA-B3 和 ASDA-A2 產品頁面以了解更多資訊。

1.2 Start Guide 的優勢

  • 逐步設定指南: 接線、EtherCAT 網路啟動,以及每台驅動器的建議參數檢查清單。
  • 程式範例(CSP/PP): 可直接執行的程式片段與控制流程範例,協助你快速實作運動控制。
  • 整合技巧與疑難排解: 針對現場常見問題提供說明——Enable 驅動器的順序、開發階段 STO 短接、警報處理,以及透過 86EVA 還原 QEC-M 環境(更新 Bootloader、EtherCAT firmware 與 EtherCAT tool)。
Delta-ASDA-B3-A2-Start-Guide-Article-1

2. 開始使用 QEC-M-01 控制 Delta ASDA-B3/A2 交流伺服

無論你是新手或資深開發者,本系列指南都能提供讓 Delta 伺服軸動起來所需的支援。以下範例會在同一個 EtherCAT 網路上 同時 控制 兩台 驅動器——ASDA-B3 與 ASDA-A2,設定如下:

  • EtherCAT 週期時間(Cycle Time): 1 毫秒
  • EtherCAT 模式: ECAT_SYNC
  • 分散式時鐘(DC): 啟用,跟隨週期時間

在兩個範例中, EthercatMaster 物件(master)代表 QEC-M-01,而 EthercatDevice_CiA402 物件則代表 Delta ASDA-B3 與 ASDA-A2 驅動器。

2.1 點對點位置(PP)模式

以下程式將兩台 ASDA 驅動器設定為 CiA 402 點對點位置(PP)模式。在 setup() 中初始化網路、依 SubDevice index 掛載各驅動器、啟用 DC、選擇 PP 模式、切換至 OPERATIONAL、Enable 馬達,並設定運動 profile(type、速度、加速度、減速度)。在 loop() 中以簡單的狀態機讓每一軸移動至 +10,000,000 counts、等待到位、再移回 −10,000,000 counts 並重複——以 pp_Run() 下達移動指令、以 pp_IsTargetReached() 確認是否到位。

#include "Ethercat.h"

EthercatMaster master;
EthercatDevice_CiA402 motor[2];
int pp_state[2];

void setup() {
  Serial.begin(115200);
  Serial.print("Begin: ");
  Serial.println(master.begin());

  for (int i = 0; i < 2; i++) {
    Serial.print("Motor: ");
    Serial.println(motor[i].attach(i, master));
    motor[i].setDc(1000000);
    motor[i].setCiA402Mode(CIA402_PP_MODE);
  }

  Serial.print("Start: ");
  Serial.println(master.start(1000000, ECAT_SYNC));

  for (int i = 0; i < 2; i++) {
    Serial.print("Enable: ");
    Serial.println(motor[i].enable());
    motor[i].pp_SetMotionProfileType(0);   // Linear ramp (trapezoidal profile)
    motor[i].pp_SetVelocity(1000000);
    motor[i].pp_SetAcceleration(1000000);
    motor[i].pp_SetDeceleration(1000000);
  }
}

void loop() {
  for (int i = 0; i < 2; i++) {
    Serial.print("Motor"); Serial.print(i); Serial.print(": ");
    Serial.println(motor[i].getPositionActualValue());
    switch (pp_state[i]) {
      case 0:
        if (motor[i].pp_Run(10000000) == 0)
          pp_state[i]++;
        break;
      case 1:
        if (motor[i].pp_IsTargetReached())
          pp_state[i]++;
        break;
      case 2:
        if (motor[i].pp_Run(-10000000) == 0)
          pp_state[i]++;
        break;
      case 3:
        if (motor[i].pp_IsTargetReached())
          pp_state[i] = 0;
        break;
    }
  }
}

上傳完成後,於 86Duino IDE 開啟 Serial Monitor(baud rate 須與設定一致)。EtherCAT 設定成功時,各狀態會印出 0 ,驅動器顯示 Enable: 0,接著持續印出各馬達的即時位置。

2.2 週期同步位置(CSP)模式

以下程式將 Delta ASDA-A2 與 ASDA-B3 設定為 CiA 402 CSP 模式。運動在 1 ms 的週期回呼(myCallback)中產生:回呼會讀取各驅動器的實際位置,當驅動器處於 CIA402_SWITCHED_ON時維持位置不動;一旦進入 CIA402_OPERATION_ENABLED ,便以每週期 1000 counts 的速率遞增目標位置,達成平順且同步的運動。主 loop() 僅負責印出目前位置。

#include "Ethercat.h"
#define CYCTIME 1000000

EthercatMaster master;
EthercatDevice_CiA402 ASDA_A2;
EthercatDevice_CiA402 ASDA_B3;
int A2_pos = 0;
int B3_pos = 0;

void myCallback() {
  // Check the state of the first drive (ASDA_A2) and update its position
  A2_pos = ASDA_A2.driveGetPositionActualValue();
  int stateA2 = ASDA_A2.driveGetState();
  if (stateA2 == CIA402_SWITCHED_ON) {
    ASDA_A2.driveSetTargetPosition(ASDA_A2.driveGetPositionActualValue());
  } else if (stateA2 == CIA402_OPERATION_ENABLED) {
    ASDA_A2.driveSetTargetPosition(ASDA_A2.driveGetTargetPosition() + 1000);
  }

  // Check the state of the second drive (ASDA_B3) and update its position
  B3_pos = ASDA_B3.driveGetPositionActualValue();
  int stateB3 = ASDA_B3.driveGetState();
  if (stateB3 == CIA402_SWITCHED_ON) {
    ASDA_B3.driveSetTargetPosition(ASDA_B3.driveGetPositionActualValue());
  } else if (stateB3 == CIA402_OPERATION_ENABLED) {
    ASDA_B3.driveSetTargetPosition(ASDA_B3.driveGetTargetPosition() + 1000);
  }
}

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

  Serial.println(ASDA_A2.attach(0, master));
  ASDA_A2.setDc(CYCTIME);
  ASDA_A2.driveSetMode(CIA402_CSP_MODE);

  Serial.println(ASDA_B3.attach(1, master));
  ASDA_B3.setDc(CYCTIME);
  ASDA_B3.driveSetMode(CIA402_CSP_MODE);

  master.attachCyclicCallback(myCallback);
  Serial.println(master.start(CYCTIME, ECAT_SYNC));
  delay(100);

  Serial.print("ASDA_A2 Enable: ");
  Serial.print(ASDA_A2.driveEnable());
  Serial.print(", ASDA_B3 Enable: ");
  Serial.println(ASDA_B3.driveEnable());
  delay(1000);
}

void loop() {
  Serial.print("A2 Pos: ");
  Serial.print(A2_pos);
  Serial.print("B3 Pos: ");
  Serial.println(B3_pos);
}

EtherCAT 設定成功時,Serial Monitor 會印出四個 0 ,並顯示 ASDA_A2 Enable: 0 以及 ASDA_B3 Enable: 0,接著持續輸出兩台馬達的即時位置。


3. 完整指南

若想深入了解,以下提供完整的逐步指南——包含接線照片、參數檢查清單、PDO 對應與圖形化工具流程:

CSP 模式:

PP 模式:


我們將持續推出穩健且創新的 EtherCAT 自動化平台,讓機台整合更聰明、更快速。欲取得更多資訊或索取樣品,歡迎來信 info@icop.com.tw,致電離您最近的 ICOP分公司,或聯絡我們的 全球官方經銷商。.

返回頂端