連接和使用 EtnerCAT 設備

EtherCAT 是由德國 Beckhoff 公司於 2003 年提出的一種即時工業乙太網技術,目前已成為連接 PLC 及感測器、伺服馬達、I/O 開關等自動化設備的主流通訊介面之一。

EtherCAT 網路內的裝置可分為主站 (Master) 與從站 (Slave),主站做為整個網路的控制器,負責發送即時封包給各從站,以讀取從站資料或控制從站行為。L86duntu-RT 內建了開源 IgH EtherCAT Master 軟體,可將 86Duino 當作 EtherCAT 主站使用。

IgH EtherCAT Master 軟體簡介

IgH EtherCAT Master 是一款 Linux 平台的 EtherCAT 開源通訊軟體工具,軟體架構圖如下:

pic01

上圖紅框處表示 IgH EtherCAT Master 透過 Ethernet 驅動程式與 EtherCAT 從站裝置連線,其中 Ethernet 驅動程式分為原生 EtherCAT 網路驅動程式(Native EtherCAT-Capable Ethernet Drivers)與 Linux 標準網路驅動程式(Standard Ethernet Driver)兩種,使用者必須使用第一種驅動程式,才能支援即時(real-time)通訊。

使用不同晶片的網路卡對應不同的原生 EtherCAT 網路驅動程式,IgH EtherCAT Master 內定支援了 Realtek 8139、8169 系列與 Intel e100、e1000 系列等網路晶片,在 L86duntu-RT 內,我們也已經加入了 86Duino 內建網路卡 R6040 的專用原生 EtherCAT 網路驅動程式,因此可在 86Duino 上進行 EtherCAT 即時通訊。

IgH EtherCAT Master SDK

L86duntu-RT 使用者可以透過內建的 IgH EtherCAT Master SDK 編寫 EtherCAT 應用程式,編寫程式的方法可以參考 IgH EtherCAT Master 的原始碼中的 example 資料夾,路徑如下:

    /home/dmp/ethercat-hg/example

example 資料夾下,有一個名為 xenomai 的資料夾,裡面的內容為即時核心下透過 RTDM(Real-Time Driver Model)進行 EtherCAT 即時通訊的範例:

pic02

以下我們以 86Duino One 為例,介紹如何透過網路線連接 EtherCAT 從站裝置,並使用 IgH EtherCAT Master 進行操作。

準備

一張 86Duino 開發板:

86Duino_One

一個 EtherCAT 從站裝置(本例中我們使用 BECKOFF EK1100):

L86buntu

86Duino 線材包裡的 RJ45 網路孔:

86Duino_RJ45

步驟一

將安裝好 L86duntu-RT 的 MicroSD 卡插進 86Duino,並接上 86Duino 線材包裡的 RJ45 網路孔。

步驟二

以網路線連接 86Duino 與 EtherCAT 從站裝置,如下圖所示:

EtherCAT_connect_One1

步驟三

將 86Duino 開機,並以 VNC Viewer 登入 L86duntu-RT(如何使用 VNC Viewer 登入,可參考此篇教學文章)。

步驟四

登入 L86duntu-RT 後,打開終端機,輸入 ifconfig 指令,查詢 86Duino 網路卡的 MAC 位址,如下圖:

pic03

步驟五

接著開啟 /etc/sysconfig/ethercat 檔案,填入網路卡的 MAC 位址:

pic04

步驟六

輸入以下指令,執行 IgH EtherCAT Master 的 shell script:

    ./etc/init.d/ethercat start

EtherCAT_runsh

步驟七

然後輸入 lsmod 查詢已掛載的驅動程式,您將可以看到 IgH EtherCAT Master 的驅動程式在列出的清單之內,如下圖:

EtherCAT_lsmod

步驟八

輸入以下指令:

    ethercat slaves

您將會看到已連線的 EtherCAT 裝置名稱;在這個範例中有兩個裝置,分別為 EK1100 和 EL2008,如下圖:

EtherCAT_scan_result

此時表示 EtherCAT 從站已正確連線,您可接著輸入 IgH EtherCAT Master 支援的各種指令操作 EtherCAT 從站;指令列表可參考 IgH EtherCAT Master 官方說明手冊

附錄:測試 86Duino 跑 Xenomai 核心時的即時性能

請在終端機內輸入以下指令:

    xeno-test latency

您將能看到 Xenomai 核心的即時性能統計數據(86Duino 跑 Xenomai 核心的平均 latency 大約是 15us),如下圖:

latency


黑客天地主頁面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.