基于STM32F205及LAN9252的EtherCAT伺服开发
的有关信息介绍如下:EtherCAT是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发。EtherCAT具有快速,精确两大特点,目前在自动化领域有着广泛的应用。STM32F205RB是ST公司研发的一款基于ARM的32位CortexTM-M3 CPU,高达1MB的Flash和128+4KB的RAM,可以让程序在Flash中以最高120MHz的频率运行,完全满足EtherCAT从站的性能要求,且成本低,使用简单。而LAN9252作为一款高性价比的EtherCAT从站专用芯片,不仅实现了EtherCAT从站功能,还自带了两个PHY芯片。本文介绍了一种基于STM32F205及LAN9252的EtherCAT伺服开发方案,并进行通讯测试。
2EtherCAT伺服驱动器-如何选择硬件开发方案
0EtherCAT从站网络配置和诊断工具
9EtherCAT主站开发经验——基于X86或ARM
1 EtherCAT从站硬件简介
EtherCAT 从站是 EtherCAT 网络非常重要的一部分,其主要组成部分是 EtherCAT 从站控制器(ESC,EtherCAT Slave Controller)、微处理器以及运行其上的从站软件协议栈。ESC用于EtherCAT数据帧的转发与处理,微处理器及软件协议栈用于实现邮箱数据和过程数据的处理以及控制任务功能。
从站控制器ESC多种多样,有Beckhoff的ET1100,ET1200,ET181X;Hilscher的netX50,netX100;Microchip的LAN9252;TI的Sitara AM335X等,本方案采用的是Microchip的LAN9252。而微处理器则种类更多,本方案中采用的是STM32F205系列,相信很多研发工程师对这款微处理器都比较熟悉。
从站硬件的整体框架如下图所示。微处理器STM32F205通过SPI总线与从站控制器LAN9252通信,EtherCAT协议栈必须移植到STM32F205中。而LAN9252完成数据链路层的工作,并通过I2C接口连接EEPROM,以保存ESC的配置信息。底层的PHY芯片,RJ45等完成物理层的工作,且PHY芯片也是LAN9252自带的。
2 EtherCAT从站软件简介
由上图得知,处理器STM32F205RB中需要移植EtherCAT从站协议栈。在本方案中,移植的是德国KPA公司的EtherCAT从站协议栈。该协议栈包含完整的源代码,以及四个针对硬件平台的样例工程,即STM32F407,DSP28335,TI Sitara系列以及赛灵思 FPGA的uBlaze软核。
KPA EtherCAT从站协议栈结构框架如下图所示。Application部分为用户的应用部分,只需要调用协议栈的API函数即可实现EtherCAT通信。EtherCAT Slave Stack core是源代码部分,用户不需要做任何的修改,只需要调用其丰富的API函数即可。而EtherCAT Slave Stack core与ESC之间的通信已经由源代码实现了,用户只需适配好PDI通道如SPI即可。
3 EtherCAT从站移植
本方案中,实现的是一个EtherCAT从站的基本功能,包括PDO,SDO,DC等功能。同时,该方案demo代码中还实现了DS402的部分功能(DS402状态机,模拟CSP控制模式,常规伺服驱动器的对象字典等)。
移植步骤如下:先新建一个Keil工程,根据KPA提供头文件和源文件加载到工程中,在ecatslave_osal_basicio.c中适配SPI初始化代码,在ecatslave-platformconfig.h中做EtherCAT功能裁剪,如使能CoE,DC等,再添加GPIO,LED等的初始化,编写自己的应用程序逻辑,编译并下载到STM32F205RB上。最后,编写从站的xml文件,并生成bin文件下载到从站的eeprom中。本方案代码工程如下图所示。
4 EtherCAT从站代码分析
代码在进入main()函数后,首先是基本的初始化代码,如时钟初始化,中断向量初始化,延迟初始化,时钟初始化等;接着重置ESC的寄存器,初始化内部协议栈结构;初始化SyncManager;创建并初始化从站对象字典;根据应用程序需要配置从站状态机的回调函数;清除ESC的寄存器,并置于“started”状态,启动对象字典,使能PDO映射。
接着进入While(1),在While(1)中,必须周期调用KPAEcatSlaveMainLoopStep(0)函数完成EtherCAT从站源代码的一次完整运行。然后调用checkRxOutputsSmIsFull(0,RxSm)函数检查PI过程数据是否已被主站刷新,如果是,调用updateOdRxOutputsViaPI(0,RxSm)函数把PI过程数据传送给对象字典的输出对象。再接着调用DS402的处理函数CoeApplication(),该处理函数会更新对象字典的相关的输入对象,最后调用updateOdTxInputsViaPI(0,TxSm)函数把对象字典中的输入对象的值传送给PI过程数据。部分代码如下图。
5 EtherCAT从站运行测试
为了测试EtherCAT从站的基本功能及DS402的部分功能,工程师根据要求做了样板,烧写了程序,实物如下图所示。
另外,需要用到EtherCAT主站对该从站进行控制。在本方案中,采用的EtherCAT主站是由KPA公司提供的X86+INtime+KPA EtherCAT Master Stack+KPA EtherCAT Studio的方案,在实时操作系统INtime的支持下,主站可设置的最小周期时间为50us,而KPA EtherCAT Studio是一款集配置和监控功能于一身的软件工具。
经测试,状态机可正常切换,PDO数据可正常读写,SDO数据也可正常读写,对象字典可正常工作。下面还有一部分软件测试截图。
6 总结
本文首先介绍了EtherCAT的基本原理,然后介绍了EtherCAT从站软硬件的整体开发流程,并做了代码分析和运行测试,但未加入电机驱动部分的执行代码,后续会把这一部分完善,再继续测试。总的来说,采用STM32系列微处理器及LAN9252进行EtherCAT伺服开发,开发难度低,开发周期短,性价比高,是一个可行且可靠的解决方案。