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 及各製造商可能另有其他方法。選用前,必須由驅動器手冊確認支援狀態、輸入 指派、極性及實際行為。
代表性流程
上圖分別以方法 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
| No | FSA Transition |
|---|---|
| 0 | Auto skip |
| 1 | Auto 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] |
| 13 | Error Occurs |
| 14 | Auto 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 mode | Bit 9 | Bit 6 | Bit 5 | Bit 4 |
|---|---|---|---|---|
| PP | change on set-point | absolute/relative | change set immediately | new set-point |
| PV | – | – | – | |
| TQ | – | – | – | |
| HM | – | – | start homing | |
| CSP | – | – | – | |
| CSV | – | – | – | |
| CST | – | – | – |
| Commnad | bit 7 | bit 3 | bit 2 | bit 1 | bit 0 | Transitions |
|---|---|---|---|---|---|---|
| Shutdown | 0 | - | 1 | 1 | 0 | 2,6,8 |
| Switch on | 0 | 0 | 1 | 1 | 1 | 3 |
| Switch on + Enable operation | 0 | 1 | 1 | 1 | 1 | 3+4 |
| Enable operation | 0 | 1 | 1 | 1 | 1 | 4,16 |
| Disable voltage | 0 | - | - | 0 | - | 7,9,10,12 |
| Quick stop | 0 | - | 0 | 1 | - | 7,10,11 |
| Disable operation | 0 | 0 | 1 | 1 | 1 | 5 |
| Fault Reset | 0 -> 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 mode | Bit 13 | Bit 12 | Bit 10 |
|---|---|---|---|
| PP | following error | set-point acknowledge | target reached |
| PV | – | speed | target reached |
| TQ | – | – | target reached |
| HM | homing error | homing attained | target reached |
| CSP | following error | – | |
| CSV | – | – | |
| CST | – | – |
FSA State:
| FSA State | Bit 6 | Bit 5 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
|---|---|---|---|---|---|---|
| Not Ready to Switch on | 0 | - | 0 | 0 | 0 | 0 |
| Switch on Disabled | 1 | - | 0 | 0 | 0 | 0 |
| Ready To Switch On | 0 | 1 | 0 | 0 | 0 | 1 |
| Switch on | 0 | 1 | 0 | 0 | 1 | 1 |
| Operation Enabled | 0 | 1 | 0 | 1 | 1 | 1 |
| Quick Stop Active | 0 | 0 | 0 | 1 | 1 | 1 |
| Faut Reaction Active | 0 | - | 1 | 1 | 1 | 1 |
| Fault | 0 | - | 1 | 0 | 0 | 0 |
+drive-halt ( ch n -- )
命令 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器功能暫停。
此時馬達會依據 0x605D (Halt option code) 設定,暫時性的減速與停止。
+drive-homed ( ch n -- )
標記 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器已經完成回歸機械原點。
此狀態為主站所提供的狀態紀錄。
+pp-cosp ( ch n -- )
當 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器處於 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 從站編號 n 第 ch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 5 (change set immediately)為 1。
當 Control Word 的 Bit 5 (change set immediately) 為 1 時,表示要馬達驅動器只朝向最後所接受的目標位置運動。
細部功能請參考選用驅動器的 PP 模式描述。
+pp-rel ( ch n -- )
當 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 6 (absolute/relative)為 1。
細部功能請參考選用驅動器的 PP 模式描述。當 Control Word 的 Bit 6 (absolute/relative)為 1,馬達驅動器以相對位置來處理目標位置。
-drive-halt ( ch n -- )
命令 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器功能繼續。
參考命令 +drive-halt
-drive-homed ( ch n -- )
標記 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器未完成回歸機械原點。
此狀態為主站所提供的狀態紀錄。
-pp-cosp ( ch n -- )
當 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器處於 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 從站編號 n 第 ch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 5 (change set immediately)為 0。
當 Control Word 的 Bit 5 (change set immediately) 為 0 時,表示要通過每一個馬達驅動器所接受的目標位置。
細部功能請參考選用驅動器的 PP 模式描述。
-pp-rel ( ch n -- )
當 EtherCAT 從站編號 n 第 ch 管道的馬達驅動器處於 PP 模式時,設定 Control Word 的 Bit 6 (absolute/relative)為 0。
細部功能請參考選用驅動器的 PP 模式描述。當 Control Word 的 Bit 6 (absolute/relative)為 1,馬達驅動器以絕對位置來處理目標位置。
drive-cw! ( cw ch n -- )
直接設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 control word 為 cw。(由 PDO 設定)。
demand-p@ ( ch n -- pos )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 demand position pos。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand position (object 0x6062) 映射到 PDO Mapping 上。
demand-tq@ ( ch n -- tq )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 demand torque tq。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand torque (object 0x6074) 映射到 PDO Mapping 上。
demand-v@ ( ch n -- vel )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 demand velocity vel。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 demand velocity (object 0x606B) 映射到 PDO Mapping 上。
drive-dins@ ( ch n -- dins )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的數位輸入狀態 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 從站編號 n 第 ch 管道馬達驅動器的數位輸出為 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 從站編號 n 第 ch 管道馬達驅動器的數位輸出遮罩為 mask。
與 drive-douts! 一起使用。
drive-fault? ( ch n -- flag )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 status word Bit 3 (fault) 的狀態 flag。
drive-homed? ( ch n -- flag )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器是否已經回歸機械原點 flag。
drive-nl? ( ch n -- nl )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的負向極限開關是否被觸發 nl。
其狀態來源與 drive-dins@ 相同。
drive-nsl! ( nsl ch n -- )
使用 SDO 命令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的負向軟體極限為 nsl。
對應的 Object 0x607D:0x01。
drive-nsl@ ( ch n -- nsl )
將 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的負向軟體極限放到堆疊上。
此設定值會在開機時從馬達驅動器讀回到主站。在開機後設定負向軟體極限請使用 drive-nsl!,這樣 SDO 命令回應的記憶體位置才會正確。
drive-off (ch n -- )
將 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 FSA State 切換到 Switch On Disabled。
drive-on (ch n -- )
將 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 FSA State 切換到 Operation Enabled。
drive-on? ( ch n -- flag )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 FSA State 是否在 Operation Enabled flag。
drive-org? ( ch n -- org )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 home switch 是否被觸發 org。
其狀態來源與 drive-dins@ 相同。
drive-pl? ( ch n -- pl )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的正向極限開關是否被觸發 nl。
其狀態來源與 drive-dins@ 相同。
drive-psl! ( psl ch n -- )
使用 SDO 命令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的正向軟體極限為 psl。
對應的 Object 0x607D:0x02。
drive-psl@ ( ch n -- psl )
將 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的正向軟體極限放到堆疊上。
此設定值會在開機時從馬達驅動器讀回到主站。在開機後設定正向軟體極限請使用 drive-psl!,這樣 SDO 命令回應的記憶體位置才會正確。
drive-polarity! ( polarity ch n -- )
使用 SDO 命令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的方向定義 polarity。
對應的 Object 0x607E。
drive-rpdo1@ ( ch n -- r1 )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第一個 Rx PDO 資料 (slave -> master)r1。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
drive-rpdo2@ ( ch n -- r2 )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第二個 Rx PDO 資料 (slave -> master)r2。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
drive-stop ( ch n -- )
將 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 FSA State 切換到 Quick stop actived。
drive-sw@ ( ch n -- sw )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 Status Word sw。(由 PDO 取得資料)。
drive-vmax! ( vmax ch n -- )
使用 SDO 命令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的最高速度 vmax。
對應的 Object 0x6080:0x01。
drive-wpdo1! ( w1 ch n -- )
設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第一個 Tx PDO 資料 (master -> slave)w1。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
drive-wpdo1@ ( ch n -- w1 )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第一個 Tx PDO 資料 (master -> slave)w1。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
drive-wpdo2! ( w2 ch n -- )
設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第二個 Tx PDO 資料 (master -> slave)w2。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
drive-wpdo2@ ( ch n -- w2 )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器使用者規劃的第二個 Tx PDO 資料 (master -> slave)w2。
需要設定主站參數檔,而且該管道的馬達驅動器可以將對應的 object 映射到 PDO Mapping 上。
go ( ch n -- )
設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器 Control Word 的 Bit 4 為 1。
該管道馬達驅動器在 PP 模式時為 new set-point,在 HM 模式時為 start homing。當主站接受到該管道的回應訊息時,會自動將 Control Word 的 Bit 4 設定為 0。
homing-a! ( acceleration ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 homing acceleration acceleration。
對應的 Object 為 0x609A。要留意馬達驅動器的設定單位。
homing-method! ( method ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 homing method method。
對應的 Object 為 0x6098。
homing-v1! ( v1 ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 homing speed for switch v1。
對應的 Object 為 0x6099:0x01。要留意馬達驅動器的設定單位。
homing-v2! ( v2 ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 homing speed for zero v2。
對應的 Object 為 0x6099:0x02。要留意馬達驅動器的設定單位。
op-mode! ( mode ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的操作模式 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 從站編號 n 第 ch 管道馬達驅動器的 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-on 與 drive-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 從站編號 n 第 ch 管道馬達驅動器的 profile acceleration a1。
對應的 Object 為 0x6083。在 PP 與 PV 模式時會使用到此加速度進行位置或是速度規劃,要留意馬達驅動器的設定單位。
profile-a2! ( a2 ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 profile deceleration a2。
對應的 Object 為 0x6084。在 PP 與 PV 模式時會使用到此減速進行位置或是速度規劃,要留意馬達驅動器的設定單位。
profile-v! ( vel ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 profile velocity vel。
對應的 Object 為 0x6081。在 PP 模式時會使用速度進行位置與速度規劃,要留意馬達驅動器的設定單位。
real-p@ ( ch n -- pos )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的真實位置 pos。(由 PDO 取得資料)。
對應的 Object 為 0x6064。通常單位是脈波數。
real-tq@ ( ch n -- tq )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的實際扭力 tq(由 PDO 取得資料)。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 torque actual value (object 0x6077) 映射到 PDO Mapping 上。通常單位是額定扭力的 0.1%。
real-v@ ( ch n -- vel )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的真實速度 vel。(由 PDO 取得資料)。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 real velocity (object 0x606C) 映射到 PDO Mapping 上。單位有可能是 pulse/s 或是 0.1 rpm。
reset-fault ( ch n -- )
當 EtherCAT 從站編號 n 第 ch 管道馬達驅動器處於 Fault of FAS State 時,將該管道馬達驅動器切換到 Switch on Disabled 的狀態。主站會自動設定對應的 Control Word。
target-p! ( pos ch n -- )
設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的目標位置 pos。(由 PDO 設定位置)。
對應的 Object 為 0x607A。通常單位是脈波數。
target-p@ ( ch n -- pos )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的目標位置 pos。
target-reached? ( ch n -- flag )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 Status Word Bit 10 (target reached) 是否為 1 。
其狀態來源與 drive-sw@ 相同。
target-tq! ( tq ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的目標扭力 tq。
對應的 Object 為 0x6071。通常單位是額定扭力的 0.1%。
此命令適合在 TQ 模式下使用。若要在 CST 模式下週期性設定目標扭力,需將 Object 0x6071 設定為使用者 PDO,再使用 drive-wpdo1! 或 drive-wpdo2! 寫入。
target-v! ( vel ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的目標速度 v。
對應的 Object 為 0x60FF。單位有可能是 pulse/s 或是 0.1 rpm。
此命令只適合在 PV 模式下使用,如果是 CSV 模式要設定目標速度則是要使用 drive-wpdo1! 或是 drive-wpdo2!。
tq-ofs! ( ofs ch n -- )
透過 PDO 設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 Torque Offset ofs。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 Torque Offset (object 0x60B2) 映射到 PDO Mapping 上。此命令通常用於 CSP、CSV 或 CST 模式,可在馬達驅動器的扭力控制迴路中額外調整扭力目標值。通常單位是額定扭力的 0.1%。
tq-ofs@ ( ch n -- ofs )
透過 PDO 取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 Torque Offset ofs。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 Torque Offset (object 0x60B2) 映射到 PDO Mapping 上。
tq-slope! ( slope ch n -- )
使用 SDO 指令設定 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的扭力輸出變化率 slope。
對應的 Object 為 0x6087。通常單位是額定扭力的 0.1%/s。
在 TQ 模式下,驅動器使用此設定值規劃扭力輸出的變化。通常會搭配 drive-vmax! 使用,避免馬達扭力輸出尚未到達目標時運動速度過快。
until-drive-on ( ch n -- )
等待 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 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 從站編號 n 第 ch 管道馬達驅動器的 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 從站編號 n 第 ch 管道馬達驅動器的 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 從站編號 n 第 ch 管道馬達驅動器的 Velocity Offset ofs。
需要設定主站參數檔,而且該管道的馬達驅動器可以將 Velocity Offset (object 0x60B1) 映射到 PDO Mapping 上。
此一命令通常用於 CSP 或是 CSV 模式下,可以在馬達驅動器內的速度控制迴路額外調整速度目標值。單位通常是 pulse/s 或是 0.1 rpm。
v-ofs@ ( ch n -- ofs )
取得 EtherCAT 從站編號 n 第 ch 管道馬達驅動器的 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 ) |