董海涛,朱国庆,黄丽宇
(1.广西大学 a.机械工程学院;b.信息网络中心,南宁 530004;2.广西制造系统与先进制造技术重点实验室,南宁 530004)
在工业自动化领域,以太网通信因传输速率快、距离远、技术成熟、性价比高等特点使工业现场总线技术从传统现场总线向工业以太网方向发展[1]。如今Modubus/TCP、Ethernet/IP、EtherCAT、EPA、Ethernet PowerLink、SERCOS III、PROFINET IRT是应用于工业控制领域的几种工业以太网技术[2-3]。其中,EtherCAT因经济成本低、传输率高、拓扑灵活、安全可靠等特点受到越来越多的关注[4]。在EtherCAT网络中,伺服驱动EtherCAT通信接口实现了从站功能。目前,从站实现方法主要有专用ASIC,如倍福公司的ET1100[5-6]、ET1200,英飞凌公司的XMC4800/XMC4300,Hilscher公司的NetX500[7],或在FPGA中集成IP-Core,如Altera和Xilinx公司的EtherCAT IP核[8],另外,德州仪器在AM335x的PRU-ICSS中也实现了EtherCAT从站功能[9]。但它们还存在一些不足,使用IP-Core将EtherCAT通信功能集成到FPGA中,用户根据特定功能模块进行配置,降低了开发周期,但当模块出现问题时,追踪与解决问题比较复杂,不便于后期维护。从站专用控制芯片ET1100引脚数量多,封装难度大,且需外接PHY芯片,硬件集成度低,成本高。AM335x虽硬件集成度高,但不是传统EtherCAT从站实现方案,软件实现复杂,开发周期长。
为了解决上述不足,本文以伺服系统为背景,提出使用美国Microchip公司提供的从站专用芯片LAN9252和STM32F407开发伺服驱动EtherCAT通信接口的方法。该方法具有硬件尺寸小,成本低,开发周期短,易于维护等多方面的优点。
作为实时工业以太网,EtherCAT充分利用以太网全双工特性,采用主从站通信方式,通过双端口RAM实现主从站之间的数据交换。EtherCAT通信由主站发起,主站向从站发起下行数据帧,当数据帧到达各从站时,从站ESC(EtherCAT Slave Controller)根据在网络拓扑中的位置,按照移位的方式从数据帧中提取数据存入内部存储区,或将要传输给主站的数据插入数据帧,数据的提取与插入同时进行,由ESC硬件实现。当数据帧遍历完所有从站后,最后一个从站将处理完的报文发回,由第一个从站将报文返回给主站,一次通信结束。
LAN9252包括2~3个通信端口,均采用MII通信模式,含有3个FMMU(现场总线内存管理单元),4个SM(同步管理器单元),4KB的DPRAM(双端口RAM),支持64位分布式时钟,支持三种PDI(过程数据接口)接口:16位数字IO、串行SPI、8/16位HBI(主机总线接口),其中SPI和HBI用于连接外部MCU,组成复杂EtherCAT从站[10]。STM32F407VGT6是ST(意法)公司基于Cortex-M4核的32位微控制器,包括1MB片内Flash和192KB片内RAM,芯片集成定时器、ADC、I2C、USB、FSMC等多种外设,其中FSMC支持SRAM、NOR和NAND Flash的扩展。
文中采用模块化的方法设计以STM32为核心的应用控制模块和以LAN9252为核心的EtherCAT通信模块,两模块之间基于STM32的FSMC外设与LAN9252的HBI接口进行通信,采用16位单阶段锁存的地址与数据复用寻址方式,如图1所示为该模式下两者之间的连接。
图1 LAN9252与STM32之间连接
采用层次化方法设计伺服驱动EtherCAT通信接口软件,包括驱动程序、EtherCAT协议栈及应用程序的设计。驱动程序实现STM32与LAN9252之间数据交互,EtherCAT协议栈实现EtherCAT状态机、邮箱数据与过程数据通信,在应用程序中,结合CANopen DS402伺服与运动控制行规,构成CANopen over EtherCAT(CoE)的结构,实现伺服通信功能。
在初始化过程中,当主站扫描到伺服从站后,在从站EEPROM存储器中读取配置信息,根据配置信息初始化从站接口。如图2所示为主程序流程,其中,HW_ Init( )函数用于初始化相关GPIO引脚、FSMC外设及配置相关中断事件,MainInit( )函数用于初始化EtherCAT从站接口和CoE对象字典。初始化完成后,进入主循环MainLoop( )函数实现EtherCAT通信。从站设备可在自由运行、同步模式和分布时钟三种模式下运行,如图2所示为自由运行模式时流程图,其他两种模式下,在相应中断服务函数中处理过程数据通信。
图2 主程序流程
3.2.1 EtherCAT状态机
EtherCAT状态机协调主站与从站应用程序在初始化和运行过程中的关系。如图3所示,常见的总线状态分别是初始化(Init)、预运行(PreOP)、安全运行(SafeOP)和运行(OP)状态,转换顺序一般为Init→PreOP→SafeOP→OP,逐级转换,不能跳跃。状态转换由主站发起,如图4所示为转换流程,包括状态请求、状态转换和状态响应三个阶段。主站将要请求的状态写入AL控制寄存器,从站接收到请求后,读取寄存器的值,检查FMMU/SM等配置,判断是否可以转换。若配置正确,则根据当前状态与请求状态计算转换参数,调用转换函数进行转换,将结果写入AL状态寄存器,待主站读取。若配置不正确或转换不正确,则调用错误处理函数处理,将未能转换的原因写入AL状态代码寄存器待主站读取。主站根据AL状态寄存器的错误指示位判断是否出现错误,执行下一步操作。
图3 EtherCAT状态转换
图4 EtherCAT状态请求与响应
3.2.2 周期性数据通信
文中STM32与LAN9252之间通过中断方式通信。从站在同步模式下周期性过程数据的处理流程如图5所示,当有SM事件时,LAN9252向STM32触发中断信号IRQ, STM32响应中断信号后,在PDI_Isr( )中断服务函数中查询AL事件请求寄存器,判断是否有输出过程数据待处理,若有,则从LAN9252的SM2缓存区复制数据至STM32,利用复制的数据进行应用控制,将反馈数据写入SM3缓存区,等待下一个周期,主站读取,过程数据处理完成。当设置为分布时钟同步模式时,在Sync0Isr( )中断服务函数中完成应用控制与反馈数据的写入。
图5 PDI_Isr( )中断服务函数流程
EtherCAT在应用层支持CANopen协议,支持该协议中CiA402伺服和运动控制行规,行规主要功能模块如图6所示。
图6 伺服驱动EtherCAT接口CiA402行规
3.3.1 伺服状态转换
CiA402行规中伺服状态机定义了驱动设备的控制时序,对设备状态及转换过程中执行的动作进行了定义。主站通过写控制字索引0x6040h控制设备状态及转换过程,在从站设备中,查询控制字后,若有转换请求,则执行相应动作,通过状态字索引0x6041h返回当前状态。在各状态下,状态机只能接收特定的指令执行相应的动作,其转换过程如图7所示。
图7 伺服状态机转换
3.3.2 伺服控制模式实现
CiA402行规中定义了多种控制模式,每一种模式都定义了基本框架及使用的索引。本文伺服从站实现了周期同步位置模式,其基本框图如图8所示。当总线状态由PreOP转换为SafeOP时,主站通过邮箱服务配置运行模式0x6060h为8,使伺服运行在周期同步位置模式。该模式下,在上位机中完成轨迹规划功能,每个总线周期,主站均向伺服从站输出目标位置指令值,LAN9252得到位置指令值后,触发中断事件,在中断服务函数中根据映射关系解析得到2字节控制字和4字节目标位置指令,同时反馈2字节状态字和4字节实际位置值。
图8 周期同步位置模式框图
基于TwinCAT主站软件与设计的伺服从站搭建一主一从的伺服驱动EtherCAT通信接口测试平台,验证接口功能,分析接口性能。
为了测试伺服驱动接口EtherCAT通信是否正常,在TwinCAT PLC中定义变量,用ST语言编写程序控制STM32上LED2的状态。当LAN9252接收到主站传输的数据后,经过HBI接口传输至STM32,经对应的GPIO引脚输出。当建立通信后,在TwinCAT中设置从站运行在 “DC”模式,在Scope view中记录LED2的输出模拟如图9所示,用示波器观察STM32上LED2对应引脚输出信号如图10所示,对比图9与图10可知,主站传输的信号与在STM32上测量得到的一致。故LAN9252与STM32之间HBI接口能准确通信且伺服驱动接口EtherCAT通信正确。
图9 TwinCAT中LED2输出模拟
图10 STM32上LED2引脚输出
利用Wireshark软件捕获EtherCAT网络从启动到运行过程中的23745条报文,其中一半是主站传输给从站的报文,一半是从站返回给主站的,相邻两报文的时间间隔为EtherCAT报文刷新从站的时间。对捕获的报文进行统计分析,刷新从站的时间约为16.55μs,故网络通信速度快,实时性好。
在运行过程中,TwinCAT软件可统计数据帧的丢失与出错情况,当主站发送数据帧后一段时间间隔未返回,则出现数据帧丢失错误,丢失计数器将加1,当主站接收到返回的数据帧出现错误时,错误计数器将加1。如图11所示为1ms通信周期下连续运行10小时的统计情况,由此可以看出不存在丢帧与错帧,反映了该从站的稳定性良好。
图11 丢帧与错帧统计
分布时钟同步模式用于高速高精同步要求较高的控制场合,在该模式下,通常选取与主站相连的第一个具有分布时钟功能的从站作为参考从站,其他从站和该从站进行同步。为了测试从站之间的同步性,在DC模式下,用示波器观测两从站SYNC0引脚电平,如图12所示为两从站SYNC0同步脉冲,可以看出该系统在200μs运行周期下,脉冲之间的抖动范围为5ns,该接口同步性能良好,能满足伺服控制系统的需求。
图12 从站之间的同步脉冲
在周期同步位置模式下模拟电机往复运动的过程,该模式下通过设定操作模式为8使伺服运行在周期同步位置模式,设定目标位置为500mm,目标速度为50mm/s,通过索引0x6064h获取电机实际位置,如图13所示为电机运行过程中实际位置与给定位置曲线,由图13可知,实际位置与给定位置曲线基本吻合,伺服从站能很好地跟随主站传输的指令完成伺服位置控制功能,验证了伺服从站能正常工作。
图13 周期同步位置模式测试结果
文中阐述了基于LAN9252与STM32F407实现伺服驱动EtherCAT通信接口的过程,结合CiA402伺服和运动控制行规实现应用设计。基于TwinCAT主站软件搭建测试系统,验证接口EtherCAT通信功能,对性能进行了分析。结果表明所提出方法可行,接口EtherCAT通信及伺服控制功能正常,实时性、稳定性与同步性能均良好,为后续开发多轴EtherCAT伺服系统奠定了基础。