别打牛牛 发表于 2021-7-21 14:39:57

基于TI Sitara 处理器,AM3352/54/58/59 的EtherCAT主站开发案例分享

本帖最后由 别打牛牛 于 2021-7-21 14:42 编辑

本文主要基于TI Sitara处理器的德国Acontis公司EtherCAT主站协议栈控制伺服电机具体方法。


其中试用到的案例板卡为Tronlong创龙科技的TL335x-EVM-S评估板。创龙TL335x-EVM是一款基于TI Sitara系列AM3352/AM3354/AM3358/AM3359 ARM Cortex-A8高性能低功耗处理器设计的评估板,由核心板和底板组成。




https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=N2UyNTQ3NTJhYTdiOGVlYjU5MzA5YTUwNjIyODZiZmMsMTYyNjg0NjcyNDk5Mw==
评估板正面图
核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路千兆网口、HDMI、GPMC、CAN等接口,方便用户快速进行产品方案评估与技术预研。


本文适用开发环境:


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


Kernel:Linux-RT-4.9.65
Acontis EtherCAT主站协议栈开发包:EC-Master-V2.9-Linux_armv6-vfp-eabihf-Eval.tar.zip


Acontis EtherCAT网络信息配置工具:EC-Engineer


伺服驱动器:SANYO RS2A03A0KA4W00


伺服电机:SANYO R2AA08075FXH00W


1 EC-Master、EC-Engineer简介

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=NjljY2JhMDU4NGU0NzFkNjY0NmFlZTdjYjQ4Mjc3NDgsMTYyNjg0NjcyNDk5Mw==
图 1 EtherCAT系统架构

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


德国Acontis公司是EtherCAT技术协会资深会员,Acontis围绕EtherCAT协议开发的EtherCAT主站协议栈EC-Master、EtherCAT网络信息配置工具EC-Engineer和Windows操作系统实时扩展核EC-Win等产品已经在众多国际知名机器人(如KUKA)及自动化公司的产品中得到多方验证,其产品的可靠性和性能得到业界公认和推崇。


如下为EC-Master和EC-Engineer简介。如需了解更多介绍信息,可访问Acontis中国总代理北京盟通科技有限公司官网:www.motrotech.com,或查看Acontis EtherCAT主站协议栈开发包中的Doc目录下的EC-Master_ClassB.pdf文件。


1.1 EC-Master简介


Acontis EtherCAT主站协议栈EC-Master包含:


(1) EtherCAT-Master-Core:EtherCAT主站的主要功能都在Core层中实现。所有协议的处理也都在这里执行,例如过程数据传输和邮箱协议(CoE,EoE,FoE,SoE,AoE)。


(2) EtherCAT-Link-Layer:主从站的数据交换,将零拷贝(Zero Copy)和轮询(Polling)技术与Core层配合使用,实现最好的实时性性能和最大限度减少CPU负载。


(3) OS层:操作系统的调用被封装在OS层。为了能够实现最好的性能,绝大多数功能使用简单的C语言宏编写。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=N2UxNDkzNzE2OWMyYWFlZjFmMTM5OTI0ZWI1Nzg4YzgsMTYyNjg0NjcyNDk5Mw==

图 2 EC-Master框架
1.2 EC-Engineer简介


EtherCAT网络信息配置工具EC-Engineer是由Acontis开发的一个功能强大用于EtherCAT网络配置和诊断的软件工具,可帮助用户快速而舒适地处理工程和诊断任务。清晰且直观的用户界面确保了用户在EtherCAT网络诊断和配置方面获得流畅的体验。




https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ODZiODgyZjlkZDdhZGMzYTJjMWFmMjQ0ZGQxNzFlYzcsMTYyNjg0NjcyNDk5Mw==
图 3

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=OTIxMmNkOWJhN2IwMTEwNzFhM2VlZmY4MWJiZmE5N2IsMTYyNjg0NjcyNDk5Mw==
图 4


1 EtherCAT主站开发案例测试
请通过网线将伺服驱动器CN0 EtherCAT(IN)网口连接到评估板RGMII1 ETH千兆网口(ETH0)。如果需要使用RGMII2 ETH网口(ETH1)来控制电机,请通过网线将伺服驱动器CN0 EtherCAT(IN)网口连接到评估板RGMII2 ETH千兆网口。并连接好伺服电机,硬件连接如下所示。

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=N2JmZTZkYjc3OTRlODM0NDM4ODdmZGZiNmZmNmMxODYsMTYyNjg0NjcyNDk5Mw==
图 5


将产品资料“4-软件资料\Demo\tl_EcMasterDemoDCmotor\bin\”目录下的eni_SANYO_motor.xml、tl_EcMasterDemoDcMotor和“4-软件资料\Demo\tl_EcMasterDemoDCmotor\lib\”目录下的libemllCPSW.so文件拷贝到评估板文件系统同一个目录下。

伺服驱动器上电启动运行。评估板上电启动进入文件系统执行如下命令卸载ti_cpsw千兆网口驱动。执行ifconfig命令可查看到千兆网口对应的eth0、eth1网卡已被卸载。

Target# rmmod ti_cpsw

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MmI0ZThkOWFkNzY1NDE1YzE3Njc0MDY2ZWZlZGQyNmIsMTYyNjg0NjcyNDk5Mw==
图 6


执行如下命令加载EtherCAT主站网口驱动,可通过lsmod命令查看驱动是否加载成功。
Target# modprobe atemsys

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZGE0MDg1MjAwYzY4ZTIwNDc5NTVmM2FiNWJkZGJkYzcsMTYyNjg0NjcyNDk5Mw==
图 7


在可执行程序tl_EcMasterDemoDcMotor文件所在路径下,执行如下命令查看可执行程序的使用说明和参数解析。
Target# ./tl_EcMasterDemoDcMotor --help



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MzkyYTgxMDZhYjE4MzUzYzcxZTJlNDE2MjU5OTdmODcsMTYyNjg0NjcyNDk5Mw==
图 8

CPU频率调节模式默认配置为ondemand(初始频率为300MHz),此时系统会定期检查负载,根据负载来调节频率。由于EtherCAT对CPU频率要求较高,因此需执行如下命令将CPU频率调节模式配置为performance,此时系统会将CPU频率固定为800MHz。


Target# echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
Target# cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MjUxMTc5YzJlMTY2NDQ2ODhhODAwMWI5NWJkOTc3YjgsMTYyNjg0NjcyNDk5Mw==
图 9
执行如下命令,通过EtherCAT主站协议栈控制伺服电机进行正反转动作,设置主站通讯周期为1000us,串口终端打印如下相关信息。


Target# ./tl_EcMasterDemoDcMotor -f eni_SANYO_motor.xml -auxclk 1000 -v 2 -t 30000 -perf -cpsw 1 1 1 m custom am33XX 0 1 0


参数说明:


-f eni_SANYO_motor.xml //加载网络配置eni.xml文件


-auxclk 1000 //cycle time,即主站通讯周期为1000us


-v 2 //信息打印级别为2


-t 30000 //持续时间


-perf //打印性能参数


-cpsw 1 1 1 m custom am33XX 0 1 0 //网口类型为TI的CPSW,“1 1 1”表示port1,Polling模式,high priority,“m”表示Master。


如需使用RGMII ETH2网口来控制电机,需要执行如下命令。


Target# ./tl_EcMasterDemoDcMotor -f eni_SANYO_motor.xml -auxclk 1000 -v 2 -t 30000 -perf -cpsw 2 1 1 m custom am33XX 1 1 0




https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MTg3YzcxMjkxOWQ2OTMxMTMyYjdhZGUxNjRiMzgwYmEsMTYyNjg0NjcyNDk5Mw==
图 10
https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MjI1YjU3MjBlY2MxYjlmMTBlOGQ1ZjVjYzZmNDAyYzMsMTYyNjg0NjcyNDk5Mw==
图 11
由上图得知,主站通讯周期平均值约为997.8us,最大值为1054.2us。主站的通讯周期最大抖动值为1054.2us-1000us=54.2us。


tl_EcMasterDemoDcMotor程序会自动检测与加载EtherCAT主站协议栈license。如无license,程序运行60min后将自动停止,提示信息如下图所示。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=YzQ4ZmUyNmJkOWMxZDQ5NmI1NjYwMWU0ZmFmMjFjNGQsMTYyNjg0NjcyNDk5Mw==
图 12
若已购买license,在tl_EcMasterDemoDcMotor文件同一目录下创建license文件,并将license密匙添加到此文本文件中。


备注:以下提供基于我司TL570x-EVM评估板添加license的测试截图作为参考。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=N2M2N2IzMjg3ZmZkYjIwZDg3ZDdlYjhhM2Q4NGRkMGEsMTYyNjg0NjcyNDk5Mw==
图 13
重新运行tl_EcMasterDemoDcMotor程序,若成功读取有效license,程序将可长时间稳定运行。同时,串口终端将会打印如下类似信息。




https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MDM0YjZmNTZhMmFhYThjYTU3ZmQzZmVhYWYwMzc3ODIsMTYyNjg0NjcyNDk5Mw==
图 14
2 EtherCAT主站开发案例编译


将tl_EcMasterDemoDcMotor文件夹整个复制到Ubuntu,并进入EC_Master_SDK目录,执行如下命令将该目录下的开发包EC-Master-V2.9-Linux_armv6-vfp-eabihf-Eval.tar.zip解压到当前路径下。


Host# cd tl_EcMasterDemoDcMotor/EC_Master_SDK/


Host# unzip EC-Master-V2.9-Linux_armv6-vfp-eabihf-Eval.tar.zip



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=Njk1ODExOTE4MDc2NzIwYjAzNzhhMTgzNWEzNmNkNWEsMTYyNjg0NjcyNDk5Mw==
图 15
开发包解压完成后在当前目录生成EC-Master-V2.9-Linux_armv6-vfp-eabihf-Eval.tar文件夹,目录结构如下图所示。案例编译需依赖此开发包的库文件。如需了解更多EcMaster EtherCAT案例,请查看开发包的Examples目录。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=NTIxOGFiZTU4MDliOTQ2OGUxMzM2NTNmMzk3Y2IzN2QsMTYyNjg0NjcyNDk5Mw==
图 16
进入tl_EcMasterDemoDcMotor的src源码目录,在Makefile文件中指定平台Linux Processor SDK交叉编译工具链的实际路径。


Host# cd ../src/


Host# vim Makefile



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ODYwZjM1ZjMxMmQwODdiODdmMmZmMDIxNzU0Njc2ZWUsMTYyNjg0NjcyNDk5Mw==
图 17
CROSS_COMPILE ?= /home/tronlong/ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- //交叉编译工具链路径



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZGQxYTYwMDVlZGY1ZGUyY2Q3ODVjOWUyY2Y5NGQwN2UsMTYyNjg0NjcyNDk5Mw==
图 18
修改完成后保存退出,执行make命令编译生成可执行程序tl_EcMasterDemoDcMotor文件。


Host# make



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MGViMTllMGRiM2YzZDA5MjRiOWMxM2VmMTY1YTUyMzIsMTYyNjg0NjcyNDk5Mw==
图 19
https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=NDk4NjFhZGYxMzY4ZjNiYzE0MTRhMzUyMzFlMWFlMjUsMTYyNjg0NjcyNDk5Mw==
图 20
3 EC-Engineer配置ENI文件方法


本章节主要说明通过Acontis EtherCAT网络信息配置工具EC-Engineer工具配置ENI(EtherCAT Network
Information Format)文件的方法。ENI文件主要描述EtherCAT总线拓扑结构等信息。


将产品资料“4-软件资料\Tools\Windows\”目录下的EC-Engineer_Eval_[版本号].zip在Windows下解压与安装。
确保PC机可正常连接互联网,双击打开EC-Engineer工具。系统将会通过网络检测EC-Engineer的license是否过期,如无法访问互联网将会导致打开失败。将伺服驱动器通过网线与PC机直连(此时PC机可断开与互联网的连接),在EC-Engineer选中Device Editor界面的Class A工程选项,如下图所示。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=OGJmN2NkYzVmZmVjY2VkZDhiNjIzZTYxYzEwMTk2NTUsMTYyNjg0NjcyNDk5NA==
图 21
点击“File -> ESI Manager”,打开ESI Manager界面。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=N2ZmNzQ3ZmRmYjI2NjEzNTJmZTQ3MzBlMWQwNjc1MjEsMTYyNjg0NjcyNDk5NA==
图 22
添加SANYO伺服驱动器配套的.xml文件,该文件由伺服驱动器厂家提供。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZTcwNjZlMTk4YzBmMzUwOThjNTA3ZDAxOGMyMzA1ZTMsMTYyNjg0NjcyNDk5NA==
图 23
https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZmYwYzRlODBjNTE5NzMwMjc3MjE5YTdkMzk3ZmU5ZTMsMTYyNjg0NjcyNDk5NA==
图 24
https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=YjJmYTdjNTIwNmE1Y2ViYjlmYmNjNGQ1MTQ5NDk5NDksMTYyNjg0NjcyNDk5NA==
图 25
https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MDJiMWZiMDIyMGVkNzM1ODk1YzFlNDg5ZGM2MmRlMjMsMTYyNjg0NjcyNDk5NA==
图 26
Cycle Time选择1000us,在Network Adapter选项栏里选择从站连接的网卡,按Select进行连接,连接后按钮变为
。Cycle Time的大小可能会影响伺服电机的抖动,具体根据伺服电机的实际情况进行设置,此处使用1000us。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=OWUwNGZjOWRhZDlmMDgwOGU2ODQ0YjI5MTE2ZmIyM2YsMTYyNjg0NjcyNDk5NA==
图 27
点击“Network -> Scan EtherCAT Network”扫描伺服设备。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=OTQxNDQxOTVjNmYyZmU2ZWQ1Njg3NjNlOTJkYWI5ZjYsMTYyNjg0NjcyNDk5NA==
图 28

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=MGVjNDUxYWJhNjcyMWY0MTlkODA4N2EyZDIyYzlkNGEsMTYyNjg0NjcyNDk5NA==
图 29
成功扫描出伺服设备后,将其选中(本次操作为SANYO伺服)。点击“Exports ENI”按钮重新生成伺服设备.xml格式的ENI文件。文件名可自拟,此处文件名设定为eni_SANYO_motor,选择“Diagnosis Mode”选项可观察伺服设备信息。




https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZjFjY2Y5NjZjNTY2OGE2ZTZhZjRjZTNlODhmZTkyZDQsMTYyNjg0NjcyNDk5NA==
图 30

https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=ZDRkN2YyYmI1OThkM2U4YTVkMGJiYzEzZDg5ZjNhNjAsMTYyNjg0NjcyNDk5NA==
图 31
此时会在当前路径生成eni_SANYO_motor.xml配置文件,该文件记录了从站的配置信息,文件配置的Cycle Time为1000us。



https://mp.toutiao.com/mp/agw/article_material/open_image/get?code=YzRkOTk0NmUyNWI3NmY1MzBiMGM1MTI4MjViYTcxMWYsMTYyNjg0NjcyNDk5NA==

以上便是本次开发案例分享的所有内容,感兴趣的用户欢迎下方评论点赞,谢谢关注,后面还将分享更多嵌入式相关的知识汇总与开发案例。



注:由于EtherCAT主站协议栈对系统实时性要求较高,因此使用Linux-RT实时内核进行测试。资料中提供的EC-Engineer为免费试用版,需定期更新,如已过期可沟通提供新版。



页: [1]
查看完整版本: 基于TI Sitara 处理器,AM3352/54/58/59 的EtherCAT主站开发案例分享