介绍 Ubuntu16.04 下 Igh Ethercat 主站搭建的过程。

1 前言

https://github.com/ribalda/ethercat 下载 ethercat 安装包。

2 安装流程

lspci -vvv 查看网卡的型号以及驱动类型,也可以系统桌面右上角的网络连接中查看网卡的型号,从网上搜驱动类型。

82575EB

Ethernet controller 可以看到网卡型号为 82576Kernel modules 可以看到网卡驱动类型为 igb

ifconfig 查看所有网卡的MAC地址,也可以从系统桌面右上角的网络连接中通过 Edit Connections —> Edit —> Ethernet —> Device 中查看。

mac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo apt-get install autoconf autogen libtool   # 安装依赖项
cd 安装包路径
./bootstrap
./configure --prefix=/opt/etherlab --enable-generic --enable-8139too=no --enable-igb=yes --enable-r8169=yes --enable-e1000e=yes --enable-cycles --enable-hrtimer
#./configure --prefix=/opt/etherlab --enable-generic --enable-8139too=no --enable-igb=yes --enable-r8169=yes --enable-e1000e=yes --enable-cycles --enable-hrtimer=yes --enable-rtdm=yes --with-xenomai-dir=/usr/xenomai
make -j6
make all modules
sudo -s
make install
sudo make modules_install
cd /etc
sudo mkdir sysconfig
sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig
sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d
sudo cp /opt/etherlab/etc/ethercat.conf /etc
sudo gedit /etc/sysconfig/ethercat

在第27行 MASTER0_DEVICE的引号中 添加网卡的MAC地址,例如 MASTER0_DEVICE=”6c:b3:11:40:a7:e0”

在第100行 DEVICE_MODULES的引号中 添加网卡驱动类型,例如 DEVICE_MODULES=”igb”

注意:经过实际测试,preempt_rt+Ethercat,使用igb的驱动,会造成内存泄露的问题。现象就是程序正常运行,然后内存会逐渐增大,用最简单的程序,大概会一分钟增加0.01G内存,程序结束后,这块内存也不会自动销毁,换成generic的驱动(或者使用RTL8169驱动支持的网卡),则没有这个问题!

保存退出后,继续执行:

1
2
3
4
5
6
sudo ln -s /opt/etherlab/bin/ethercat /usr/local/bin/ethercat
echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules
sudo depmod
sudo /etc/init.d/ethercat start # 打开主站
sudo /etc/init.d/ethercat stop # 停止主站
sudo /etc/init.d/ethercat restart # 重启主站

3 主站测试

在超级用户模式下执行 /etc/init.d/ethercat start 指令后,得到如下结果表示主站安装正确。

start

通过 ethercat slaves 可以查看连接的从站情况。

slaves

从 Igh 主站 PDF 文件中可以找到各项的输出信息解释如下所示:

exp

Tip1:注意读出来的名字是否正常,如果名字与相应的 xml 文件中名字不一致,大概率是不能通过 Igh 主站来配置的。原因有很多种,建议用一个标准的商用产品先做调试。

Tip2: 如果读取到从站的名字全是 0,考虑网卡型号不符合 Igh 主站的要求。

从 Igh 官网可以查看相应的说明,官网网址:https://etherlab.org/en/ethercat/