无需License费用!免费分享开源IgHEtherCAT主站方案

嵌入式大杂烩 2021-12-28 12:00
前言:本文档主要演示IgH EtherCAT控制伺服电机方法,过程中基于创龙科技的TLIMX8-EVM评估板进行测试,分享给用户朋友查阅。


本文档适用开发环境:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

Linux开发环境:Ubuntu 18.04.4 64bit

虚拟机:VMware15.1.0

Linux SDK:5.4.70_2.3.0

Kernel:linux-5.4.70-xenomai-g8d94618-v1.0

IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723

Xenomai:xenomai-v3.1.1-g8b2052e

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

伺服电机:台达ECMA-C10401GS


*硬件平台:创龙科技TLIMX8-EVM评估板(NXP i.MX 8M Mini)


此外IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平台均已提供开源EtherCAT主站IgH案例,有需求可扫描下方二维码下载资料。


  1               01

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                01

案例说明


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

(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               01

案例测试


请按下图所示使用网线连接评估板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

 

图 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

 

备注:案例设置EtherCAT周期为1.1ms,同时串口循环打印EtherCAT周期的最小值和最大值。

参数解析:

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

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

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


  4                 01

案例编译


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/

 

图 19

 

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

Host#  ./bootstrap

 

图 20

 

执行如下命令,加载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/"为案例提供的内核源码目录。

 

图 21

 

图 22

 

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

Host#  make

 

图 23

 

图 24

 

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

Host#  make modules

 

图 25

 

 图 26

 

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

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

 

图 27 

 

图 28

 

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

Host#  mkdir -p __install/modules

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

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

 

图 29

 

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

 

图 30 

 

图 31

 

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

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

Host#  make

 

图 32


  5               01

关键代码


(1)创建EtherCAT Master。

 

图 33

 

(2)创建域。

 

图 34

 

(3)配置PDO。

  

图 35

 

(4)为域注册PDO条目。

 

图 36

 

(5)激活Master。

 

 图 37

 

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

 

图 38

 

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

 

图 39

 

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

  

图 40

 

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

 

图 41


  6                01

Xenomai简介


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

 

图 42


图 43

 

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/

 

图 44

 

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

Host#  ./scripts/bootstrap

 

图 45

 

执行如下命令,加载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

 

图 46

 

图 47

 

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

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

 

图 48

 

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

 

图 49

 

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

 

图 50

 

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

 

图 51

 

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

Target#  echo 0 > /proc/xenomai/latency

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

 

图 52

 

表 1 Cyclictest测试结果说明

参数

解析

T(Thread)

线程索引和线程ID

P(Priority)

线程的优先级

I(Interval)

延迟,测量线程的预期唤醒周期

C(Count)

测量延迟的次数

Min(Minimum)

测量的最小延迟(单位us

Act(Actual)

最近一次测量的延迟(单位us

Avg(Average)

平均延时(单位us

Max(Maximum)

测量的最大延迟(单位us


 

更多方案,欢迎与Tronlong联系:

销售邮箱:sales@tronlong.com

技术邮箱:support@tronlong.com

创龙总机:020-8998-6280

技术热线:020-3893-9734

创龙官网:www.tronlong.com

技术论坛:www.51ele.net

官方商城:https://tronlong.tmall.com


关注创龙科技,获取更多资讯


           
在看点这里
嵌入式大杂烩 专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!
评论 (0)
  • 飞凌嵌入式作为龙芯合作伙伴,隆重推出FET-2K0300i-S全国产自主可控工业级核心板!FET-2K0300i-S核心板基于龙芯2K0300i工业级处理器开发设计,集成1个64位LA264处理器,主频1GHz,提供高效的计算能力;支持硬件ECC;2K0300i还具备丰富的连接接口USB、SDIO、UART、SPI、CAN-FD、Ethernet、ADC等一应俱全,龙芯2K0300i支持四路CAN-FD接口,具备良好的可靠性、实时性和灵活性,可满足用户多路CAN需求。除性价比超高的国产处理器外,
    飞凌嵌入式 2025-05-07 11:54 87浏览
  • UNISOC Miracle Gaming奇迹手游引擎亮点:• 高帧稳帧:支持《王者荣耀》等主流手游90帧高画质模式,连续丢帧率最高降低85%;• 丝滑操控:游戏冷启动速度提升50%,《和平精英》开镜开枪操作延迟降低80%;• 极速网络:专属游戏网络引擎,使《王者荣耀》平均延迟降低80%;• 智感语音:与腾讯GVoice联合,弱网环境仍能保持清晰通话;• 超高画质:游戏画质增强、超级HDR画质、游戏超分技术,优化游戏视效。全球手游市场规模日益壮大,游戏玩家对极致体验的追求愈发苛刻。紫光展锐全新U
    紫光展锐 2025-05-07 17:07 324浏览
  • 二位半 5线数码管的驱动方法这个2位半的7段数码管只用5个管脚驱动。如果用常规的7段+共阳/阴则需要用10个管脚。如果把每个段看成独立的灯。5个管脚来点亮,任选其中一个作为COM端时,另外4条线可以单独各控制一个灯。所以实际上最多能驱动5*4 = 20个段。但是这里会有一个小问题。如果想点亮B1,可以让第3条线(P3)置高,P4 置低,其它阳极连P3的灯对应阴极P2 P1都应置高,此时会发现C1也会点亮。实际操作时,可以把COM端线P3设置为PP输出,其它线为OD输出。就可以单独控制了。实际的驱
    southcreek 2025-05-07 15:06 515浏览
  • 这款无线入耳式蓝牙耳机是长这个样子的,如下图。侧面特写,如下图。充电接口来个特写,用的是卡座卡在PCB板子上的,上下夹紧PCB的正负极,如下图。撬开耳机喇叭盖子,如下图。精致的喇叭(HY),如下图。喇叭是由电学产生声学的,具体结构如下图。电池包(AFS 451012  21 12),用黄色耐高温胶带进行包裹(安规需求),加强隔离绝缘的,如下图。451012是电池包的型号,聚合物锂电池+3.7V 35mAh,详细如下图。电路板是怎么拿出来的呢,剪断喇叭和电池包的连接线,底部抽出PCB板子
    liweicheng 2025-05-06 22:58 603浏览
  • 硅二极管温度传感器是一种基于硅半导体材料特性的测温装置,其核心原理是利用硅二极管的电学参数(如正向压降或电阻)随温度变化的特性实现温度检测。以下是其工作原理、技术特点及典型应用:一、工作原理1、‌PN结温度特性‌硅二极管由PN结构成,当温度变化时,其正向电压 VF与温度呈线性负相关关系。例如,温度每升高1℃,VF约下降2 mV。2、‌电压—温度关系‌通过jing确测量正向电压的微小变化,可推算出环境温度值。部分型号(如SI410)在宽温域内(如1.4 K至475 K)仍能保持高线性度。
    锦正茂科技 2025-05-09 13:52 219浏览
  • 后摄像头是长这个样子,如下图。5孔(D-,D+,5V,12V,GND),说的是连接线的个数,如下图。4LED,+12V驱动4颗LED灯珠,给摄像头补光用的,如下图。打开后盖,发现里面有透明白胶(防水)和白色硬胶(固定),用合适的工具,清理其中的胶状物。BOT层,AN3860,Panasonic Semiconductor (松下电器)制造的,Cylinder Motor Driver IC for Video Camera,如下图。TOP层,感光芯片和广角聚焦镜头组合,如下图。感光芯片,看着是玻
    liweicheng 2025-05-07 23:55 416浏览
  • 文/郭楚妤编辑/cc孙聪颖‍相较于一众措辞谨慎、毫无掌舵者个人风格的上市公司财报,利亚德的财报显得尤为另类。利亚德光电集团成立于1995年,是一家以LED显示、液晶显示产品设计、生产、销售及服务为主业的高新技术企业。自2016年年报起,无论业绩优劣,董事长李军每年都会在财报末尾附上一首七言打油诗,抒发其对公司当年业绩的感悟。从“三年翻番顺大势”“智能显示我第一”“披荆斩棘幸从容”等词句中,不难窥见李军的雄心壮志。2012年,利亚德(300296.SZ)在深交所创业板上市。成立以来,该公司在细分领
    华尔街科技眼 2025-05-07 19:25 425浏览
  • 随着智能驾驶时代到来,汽车正转变为移动计算平台。车载AI技术对存储器提出新挑战:既要高性能,又需低功耗和车规级可靠性。贞光科技代理的紫光国芯车规级LPDDR4存储器,以其卓越性能成为国产芯片产业链中的关键一环,为智能汽车提供坚实的"记忆力"支持。作为官方授权代理商,贞光科技通过专业技术团队和完善供应链,让这款国产存储器更好地服务国内汽车厂商。本文将探讨车载AI算力需求现状及贞光科技如何通过紫光国芯LPDDR4产品满足市场需求。 车载AI算力需求激增的背景与挑战智能驾驶推动算力需求爆发式
    贞光科技 2025-05-07 16:54 212浏览
  • 温度传感器的工作原理依据其类型可分为以下几种主要形式:一、热电阻温度传感器利用金属或半导体材料的电阻值随温度变化的特性实现测温:l ‌金属热电阻‌(如铂电阻 Pt100、Pt1000):高温下电阻值呈线性增长,稳定性高,适用于工业精密测温。l ‌热敏电阻‌(NTC/PTC):NTC 热敏电阻阻值随温度升高而下降,PTC 则相反;灵敏度高但线性范围较窄,常用于电子设备温控。二、热电偶传感器基于‌塞贝克效应‌(Seebeck effect):两种不同
    锦正茂科技 2025-05-09 13:31 212浏览
  • Matter协议是一个由Amazon Alexa、Apple HomeKit、Google Home和Samsung SmartThings等全球科技巨头与CSA联盟共同制定的开放性标准,它就像一份“共生契约”,能让原本相互独立的家居生态在应用层上握手共存,同时它并非另起炉灶,而是以IP(互联网协议)为基础框架,将不同通信协议下的家居设备统一到同一套“语义规则”之下。作为应用层上的互通标准,Matter协议正在重新定义智能家居行业的运行逻辑,它不仅能向下屏蔽家居设备制造商的生态和系统,让设备、平
    华普微HOPERF 2025-05-08 11:40 364浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦