首页 > 其他分享 >IgH EtherCAT主站开发案例分享——基于NXP i.MX 8M Mini

IgH EtherCAT主站开发案例分享——基于NXP i.MX 8M Mini

时间:2024-07-15 15:41:21浏览次数:11  
标签:Mini NXP ethercat 主站 Host install EtherCAT IgH

前 言

本文档主要演示NXP i.MX 8M Mini工业开发板基于IgH EtherCAT控制伺服电机。

演示板卡是创龙科技的TLIMX8-EVM工业开发板,它是基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高性能评估板,由核心板和评估底板组成。ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M4实时处理单元主频高达400MHz。处理器采用14nm最新工艺,支持1080P60 H.264视频硬件编解码、1080P60 H.265视频硬件解码、GPU图形加速器。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。

评估板接口资源丰富,引出MIPI CAMERA、MIPI/LVDS LCD、HDMI OUT、LINE IN/OUT、PCIe、FlexSPI、USB、RS485、RS232、千兆网口、百兆网口等接口,板载WIFI模块,支持Mini-PCIe 4G模块,可选配外壳直接应用于工业现场,方便用户快速进行产品方案评估与技术预研。

本文档适用开发环境:

(1) Windows开发环境:Windows 7 64bit、Windows 10 64bit

(2) Linux开发环境:Ubuntu 18.04.4 64bit

(3) 虚拟机:VMware15.1.0

(4) Linux SDK:5.4.70_2.3.0

(5) Kernel:linux-5.4.70-xenomai-g8d94618-v1.0

(6) IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723

(7) Xenomai:xenomai-v3.1.1-g8b2052e

(8) 伺服驱动器:台达ASD-A2-0121-E

(9) 伺服电机:台达ECMA-C10401GS

我司提供的IgH EtherCAT主站开发案例位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\”目录下,主要包含igh_ethercat、kernel-xenomai、xenomai等文件夹,具体说明如下。

表 1

1 IgH EtherCAT简介

IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示,官方文档:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。

图 1

IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。

IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。

IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。

2 案例说明

案例功能:控制伺服电机正转和反转。

(1) 正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。

(2) 反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。

图 2

为便于测试,我司提供已验证的基于Xenomai编译生成的内核镜像文件和设备树镜像文件,位于案例"igh_ethercat_dc_motor\kernel-xenomai\images\linux-5.4.70-xenomai-g8d94618-v1.0\"目录下,请替换至Linux系统启动卡BOOT分区下。同时将linux-5.4.70-xenomai-g8d94618-v1.0目录下的module驱动压缩包5.4.70-g8d94618.tar.gz,解压至Linux系统启动卡rootfs分区"lib/modules/"目录下。

备注:如需使用由内核源码重新编译生成的内核镜像文件、设备树文件和modules驱动,请参考Linux系统使用手册将编译的module驱动安装至Linux系统启动卡中,默认安装后module驱动目录为5.4.70。

图 3

3 案例测试

请按下图所示使用网线连接评估板RGMII ETH网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。

图 4

图 5

为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat_dc_motor\igh_ethercat\images\ethercat-stable-1.5-gcd0d17d-20210723\"目录下的ethercat-stable-1.5-gcd0d17d-20210723.tar.gz压缩包,在Ubuntu下解压即可得到IgH EtherCAT主站程序文件夹。

将IgH EtherCAT主站程序文件夹整个拷贝至评估板文件系统,执行如下命令查询评估板网卡物理地址。本次测试将IgH EtherCAT主站程序文件夹命名为__install。

Target# ifconfig

图 6

执行如下命令,加载驱动模块。

Target# insmod /home/root/EtherCAT/__install/modules/ec_master.ko main_devices=ce:bb:9d:3b:d3:6b

图 7

执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。

Target# cp /home/root/EtherCAT/__install/etc/sysconfig/ethercat /etc/sysconfig

Target# cp /home/root/EtherCAT/__install/modules/ec_master.ko /lib/modules/5.4.70-g8d94618 //模块驱动名称可通过"uname -r"查看

Target# depmod //同步模块依赖关系

图 8

执行如下命令,启动EtherCAT主站。

Target# /home/root/EtherCAT/__install/etc/init.d/ethercat start

图 9

执行如下命令,加载ec_generic.ko驱动文件。

Target# insmod /home/root/EtherCAT/__install/modules/ec_generic.ko

图 10

执行如下命令,添加IgH动态链接库路径。

Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/root/EtherCAT/__install/lib

v

图 11

将案例igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。

Target# ./igh_ethercat_dc_motor --help

图 12

执行如下命令,控制两台伺服电机同时正转。

Target# ./igh_ethercat_dc_motor -d 0

图 13

图 14

按下"Ctrl + C",停止运行程序。

图 15

执行如下命令,控制两台伺服电机同时反转。

Target# ./igh_ethercat_dc_motor -d 1

图 16

图 17

按下"Ctrl + C",停止运行程序。

图 18

参数解析:

(1) latency:等待唤醒时间(ns)。

(2) period:EtherCAT通讯周期时间(ns)。

(3) exec:接收和发送EtherCAT数据时间(ns)。

备注说明:

(1) 使用评估板千兆网口测试时,需设置EtherCAT通讯周期时间为1.1ms,即将igh_ethercat_dc_motor.c中的FREQUENCY配置为900(如下图所示)。如设置EtherCAT通讯周期时间为1ms时,会出现数据丢失的问题,原因在于IMX8官方千兆网口驱动兼容性不够完善,NXP官方正计划修复此问题。

图 19

(2) 使用评估板USB2 ETH百兆网口,设置EtherCAT通讯周期为1ms测试正常。

(3) 为获得更高的实时性能,亦可通过PCIe接口外扩IgH EtherCAT专用集成网卡进行测试,IgH EtherCAT支持外扩集成网卡如下所示。

图 20

4 案例编译

4.1 IgH EtherCAT主站程序编译

IgH EtherCAT主站程序的编译需依赖于基于Xemomai生成的内核,请参考Linux系统使用手册将案例"igh_ethercat_dc_motor\kernel-xenomai\src\"目录下的linux-5.4.70-xenomai-g8d94618-v1.0内核源码进行编译后,再编译IgH EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\igh_ethercat\src\"目录下的IgH EtherCAT主站程序开发包ethercat-stable-1.5-gcd0d17d-20210723.tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压。

Host# mkdir EtherCAT

Host# tar -xvf ethercat-stable-1.5-gcd0d17d-20210723.tar.gz -C EtherCAT/

图 21

进入解压目录,执行如下命令生成configure文件。

Host# ./bootstrap

图 22

执行如下命令,加载SDK环境变量并进行配置。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# mkdir __install //创建__install文件夹用于存放生成的文件

Host# ./configure --prefix=/home/tronlong/EtherCAT/__install --with-linux-dir=/home/tronlong/kernel-xenomai/ --enable-8139too=no --enable-generic=yes --host=aarch64-poky-linux

备注:"/home/tronlong/kernel-xenomai/"为案例提供的内核源码目录。

图 23

图 24

执行如下命令,进行编译。

Host# make

图 25

图 26

执行如下命令,编译驱动。

Host# make modules

图 27

图 28

执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。

Host# make install systemdsystemunitdir=/home/tronlong/EtherCAT/__install

图 29

图 30

执行如下命令,将驱动文件拷贝至"__install/modules/"目录下。

Host# mkdir -p __install/modules

Host# cp ./master/ec_master.ko ./__install/modules/

Host# cp ./devices/ec_generic.ko ./__install/modules/

图 31

4.2 igh_ethercat_dc_motor案例编译

igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\src\"目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录。

Host# vi Makefile

图 32

图 33

然后执行如下命令,加载SDK环境变量并进行编译。编译完成后,将在当前目录下生成可执行文件。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# make

图 34

5 关键代码

(1) 创建EtherCAT Master。

图 35

(2) 创建域。

图 36

(3) 配置PDO。

图 37

(4) 为域注册PDO条目。

图 38

(5) 激活Master。

图 39

(6) 修改当前进程优先级。

图 40

(7) 进入循环周期任务。

图 41

(8) 在周期任务中设置驱动器操作模式、加速度和减速度,分别发送0x6、0x7、0xF使驱动器处于ON状态。

图 42

(9) 发送目标速度,转动电机。

图 43

6 Xenomai简介

Xenomai是一个免费开源的Linux平台实时框架,通过使用与Linux内核并行运行的实时协同内核(real-time co-kernel)处理所有对时间要求严格的活动,例如处理中断和调度实时线程。Cobalt core比原生Linux与RT-Linux内核具有更高的优先级。

图 44

图 45

6.1 编译说明

案例使用的Xenomai版本为3.1.1,开发包为案例"igh_ethercat_dc_motor\xenomai\src\"目录下的xenomai-v3.1.1-g8b2052e.tar.gz,将其拷贝至Ubuntu工作目录下,执行如下命令进行解压。

Host# mkdir Xenomai

Host# tar -xvf xenomai-v3.1.1-g8b2052e.tar.gz -C Xenomai/

图 46

进入解压目录,执行如下命令在当前目录生成configure文件。

Host# ./scripts/bootstrap

图 47

执行如下命令,加载SDK环境变量并进行配置,请确保已正确安装交叉编译工具。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# ./configure --build=i686-pc-linux-gnu --host=aarch64-poky-linux --disable-debug --enable-smp --with-core=cobalt

图 48

图 49

Host# mkdir __install //创建__install文件夹用于存放生成的文件

Host# make DESTDIR=/home/tronlong/Xenomai/__install install

图 50

编译完成后,将在__install目录下生成usr文件夹。

图 51

6.2 测试说明

为便于测试,我司提供的经验证的Xenomai测试程序为案例"igh_ethercat_dc_motor\xenomai\images\xenomai-v3.1.1-g8b2052e\"目录下xenomai-v3.1.1-g8b2052e.tar.gz压缩包,在Ubuntu下解压即可得到Xenomai测试程序文件夹。

请使用已替换内核的Linux系统启动卡启动评估板,将Xenomai测试程序文件夹整个拷贝至评估板文件系统,执行如下命令拷贝Xenomai相关文件和设置动态链接库。本次测试将Xenomai测试程序文件夹命名为__install。

Target# cp -r Xenomai/__install/usr/xenomai/ /usr/

Target# export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH

图 52

Xenomai的测试工具均位于"/usr/xenomai/bin/"目录下,可调用对应测试工具进行测试。

图 53

使用Cyclictest工具进行实时性能基准测试。

Target# echo 0 > /proc/xenomai/latency

Target# /usr/xenomai/demo/cyclictest -t5 -p98 -m -n

图 54

表 2 Cyclictest测试结果说明

如果你还想了解更多嵌入式应用的相关知识,欢迎关注Tronlong创龙科技

标签:Mini,NXP,ethercat,主站,Host,install,EtherCAT,IgH
From: https://www.cnblogs.com/Tronlong818/p/18303298

相关文章

  • JuiceFS、Ceph 和 MinIO 结合使用
    1.流程图将JuiceFS、Ceph和MinIO结合使用,可以充分利用Ceph的分布式存储能力、JuiceFS的高性能文件系统特性,以及MinIO提供的对象存储接口。以下是一个方案,介绍如何配置和部署JuiceFS使用Ceph作为其底层存储,并通过MinIO提供对象存储接口。2.前提条件部署......
  • 基于NXP i.MX 6ULL核心板的物联网模块开发案例(4)
    目录 54G模块测试5.1网络功能测试5.2短信功能测试5.3通话功能测试5.4GPS定位功能测试5.5程序编译 前言本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境:Windows开发环境:Windows764bit、Windows1064bit虚拟机:VMware15.1.0Linu......
  • 基于NXP i.MX 6ULL核心板的物联网模块开发案例(3)
    前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境:Windows开发环境:Windows764bit、Windows1064bit虚拟机:VMware15.1.0Linux开发环境:Ubuntu18.04.464bitU-Boot:U-Boot-2020.04Kernel:Linux-5.4.70LinuxSDK:5.4.70_2.3.0无特殊说明情况......
  • 基于NXP i.MX 6ULL核心板的物联网模块开发案例(2)
    目录 2NB-IoT模块测试2.1获取IMEI和IMSI2.2创建云端NB-IoT设备2.3创建通信套件实例2.3.1生成配置参数2.3.2创建实例 前言本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境:Windows开发环境:Windows764bit、Windows1064bit虚拟机......
  • 基于NXP i.MX 6ULL核心板的物联网模块开发案例(1)
    目录前言1SDIOWIFI模块测试1.1STA模式测试1.2AP模式测试1.3SDIOWIFI驱动编译前言本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境:Windows开发环境:Windows764bit、Windows1064bit虚拟机:VMware15.1.0Linux开发环境:Ubuntu18.04.46......
  • MinIO - 服务端签名直传(前端 + 后端 + 效果演示)
    目录开始服务端签名直传概述代码实现后端实现前端实现效果演示开始服务端签名直传概述传统的,我们有两种方式将图片上传到OSS:a)前端请求->后端服务器->OSS 好处:在服务端上传,更加安全.坏处:给服务器带来压力.b)直接写在前端js代码中好处:效率高,不用给服务......
  • F. Minimum Maximum Distance
    原题链接题解1.假设有一个以标记点\(c\)为根的子树,且子树内没有其他标记点,易得该子树内所有点的\(f\leqf(c)\),所以我们可以把该子树内的非标记点全部删掉2.完成步骤1之后,图就变成了所有叶子节点均为标记点的树3.题目等价于求该树内,最小的点到边界的最大值,也就是求树的直径......
  • Minitab 19 安装教程
    下载链接:https://docs.qq.com/doc/DSVNtcUxHa3lhQkll1、下载Minitab19软件安装包到电脑上,右键选择【解压到Minitab19\】2、右键【打开】解压后的文件夹3、找到【f4-minitab19.1】应用程序,右键选择【以管理员身份运行】它4、点击【下一步】5、点击【下一步】6、点......
  • unity is running as administrator 管理员权限问题
    每次打开工程弹出unityisrunningasadministrator的窗口unity版本2022.3.34f1,电脑系统是win11系统解决方法一:解决方法二:unity版本2022.3.34f1,电脑系统是win11系统每次打开工程都会出现unityisrunningasadministrator的窗口,真的很烦人。本人使用第二种方法......
  • Simple WPF: S3实现MINIO大文件上传并显示上传进度
    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。创作不易,如果觉得有用请在Github上为博主点亮一颗小星星吧!目的早两天写了一篇S3简单上传文件的小工具,知乎上看到了一个问题问如何实现显示MINIO上传进度,因此拓展一下这个小工具能够在上传大文件时显示进度。完......