多语言展示
当前在线:1238今日阅读:167今日分享:16

EtherCAT主站开发经验——基于Zynq

EtherCAT工业实时以太网技术以其高速,稳定的性能特点,被大量应用于运动控制,机器人,CNC等领域。Zynq®-7000 全可编程 SoC (AP SoC) 器件集成了ARM® 处理器的软件可编程性与 FPGA 的硬件可编程性,可实现各种各样灵活而高效的运算。两者的结合是开发EtherCAT高性能主站的一种可靠实施方案。2EtherCAT伺服驱动器-如何选择硬件开发方案
工具/原料
1

Zynq®-7000 全可编程 SoC (AP SoC) 器件

2

ARM,FPGA开发环境,XILINX的SDSoC 开发环境

3

EtherCAT主站源代码或API函数库:德国KPA的主站源代码一份(带IP core和网卡驱动)

4

Xenomai或Linux Rt-Preempt实时操作系统或其它

5

EtherCAT配置工具:德国KPA Studio配置工具软件

方法/步骤
1

整个方案的结构框架

2

PS层,即Zynq中的ARM处理器部分,加载了Xenomai/Rt-Preempt实时操作系统和KPA的EtherCAT主站源代码(EtherCAT Master Core)。Xenomai实时操作系统让整个通讯过程达到了us级别,而KPA的EtherCAT的主站源代码负责按照EtherCAT机制处理数据并打包给KPA NIC Driver(网卡驱动),KPA NIC Driver把打包好的数据通过AXI总线传给PL层中的IP core。

3

PL层,即Zynq中的FPGA硬件部分,加载了KPA的主站IPcore,该IPcore使用logic构建了两个NIC(MAC)+Timer,并封装在一起。KPA NIC 0/1通过AXI总线接收来自KPA NIC Driver的数据,并对数据进行重新排列,最终给到PHY,再通过变压器,RJ45把EtherCAT数据帧发出。KPA Timer提供时钟源用于同步KPA NIC Driver和KPA NIC 0/1,而如果设定了Shift Sending Frame时间(KPA主站IPcore特有的),那么KPA NIC Shift会对NIC发出数据的时间进行延迟,从而使得网卡发出数据帧的时间在最大抖动时间之后,以确保从出站网口发出的数据帧是精确定时的,并且包含完整的数据信息。一般选取从站响应时间的平均数作为参考的Shift Sending frame。

4

KPA NIC Driver和KPA NIC 0/1的作用对于整个EtherCAT主站的性能稳定性有着决定性的作用,从下面两幅图可以明显地看到,使用标准的NIC Driver和Zynq NIC时抖动超过了100%,而使用KPA NIC Driver和KPA NIC时抖动只有2.5%。由此可见,KPA对于网卡的驱动和NIC的优化使得Zynq运行EtherCAT主站时更加地稳定可靠。

5

下面再来看一组测试结果,采用的是Xilinx Zynq™-7000+Xenomai,运行时间为60分钟。共三组配置:Configuration A: 2 slaves, no DC, no Mailbox, cyclic frame 60 bytesConfiguration B: 2 slaves, DC, no Mailbox, cyclic frame 60 bytesConfiguration C: 16 slaves (axis), 192 Bytes of Process Data, DC, cyclic frame 266 Bytes解释:第一行A:master requested cycle=62因为从站的响应时间几乎接近主站的周期时间,所以可能导致上次的数据帧未返回,就要准备下次的数据发送,加上本身的系统时钟抖动,从而引发了更大的外部总线定时不稳。此类情况建议增大主站周期。第三行A:master requested cycle=100CPU负载31%即需要大概31微秒,从站最大响应时间57微秒。所以此时设置的主站周期时间就合理了,通过设置Shift sending time,正真从主站端口发出的数据帧几乎没有了抖动。

6

总结:采用Zynq的方案开发实施的EtherCAT主站有着更强大的处理能力和响应速度,同时减少主站自身的抖动,但开发难度相对较大。

注意事项
1

注意合理利用Shift Sending Frame时间优化抖动

2

注意实时操作系统的选择,Xenomai,Linux-Preempt,QNX 650,uCosII/III或其它均是可行的,但性能有所差异

推荐信息