【实操填坑】在树莓派上编译 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)

大家都在看

  • 你还有什么问题吗?

    在面试过程中,一般都会有一个固定环节,那就是在临近结束时,面试官会问求职者: 你还有什么问题吗? 其实,这是一个很好的了解公司,了解未来团队的机会,但很多求职者却不知道问什么,或者…

    Linux 2023年6月7日
    093
  • Centos7 无法上网问题

    最近在VMware虚拟机里玩Centos,装好后发现上不了网。经过一番艰辛的折腾,终于找到出解决问题的方法了。最终的效果是无论是ping内网IP还是ping外网ip,都能正常pin…

    Linux 2023年6月13日
    063
  • Linux安装软件时90%的人会遇到这个报错,如何解决?

    提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E:…

    Linux 2023年6月14日
    0121
  • 字典服务的设计与管理

    编码问题,谁不想避其锋芒; 一、业务背景 在搜索引擎的功能上,曾经遇到过这样一个问题,数据库中某个公司名称中存在特殊编码,尽管数据已经正常同步到索引中,但是系统中关键词始终也无法匹…

    Linux 2023年6月14日
    069
  • html2canvas中toDataURL方法返回值为:data,解决方案

    | 0.35分钟 | 572字符 | 1、引言&背景 2、解决方案 3、声明与参考资料 | SCscHero | 2022/6/1 PM11:13 | 系列 | 已完成 每…

    Linux 2023年6月13日
    074
  • 了解GFS

    参考: https://wenku.baidu.com/view/4392293517791711cc7931b765ce0508763275f2.html 论文翻译 https:…

    Linux 2023年6月7日
    094
  • Ubuntu16.04修改IP

    ssh登录到服务。编辑网卡配置文件。 vim /etc/network/interfaces 先关闭DPCP,将 iface eth0 inet dhcp前面加上#号。 设置IP地…

    Linux 2023年6月6日
    088
  • AIX下安装bash

    在AIX系统下,默认是没有安装bash环境的,对于经常操作的维护人员来说,非常不方便,所以下面我们来动手安装bash。 1、确认系统是否已安装bash 方法1:之间敲bash命令,…

    Linux 2023年6月14日
    066
  • 数据库配置和前端项目创建

    1、封装Response utils.py/exception from rest_framework.response import Response class APIResp…

    Linux 2023年6月14日
    084
  • AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践

    云知声是一家专注于语音及语言处理的技术公司。 Atlas 超级计算平台是云知声的计算底层基础架构,为云知声在 AI 各个领域(如语音、自然语言处理、视觉等)的模型迭代提供训练加速等…

    Linux 2023年6月14日
    082
  • OS模块中获取当前文件的绝对路径的相关方法

    os.path.realpath(file) 作用:获取当前执行py脚本的绝对路径(在当前工作目录下的绝对路径) file : 表示当前文件的本身,一般值是当前文件的相对路径 例如…

    Linux 2023年6月7日
    080
  • go-结构体内存布局

    方式一:通过 var 声明结构体 在 Go 语言中当一个变量被声明的时候,系统会自动初始化它的默认值,比如 int 被初始化为 0,指针为 nil。 var 声明同样也会为结构体类…

    Linux 2023年6月13日
    087
  • 翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。

    写在开篇 血案:本地开发机是CentOS 7,本想删除在/usr/lib/下的一个软链,如:/usr/lib/xxx。当正想删除时,突然被别的事情打扰了一下,回过神之后莫名奇妙的执…

    Linux 2023年6月7日
    085
  • 我叫MongoDb,不懂我的看完我的故事您就入门啦!

    这是mongo基础篇,后续会连续更新4篇 大家好我叫MongoDb,自从07年10月10gen团队把我带到这个世界来,我已经13岁多啦,现在越来越多的小伙伴在拥抱我,我很高兴。我是…

    Linux 2023年6月14日
    0117
  • rsync

    rsync rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。 rsync…

    Linux 2023年6月7日
    098
  • 2022年5月16号开始整理habse

    关于本次整理的hbase内容是基于原理的学习的笔记 Original: https://www.cnblogs.com/yxb123/p/16277454.htmlAuthor: …

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