EtherCAT

Введение

EtherCAT — стандарт промышленной сети, относимый к семейству Industrial Ethernet и технологиям используемым для распределенного управления в режиме реального времени. Дейтаграммы EtherCAT пропускаются внутри стандартного фрейма Ethernet.

Существует несколько свободных реализаций EtherCAT Master для Linux. IgH EtherCAT Master отличается от прочих решений возможностью работы в режиме жесткого реального времени, поддержкой большого числа сетевого оборудования и гибкостью.

Сборка IgH EtherCAT Master

В данном разделе описаны два способа сборки IgH EtherCAT Master: в cross и native режимах.

Установка необходимых пакетов

Перед установкой следует убедиться в наличии следующих пакетов:

apt-get install build-essential libtool autoconf make gcc

Получение исходных текстов

Скачать последнюю версию IgH ethercat-master можно при помощи git:

git clone mcst-volga-git:ethercat-master

Сборка в режиме cross

Выполнить в директории с исходниками:

./bootstrap

Скрипт для сборки в кросс режиме может выглядеть следующим образом:

#!/bin/bash
export ARCH=e2k
export CC=”/opt/mcst/bin.toolchain/e2k-linux-gcc”
export CXX=”/opt/mcst/bin.toolchain/e2k-linux-g++”
export CPP=”/opt/mcst/bin.toolchain/e2k-linux-cpp”
export CFLAGS=’-I/opt/mcst/crossfs-3.0-rc5.e2k-8c/usr/include/’
export LDFLAGS=’-L/opt/mcst/crossfs-3.0-rc5.e2k-8c/usr/lib64/’
export LIBS=’-ldl -lc’
export CROSS_COMPILE=’/opt/mcst/bin.toolchain/e2k-linux-‘
export CROSS_ROOT=”/opt/mcst/crossfs-3.0-rc5.e2k-8c”
export INSTALL_MOD_PATH=”/path/to/lib/modules/3.14.46-elbrus-rt46-ga398952-dirty/”

./configure –with-linux-dir=/path/to/linux-build \
–enable-e1000e \
–host=e2k \
–build=x86_64-linux \
–disable-8139too \
–prefix=/path/to/etherlab \
CC=/opt/mcst/bin.toolchain/e2k-linux-gcc \
CXX=/opt/mcst/bin.toolchain/e2k-linux-g++ \
CPP=/opt/mcst/bin.toolchain/e2k-linux-cpp \
CFLAGS=’-I/opt/mcst/crossfs-3.0-rc5.e2k-8c/usr/include/’ \
LDFLAGS=’-L/opt/mcst/crossfs-3.0-rc5.e2k-8c/usr/lib64/’ \
LIBS=’-ldl -lc’ \
CROSS_COMPILE=’/opt/mcst/bin.toolchain/e2k-linux-‘

make && make modules && make modules_install

Скрипт .configure достаёт информацию о системе из директории с исходниками ядра (параметр –with-linux-dir), поэтому при кросскомпиляции потребуется e2k-ядро, собранное на той же машине. Также потребуются модули ядра, собранные в режиме кросскомпиляции – EtherCAT установит свои модули в указанную директорию.

Далее можно передать собранные EC-модули, сервис etc/init.d/ethercat, конфигурационный файл и утилиту ethercat на e2k машину:

pushd /path/to/kernel/modules && tar cvf –atime-preserve modules.tar lib
scp modules.tar user@host:/home/user
scp -r /path/to/ethercat-hg/script root@host:/opt/etherlab
scp /path/to/ethercat-hg/tool/ethercat root@host:/usr/local/sbin/ethercat

На e2k машине потребуется распаковать модули ядра:

su -c ‘tar xvf /home/komarov/modules.tar’

Сборка в режиме native

./bootstrap

Для вызова configure потребуются исходники ядра, сконфигурированные на e2k-машине:

/configure –enable-e1000e –build=e2k –with-linux-dir=/path/to/linux/sources

Далее:

make -j5
make modules -j5
make module_install
make install

Модули будут установлены в /lib/modules для версии ядра, указанной параметром –with-linux-dir

По умолчанию установка компонентов EC проводится в /opt/etherlab

Настройка IgH EtherCAT Master

ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d/ethercat
ln -s /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat

Для первоначальной настройки ethercat потребуется отредактировать конфигурационный файл /etc/sysconfig/ethercat, указав MAC-адрес мастер-устройства и драйвера, используемые EC.

Например:

MASTER0_DEVICE=”08:00:30:03:80:00″
DEVICE_MODULES=”e1000e”

Ethercat по умолчанию не работает от обычного пользователя, поэтому нужно создать правило udev /etc/udev/rules.d/99-EtherCAT.rules со следующим содержимым:

KERNEL==”EtherCAT[0-9]”, MODE=”0666″

При необходимости в правила можно дописать группы пользователей, у которых будет доступ к ethercat

KERNEL==”EtherCAT[0-9]”, MODE=”0666″ GROUP=”users”

Использование IgH EC Master

Запуск IgH EtherCAT Master

Запуск демона EtherCAT Master осуществляется с помощью следующей команды:

/etc/init.d/ethercat start

При запуске демон ethercat подгрузит необходимые модули ядра и создаст файл устройства /dev/EtherCATx

Утилита ethercat

По умолчанию устанавливается в /opt/etherlab/bin/ethercat; в случае кросскомпиляции может быть найдена в исходниках в директории tool.

Проверить работу EC Master можно следующей командой:

ethercat master

Userspace library

Для работы с EtherCAT в пользовательских приложениях используется библиотека libethercat, по умолчанию расположенная в директории /opt/etherlab/lib

Примеры использования можно найти в официальной документации к EC Master и в каталоге с исходниками:

src/time_benchmark.c

Скачать “EtherCAT.pdf”