Etherlab解析(一)之获取、编译、安装(Ubuntu14.04)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangzheng_1986/article/details/82349416

前言:

EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写。EtherCAT是确定性的工业以太网,最早是由德国的Beckhoff公司研发。

优势:免费、开源、稳定性能良好、支持实时扩展。
环境:Ubuntu14.04

一、获取

(1) 从EtherLab官方网站获取

网址:http://etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2

(2) 从开源代码托管平台github上获取

进入github搜索”igh ethercat”即可下载所需要的源码包。
网址:https://github.com/synapticon/Etherlab_EtherCAT_Master/releases/download/v1.5.2-sncn-5/EtherCAT_Master-1.5.2-sncn-5.zip

二、编译及安装

wget https://github.com/synapticon/Etherlab_EtherCAT_Master/releases/download/v1.5.2-sncn-5/EtherCAT_Master-1.5.2-sncn-5.zip
unzip EtherCAT_Master-1.5.2-sncn-5.zip
cd sncn_installer
make ethercatMasterInstallWithAutoStart

三、文件解析

(1)官方文档配置

这里写图片描述

(2)根目录Makefile文件解析:

SHELL := /bin/bash
ethercatMasterVersion:=1.5.2-sncn-5
ethercatMasterZip:=ethercat-$(ethercatMasterVersion).tar.bz2
udevRulesFile:=99-EtherCAT.rules
ethercatUserGroup:=$(shell whoami)

$(udevRulesFile):
    @echo "Generating udev rules file"
    @echo "KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\", GROUP=\"$(ethercatUserGroup)\"">$(udevRulesFile)

ethercatMaster: $(udevRulesFile)
    tar -xvf $(ethercatMasterZip)           #解压源代码
    cd ethercat-$(ethercatMasterVersion);\
    ./configure --disable-8139too;\         #配置并生成Makefile
    make all modules;                       #生成应用程序及驱动模块

ethercatMasterInstall: ethercatMaster       
    cd ethercat-$(ethercatMasterVersion);\  #
    sudo make modules_install install;\     #将驱动模块拷贝到/lib/modules/3.13.0-32-generic/ethercat/
    sudo depmod;\                           #检测模块的相依性,供modprobe在安装模块时使用。
    sudo mv ../$(udevRulesFile) /etc/udev/rules.d/$(udevRulesFile);\       #修改设备操作权限。
    sudo ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d/ethercat;\    #ethercat加载服务文件
    sudo mkdir -p /etc/sysconfig/;\
    sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat;\ 
    sudo sed -i 's/DEVICE_MODULES=\"\"/DEVICE_MODULES=\"generic\"/g' /etc/sysconfig/ethercat;\
    sudo ln -s /opt/etherlab/bin/ethercat /usr/bin/ethercat;\    #建立ethercat命令软连接
    interfaces=`ifconfig | grep -e "^e[tn][a-z0-9]*" -o`;\       #获取网卡名称eth0
    for i in $$interfaces;do lastInterface=$$i; done;\           #获取网卡名称对应MAC地址
    interfaceMAC=`ifconfig $$lastInterface | grep "[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}" -o`;\
    sudo sed -i "s/MASTER0_DEVICE=\"\"/MASTER0_DEVICE=\"$$interfaceMAC\"/g" /etc/sysconfig/ethercat;\   #查找字段MASTER0_DEVIC将MAC地址写入

ethercatMasterInstallWithAutoStart: ethercatMasterInstall
    sudo update-rc.d ethercat defaults;\     #利用工具update-rc.d 添加系统开机启动,rc(1.2.3.4.5)
    sudo /etc/init.d/ethercat start;         #安装驱动文件

clean: 
    @echo Removing compiled installation files
    @rm -f -r ethercat-$(ethercatMasterVersion) $(udevRulesFile)

四、相关操作


master 信息

root@positec:/# ethercat master


slave 信息

root@positec:/# ethercat slaves


列出 sdo

root@positec:/# ethercat sdos


读取 sdo

root@positec:/# ethercat upload 0x6000 0x01


写入 sdo

root@positec:/# ethercat download 0x6000 0x01 1 –type bool


五、说明

(1)主站代码运行在内核态,安装驱动后从站设备直接进入PREOP状态。

(2)编译完成后生成两个驱动文件,ec_master.ko完成主站控制逻辑,ec_generic.ko完成网络收发包驱动。

(3)目前EtherLab的最新版本1.5.2只支持到Linux4.0以下内核。

如果是单独安装驱动,遵循以下顺序:

扫描二维码关注公众号,回复: 3046405 查看本文章
root@positec:/#insmod ec_master.ko main_devices=00:0c:29:c7:76:62
root@positec:/#insmod ec_generic.ko 

猜你喜欢

转载自blog.csdn.net/zhangzheng_1986/article/details/82349416