本文将为各位工程师演示全志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程序测试系统实时性,得出如下测试结果。

 

图1 Linux-RT-4.9.170内核测试结果

图2 Linux-4.9.170内核测试结果


对比测试数据,可看到基于Linux-RT-4.9.170内核的系统的延时更加稳定,最大延时更低,系统实时性更佳。

Linux-RT性能测试

基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),按照创龙科技提供的案例用户手册进行操作,测试分别在CPU空载、满负荷(运行stress压力测试工具)、隔离CPU核心的情况下,得出如下测试结果。

备注:测试数据与实际测试环境有关,仅供参考。

图3 CPU空载状态


CPU空载状态测试,CPU0、CPU1核心Max Latencies值最大,为69us,CPU3核心的Max Latencies值最小,为66us。

图4 CPU满负荷状态

 

CPU满负荷状态测试,CPU0核心Max Latencies值最大,为88us,CPU3核心的Max Latencies值最小,为64us。

图5 隔离CPU核心状态

隔离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的典型应用领域

图6 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。

图7

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

图9

执行如下命令替换内核镜像和内核模块,评估板重启生效。

备注: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


图10

 

图11

 

案例测试

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

图12
 

图13

为便于测试,我司提供的经验证的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

图14

 

执行如下命令,并查询评估板网卡物理地址。

Target#ifconfig

图15

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

Target#insmod -f /root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19

图16

 

执行如下命令,拷贝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 //同步模块依赖关系,同步过程中打印警告请忽略

图17

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

Target#/root/_install/etc/init.d/ethercat start

图18

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

Target#insmod -f /root/_install/modules/ec_generic.ko

图19

 

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

Target#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib

图20


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

Target#./igh_ethercat_dc_motor --help

图21
 

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

Target#./igh_ethercat_dc_motor -d 0


图22
 

图23

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

图24

 

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

Target#./igh_ethercat_dc_motor -d 1

 

图25
 

图26

 

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

图27

 

测试结果如下表所示:

工程环境

控制算法

点对点控制 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主站案例分享的更多相关文章

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

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

  2. 基于全志H3芯片的ARM开发环境搭建

    基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...

  3. 全志A33开发板Linux内核定时器编程

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...

  4. 全志A33平台编译linux(分色排版)V1.1

    全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...

  5. 全志A33平台编译linux(分色排版)sina33

    全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/12 17:36 版本:V1.0 Xshell 5 (Buil ...

  6. 基于samba实现win7与linux之间共享文件_阳仔_新浪博客

    基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.

  7. uboot的GPIO驱动分析--基于全志的A10芯片【转】

    本文转载自:http://blog.csdn.net/lw2011cg/article/details/68954707 uboot的GPIO驱动分析--基于全志的A10芯片 转载至:http://b ...

  8. 【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文

    目录 1 启动脚本 1.1 start 1.2 stop 2 主站实例创建 2.1 Master Phases 2.2 数据报与状态机 数据报 状态机 2.3 master状态机及数据报初始化 2.4 ...

  9. 基于Zynq平台的EtherCAT主站方案实现

    作者:陈秋苑 谢晓锋 陈海焕 广州虹科电子科技有限公司 摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发.EtherCAT 具有高性能.低成本.容易使用等特点,目前在 ...

  10. 《Linux命令学习手册》系列分享专栏

    <Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...

随机推荐

  1. pde复习笔记 第一章 波动方程 第三节 分离变量法

    教材 谷超豪<数学物理方程>第四版,虽然我们老师用的第三版,但是除了页码对不上,习题多了一点,也似乎没有多少区别. 打算开个新栏专门总结一下pde的各种计算问题,在图书馆算的手麻了,但是习 ...

  2. 免费的visual studio智能代码插件——CodeGeeX

    CodeGeeX是什么?什么是CodeGeeX? CodeGeeX是一款基于大模型的智能编程助手,它可以实现代码的生成与补全,自动为代码添加注释,不同编程语言的代码间实现互译,针对技术和代码问题的智能 ...

  3. VMware之系统复制

    目录 功能描述 复制centos7-1文件夹 载入复制的系统 设置配置 启动系统 修改网卡配置 刷新配置 测试上网 功能描述 复制已经安装好的centOs7.6 复制centos7-1文件夹 1.系统 ...

  4. Elasticsdump 数据导入/导出

    目录 一.安装过程 安装NODE 通过npm安装elasticdump 二.数据导出 实操一 实操二 实操三 三.文件导入 一.安装过程 当前工具主要是用来对ES中的数据进行数据导入/导出,以及对数据 ...

  5. 06. rails gem 安装mysql

    修改Gamefile Gamefile 里添加 gem 'mysql2' 执行命令行 bundle 可以看到下图片上已经安装好依赖了 修改配置文件 修改config/database.yml文件 # ...

  6. JS基础--JavaScript实例集锦(初学)

    1.子节点childNodes: <!DOCTYPE html> <html> <head> <title>childNodes</title&g ...

  7. jeecg-boot中分页接口用自定义sql和list实现

    1.controller中 @ApiOperation(value="分析仪工作状态和报警-3列-分页", notes="分析仪工作状态和报警状态-分页") @ ...

  8. Shopify Theme 开发 —— 性能优化

    一.概述 关于 Shopify Theme 的性能优化,通常有以下几点: 1.卸载未使用的应用程序 有些 app 会在 theme 里面插入一些代码,即使 app 未被使用,也可能会加载一些脚本文件, ...

  9. PPO近端策略优化玩cartpole游戏

    这个难度有些大,有两个policy,一个负责更新策略,另一个负责提供数据,实际这两个policy是一个东西,用policy1跑出一组数据给新的policy2训练,然后policy2跑数据给新的poli ...

  10. C 语言编程 — 编程实践

    目录 文章目录 目录 前文列表 程序示例 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...