0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DR1M90 开源 IgH EtherCAT 主站案例:伺服电机正反转实时控制方案

Tronlong创龙科技 来源:Tronlong创龙科技 作者:Tronlong创龙科技 2026-01-04 15:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前 言

本文档主要基于评估板演示IgH EtherCAT主站的伺服电机实时控制,方案基于Linux-RT实时内核与开源IgH EtherCAT协议栈。本文档适用开发环境:

开发环境

Windows开发环境:Windows10 64bit

Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit

LinuxSDK开发包:LinuxSDK-[版本号](基于SDK_2025.1)

交叉编译工具链:

应用开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

U-Boot、内核开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

评估板系统版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02

备注:本文基于8GByteeMMC、1GByteDDR配置核心板进行演示。

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

伺服电机:台达ECMA-C10401GS

术语表

为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

wKgZPGlaFkaAYLS3AAAS6kqkB9U866.png

注意事项

我司提供的IgH EtherCAT主站开发案例igh_ethercat_dc_motor位于产品资料“4-软件资料Demobase-demos”目录下,具体说明如下。

wKgZPGlaFkyAKhe2AAAxH67Poao174.png

IgHEtherCAT简介

EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写。EtherCAT是确定性的工业以太网。自动化对通讯一般会要求较短的资料更新时间(或称为周期时间)、资料同步时的通讯抖动量低,而且硬件的成本要低,EtherCAT开发的目的就是让以太网可以运用在自动化应用中。

本文档主要介绍运行于Linux系统的免费开源EtherCAT主站程序——IgH EtherCAT。IgH EtherCAT是EtherCAT协议主站协议栈的开源实现,它为用户提供了免费使用、修改和定制源代码的便利,使得用户能够根据实际需求灵活调整和优化EtherCAT主站的功能。其框架如下所示。

wKgZPGiQYZ2AJujzAAFLASU3li4860.png图 1

IgHEtherCAT主站通过构建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,循环运行。

wKgZO2iQYaaAawCqAACJBUuhKHM771.png图 2

案例测试

本案例需基于Linux-RT内核运行。请先参考《Linux系统开发手册》的“替换Kernel”章节修改系统内核镜像。

本案例程序均设置为SCHED_FIFO进程调度策略,进程优先级设置为最高,采用隔离CPU核心状态,分别在空载状态、满负荷状态持续运行程序12小时。

请使用网线将评估板ETH1 RGMII网口连接至伺服驱动器A的IN网口,再使用另一根网线将伺服驱动器A的OUT网口连接至伺服驱动器B的IN网口。

wKgZO2laFmqAA59wAGJ09Hn2vFE083.png图 3

wKgZPGiQYcSABLr2AAkJCTEqOy0981.png图 4

隔离CPU核心

本次操作以隔离CPU1核心为例进行演示。将评估板断电,长按"Ctrl + C"按键并上电启动评估板,进入U-Boot命令行模式后松开按键,执行如下命令修改环境变量,隔离CPU1核心。

U-Boot# setenv mmc_boot 'if mmc dev ${devnum}; then devtype=mmc; if test ${devnum} -eq 0; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait isolcpus=1'"'"'; fi; if test ${devnum} -eq 1; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait isolcpus=1'"'"'; fi; ext4load mmc ${devnum}:2 ${kernel_addr_r} ${bootdir}/${kernel_image}; ext4load mmc ${devnum}:2 ${fdt_addr_r} ${bootdir}/${devicetree_image}; bootm ${kernel_addr_r} - ${fdt_addr_r}; run scan_dev_for_boot_part2; fi'

U-Boot# saveenv

U-Boot# reset

wKgZPGkuVBqADK-EAAAw0r20zm0586.png图 5

进入评估板文件系统,执行如下命令,确认已正确隔离CPU。

Target# cat /proc/cmdline

wKgZO2kuVamAB_hwAAASx8BkVns687.png图 6

测试完成,如需恢复U-Boot环境变量,在U-Boot命令行模式执行以下命令。

U-Boot# env default -a

U-Boot# saveenv

U-Boot# reset

wKgZPGlaFveARN0wAAAIcTw4lLM029.png图 7

安装IgHEtherCAT驱动

请将案例"igh_ethercatimages"目录下的ethercat-stable-[版本号]-[Git序列号].tar.gz压缩包拷贝至评估板文件系统任意目录下。版本号、Git序列号请以实际情况为准。将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统。

执行如下命令,解压IgH EtherCAT开发包源码,得到_install文件夹。

Target# tar -xvf ethercat-stable-1.6.2-g285cdf0.tar.gz

wKgZPGlaF0-AHmipAAA8AN3iFjQ609.png图 8

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

Target# ifconfig

wKgZPGlaF1qATz_3AAA_ujWBFCU478.png图 9

执行如下命令,加载驱动模块,命令中"6A:71:14:3D:61:75"为评估板网卡物理地址,请根据实际情况修改。

Target# insmod -f _install/modules/ec_master.ko main_devices=6A:71:14:3D:61:75

wKgZPGlaF2GAZ3WAAAASnVenq4o761.png图 10

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

Target# mkdir -p /etc/sysconfig

Target# cp _install/etc/sysconfig/ethercat /etc/sysconfig

Target# mkdir -p /lib/modules/$(uname -r)

Target# cp _install/modules/ec_master.ko /lib/modules/$(uname -r)

Target# depmod -a

备注:此处的警告信息不影响测试结果,忽略即可。

wKgZPGlaF2mAeDpJAAA3VpDfv-0293.png图 11

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

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

wKgZPGlaF3CAbtf6AAAKpcq68Lw919.png图 12

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

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

wKgZPGlaF3eAAuqxAAA1OHzh7iA651.png图 13

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

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

Target# sync

wKgZO2laF36AcljbAAAJOJrPoTg253.png图 14

基于CPU空载状态测试

执行如下命令修改内核printk日志等级,避免内核打印信息影响实时测试。

Target# echo 1 > /proc/sys/kernel/printk

wKgZO2kuUy2AIoSCAAAGrpsS3xA053.png图 15

调整内存分配策略为"2",禁用内存过度使用。避免出现OOM(Out-of-Memory) Killer攻击某些进程而产生延迟,影响测试结果。

Target# echo 2> /proc/sys/vm/overcommit_memory

wKgZO2kuU2CAbGDdAAAHNSIe2lw825.png图 16

执行如下命令,可查看igh_ethercat_dc_motor程序相关参数信息。

Target# ./igh_ethercat_dc_motor --help

wKgZO2laF5KAbAKSAAAifdMUJAI931.png图 17

参数解释

-d:指定电机转向,0:正转,1:反转。

-v:程序版本信息。

-s:选择进程调度策略模式。"-s 0"表示进程调度策略为SCHED_FIFO;"-s 1"表示进程调度策略为SCHED_DEADLINE,若不带可选参数值[]则使用默认参数值,其中sched_runtime表示运行时间,sched_deadline表示相对期限,sched_period表示周期,单位均为纳秒。

--help:查看程序运行参数。

执行以下命令,设置进程调度策略为SCHED_FIFO,控制两台伺服电机同时正转,并将程序运行输出的打印信息保存至log.txt文件。

Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0 -s 0 > log.txt &

wKgZO2laF5qAFJScAAAIuA9z0MI314.png图 18

基于CPU满负荷状态测试

执行如下命令修改内核printk日志等级,避免内核打印信息影响实时测试。

Target# echo 1 > /proc/sys/kernel/printk

wKgZO2kuUy2AIoSCAAAGrpsS3xA053.png图 19

调整内存分配策略为"2",禁用内存过度使用。避免出现OOM(Out-of-Memory) Killer攻击某些进程而产生延迟,影响测试结果。

Target# echo 2> /proc/sys/vm/overcommit_memory

wKgZO2kuU2CAbGDdAAAHNSIe2lw825.png图 20

执行如下命令,运行stress压力测试工具,使得CPU处于满负荷状态。

Target# stress-ng --cpu 2 --cpu-method=all --io 2 --vm 2 --vm-bytes 32M --timeout 43200s &

wKgZO2kuVAyAXULTAAAee-bzhbg370.png图 21

设置进程调度策略为SCHED_FIFO,控制两台伺服电机同时正转,并将程序运行输出的打印信息保存至log.txt文件。

Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0 -s 0 > log.txt &

wKgZPGlaF7yAabKXAAAIUJqTzzw953.png图 22

统计结果分析

可执行如下命令,查看程序运行输出的log.txt内容。

Target# head -n100 log.txt

wKgZPGlaF8WATeTKAABe5ViA2P8461.png图 23

参数解析:

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

period:EtherCAT通讯周期时间(ns),本案例设置为1000000ns,即1ms。

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

对log.txt文件内容进行分析后,得到的实时性能测试结果如下。

wKgZPGlaF8yAZfU7AAANsgdVEDY632.png

备注:

(1)以上数据为本次测试结果,测试数据仅供参考。

(2)如需测试电机反转,请参考上述电机正转测试方法,将运行igh_ethercat_dc_motor可执行程序命令中的"-d 0"参数修改为"-d 1"。

​由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    88

    文章

    2202

    浏览量

    61581
  • 开源
    +关注

    关注

    3

    文章

    4353

    浏览量

    46447
  • 实时控制
    +关注

    关注

    0

    文章

    59

    浏览量

    9870
  • ethercat
    +关注

    关注

    20

    文章

    1582

    浏览量

    46164
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于 DR1M90 的 Linux-RT 内核开发:从编译配置到 GPIO / 按键应用实现(1

    本手册由创龙科技研发,针对 DR1M90,详述 Linux-RT 实时内核开发:含实时性测试(Linux 与 Linux-RT 对比、CPU 空载 / 满负荷 / 隔离状态测试)、内核配置编译
    的头像 发表于 12-02 10:38 1314次阅读
    基于 <b class='flag-5'>DR1M90</b> 的 Linux-RT 内核开发:从编译配置到 GPIO / 按键应用实现(<b class='flag-5'>1</b>)

    基于安路DR1M90 FPSoC的Linux系统全流程开发指南(4)

    ,以及 CPU/DDR 管理,附带 TFTP+NFS 快速调试方案。含实操命令与配置步骤,适配特定硬件与开发环境,帮助开发者完成系统镜像生成、替换与调试,支撑 DR1M90 FPSoC 产品的 Linux 系统开发工作。
    的头像 发表于 11-30 15:46 2330次阅读
    基于安路<b class='flag-5'>DR1M90</b> FPSoC的Linux系统全流程开发指南(4)

    基于BL350与IGH EtherCAT的硬实时控制解决方案

    现代高性能应用的需求。本文将详细介绍一种基于钡铼技术ARMxy BL350系列嵌入式工业计算机,结合IGH EtherCAT与Linux-RT
    的头像 发表于 11-27 14:08 486次阅读

    基于安路DR1M90 FPSoC 的Linux 系统全流程开发指南(3)

    ,以及 CPU/DDR 管理,附带 TFTP+NFS 快速调试方案。含实操命令与配置步骤,适配特定硬件与开发环境,帮助开发者完成系统镜像生成、替换与调试,支撑 DR1M90 FPSoC 产品的 Linux 系统开发工作。
    的头像 发表于 11-26 17:01 449次阅读
    基于安路<b class='flag-5'>DR1M90</b> FPSoC 的Linux 系统全流程开发指南(3)

    基于安路DR1M90 FPSoC 的Linux 系统全流程开发指南(1

    ,以及 CPU/DDR 管理,附带 TFTP+NFS 快速调试方案。含实操命令与配置步骤,适配特定硬件与开发环境,帮助开发者完成系统镜像生成、替换与调试,支撑 DR1M90 FPSoC 产品的 Linux 系统开发工作。
    的头像 发表于 11-25 14:09 485次阅读
    基于安路<b class='flag-5'>DR1M90</b> FPSoC 的Linux 系统全流程开发指南(<b class='flag-5'>1</b>)

    盟通科技基于瑞萨RZ MPU的EtherCAT应用方案

    瑞萨电子携手盟通科技推出基于瑞萨RZ MPU的EtherCAT应用方案,为工业机器人、伺服驱动、PLC和自动化
    的头像 发表于 11-21 10:31 1438次阅读
    盟通科技基于瑞萨RZ MPU的<b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b><b class='flag-5'>站</b>应用<b class='flag-5'>方案</b>

    安路DR1M90评估板:从基础外设到通信模块测试指南

    本手册由创龙科技研发,针对安路飞龙 DR1M90 评估板,详述 Linux 系统下功能测试流程。含系统启动验证,LED、按键、DDR 等基础外设测试,ETH、WiFi、4G、GPS 等通信功能测试
    的头像 发表于 11-20 15:26 1679次阅读
    安路<b class='flag-5'>DR1M90</b>评估板:从基础外设到通信模块测试指南

    【米尔RK3506国产开发板评测】3、实时补丁以及EtherCAT IGH移植

    EtherCAT IgH需要保证高实时性,Preempt-RT是一种针对实时性能进行了优化的Linux内核。与普通的Linux内核相比,Preempt-RT具有以下优势:
    发表于 10-27 10:09

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT站开发案例(下)

    /SCHED_DEADLINE 模式在空载 / 满负荷状态测试)、编译(程序与 igh_ethercat_dc_motor 案例编译)及关键代码。案例以 1ms
    的头像 发表于 10-15 15:06 766次阅读
    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—<b class='flag-5'>IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例(下)

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT站开发案例(上)

    /SCHED_DEADLINE 模式在空载 / 满负荷状态测试)、编译(程序与 igh_ethercat_dc_motor 案例编译)及关键代码。案例以 1ms
    的头像 发表于 10-14 11:55 793次阅读
    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—<b class='flag-5'>IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例(上)

    【米尔NXP i.MX 91开发板评测】移植运行IGH EtherCAT

    通信应用(EtherCAT),EtherCAT在半导体设备、自动化产线、机器人等领域应用广泛,是基于通用以太网协议的变种 移植 拉取开源IGH Et
    发表于 09-01 16:32

    创龙科技DR1M90工业评估板的关键优势

    安路科技生态合作伙伴创龙科技正式推出了基于安路科技产品DR1M90工业核心板,共同助力国产FPGA技术的推广和创新应用。
    的头像 发表于 08-18 16:20 1699次阅读

    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—IgH EtherCAT站开发案例

    本文档主要演示TLT113-EVM评估板基于IgH EtherCAT控制伺服电机
    的头像 发表于 08-04 15:48 1019次阅读
    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—<b class='flag-5'>IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例

    基于米尔安路飞龙派FPGA FPSoC+移植SOEM实现EtherCAT控制功能

    X开发板上移植SOEM,可以实现对EtherCAT的IO控制,安路的DR190M芯片可以作为EtherCAT
    发表于 07-11 19:49

    EtherCAT转Profinet网关接汇川伺服操作模式的控制解析

    与设备间搭建了标准化桥梁。当需要将采用EtherCAT协议的从设备(如伺服驱动器等)与Profinet设备(如西门子
    的头像 发表于 07-09 14:45 739次阅读
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b><b class='flag-5'>站</b>转Profinet网关接汇川<b class='flag-5'>伺服</b>操作模式的<b class='flag-5'>控制</b>解析