連接和使用 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 開源通訊軟體工具,軟體架構圖如下:
上圖紅框處表示 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 即時通訊的範例:
以下我們以 86Duino One 為例,介紹如何透過網路線連接 EtherCAT 從站裝置,並使用 IgH EtherCAT Master 進行操作。
準備
一張 86Duino 開發板:
一個 EtherCAT 從站裝置(本例中我們使用 BECKOFF EK1100):
86Duino 線材包裡的 RJ45 網路孔:
步驟一
將安裝好 L86duntu-RT 的 MicroSD 卡插進 86Duino,並接上 86Duino 線材包裡的 RJ45 網路孔。
步驟二
以網路線連接 86Duino 與 EtherCAT 從站裝置,如下圖所示:
步驟三
將 86Duino 開機,並以 VNC Viewer 登入 L86duntu-RT(如何使用 VNC Viewer 登入,可參考此篇教學文章)。
步驟四
登入 L86duntu-RT 後,打開終端機,輸入 ifconfig
指令,查詢 86Duino 網路卡的 MAC 位址,如下圖:
步驟五
接著開啟 /etc/sysconfig/ethercat
檔案,填入網路卡的 MAC 位址:
步驟六
輸入以下指令,執行 IgH EtherCAT Master 的 shell script:
./etc/init.d/ethercat start
步驟七
然後輸入 lsmod
查詢已掛載的驅動程式,您將可以看到 IgH EtherCAT Master 的驅動程式在列出的清單之內,如下圖:
步驟八
輸入以下指令:
ethercat slaves
您將會看到已連線的 EtherCAT 裝置名稱;在這個範例中有兩個裝置,分別為 EK1100 和 EL2008,如下圖:
此時表示 EtherCAT 從站已正確連線,您可接著輸入 IgH EtherCAT Master 支援的各種指令操作 EtherCAT 從站;指令列表可參考 IgH EtherCAT Master 官方說明手冊。
附錄:測試 86Duino 跑 Xenomai 核心時的即時性能
請在終端機內輸入以下指令:
xeno-test latency
您將能看到 Xenomai 核心的即時性能統計數據(86Duino 跑 Xenomai 核心的平均 latency 大約是 15us),如下圖:
The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.