EtherCAT IO 指令集

EtherCAT IO 包含以下部份:

  1. EtherCAT DIN/DOUT/AIN/AOUT 模組。單一種或是綜合的訊號模組。
  2. EtherCAT PWM 模組。目前只有支援 BECKHOFF EL2502 模組。因為該模組可以使用同步命令(PDO)控制 PWM Period 與 Duty Cycle。如果是非同步命令 (SDO)的控制方式,使用 SDO upload/download 命令即可。

+ec-ain ( ch n -- )

開啟 EtherCAT 從站編號 n,第 ch 管道的類比輸入。

如選用的類比輸入從站,需要開啟類比輸入管道才能讀到量測值,就可以使用此以指令。

命令範例:

1 6 +ec-ain  \ 開啟 EtherCAT 從站編號 6,第 1 管道的類比輸入。

+ec-aout ( ch n -- )

開啟 EtherCAT 從站編號 n,第 ch 管道的類比輸出。

如選用的類比輸出從站,需要開啟類比輸出管道才能輸出訊號,就可以使用此以指令。

命令範例:

1 2 +ec-aout  \ 開啟 EtherCAT 從站編號 2,第 1 管道的類比輸出。

+pwm-user-scale ( ch n -- )

開啟 EtherCAT 從站編號 n,第 ch 管道的 PWM 自定義 Duty Cycle 命令功能。

-ec-ain ( ch n -- )

關閉 EtherCAT 從站編號 n,第 ch 管道的類比輸入。

命令範例:

1 6 -ec-ain  \ 關閉 EtherCAT 從站編號 6,第 1 管道的類比輸入。

-ec-aout ( ch n -- )

關閉 EtherCAT 從站編號 n,第 ch 管道的類比輸出。

命令範例:

1 2 -ec-aout  \ 關閉 EtherCAT 從站編號 2,第 1 管道的類比輸出。

-pwm-user-scale ( ch n -- )

關閉 EtherCAT 從站編號 n,第 ch 管道的 PWM 自定義 Duty Cycle 命令功能。

ec-ain@ ( ch n -- value )

取得 EtherCAT 從站編號 n,第 ch 管道的類比輸入。

命令範例:

1 6 ec-ain@  \ 取得 EtherCAT 從站編號 6,第 1 管道的類比輸入

ec-ain-error ( ch n -- error )

取得 EtherCAT 從站編號 n,第 ch 管道的類比輸入是否有錯誤。

BECKHOFF AI 模組有提供此一狀態,其錯誤的狀況有以下兩種:

  • Over range
  • Under range

ec-ain-validity ( ch n -- validity )

取得 EtherCAT 從站編號 n,第 ch 管道的類比輸入是否有效。

BECKHOFF AI 模組有提供此一狀態,表示該管道資料有正確地被主站使用 EtherCAT PDO 讀取。 原始資料 0 = valid, 1 = invalid,為避免字義上混淆,主站在取得資料時就進行反向的操作。

ec-aout! ( value ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道的類比輸出為 value

命令範例:

100 1 2 ec-aout!  \ 設定 EtherCAT 從站編號 2,第 1 管道的類比輸出為 100

ec-aout@ ( ch n -- value )

取得 EtherCAT 從站編號 n,第 ch 管道的類比輸出 value

1 2 ec-aout@  \ 取得 EtherCAT 從站編號 2,第 1 管道的類比輸出

ec-din@ ( ch n -- t )

取得 EtherCAT 從站編號 n,第 ch 管道的數位輸入訊號 t

命令範例:

3 5 ec-din@  \ 取得 EtherCAT 從站編號 5 的第 3 管道的數位輸入訊號

ec-dout! ( t channel n -- )

設定 EtherCAT 從站編號 n,第 ch 管道的數位輸出訊號為 t

命令範例:

1 2 3 ec-dout!  \ 設定 EtherCAT 從站編號 3,第 2 管道的數位輸出訊號為 1

ec-dout@ ( ch n -- t )

取得 EtherCAT 從站編號 n,第 ch 管道的數位輸出訊號 t

命令範例:

2 3 ec-dout@  \ 取得 EtherCAT 從站編號 3 的第 2 管道的數位輸出訊號

ec-wdout! ( value index n -- )

以 32 bits 命令資料 value 與編號 index 設定 EtherCAT 從站編號 n 的數位輸出訊號。

命令範例:

$11 1 2 ec-wdout!  \ 設定 EtherCAT 從站編號 2,第 1 與 5 管道的數位輸出。
1   2 2 ec-wdout!  \ 設定 EtherCAT 從站編號 2,第 33 管道的數位輸出。

max-pwm-period@ ( n -- period )

取得 EtherCAT 從站編號 n, PWM 模組支援的最大周期時間 period [us]。

min-pwm-period@ ( n -- period )

取得 EtherCAT 從站編號 n, PWM 模組支援的最小周期時間 period [us]。

pwm-def-out! ( output ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號, 在通訊錯誤時的 Duty Cycle 預設值 output

pwm-def-out-ramp! ( ramp ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號, 在通訊錯誤時的 Duty Cycle 斜降率 ramp

pwm-duty! ( duty ch n -- period )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號的 Duty Cycle duty。 Duty Cycle 物理值可以參考 pwm-presentation!指令。

pwm-duty@ ( ch n -- duty )

取得 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號的 Duty Cycle duty

pwm-period! ( period ch n -- period )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號 Period period [us]。

pwm-period@ ( ch n -- period )

取得 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號 Period period [us]。。

pwm-presentation! ( presentation ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號 Duty Cycle 解析度 presentation

BECKHOFF EL2502 可以設定的模式有:

PresentationDuty 設定說明
0 (Signed presentation)有效值 0 ~ 0x7FFF, 0x3FFF 表示 50 % Duty
1 (Unsigned presentation)有效值 0 ~ 0xFFFF,0x7FFF 表示 50% Duty
2 (Absolute value with MSB as sign)3276 表示 10 % duty, -3276 表示 90 % duty
3 (Absolute valuen)3276 表示 10 % duty, -3276 也表示 10 % duty

pwm-wdt! ( wdt ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號,當通訊錯誤時,訊號輸出模式 wdt

BECKHOFF EL2502 可以設定的模式有:

  • 0: Default watchdog value
  • 1: Watchdog ramp active
  • 2: Last output value active

pwm-user-gain! ( gain ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號自定義 Duty Cycle 命令增益 gain

參考 BECKHOFF EL2502 文件中針對 Object 0x8000:0x01 的說明。

pwm-user-offset! ( offset ch n -- )

設定 EtherCAT 從站編號 n,第 ch 管道 PWM 訊號自定義 Duty Cycle 命令偏移量 offset

本節指令集

指令堆疊效果說明
+ec-ain( ch n -- )啟動 AIN 功能
+ec-aout( ch n -- )啟動 AOUT 功能
+pwm-user-scale( ch n -- )啟動 PWM 自定義 Duty Cycle 命令功能
-ec-ain( ch n -- )關閉 AIN 功能
-ec-aout( ch n -- )關閉 AOUT 功能
-pwm-user-scale( ch n -- )關閉 PWM 自定義 Duty Cycle 命令功能
ec-ain@( ch n -- value )取得 AIN 量測值
ec-ain-error( ch n -- error )取得 AIN 量測值是否有錯誤
ec-ain-validity( ch n -- validity )取得 AIN 量測值是否有效
ec-aout!( value ch n -- )設定 AOUT
ec-aout@( ch n -- value )取得 AOUT
ec-din@( ch n -- t )取得 DIN
ec-dout!( t ch n -- )設定 DOUT
ec-dout@( ch n -- t )取得 DOUT
ec-wdout!( value index n -- )設定 DOUTs
max-pwm-period@( n -- period )取得 PWM 模組支援的最大周期時間
min-pwm-period@( n -- period )取得 PWM 模組支援的最小周期時間
pwm-def-out!( output ch n -- )當通訊錯誤時,PWM Duty Cycle 的預設值
pwm-def-out-ramp!( ramp ch n -- )當通訊錯誤時,PWM Duty Cycle 的斜降率
pwm-duty!( duty ch n -- )設定 PWM Duty Cycle
pwm-duty@( ch n -- duty )取得 PWM Duty Cycle
pwm-period!( period ch n -- )設定 PWM Period
pwm-period@( ch n -- period )取得 PWM Period
pwm-presentation!( presentation ch n -- )設定 PWM Duty Cycle 解析度
pwm-wdt!( wdt ch n -- )當通訊錯誤時,PWM 輸出模式
pwm-user-gain!( gain ch n - )PWM 自定義 Duty Cycle 命令增益
pwm-user-offset!( offset ch n -- )PWM 自定義 Duty Cycle 命令偏移量