连接和使用 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.