Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

EtherCAT Drive 指令集

EtherCAT 驅動器通常都會符合 CiA 402 規範,此規範定義了驅動器的操作模式與介面。實際上驅動器並不會實現所有 CiA 402 規範提到的所有功能,在選用驅動器時還是要留意。

目前 Botnana Control 支援以下幾種驅動器的運動模式:

  • 位置控制模式 PP (Profile Position Mode)
  • 速度控制模式 PV (Profile Velocity Mode)
  • 原點復歸模式 HM (Homing mode)
  • 扭力控制模式 TQ (Profile Torque Mode)
  • 週期同步位置模式 CSP (Cyclic Sync Position Mode)
  • 週期同步速度模式 CSV (Cyclic Sync Velocity Mode)
  • 週期同步扭力模式 CST (Cyclic Sync Torque Mode)

就應用面來看週期同步模式適合用來做多軸同動或是特殊的軌跡規劃。

位置模式方塊圖:

               +--------+
               | +----> |----------------------- +
               | |CSP   |                        |
               | |      |      +-------------+   v    +-----------+
Target   ----->|-+----> |----->| Position    |-->o--->|  Position |----> Control
Position       |  PP    |      | Trajectory  |        |  Control  |      Effect
               |        |      | Generation  |        |           |
               +--------+      +-------------+        +-----------+
              Mode Seletor

速度模式方塊圖:

               +--------+
               | +----> |----------------------- +
               | |CSV   |                        |
               | |      |      +-------------+   v    +-----------+
Target   ----->|-+----> |----->| Velocity    |-->o--->|  Velocity |----> Control
Velocity       |  PV    |      | Trajectory  |        |  Control  |      Effect
               |        |      | Generation  |        |           |
               +--------+      +-------------+        +-----------+
              Mode Seletor

扭力模式方塊圖:

               +--------+
               | +----> |----------------------- +
               | |CST   |                        |
               | |      |      +-------------+   v    +-----------+
Target   ----->|-+----> |----->| Torque      |-->o--->|  Torque   |----> Control
Torque         |  TQ    |      | Trajectory  |        |  Control  |      Effect
               |        |      | Generation  |        |           |
               +--------+      +-------------+        +-----------+
              Mode Selector

原點復歸方法

在原點復歸模式(HM)中,驅動器會執行 CiA 402 物件 0x6098 所選的方法。驅動器 可能只實作標準方法的一部分,因此仍應以製造商手冊及試車結果為準。

復歸方法會尋找一個參考事件。系統在找到該事件後才套用已設定的原點偏移;原點 偏移不會改變感測器搜尋順序。驅動器通常以 Homing Speed 1 搜尋原點或極限開關, 再以 Homing Speed 2 搜尋最後的編碼器索引脈波。

下列表格使用的詞彙如下:

  • 負向正向是設定後的運動軸方向;
  • 有效無效是設定輸入極性後的邏輯開關狀態;
  • 索引脈波是編碼器週期出現的參考脈波;
  • 另一側邊緣是原點開關有效區域的另一個邊界;
  • 表示「接著發生」,不表示實際運動方向。
選用指南
參考來源使用索引脈波精化本節說明的方法
負向或正向極限開關1–2
原點開關3–6
原點開關及極限開關反轉保護7–14
負向或正向極限開關17–18
原點開關19–22
僅使用索引脈波33–34
目前位置35、37

CiA 402 及各製造商可能另有其他方法。選用前,必須由驅動器手冊確認支援狀態、輸入 指派、極性及實際行為。

代表性流程

使用極限開關、原點開關、極限反轉保護及目前位置的代表性 CiA 402 原點復歸流程

上圖分別以方法 1、3、7 及 37 的一種代表性起始狀態說明流程。下列表格才是各方法 變體的定義。圖中的 S 是起始位置,星號是最後建立的參考事件。

極限開關及索引脈波精化:方法 1–2
方法事件順序
1負向搜尋負極限 → 極限狀態改變時反轉為正向 → 以正向側第一個索引脈波作為參考。
2正向搜尋正極限 → 極限狀態改變時反轉為負向 → 以負向側第一個索引脈波作為參考。
原點開關及索引脈波精化:方法 3–6

初始運動取決於目前的原點開關狀態。所選方法會決定使用哪一個開關轉態,以及哪一側 相鄰的索引脈波作為參考。

方法事件順序
3找到正向原點開關轉為無效的轉態 → 繼續負向 → 使用負向側第一個索引脈波。
4找到正向原點開關轉為有效的轉態 → 繼續正向 → 使用正向側第一個索引脈波。
5找到負向原點開關轉為無效的轉態 → 繼續正向 → 使用正向側第一個索引脈波。
6找到負向原點開關轉為有效的轉態 → 繼續負向 → 使用負向側第一個索引脈波。
原點開關及極限反轉保護:方法 7–14

方法 7–10 會先正向搜尋;如果在找到指定的原點開關事件前先遇到正極限,便會反轉。 方法 11–14 會先負向搜尋,並在先遇到負極限時反轉。因此即使起始位置已越過預期的 開關進入方向,仍可回頭尋找參考。

方法事件順序
7先正向 → 找到原點開關無效邊緣 → 負向搜尋第一個索引脈波。
8先正向 → 找到原點開關有效邊緣 → 正向搜尋第一個索引脈波。
9先正向 → 找到原點開關另一側的有效邊緣 → 負向搜尋第一個索引脈波。
10先正向 → 找到原點開關另一側的無效邊緣 → 正向搜尋第一個索引脈波。
11先負向 → 找到原點開關無效邊緣 → 正向搜尋第一個索引脈波。
12先負向 → 找到原點開關有效邊緣 → 負向搜尋第一個索引脈波。
13先負向 → 找到原點開關另一側的有效邊緣 → 正向搜尋第一個索引脈波。
14先負向 → 找到原點開關另一側的無效邊緣 → 負向搜尋第一個索引脈波。
不使用索引脈波的開關參考:方法 17–22

這些方法直接在指定的開關轉態建立參考,不會執行最後的編碼器索引脈波搜尋。

方法事件順序
17負向搜尋 → 在負極限轉態建立參考。
18正向搜尋 → 在正極限轉態建立參考。
19找到正向原點開關轉為無效的轉態 → 在該處建立參考。
20找到正向原點開關轉為有效的轉態 → 在該處建立參考。
21找到負向原點開關轉為無效的轉態 → 在該處建立參考。
22找到負向原點開關轉為有效的轉態 → 在該處建立參考。
僅使用索引脈波及目前位置的方法
方法事件順序
33負向搜尋 → 在第一個索引脈波建立參考。
34正向搜尋 → 在第一個索引脈波建立參考。
35不執行搜尋運動,直接在目前位置建立參考。這是方法 37 的舊式形式。
37不執行搜尋運動,直接在目前位置建立參考。

試車任何會移動的復歸方法前,應先確認方向定義、開關極性、感測器排列、可用行程、 搜尋速度、加速度及停止行為,並將馬達與機構分離,或以其他方式確保機台安全。

驅動器運行狀態

               +-------+
-------------->| FSA   +-------------->
Control Word   |       |   Status Word
(0x6040)       +-------+   (0x6041)

FSA (Finite States Automaton) of PDS (Power Drive System)

             Start
               |
               |
               V 0
        +-------------------+
        | Not Ready to      |
        | switch on         |
        | (Not initialized) |
        +-------------------+
               |
               |
               V 1
 +------------------------------+       +-----------+
 |         Switch on            | 15    |   Fault   |
 |         Disabled             |<------|           |
 |  (Initialization completed)  |       |  (Alarm)  |
 +------------------------------+       +-----------+
  ^ 9        |   ^ 7   ^ 10   ^ 12            ^ 14
  |          |   |     |      |               |
  |          v 2 |     |      |               |
  |  +---------------+ |      |               |
  |  |  Ready to     | |      |               |
  |  |  Switch on    | |      |               |
  |  | (Main circuit | |      |               |
  |  |  power off )  | |      |               |
  |  +---------------+ |      |               |
  |    ^ 8   |   ^ 6   |      |               |
  |    |     |   |     |      |               |
  |    |     V 3 |     |      |               |
  |    | +-------------+----+ |        +------+-----------+
  |    | |   Switched on    | |        |  Fault reaction  |
  |    | |                  | |        |     active       |
  |    | |  (Servo ready)   | |        | (Deceleration    |
  |    | +------------------+ |        |  processing)     |
  |    |     |   ^ 5          |        +------------------+
  |    |     |   |            |               ^
  |    |     v 4 |            |               | 13
+-------------------+   11 +---------------+  |
|     Operation     |----->|Quick stop     |  |
|     Enabled       |<-----|active         |  |
|                   | 16   | (Deceleration |  |
|     (Servo on)    |      |  processing)  |  |
+-------------------+      +---------------+  |
                                              Error Occurs 

FSA Transition

NoFSA Transition
0Auto skip
1Auto skip
2[Shutdown]
3[Switch On]
4[Enable operation]
5[Disable operation]
6[Shutdown]
7[Disable voltage]
8[Shutdown]
9[Disable voltage]
10[Disable voltage]
11[Quick stop]
12[Disable voltage]
13Error Occurs
14Auto skip
15[Fault reset]
16[Enable operation]

Control Word (0x6040:0x0)

+-----------------------------------------------------------+
+-----------------------------------------------------------+
Bit 15                                                  Bit 0
  • Bit 0: Switch On
  • Bit 1: Enable Voltage
  • Bit 2: Quick Stop
  • Bit 3: Enable Operation
  • Bit 4: Operation Mode Specification
  • Bit 5: Operation Mode Specification
  • Bit 6: Operation Mode Specification
  • Bit 7: Fault Reset
  • Bit 8: Halt
  • Bit 9: Operation Mode Specification
  • Bit 10: Reserved
  • Bit 11: Reserved
  • Bit 12: Reserved
  • Bit 13: Reserved
  • Bit 14: Reserved
  • Bit 15: Reserved

Operation Mode Specification:

OP modeBit 9Bit 6Bit 5Bit 4
PPchange on set-pointabsolute/relativechange set immediatelynew set-point
PV
TQ
HMstart homing
CSP
CSV
CST
Commnadbit 7bit 3bit 2bit 1bit 0Transitions
Shutdown0-1102,6,8
Switch on001113
Switch on + Enable operation011113+4
Enable operation011114,16
Disable voltage0--0-7,9,10,12
Quick stop0-01-7,10,11
Disable operation001115
Fault Reset0 -> 1----15

Status Word (0x6041:0x0)

+-----------------------------------------------------------+
+-----------------------------------------------------------+
Bit 15                                                  Bit 0
  • Bit 0: Ready to Switch On
  • Bit 1: Switched On
  • Bit 2: Operation Enabled
  • Bit 3: Fault
  • Bit 4: Voltage Enabled
  • Bit 5: Quick Stop
  • Bit 6: Switch On Disabled
  • Bit 7: Warning
  • Bit 8: Reserved
  • Bit 9: Remote
  • Bit 10: Operation Mode Specification
  • Bit 11: Internal Limit Active
  • Bit 12: Operation Mode Specification
  • Bit 13: Operation Mode Specification
  • Bit 14: Reserved
  • Bit 15: Reserved

Operation Mode Specification:

OP modeBit 13Bit 12Bit 10
PPfollowing errorset-point acknowledgetarget reached
PVspeedtarget reached
TQtarget reached
HMhoming errorhoming attainedtarget reached
CSPfollowing error
CSV
CST

FSA State:

FSA StateBit 6Bit 5Bit 3Bit 2Bit 1Bit 0
Not Ready to Switch on0-0000
Switch on Disabled1-0000
Ready To Switch On010001
Switch on010011
Operation Enabled010111
Quick Stop Active000111
Faut Reaction Active0-1111
Fault0-1000

+drive-halt ( ch n -- )

命令 EtherCAT 從站編號 nch 管道的馬達驅動器功能暫停。

此時馬達會依據 0x605D (Halt option code) 設定,暫時性的減速與停止。

+drive-homed ( ch n -- )

標記 EtherCAT 從站編號 nch 管道的馬達驅動器已經完成回歸機械原點。

此狀態為主站所提供的狀態紀錄。

+pp-cosp ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 9 (Change on set-point) 為 1。

當 Control Word Bit 9 為 1 (Change on set-point)與 Bit 5 (change set immediately) 為 0 時,同方向運動不減速到 0 通過中繼點。

細部功能請參考選用驅動器的 PP 模式描述。

+pp-imt ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 5 (change set immediately)為 1。

當 Control Word 的 Bit 5 (change set immediately) 為 1 時,表示要馬達驅動器只朝向最後所接受的目標位置運動。

細部功能請參考選用驅動器的 PP 模式描述。

+pp-rel ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 6 (absolute/relative)為 1。

細部功能請參考選用驅動器的 PP 模式描述。當 Control Word 的 Bit 6 (absolute/relative)為 1,馬達驅動器以相對位置來處理目標位置。

-drive-halt ( ch n -- )

命令 EtherCAT 從站編號 nch 管道的馬達驅動器功能繼續。

參考命令 +drive-halt

-drive-homed ( ch n -- )

標記 EtherCAT 從站編號 nch 管道的馬達驅動器未完成回歸機械原點。

此狀態為主站所提供的狀態紀錄。

-pp-cosp ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 9 (Change on set-point)為 0。

當 Control Word Bit 9 為 0 (Change on set-point)與 Bit 5 (change set immediately) 為 0 時,同方向運動減速到 0 通過中繼點。

細部功能請參考選用驅動器的 PP 模式描述。

-pp-imt ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 5 (change set immediately)為 0。

當 Control Word 的 Bit 5 (change set immediately) 為 0 時,表示要通過每一個馬達驅動器所接受的目標位置。

細部功能請參考選用驅動器的 PP 模式描述。

-pp-rel ( ch n -- )

當 EtherCAT 從站編號 nch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 6 (absolute/relative)為 0。

細部功能請參考選用驅動器的 PP 模式描述。當 Control Word 的 Bit 6 (absolute/relative)為 1,馬達驅動器以絕對位置來處理目標位置。

drive-cw! ( cw ch n -- )

直接設定 EtherCAT 從站編號 nch 管道馬達驅動器的 control word 為 cw。(由 PDO 設定)。

demand-p@ ( ch n -- pos )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 demand position pos

需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand position (object 0x6062) 映射到 PDO Mapping 上。

demand-tq@ ( ch n -- tq )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 demand torque tq

需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand torque (object 0x6074) 映射到 PDO Mapping 上。

demand-v@ ( ch n -- vel )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 demand velocity vel

需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand velocity (object 0x606B) 映射到 PDO Mapping 上。

drive-dins@ ( ch n -- dins )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的數位輸入狀態 dins。(由 PDO 取得資料)。

對應到 object 0x60FD。定義如下:

+-----------------------------------------------------------+
+-----------------------------------------------------------+
Bit 31                                                  Bit 0
  • Bit 0: Negative Limit
  • Bit 1: Positive Limit
  • Bit 2: Home Switch
  • Bit 3 ~ 31: 依馬達驅動器廠商定義。

drive-douts! ( douts ch n -- )

使用 SDO 命令,設定 EtherCAT 從站編號 nch 管道馬達驅動器的數位輸出為 douts

對應到 object 0x60FE:0x01。定義如下:

+-----------------------------------------------------------+
+-----------------------------------------------------------+
Bit 31                                                  Bit 0
  • Bit 0: Brake。
  • Bit 1 ~ 31: 依馬達驅動器廠商定義。

一般而言,驅動器的數位輸出是由馬達驅動器直接控制,如果需要由主站直接控制輸出,就要搭配 drive-douts-mask! 一起使用。

drive-douts-mask! ( mask ch n -- )

使用 SDO 命令,設定 EtherCAT 從站編號 nch 管道馬達驅動器的數位輸出遮罩為 mask

drive-douts! 一起使用。

drive-fault? ( ch n -- flag )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 status word Bit 3 (fault) 的狀態 flag

drive-homed? ( ch n -- flag )

取得 EtherCAT 從站編號 nch 管道馬達驅動器是否已經回歸機械原點 flag

drive-nl? ( ch n -- nl )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的負向極限開關是否被觸發 nl

其狀態來源與 drive-dins@ 相同。

drive-nsl! ( nsl ch n -- )

使用 SDO 命令設定 EtherCAT 從站編號 nch 管道馬達驅動器的負向軟體極限為 nsl

對應的 Object 0x607D:0x01。

drive-nsl@ ( ch n -- nsl )

將 EtherCAT 從站編號 nch 管道馬達驅動器的負向軟體極限放到堆疊上。

此設定值會在開機時從馬達驅動器讀回到主站。在開機後設定負向軟體極限請使用 drive-nsl!,這樣 SDO 命令回應的記憶體位置才會正確。

drive-off (ch n -- )

將 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State 切換到 Switch On Disabled。

drive-on (ch n -- )

將 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State 切換到 Operation Enabled。

drive-on? ( ch n -- flag )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State 是否在 Operation Enabled flag

drive-org? ( ch n -- org )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 home switch 是否被觸發 org

其狀態來源與 drive-dins@ 相同。

drive-pl? ( ch n -- pl )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的正向極限開關是否被觸發 nl

其狀態來源與 drive-dins@ 相同。

drive-psl! ( psl ch n -- )

使用 SDO 命令設定 EtherCAT 從站編號 nch 管道馬達驅動器的正向軟體極限為 psl

對應的 Object 0x607D:0x02。

drive-psl@ ( ch n -- psl )

將 EtherCAT 從站編號 nch 管道馬達驅動器的正向軟體極限放到堆疊上。

此設定值會在開機時從馬達驅動器讀回到主站。在開機後設定正向軟體極限請使用 drive-psl!,這樣 SDO 命令回應的記憶體位置才會正確。

drive-polarity! ( polarity ch n -- )

使用 SDO 命令設定 EtherCAT 從站編號 nch 管道馬達驅動器的方向定義 polarity

對應的 Object 0x607E。

drive-rpdo1@ ( ch n -- r1 )

取得 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第一個 Rx PDO 資料 (slave -> master)r1

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

drive-rpdo2@ ( ch n -- r2 )

取得 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第二個 Rx PDO 資料 (slave -> master)r2

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

drive-stop ( ch n -- )

將 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State 切換到 Quick stop actived。

drive-sw@ ( ch n -- sw )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 Status Word sw。(由 PDO 取得資料)。

drive-vmax! ( vmax ch n -- )

使用 SDO 命令設定 EtherCAT 從站編號 nch 管道馬達驅動器的最高速度 vmax

對應的 Object 0x6080:0x01。

drive-wpdo1! ( w1 ch n -- )

設定 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第一個 Tx PDO 資料 (master -> slave)w1

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

drive-wpdo1@ ( ch n -- w1 )

取得 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第一個 Tx PDO 資料 (master -> slave)w1

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

drive-wpdo2! ( w2 ch n -- )

設定 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第二個 Tx PDO 資料 (master -> slave)w2

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

drive-wpdo2@ ( ch n -- w2 )

取得 EtherCAT 從站編號 nch 管道馬達驅動器使用者規劃的第二個 Tx PDO 資料 (master -> slave)w2

需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。

go ( ch n -- )

設定 EtherCAT 從站編號 nch 管道馬達驅動器 Control Word 的 Bit 4 為 1。

該管道馬達驅動器在 PP 模式時為 new set-point,在 HM 模式時為 start homing。當主站接受到該管道的回應訊息時,會自動將 Control Word 的 Bit 4 設定為 0。

homing-a! ( acceleration ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 homing acceleration acceleration

對應的 Object 為 0x609A。要留意馬達驅動器的設定單位。

homing-method! ( method ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 homing method method

對應的 Object 為 0x6098。

homing-v1! ( v1 ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 homing speed for switch v1

對應的 Object 為 0x6099:0x01。要留意馬達驅動器的設定單位。

homing-v2! ( v2 ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 homing speed for zero v2

對應的 Object 為 0x6099:0x02。要留意馬達驅動器的設定單位。

op-mode! ( mode ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的操作模式 mode

對應的 Object 為 0x6060。

目前有支援的 mode 如下:

1: PP
3: PV
4: TQ
6: HM
8: CSP
9: CSV
10: CST

也有已經定義好的模式代號命令:

: pp ( -- mode ) 1 ;
: pv ( -- mode ) 3 ;
: tq ( -- mode ) 4 ;
: hm ( -- mode ) 6 ;
: csp ( -- mode ) 8 ;
: csv ( -- mode ) 9 ;
: cst ( -- mode ) 10 ;

命令範例:

1  1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 PP 模式
pp 1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 PP 模式
3  1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 PV 模式
pv 1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 PV 模式
4  1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 TQ 模式
tq 1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 TQ 模式
6  1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 HM 模式
hm 1 1 op-mode!  \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 HM 模式
8   1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CSP 模式
csp 1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CSP 模式
9   1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CSV 模式
csv 1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CSV 模式
10  1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CST 模式
cst 1 1 op-mode! \ 將 EtherCAT 從站編號 1 第 1 管道馬達驅動器切換為 CST 模式

pds-goal! ( goal ch n -- )

切換 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State goal。主站會依據 FSA State 自動設定 Control Word。

可以切換的 FSA state of PDS 如下:

: switch-on-disabled ( -- goal ) 1 ;
: ready-to-switch-on ( -- goal ) 2 ;
: switched-on        ( -- goal ) 3 ;
: operation-enabled  ( -- goal ) 4 ;
: quick-stop-active  ( -- goal ) 5 ;

drive-on, drive-ondrive-stop 命令就是以 pds-goal 命令組合而成:

: drive-on ( ch n -- )
    operation-enabled -rot pds-goal! ;

: drive-off ( ch n -- )
    switch-on-disabled -rot pds-goal! ;

: drive-stop ( ch n -- )
    quick-stop-active -rot pds-goal! ;

profile-a1! ( a1 ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 profile acceleration a1

對應的 Object 為 0x6083。在 PP 與 PV 模式時會使用到此加速度進行位置或是速度規劃,要留意馬達驅動器的設定單位。

profile-a2! ( a2 ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 profile deceleration a2

對應的 Object 為 0x6084。在 PP 與 PV 模式時會使用到此減速進行位置或是速度規劃,要留意馬達驅動器的設定單位。

profile-v! ( vel ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的 profile velocity vel

對應的 Object 為 0x6081。在 PP 模式時會使用速度進行位置與速度規劃,要留意馬達驅動器的設定單位。

real-p@ ( ch n -- pos )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的真實位置 pos。(由 PDO 取得資料)。

對應的 Object 為 0x6064。通常單位是脈波數。

real-tq@ ( ch n -- tq )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的實際扭力 tq(由 PDO 取得資料)。

需要設定主站參數檔,而且該管道的馬達驅動器可以將 torque actual value (object 0x6077) 映射到 PDO Mapping 上。通常單位是額定扭力的 0.1%。

real-v@ ( ch n -- vel )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的真實速度 vel。(由 PDO 取得資料)。

需要設定主站參數檔,而且該管道的馬達驅動器可以將 real velocity (object 0x606C) 映射到 PDO Mapping 上。單位有可能是 pulse/s 或是 0.1 rpm。

reset-fault ( ch n -- )

當 EtherCAT 從站編號 nch 管道馬達驅動器處於 Fault of FAS State 時,將該管道馬達驅動器切換到 Switch on Disabled 的狀態。主站會自動設定對應的 Control Word。

target-p! ( pos ch n -- )

設定 EtherCAT 從站編號 nch 管道馬達驅動器的目標位置 pos。(由 PDO 設定位置)。

對應的 Object 為 0x607A。通常單位是脈波數。

target-p@ ( ch n -- pos )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的目標位置 pos

target-reached? ( ch n -- flag )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 Status Word Bit 10 (target reached) 是否為 1 。

其狀態來源與 drive-sw@ 相同。

target-tq! ( tq ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的目標扭力 tq

對應的 Object 為 0x6071。通常單位是額定扭力的 0.1%。

此命令適合在 TQ 模式下使用。若要在 CST 模式下週期性設定目標扭力,需將 Object 0x6071 設定為使用者 PDO,再使用 drive-wpdo1!drive-wpdo2! 寫入。

target-v! ( vel ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的目標速度 v

對應的 Object 為 0x60FF。單位有可能是 pulse/s 或是 0.1 rpm。

此命令只適合在 PV 模式下使用,如果是 CSV 模式要設定目標速度則是要使用 drive-wpdo1! 或是 drive-wpdo2!

tq-ofs! ( ofs ch n -- )

透過 PDO 設定 EtherCAT 從站編號 nch 管道馬達驅動器的 Torque Offset ofs

需要設定主站參數檔,而且該管道的馬達驅動器可以將 Torque Offset (object 0x60B2) 映射到 PDO Mapping 上。此命令通常用於 CSP、CSV 或 CST 模式,可在馬達驅動器的扭力控制迴路中額外調整扭力目標值。通常單位是額定扭力的 0.1%。

tq-ofs@ ( ch n -- ofs )

透過 PDO 取得 EtherCAT 從站編號 nch 管道馬達驅動器的 Torque Offset ofs

需要設定主站參數檔,而且該管道的馬達驅動器可以將 Torque Offset (object 0x60B2) 映射到 PDO Mapping 上。

tq-slope! ( slope ch n -- )

使用 SDO 指令設定 EtherCAT 從站編號 nch 管道馬達驅動器的扭力輸出變化率 slope

對應的 Object 為 0x6087。通常單位是額定扭力的 0.1%/s。

在 TQ 模式下,驅動器使用此設定值規劃扭力輸出的變化。通常會搭配 drive-vmax! 使用,避免馬達扭力輸出尚未到達目標時運動速度過快。

until-drive-on ( ch n -- )

等待 EtherCAT 從站編號 nch 管道馬達驅動器的 FSA State 到達 Operation Enabled。

因此命令內含有 pause,所以只適合用於 Background Task。

此命令相當於:

: until-drive-on ( ch n -- )
    begin
        over over drive-on? not
    while
        pause
    repeat
    drop drop ;

until-no-fault ( ch n -- )

等待 EtherCAT 從站編號 nch 管道馬達驅動器的 Status Word Bit 3 (Fault) 為 0。

因此命令內含有 pause,所以只適合用於 Background Task。

相當於

: until-no-fault ( channel slave -- )     
    pause pause pause pause pause pause \ 確保收到驅動器最新的 status word
    begin
        over over drive-fault?
    while
        pause
    repeat
    drop drop ; 

until-target-reached ( ch n -- )

等待 EtherCAT 從站編號 nch 管道馬達驅動器的 Status Word Bit 10 (target reached) 為 1。

因此命令內含有 pause,所以只適合用於 Background Task。

此命令相當於:

: until-target-reached ( channel slave -- )
    pause pause pause pause pause pause \ 確保收到驅動器最新的 status word
    begin
        over over target-reached? not
    while
        pause
    repeat
    drop drop
;

v-ofs! ( ofs ch n -- )

設定 EtherCAT 從站編號 nch 管道馬達驅動器的 Velocity Offset ofs

需要設定主站參數檔,而且該管道的馬達驅動器可以將 Velocity Offset (object 0x60B1) 映射到 PDO Mapping 上。

此一命令通常用於 CSP 或是 CSV 模式下,可以在馬達驅動器內的速度控制迴路額外調整速度目標值。單位通常是 pulse/s 或是 0.1 rpm。

v-ofs@ ( ch n -- ofs )

取得 EtherCAT 從站編號 nch 管道馬達驅動器的 Velocity Offset ofs

需要設定主站參數檔,而且該管道的馬達驅動器可以將 Velocity Offset (object 0x60B1) 映射到 PDO Mapping 上。

PP-TEST 範例

使用 EtherCAT 從站編號 1 第 1 管道的馬達驅動器。

: pp-test
    pp 1 1 op-mode!          \ 切換到 PP Mode
    until-no-requests        \ 等待 op-mode! 命令實際設定到驅動器
    1 1 reset-fault          \ 解除驅動器異警
    1 1 until-no-fault       \ 等待解除驅動器異警完成
    1 1 drive-on             \ Drive On
    1 1 until-drive-on       \ 等待 Drive on 程序完成
    1000 1 1 target-p!       \ Set target position to 1000
    1 1 go                   \ New set-point
    1 1 until-target-reached \ 等待到達目標點
;

deploy pp-test ;deploy       \ 在 Background Task 執行 pp-test

本節指令集

指令堆疊效果
+drive-halt( ch n – )
+drive-homed( ch n – )
+pp-cosp( ch n – )
+pp-imt( ch n – )
+pp-rel( ch n – )
-drive-halt( ch n – )
-drive-homed( ch n – )
-pp-cosp( ch n – )
-pp-imt( ch n – )
-pp-rel( ch n – )
csp( – 8 )
cst( – 10 )
csv( – 9 )
drive-cw!( cw ch n – )
demand-p@( ch n – pos )
demand-tq@( ch n – tq )
demand-v@( ch n – vel )
drive-dins@( ch n – dins )
drive-douts!( douts ch n – )
drive-douts-mask!( mask ch n – )
drive-fault?( ch n – flag )
drive-homed?( ch n – flag )
drive-nl?( ch n – nl )
drive-nsl!( nsl ch n – )
drive-nsl@( ch n – nsl )
drive-off( ch n – )
drive-on( ch n – )
drive-on?( ch n – flag )
drive-org?( ch n – org )
drive-pl?( ch n – pl )
drive-psl!( psl ch n – )
drive-psl@( ch n – psl )
drive-polarity!( polarity ch n – )
drive-rpdo1@( ch n – r1 )
drive-rpdo2@( ch n – r2 )
drive-stop( ch n – )
drive-sw@( ch n – sw )
drive-vmax!( vmax ch n – )
drive-wpdo1!( w1 ch n – )
drive-wpdo1@( ch n – w1 )
drive-wpdo2!( w2 ch n – )
drive-wpdo2@( ch n – w2 )
go( ch n – )
hm( – 6 )
homing-a!( acc ch n – )
homing-method!( method ch n – )
homing-v1!( v1 ch n – )
homing-v2!( v2 ch n – )
op-mode!( mode ch n – )
pds-goal!( goal ch n – )
pp( – 1 )
profile-a1!( a1 ch n – )
profile-a2!( a2 ch n – )
profile-v!( vel ch n – )
pv( – 3 )
real-p@( ch n – pos )
real-tq@( ch n – tq )
real-v@( ch n – vel )
reset-fault( ch n – )
target-p!( pos ch n – )
target-p@( ch n – pos )
target-reached?( channel n – flag )
target-tq!( tq ch n – )
target-v!( vel ch n – )
tq( – 4 )
tq-ofs!( ofs ch n – )
tq-ofs@( ch n – ofs )
tq-slope!( slope ch n – )
until-drive-on( ch n – )
until-no-fault( ch n – )
until-target-reached( ch n – )
v-ofs!( ofs ch n – )
v-ofs@( ch n – ofs )