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

基于Zynq平台的EtherCAT主站方案实现,第1张

摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发。EtherCAT 具有高性能、低成本、容易使用等特点,目前在工业自动化领域有着广泛的应用。Zynq-7000 是赛灵思公司(Xilinx)推出的行业第一个全可编程 SoC 产品, 它将双核 ARM Cortex-A9 处理器,低功耗可编程逻辑以及常用的外设紧密集成在一起。ZedBoard 是基于 XC7Z020 器件的低成本开发板,此板可以运行基于 LinuxAndroid,WinCE 或其他嵌入式 OS/ RTOS 的设计。

KPA EtherCAT 主站是一套质量稳定、知名度和性价比较高的 EtherCAT 协议栈,有较大参考价值。本文将介绍 KPA EtherCAT 主站在 Zynq 平台的移植与测试

目录
第一节 EtherCAT 简介
第二节 KPA EtherCAT 软件包简介和使用
第三节 KPA EtherCAT 主站简介和移植
第四节 EtherCAT 主站程序测试
第五节 EtherCAT 测试程序分析
第六节 主站开发包申请试用

1、EtherCAT 简介

EtherCAT(以太网控制自动化技技)是一种用于确定性以太网的高性能工业通信协议,它扩展了 IEEE 802.3 以太网标准,使得数据传输中具有可预测性定时及高精度同步等特点。这个开放性标 准作为 IEC 61158 的组成部分,常用于机械设计及运动控制等应用中。EtherCAT 采用标准的 IEEE802-3 以太网帧,帧结构如图 1。EtherCAT 协议直接用标准以太网的帧格式传输数据,并不修改其基本结构。

基于Zynq平台的EtherCAT主站方案实现,图 1: EtherCAT 数据帧,第2张

 

图 1: EtherCAT 数据帧

EtherCAT 实现了 CANopen 协议,在 CANopen 中周期性的数据通过 PDO(过程数据对象)来传输,PDO 优先级较高,可用于实时传输。非周期性的数据比如配置参数和对象字典等则通过 SDO(服务数据对象)来传输。

每个 PDO 都包含单个或多个从设备的地址,这种数据加地址的结构(附带用于校验的传输计数位)组成了 EtherCAT 的报文。每个 Ethernet 帧可能包含数个报文,而一个周期中可能需要多帧来传送所需的所有报文。

传统的以太网通信解决方案从站先接受以太网数据包,然后解释和复制过程数据,最后转发数据。而EtherCAT 以太网帧在特殊的硬件模块的帮助下可以实现在传输的同时被处理。每个从节点都有 FMMU(现场总线存储管理单元),FMMU 会对经过的数据包进行地址分析,发现是本节点的 数据就会读取,同时报文转发给下一个设备。同样在报文通过的时候也可以插入需要传输的数据。读取/插入/转发数据的整个过程,报文只有几纳秒的延迟。如图 2 所示,设想以太网的帧就像行驶中的火车,EtherCAT 报文是每节火车车厢,PDO 数据的比特就是车厢内的乘客,这些数据可以被提取并插入到合适的从设备中。整辆火车不停止地穿越所有从设备,在末端从设备处又掉头,重新反向穿越所有从设备。(注:EtherCAT不仅支持主从通讯,也支持从从通讯即S2S)

基于Zynq平台的EtherCAT主站方案实现,图 2: EtherCAT 数据传输,第3张

图 2: EtherCAT 数据传输

2、EtherCAT 主从站软硬件简介

2.1KPA EtherCAT 主站软件介绍
KPA EtherCAT主站软件根据功能不同,提供了Basic,Standard,Premium以及Extension四个版本主站协议栈,因此除了支持ETG1500定义了Class A和Class B两种主站类型外,KPA还支持一些拓展功能比如:Data- and Frame-Logger(记录数据和报文)、Access Rights(设置不同的访问权限)MulTI Master(多主站,冗余)、Cable Redundancy (线缆冗余)、Hot-Connect(热插拔)、其他。

提供了基于多种不同硬件平台和OS的现成开发包,支持SoC(ARM+FPGA)/ARM/X86 /PowerPC等主流硬件平台,支持Linux(Xenomai/RT-preempt)/ Windows(INTIme/RTX)/ QNX/ Ucos/ Vxworks等。几乎满足目前所有用户主站开发要求的一款主站方案。

KPA主站协议栈采用模块化的架构,可以实现每个特殊的项目应用。它使得主站可以自由扩展以适应不同大小的应用程序、可以移植不同的 *** 作系统和各种各样的硬件平台。每个模块可以单独定制化或者二次开发,而且不会破坏其他模块的完整性。主站结构如图3

基于Zynq平台的EtherCAT主站方案实现,图 3: KPA EtherCAT主站构架,第4张

 

图 3: KPA EtherCAT主站构架

KPA主要功能模块为:
1) 应用层:应用层负责与各种不同的编程/配置环境交互,负责与不同的应用或设备交互。确保在应用或过程任务端顺利访问主站功能函数;与主站通过Remote Procedure Calls服务交互,提供了TCP/IP以及UDP连接,比如:通过UDP与从站设备进行mailbox相关的通讯。

2) Mailbox Module:EtherCAT主站核心mailbox模块利用不同的协议处理服务数据对象(SDP),数据传输以及数据交换。支持CoE,FoE,EoE,SoE,VoE,AoE等邮箱服务。

3) Process Image Module过程映像模块:Process Image简称PI,它的地址是由EtherCAT network informaTIon (ENI) 文件提出的,ENI文件可由配置工具KPA Studio自动生成。从控制/过程任务访问过程映像是由主站接口执行的。

4) DistribuTIon Clock分布时钟模块:使得所有的EtherCAT设备(包括主站和从站)总是能够共享相同的EtherCAT系统时间。这是通过补偿编译和漂移时间来实现的。

5) Frame Schedule Module帧调度模块:不同PDO采用不同的扫描周期。在配置工具KPA Studio里,用户可以单独定义每个从站的扫描速率。帧调度表模块管理EtherCAT帧速率,转发它们到EtherCAT网络驱动。

6) OSAL *** 作系统抽象层模块:包含与 *** 作系统相关的功能函数的包装,比如处理线程、计时器、互斥量等;包括网络适配驱动器模块:从底层的网络实现提取主站堆栈的core核心

2.2KPA EtherCAT 主站硬件介绍
主站硬件主要由三部分组成见图4:PC端、Zedboard主站开发板以及外扩的FMC网卡。PC通过串口终端来实现 *** 作系统指令输入,PC端上的EtherCAT网络诊断配置工具KPA EtherCAT Studio通过RPC服务连接Zedboard主站板,可以实现对主站和从站的配置,扫描生成网络配置文件。Zedboard作为EtherCAT主站板具体可参考 。

基于Zynq平台的EtherCAT主站方案实现,图 4:硬件架构图,第5张

图 4:硬件架构图

 

基于Zynq平台的EtherCAT主站方案实现,图 5:硬件内部架构,第6张

 

图 5:硬件内部架构

另外,KPA利用主站板的FPGA资源,独立外扩网卡,而不是使用主站板ARM上的网卡驱动,主站开发包中提供的Timer IP Core和NIC IPCore,利用逻辑单元PL,构建针对EtherCAT优化的MAC,提供了针对EtherCAT优化的NIC驱动,IP Core提供了Shift Sending Time设置,从端口降低有 *** 作系统引起的数据帧抖动,从而优化了数据在收发时的抖动的问题。

基于Zynq平台的EtherCAT主站方案实现,基于Zynq平台的EtherCAT主站方案实现,第7张

 

3、KPA EtherCAT 主站移植

本方案基于Zynq平台的EtherCAT主站实现,系统采用改进后的实时linux系统,即在标准的linux *** 作系统内核中嵌套进一个微小、实时内核,改造成具有双内核的异构系统,所有实时任务都运行在微内核上,非实时的Linux 则作为实时内核的一项优先级最低的任务来托管所有的非实时任务,采用Linux3.8.13和Xenomai2.6.3,下面介绍怎么搭建Zedboard主站。

3.1Vivado 与 Xilinx SDK 工具安装
我们主要用到SDK里的交叉编译器,以及用它来生成FSBL与BOOT.BIN文件。
我分别在ubuntu和windows上都安装了xilinx的SDK。其中windows上的xilinx SDK不需要单独安装,等在安装Vivado的时候勾选下就可以了。 Ubuntu上的xilinx SDK安装文件网址是

基于Zynq平台的EtherCAT主站方案实现,基于Zynq平台的EtherCAT主站方案实现,第8张

 

3.2Vivado 的下载安装
Vivado主要是用来配置xilinx的FPGA外设的,后面生成bitstream文件时需要用,以及我们更改SOC里的外设引脚配置以及配置管脚等等时是需要用到。Vivado的下载地址
 

基于Zynq平台的EtherCAT主站方案实现,基于Zynq平台的EtherCAT主站方案实现,第9张

 

3.3给 Linux 内核代码打 Xenomai 实时补丁
zedboard上运行的linux内核可不是普通的linux内核源码,而是打了xenomai补丁的实时嵌入式 *** 作系统。需要先给linux源码打上xenomai补丁后方可编译
Linux源码下载: https://github.com/Xilinx/linux-xlnx.git
Xenomai安装包下载:
给linux内核代码打xenomai实时补丁,可以参看xilinx的官方文档《Xenomai for Zynq》: +for+Zynq

3.4Linux 内核编译
当xenomai补丁打好后,即可开始编译linux内核

基于Zynq平台的EtherCAT主站方案实现,图 6:Uboot编译,第10张

 

图 6:Uboot编译

具体的ubuntu编译方法和编译kernel大同小异,可以参考这篇文章: +U-Boot

3.5下载源代码
Uboot的源码下载地址是: https://github.com/Xilinx/u-boot-xlnx.git

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2601148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存