基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享
本文将为各位工程师演示全志T507-H工业评估板(TLT507-EVM)基于IgH EtherCAT控制伺服电机方法,生动说明Linux-RT + Igh EtherCAT的强大之处!
同时,我们对于T3/A40i、T113-i、RK3568、RK3588J、AM62x、AM64x、NXP i.MX 8M Plus等平台也提供了开源EtherCAT主站IgH案例。
Linux-RT系统的优势
- 内核开源、免费、功能完善。
- RT PREEMPT补丁,使Linux内核成为硬实时操作系统,无需完整的内核重写。
- 既有实时性,又有相同的开发生态系统(包括相同工具链、文件系统和安装方法,以及相同的POSIX API等),实现产品快速上市的期望。
Linux-RT实时性测试(Cyclictest工具)
Cyclictest常用于实时系统的基准测试,是评估实时系统相对性能的最常用工具之一。Cyclictest反复测量并精确统计线程的实际唤醒时间,以提供有关系统的延迟信息。它可测量由硬件、固件和操作系统引起的实时系统的延迟。
基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),按照创龙科技提供的案例用户手册进行操作,使用Cyclictest程序测试系统实时性,得出如下测试结果。
对比测试数据,可看到基于Linux-RT-4.9.170内核的系统的延时更加稳定,最大延时更低,系统实时性更佳。
Linux-RT性能测试
基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),按照创龙科技提供的案例用户手册进行操作,测试分别在CPU空载、满负荷(运行stress压力测试工具)、隔离CPU核心的情况下,得出如下测试结果。
备注:测试数据与实际测试环境有关,仅供参考。
CPU空载状态测试,CPU0、CPU1核心Max Latencies值最大,为69us,CPU3核心的Max Latencies值最小,为66us。
CPU满负荷状态测试,CPU0核心Max Latencies值最大,为88us,CPU3核心的Max Latencies值最小,为64us。
隔离CPU核心状态测试,CPU0核心Max Latencies值最大,为73us,隔离CPU3核心的Max Latencies值最小,为41us。
测试结果如下表所示:
| Max Latencies | ||
| 最小值 | 最大值 | |
| CPU空载状态 | 66us(CPU3) | 69us(CPU0、CPU1) |
| CPU满负荷状态 | 64us(CPU3) | 88us(CPU0) |
| 隔离CPU核心状态 | 41us(CPU3) | 73us(CPU0) |
根据CPU空载、CPU满负荷、隔离CPU核心三种状态的测试结果可知:当程序指定至隔离的CPU3核心上运行时,Linux系统延迟最低,可有效提高系统实时性。故推荐对实时性要求较高的程序(功能)指定至T507-H隔离的CPU核心运行。
T507-H的典型应用领域
基于全志T507-H的Linux-RT + IgH EtherCAT主站演示
下文主要介绍基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板)案例,按照创龙科技提供的案例用户手册进行操作得出测试结果。
本次演示的开发环境:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
Linux开发环境:Ubuntu18.04.4 64bit
虚拟机:VMware16.2.5
U-Boot:U-Boot 2018
Kernel:Linux-RT-4.9.170
LinuxSDK:LinuxSDK-[版本号].tar.gz(基于全志官方V2.0_20220618)
IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723
伺服驱动器:台达ASD-A2-0121-E
伺服电机:台达ECMA-C10401GS
*硬件平台:TLT507-EVM评估板(基于全志T507-H)
IgH EtherCAT简介
IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示,官方文档:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。
IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。
IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。
IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。
案例说明
案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循环打印EtherCAT通讯周期时间的最大值和最小值。
(1)正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。
(2)反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。

图8
为便于测试,我司提供已验证的基于Linux-RT编译生成的内核镜像文件和内核模块,位于产品资料“4-软件资料\Linux\Kernel\image\linux-4.9.170-[版本号]-[Git系列号]\”目录下。
请将Linux-RT内核镜像boot-rt.fex和Linux-RT内核配套的内核模块modules-rt目录下4.9.170-[版本号]-[Git系列号].tar.gz压缩包的拷贝至评估板文件系统目录下。
执行如下命令,将boot-rt.fex重命名为boot.fex,同时将内核模块压缩包解压。
Target#mv boot-rt.fex boot.fex
Target#tar -zxf 4.9.170-rt129-g4c65c66.tar.gz

执行如下命令替换内核镜像和内核模块,评估板重启生效。
备注:mmcblk1为Micro SD对应的设备节点,如需固化至eMMC,请将设备节点修改为mmcblk0。
Target#dd if=boot.fex of=/dev/mmcblk1p3 conv=fsync
Target#rm /lib/modules/* -rf
Target#cp $(uname -r) /lib/modules/ -r
Target#sync
Target#reboot
案例测试
请按下图所示使用网线连接评估板ETH0 RGMII网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。
为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat\images\"目录下的ethercat-stable-1.5-gcd0d17d.tar.gz压缩包,将其拷贝至评估板文件系统任意目录下。
执行如下命令,解压ethercat-stable-1.5-gcd0d17d.tar.gz压缩包将会得到_install文件夹。
Target#tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz
执行如下命令,并查询评估板网卡物理地址。
Target#ifconfig
执行如下命令,加载驱动模块。
Target#insmod -f /root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19
执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。
Target#mkdir /etc/sysconfig
Target#cp /root/_install/etc/sysconfig/ethercat /etc/sysconfig
Target#ls /lib/modules/$(uname -r)//查看是否已创建modules目录
Target#cp ./_install/modules/ec_master.ko /lib/modules/$(uname -r)
Target#depmod -a //同步模块依赖关系,同步过程中打印警告请忽略
执行如下命令,启动EtherCAT主站。
Target#/root/_install/etc/init.d/ethercat start
执行如下命令,加载ec_generic.ko驱动文件。
Target#insmod -f /root/_install/modules/ec_generic.ko
执行如下命令,添加IgH动态链接库路径。
Target#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib
将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。
Target#./igh_ethercat_dc_motor --help
执行如下命令,控制两台伺服电机同时正转。
Target#./igh_ethercat_dc_motor -d 0
按下"Ctrl + C",停止运行程序。
执行如下命令,控制两台伺服电机同时反转。
Target#./igh_ethercat_dc_motor -d 1
按下"Ctrl + C",停止运行程序。
测试结果如下表所示:
|
工程环境 |
控制算法 |
点对点控制 x 2轴 |
|
|
循环周期 |
1ms |
||
|
测试结果 |
测试项 |
Min(us) |
Max(us) |
|
EtherCAT 任务调度抖动(period) |
-186 |
184 |
|
|
测试数据 |
EtherCAT任务调度抖动的区间为[-186us,184us] |
||
参数解析:
(1)latency:等待唤醒时间(ns)。
(2)period:EtherCAT通讯周期时间(ns)。
(3)exec:接收和发送EtherCAT数据时间(ns)。
基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享的更多相关文章
- 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序
官网下载地址:https://etherlab.org/download/ethercat/ (可list查看文件列表)https://etherlab.org/download/ethercat/ ...
- 基于全志H3芯片的ARM开发环境搭建
基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...
- 全志A33开发板Linux内核定时器编程
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...
- 全志A33平台编译linux(分色排版)V1.1
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...
- 全志A33平台编译linux(分色排版)sina33
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/12 17:36 版本:V1.0 Xshell 5 (Buil ...
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.
- uboot的GPIO驱动分析--基于全志的A10芯片【转】
本文转载自:http://blog.csdn.net/lw2011cg/article/details/68954707 uboot的GPIO驱动分析--基于全志的A10芯片 转载至:http://b ...
- 【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文
目录 1 启动脚本 1.1 start 1.2 stop 2 主站实例创建 2.1 Master Phases 2.2 数据报与状态机 数据报 状态机 2.3 master状态机及数据报初始化 2.4 ...
- 基于Zynq平台的EtherCAT主站方案实现
作者:陈秋苑 谢晓锋 陈海焕 广州虹科电子科技有限公司 摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发.EtherCAT 具有高性能.低成本.容易使用等特点,目前在 ...
- 《Linux命令学习手册》系列分享专栏
<Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...
随机推荐
- 如何实现surging 多语言混合微服务异构
1. 背景 作为微服务体系, 应该是不限语言的, 不管是.net.java, 都可以是一个微服务. 可以使用JAVA或者.NET 去实现业务模块,通过统一的消息模型进行传输调用因客户技术栈以多语言,多 ...
- 游戏陪玩公众号H5软件开发方案图文详解
用户需求 无论开发怎样的产品,都需要事先对整个市场行情和用户需求进行简单的了解.前面的一组数据已经简明扼要的摆明了现在陪玩市场的行情.而现如今,大多数游戏都需要组队进行,如英雄联盟.王者荣耀.绝地求生 ...
- 抛砖系列之文本处理工具-awk
AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母 ...
- 基于三菱Q系列cc-Link的立体仓库控制系统
系统说明: 方案选择: 工艺流程: 触摸屏设计: 程序设计:采用SFC进行编程,结构清晰,逻辑明了 本文章为学习记录,水平有限,望各路大佬们轻喷!!! 转载请注明出处!!!
- MindSpore反向传播配置关键字参数
技术背景 在MindSpore深度学习框架中,我们可以向construct函数传输必备参数或者关键字参数,这跟普通的Python函数没有什么区别.但是对于MindSpore中的自定义反向传播bprop ...
- c 语言不输出空数据 (全面覆盖)
目录 去除空值的专栏 解决方案 一.通过数组的自身性质,让其值大于零 1. short 数组测试 2. int 数组测试 3. long 数组测试 4. float 数组测试 5. float 数组测 ...
- angular路由跳转并传值的多种方式
Angular的学习使用过程中,路由跳转支撑了项目的全过程,所以路由跳转是一个很常见也是一个很容易忽略的点,,对于页面之间的跳转有着很多的问题,跳转的方式/如何携带参数跳转,下面是自己在学习过程中对a ...
- Python 自动化爬虫利器 Playwright
Python 自动化爬虫利器 Playwright Python Playwright 是一个基于 Node.js 的自动化测试库,它支持多种浏览器(Chrome.Firefox.Safari.Edg ...
- 手写Word2vec算法实现
1. 语料下载:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 [中文维基百科语料] 2. ...
- 使用node压缩js
先下载并安装Node 安装完成后打开cmd运行:node -v 运行:npm -v 确定node安装成功,然后安装uglifyjs,打开cmd输入下面命令: npm install uglify-js ...