1. 前言

最近做机器人控制器项目需要使用到 EtherCAT 现场总线通信,通过 EtherCAT master 控制伺服驱动器带动多个轴同步运动,从而达到工业机器人多轴同步运动控制的效果。目前使用比较广泛的EtherCAT master有: TwinCAT,IgH EtherCAT Master,SOEM。IgH EtherCAT Master 具有较好的开源性、丰富的功能,因此我打算用 IgH EtherCAT Master 来完成机器人控制器与伺服驱动之间的通信功能。
系 统:Ubuntu16.04.1
内 核:Linux-4.19.72-rt26
考虑到EtherCAT通信以及机器人控制系统所必须的实时性,采用带有RT_PREEMPT 实时补丁的内核,内核编译安装步骤见:https://blog.csdn.net/qq_46136275/article/details/103815595
安装包:https://sourceforge.net/projects/etherlabmaster/

2. 安装IgH EtherCAT Master

~$ mkdir etherlab-build
~/etherlab-build$ unzip etherlabmaster-code-0c011dc6dbc4facb3ee75f100181ce89814ecefa.zip
~/etherlab-build$ cd etherlabmaster-code-0c011dc6dbc4facb3ee75f100181ce89814ecefa/
$ ./bootstrap       # to create the configure script

配置出现问题:
errors:

  • touch ChangeLog
  • autoreconf -i
    ./bootstrap: line 36: autoreconf: command not found
$ sudo apt-get install autoconf automake libtool
$ ./bootstrap
$ ./configure --enable-cycles --enable-hrtimer --enable-8139too=no
$ make -j$(nproc) all modules

切换到root用户

make modules_install install  (root用户使用)
depmod
ln -s /usr/local/etc/init.d/ethercat /etc/init.d/ethercat
mkdir /etc/sysconfig
cp /usr/local/etc/sysconfig/ethercat /etc/sysconfig/ethercat
vi /etc/sysconfig/ethercat
echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules
~$ ifconfig

网卡地址:
enp0s31f6 Link encap:Ethernet HWaddr c4:00:ad:41:ce:72
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:16 Memory:df300000-df320000
将 MASTER0_DEVICE=" " 引号中的内容换成要作为EtherCAT总线的网卡地址,
在 DEVICE_MODULES=" " 引号里面填入 generic

3.启动IgH EtherCAT Master

启动 EtherCAT Master:

#as root,
/etc/init.d/ethercat start
#显示如下
Starting EtherCAT master 1.5.2  done

4. 使用 IgH EtherCAT Master tool

查看主站:

~$ ethercat master
Master0Phase: IdleActive: noSlaves: 0Ethernet devices:Main: c4:00:ad:41:ce:72 (attached)Link: DOWNTx frames:   0Tx bytes:    0Rx frames:   0Rx bytes:    0Tx errors:   0Tx frame rate [1/s]:      0      0      0Tx rate [KByte/s]:      0.0    0.0    0.0Rx frame rate [1/s]:      0      0      0Rx rate [KByte/s]:      0.0    0.0    0.0Common:Tx frames:   0Tx bytes:    0Rx frames:   0Rx bytes:    0Lost frames: 0Tx frame rate [1/s]:      0      0      0Tx rate [KByte/s]:      0.0    0.0    0.0Rx frame rate [1/s]:      0      0      0Rx rate [KByte/s]:      0.0    0.0    0.0Loss rate [1/s]:          0      0      0Frame loss [%]:         0.0    0.0    0.0Distributed clocks:Reference clock:   NoneDC reference time: 0Application time:  02000-01-01 00:00:00.000000000

attached 说明主站已经找到, 连接清能德创驱动器 CoolDrive R6,
查看从站:

~$ ethercat slaves
0  0:0  PREOP  +  CoolDrive R Series
1  0:1  PREOP  +  CoolDrive R Series
2  0:2  PREOP  +  CoolDrive R Series
3  0:3  PREOP  +  CoolDrive R Series
4  0:4  PREOP  +  CoolDrive R Series
5  0:5  PREOP  +  CoolDrive R Series

可以看到,扫描出6个从站,

5. 程序测试

配置清能德创驱动器的第一个从站,采用dc同步模式,测试 EtherCAT 主站的实时性以及通信的稳定性

~$ cd ethercat-drive/firsttest/
~/ethercat-drive/firsttest$ make
# as root
./ethercat.run
./ethercat.run: error while loading shared libraries: libethercat.so.1: cannot open shared object file: No such file or directory

报错的原因应该是找不到动态链接库的路径,在 bash shell 中运行:

$ echo '
##### IgH EtherCAT master
export ETHERLAB_DIR=/usr/local
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ETHERLAB_DIR/lib
##### ' >> ~/.bashrc# as root
echo '
##### IgH EtherCAT master
export ETHERLAB_DIR=/usr/local
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ETHERLAB_DIR/lib
##### ' >>/root/.bashrc

关掉终端,重新打开再来,

./ethercat.run
# /dev/cpu_dma_latency set to 0us
ecrt_request_master is called
Configuring PDOs...
configureing PDO is completed!
Activating master...
Using priority 99.Starting cyclic function.6 slave(s).AL states: 0x02.Link is up.
period              0 ... 3996741415
exec                0 ... 1523261472
latency             0 ...       6840
period         491462 ...     507165
exec             6946 ...      77037
latency          2189 ...      14468Domain: WC 2.Domain: State 1.Domain: WC 3.Domain: State 2.AL states: 0x0A.
period         492654 ...     506992
exec             6908 ...      34459
latency          2159 ...      12090
period         490708 ...     512266
exec             6864 ...      31996
latency          2166 ...      17585
period         488660 ...     506853
exec             6930 ...      26862
latency          2165 ...      13966
period         489279 ...     508888
exec             6940 ...      34887
latency          2172 ...      13613
.......

6. 结论

从程序运行的终端输出可以看出,程序正常运行。从站能进入OP状态,DC同步周期为500us,短时间内的延迟大概在 10us内,有较好的实时性和稳定性。

7.支持非root用户

#echo KERNEL==“EtherCAT[0-9]*”, MODE=“0666” > /etc/udev/rules.d/99-EtherCAT.rules

Ubuntu16.04.6安装 IgH EtherCAT Master相关推荐

  1. 如何在linux系统安装igh,Linux下IGH Ethercat Master安装

    引言 简单igh ethercat master安装 1,准备工作 (1)一个Linux系统,在虚拟机里面也可以,不过如果在虚拟机里面需要一些其他的设置,这个最后再说.Linux内核需要是2.6和3. ...

  2. IGH EtherCAT Master安装记录

    前言 IGH EtherCAT Master的1.5.2版本中没有.bootstrap文件,如果只运行.configure文件后续会报错,所以在安装时选取了最近的stable-1.5.IGH源码下载地 ...

  3. IgH EtherCAT master编译安装时出错

    IgH EtherCAT master编译安装时出错 在实时内核下安装主站 运行其他步骤时正常,但make modules后有问题 出现了: make -C "/usr/src/linux- ...

  4. ubuntu16.04下安装企业微信和微信(实测能用)

    ubuntu16.04下安装企业微信和微信(实测能用) 安装deepin 安装企业微信 安装微信 安装deepin 第一步: git clone https://gitee.com/wszqkzqk/ ...

  5. ubuntu16.04 下安装Opencv2.4.9

    ubuntu16.04 下安装Opencv2.4.9 OpenCV的源码download from:  https://sourceforge.net/projects/opencvlibrary/? ...

  6. linux如何安装neo4j,Ubuntu16.04 如何安装neo4j数据库

    什么是neo4j数据库? neo4j数据库是图数据库的一种,属于nosql的一种,常见的nosql数据库还有redis.memcached.mongDB等,不同于传统的关系型数据库,nosql数据也有 ...

  7. 阿里云云服务器ECS上的Ubuntu16.04桌面安装及root账户登录错误处理

    阿里云云服务器ECS上的Ubuntu16.04桌面安装及root账户登录错误处理 2018-06-28 16:42:45 程百球 阅读数 2793更多 分类专栏: 程序配置 版权声明:本文为博主原创文 ...

  8. 通过Anaconda在Ubuntu16.04上安装 TensorFlow(GPU版本)

    一. 安装环境 Ubuntu16.04.3 LST GPU: GeForce GTX1070 Python: 3.5 CUDA Toolkit 8.0 GA1 (Sept 2016) cuDNN v6 ...

  9. Ubuntu16.04在线安装MongoDB详细教程

    Ubuntu16.04在线安装MongoDB详细教程 文章目录 Ubuntu16.04在线安装MongoDB详细教程 前言 安装流程 信任MongoDB公钥 创建列表文件 安装MongoDB 常见问题 ...

最新文章

  1. UVA11059 Maximum Product
  2. python如何次传参给线程_python如何给线程中的函数传参?
  3. 关于DateTime对象序列化为Json之后的若干问题
  4. .NET开发人员必知的八个网站
  5. 6a标准 api_【阀门标准】API SPEC 6A CHINESE-2010中文版.pdf
  6. aaynctask控制多个下载进度_C# 多线程方法 控制两个进度条
  7. 第三次学JAVA再学不好就吃翔(part95)--Collections工具类
  8. SpringBoot(十三)-- 不同环境下读取不同配置
  9. 1042. Shuffling Machine (20)
  10. [每日一题jQuery] jQuery选择器总结:进一步过滤、同级操作、后代操作
  11. 字体样式 font-family 0911
  12. mysql外建名是随机的吗_创建角色随机名字(mysql抽取随机记录)和mysql游标的使用_MySQL...
  13. python读取txt文件存储数组_python – 从文本文件中将数据读入numpy数组
  14. 自动移动鼠标避免锁屏
  15. 统计调查制度申请流程和申请书公文模板
  16. 笑着学Spring - (3) - Spring事务管理
  17. 微信文章搜索工具, 推荐使用它,简单好用
  18. D - 一只小蜜蜂...
  19. Hexo 搭建博客提交百度 sitemap 抓取失败
  20. OM_销售订单的四个主要环节和每个环节用到的常用表

热门文章

  1. Photoshop插件-锐化-高反差保留仅边缘-脚本开发-PS插件
  2. 自学的程序员一点竞争力都没有么?投简历都没有回应?
  3. Unity3d 角色穿墙, 或者互插的解决方案
  4. SQLServer千万级数据量多表联查优化查询记录
  5. 有没有一个企鹅软件,到哪里下载
  6. 计算机毕业设计古诗词小程序源码
  7. php微积分难吗,对微积分的忌惮让女人们不敢搞科研
  8. 《热爱生命》---汪国真
  9. itunes store切换账户_怎样在Mac上切换Apple ID和iCloud账号
  10. 面试之Java圣经6