【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序

官网下载地址:
https://etherlab.org/download/ethercat/ (可list查看文件列表)
https://etherlab.org/download/ethercat/ethercat-1.5.2.pdf (pdf doc手册)

===============================================
本人操作环境:树莓派 3B+
pi@ProfinetPI:~ $ uname -a
Linux ProfinetPI 4.19.71-rt24-v8 #1 SMP PREEMPT RT Wed Jan 26 01:35:13 CST 2022 aarch64 GNU/Linux

ethercat代码版本为: 1.5.2-master-3ee5e50a
(注意:1.5.2 release包,在内核>4.15.x时会编译make modules出错,因为从4.15开始内核timer使用方式更改。)

==============================================
1. 编译ethercat master和安装:

$ git clone https://gitlab.com/etherlab.org/ethercat.git

$ cd ethercat (进入clone的源码主目录)

$ ./bootstrap (若下载的是tar.bz包,其中带有m4子目录,则不需此步骤; git clone的才需要)

$ ./configure –prefix=/opt/etherlab –with-linux-dir=/usr/src/linux –enable-8139too=no –enable-generic=yes (提前准备好内核源码,已编译)

$ make -j 4 (4个线程加快)

$ make modules (需要有Modules.symvers和 System.map文件)(分别是编译内核,编译内核模块后产生)
(此命令执行的结尾会 运行depmod, 注意不能skip, 否则安装时 modprobe会有问题)

make install
make modules_install //注意 depmod是否执行了. 安装到了 /lib/modules/

2. 开始与系统集成【二选1】
//【方案1】 如果要用 init.d脚本, 那么用下面3行:
$ sudo mkdir /etc/sysconfig
$ sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat //这是配置文件
$ sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d/ethercat //这是启动脚本,特别要 注意修改其中 -c 的配置文件位置!!!
$ insserv ethercat (安装为 开机自启动服务)
// 方案1启停 master内核主站的命令为: # /etc/init.d/ethercat start| stop| reload (或 #service ethercat start|stop)

//【方案2】 如果是用的 systemd管理服务, 则运行如下命令:
cp /opt/etherlab/etc/ethercat.conf /etc/ethercat.conf (配置文件的位置)
nano /usr/lib/systemd/system/ethercat.service (如果没有,照着pdf doc 第7.4节拷贝一个.)
(这里特别 要修改其中的命令!!!! 显式自己手动写上配置文件位置 -c /path/to/conf_file再 start) (坑:不会如pdf所说默认去找/etc/ethercat.conf作为配置文件)
systemctl enable ethercat.service (设置 开机启动服务)
// 方案2启停 master内核主站的命令为: # systemctl start| stop| status ethercat.service

其实这两种系统集成方案,都是用了ethercat提供的最基础的命令来启停 内核模块,
也可以直接运行基础命令来启停【方案3】, 指令如下:
/opt/etherlab/sbin/ethercatctl -c /path/to/conf_file start|stop 【注意 配置文件路径要正确

3.启动EtherCAT主站内核模块

三种方案不管用哪种, 在 启动前都要修改自己的配置文件

启动前一定要确保对应配置文件中加入了 网卡mac 和 内核模块类型
$ sudo vi /etc/sysconfig/ethercat //更改配置文件:(填入 MAC地址或”eth0″,以及 网卡类型 “generic”

正式开始启动Master主站 (三种方法选一种即可,以方案1为例)
/etc/init.d/ethercat start|stop //注意配置文件中路径是否对.

启动后,检查是否已经载入了内核模块:
lsmod | grep ec_ (会输出两行, ec_generic 和 ec_master, 说明已装载)

4.使用tools工具

tools工具为:/opt/etherlab/bin/ethercat, 连接符号到/usr/bin/下以方便使用:
$ sudo ln -s /opt/etherlab/bin/ethercat /usr/bin/ethercat //软连接

tools的使用(/opt/etherlab/bin/ethercat为tools工具)参见 pdf doc 第7章,简单命令如下:
ethercat slave (显示挂载在主站上的从站信息)
0 0:0 PREOP + SV660_1Axis_00913 (显示出了挂在主站网络上的 汇川 SV660N伺服)

pi@ProfinetPI:~ $ ethercat -h (帮助信息)
Usage: ethercat [OPTIONS] [ARGUMENTS]

Commands (can be abbreviated):
alias Write alias addresses.

config Show slave configurations.

crc CRC error register diagnosis.

cstruct Generate slave PDO information in C language.

data Output binary domain process data.

debug Set the master’s debug level.

domains Show configured domains.

download Write an SDO entry to a slave.

eoe Display Ethernet over EtherCAT statictics.

foe_read Read a file from a slave via FoE.

foe_write Store a file on a slave via FoE.

graph Output the bus topology as a graph.

ip Set EoE IP parameters.

master Show master and Ethernet device information.

pdos List Sync managers, PDO assignment and mapping.

reg_read Output a slave’s register contents.

reg_write Write data to a slave’s registers.

rescan Rescan the bus.

sdos List SDO dictionaries.

sii_read Output a slave’s SII contents.

sii_write Write SII contents to a slave.

slaves Display slaves on the bus.
soe_read Read an SoE IDN from a slave.

soe_write Write an SoE IDN to a slave.

states Request application-layer states.

upload Read an SDO entry from a slave.

version Show version information.

xml Generate slave information XML.

Global options:
–master -m

Numerical values can be specified either with decimal (no
prefix), octal (prefix ‘0’) or hexadecimal (prefix ‘0x’) base.

#安装IgH EtherCAT主站部分完结, 之后就是如何使用主站来控制 伺服点击转圈圈了。#

Original: https://www.cnblogs.com/zhw618/p/15856283.html
Author: zhw618
Title: 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581788/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • PYTORCH: 60分钟 | 训练一个分类器

    你已经知道怎样定义神经网络,计算损失和更新网络权重。现在你可能会想, 那么,数据呢? 通常,当你需要解决有关图像、文本或音频数据的问题,你可以使用python标准库加载数据并转换为…

    Linux 2023年6月16日
    0186
  • Python代码模板

    #!/usr/bin/env python -*- encoding: utf-8 -*- class ClassName: def __init__(self, arg1, ar…

    Linux 2023年6月14日
    089
  • 16-ArrayList和LinkedList的区别

    1.1、作用 ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。它们可以对元素的增删改查进行操作 对于ArrayList,它在集合的…

    Linux 2023年6月7日
    086
  • linux系统性能诊断工具

    当你发现 Linux 服务器上的系统性能问题,在最开始的 1 分钟时间里,你会查看哪些系统指标呢? Netflix 在 AWS 上有着大规模的 EC2 集群,以及各种各样的性能分析…

    Linux 2023年6月13日
    086
  • Go-goroutine

    进程和线程说明: (1)进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。 (2)线程是进程的一个执行实例,是程序执行的最小单位,它是比进程更小的能独立运…

    Linux 2023年6月8日
    093
  • 自动化集成:Pipeline整合Docker容器

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作; 本篇文章主要描述流水线集成Docker用法。 一…

    Linux 2023年5月27日
    0111
  • linux正则表达式初探

    为什么要学习正则表达式? 简单而言,仅仅用通配符无法满足处理字符的需求,这时候就是正则表达式大展身手的机会。相较而言,正则表达式比通配符更灵活,也更强大。 我们在网站注册用户的时候…

    Linux 2023年6月7日
    080
  • LeetCode-443. 压缩字符串

    题目来源 题目详情 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追…

    Linux 2023年6月7日
    0109
  • linux_arch

    由于以前新手开始接触的是ubuntu,然后通过ubuntu又开始了解centos,这俩系统基本是稳定版本可以用作服务器,但是centos的还是居多,一来比较接近redhat;但是这…

    Linux 2023年6月14日
    085
  • vim的使用

    1、概述: Vim 是从 vi 发展出来的一个文本编辑器。具有代码补全、编译及错误跳转等功能 2、vim编辑器的常用命令: 图源:https://vimsky.com/articl…

    Linux 2023年5月27日
    0124
  • 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Java对象究竟是什么? 创建…

    Linux 2023年6月6日
    0109
  • 面试题汇总

    JAVA 基础 1.java 性能优化 ①尽量指定类、方法的final 修饰符 ②尽量重用对象 ③尽可能使用局部变量 ④及时关闭流 ⑤尽量减少对变量的重复计算 ⑥尽量采用懒加载的策…

    Linux 2023年6月7日
    089
  • Xshell Win10不能直接拖文件进行文件传输解决办法

    centos安装了 lrzsz后, xshell还是无法直接从win10中拖文件 到centos。 需要修改win10的注册表。 见: https://blog.csdn.net/…

    Linux 2023年5月28日
    088
  • 离线版centos8安装docker笔记

    嗨嗨哈哈,已经很久没有坐下来胡编乱造一点笔记了,平时云服务器搞惯了,一个命令就安装好了docker了的,但这次生不逢时的新机房就没那么幸运了,有多不逢时超乎想象,不仅仅服务器没有外…

    Linux 2023年6月14日
    092
  • Python2中快速获取本地时区当天0点时间戳的一种方法

    如下所示,看了网上的几种方法,这种方法算是代码量比较小的,同时可以保证求的是本地时区的0点时间戳,返回的是浮点数,需要的话自己转一下int In [1]: import time …

    Linux 2023年6月6日
    091
  • Linux机器自建账号并赋予sudo权限,同时修改远程端口

    默认使用root账号来操作Linux有一定风险,因此需要自建账号并赋予sudo权限,方便使用 登录为root用户后,创建账号 adduser <username>&lt…

    Linux 2023年6月6日
    0128
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球