,,,
(1.浙江理工大学机械与自动控制学院,浙江 杭州 310018;2.浙江新德宝机械有限公司,浙江 温州 325000)
在过去的几十年里,工业机器人在一些制造领域起着越来越重要的作用,而运动控制器作为工业机器人重要的组成部分也越来越受到重视[1-2]。现在市场上的多轴运动控制系统大多采用脉冲模拟量的控制方式,但这种以脉冲模拟量控制的系统不适合应用于高精度、快响应和同步性要求高的工业场合[3]。
EtherCAT是一种将以太网与现场总线技术相结合的工业总线,具有带宽利用率高、实时性强、拓扑结构灵活、传输速率高以及成本低等优势,并且满足伺服运动控制系统对稳定性、快速响应和同步性等方面的要求[4]。因此,EtherCAT是多轴运动控制通信系统的良好选择。经过调研,目前EtherCAT主站大部分由商业软件或开源软件实现。使用商业软件实现EtherCAT通信系统的方案,成本高昂;使用开源软件实现EtherCAT通信方案,移植困难。同时,2种方案都需要技术人员对EtherCAT协议进行大量的学习,对技术人员要求高。
本文针对上述问题,提出一种基于嵌入式STM32H7平台的EtherCAT主站方案。该方案设计使用搭载主站芯片EC-01M的嵌入式平台实现EtherCAT主站功能,实现对2台伺服电机以及1块IO芯片的控制。
本文设计的系统总体框架如图1所示,EC-01M芯片与STM32H743芯片通过SPI总线通信,利用STM32H743芯片控制EC-01M芯片发送EtherCAT数据帧,实现EtherCAT主站功能。
图2 EtherCAT通信原理
为了实现多轴运动控制系统的通信,采用EtherCAT协议进行设计。EtherCAT作为一种开放的实时以太网,最早在2003年由德国倍福公司开发,EtherCAT技术突破了其他以太网解决方案的系统限制,此技术无需接收以太网数据包,将其解码后再将过程数据复制到其他设备。EtherCAT从站设备在报文经过节点时读取对应的报文,同时把需要返回给主站的数据插入到报文中,不需要以往以太网解决方案中需要读取整个数据包的过程,大大提高了数据传输速度与实时性。EtherCAT通信原理如图2所示,采用一主多从的结构,在网络拓扑结构方面没有任何限制,最多支持65 535个从站节点,可以组成线型、树型以及星型等任意拓扑结构[5-7]。
主站首先发出下行报文,经过第1个从站节点,从站设备寻址到属于该节点的数据并完成数据读取操作。将处理过的输出数据插入到数据帧的对应位置,同时将工作计数器(WKC)的值加1,即子报文已被从站操作1次;之后数据帧依次传递至下一个从站节点,从站进行相同操作,直到数据帧被传至最后一个从站设备n且最后一个节点端口时开放端口,因全双工特性开始将数据返回至主站,最终由主站处理返回的上行数据,完成1次主从站之间的通信。在整个过程中,主站发出的数据帧均经过每一个从站节点,且各从站节点只把对应的数据节点进行读取和写入操作。该方式改善了带宽的利用率,加快了数据交换速度,1个数据帧就能完成数据通信,无需附加交换机和集线器,缩小了成本。由于主站主要负责时间控制和数据发出,主站需要保证足够的实时性能以确保周期性数据传输的有效性[8-10]。
本文选用的EC-01M芯片是由NEXTW科技公司开发的EtherCAT主站控制器。主站芯片或设备可以通过SPI或USB接口与EC-01M进行通信。EC-01M最多支持40个EtherCAT从站和支持最小250 μs的同步周期时间,并且具有精简介质接口RMII与外部PHY芯片相连接。
图3 硬件接线
主站应用程序主要由系统配置模块、EtherCAT总线配置模块、从站配置模块和任务运行模块4部分组成,如图4所示。
图4 应用程序流程
首先,对系统初始化,MCU进行引脚以及SPI通信的初始化,建立MCU与EC-01M通信。之后MCU向EC-01M发送命令,监测从站数量,发送、设置从站类型,以及建立主站与从站之间数据交换的通道,并且设置其中伺服从站的运行模式(如CSP模式),设置同步时间与同步模式,同步时间目的是设置各个从站处理周期任务数据的时间。EtherCAT中规定了FreeRun、SM同步和DC同步3种不同的同步模式,EC-01M支持FreeRun和DC同步2种同步模式。之后通过配置伺服驱动器,使其进入伺服使能状态。
在配置过程之后,MCU可以运行周期性任务,把PDO数据通过SPI发送给EC-01M,由EC-01M将SPI接收的数据打包为EtherCAT数据帧发送至各个从站,完成周期性实时控制各从站设备执行的任务。
EC-01M配置主要分为EtherCAT状态机配置以及从站信息配置2个部分,可通过编写EC-01M提供的API函数进行配置,如图5所示。
图5 EC-01M配置流程
EC-01M配置过程中,STM32H743IIT6通过SPI与EC-01M进行数据交换。上位机侦测到SPI_BUSY引脚为低电平时,表示EC-01M空闲,可以进行数据交换;当进入数据交换时SPI_BUSY信号立刻升为高电平,直至通信结束后且EC-01M处理完命令封包后SPI_BUSY信号才恢复为低电平,之后STM32H743IIT6可再次通过SPI进行数据交换,EC-01M中SPI时序如图6所示。
图6 SPI时序
EtherCAT状态机(EtherCAT state machine,ESM)负责协调主站和从站应用程序在初始化和运行时的状态关系。EtherCAT可分为4个执行状态,包括Init、PreOP、SafeOP和OP,各个状态能执行的命令不同。在Init状态定义了主站与从站在应用层的初始通信关系;在PreOP状态邮箱通信被激活,主站可以使用邮箱通信方式进行从站类型及驱动器类型的设置;在SafeOP状态,从站应用程序读取输入数据,进行非周期性数据交换;在OP状态下,从站读取输入数据,主站程序发出输出数据,从站设备产生输出信号,主从站可进行周期性数据交换[11-13]。
在配置PreOP至SafeOP状态转换期间,需要对过程数据进行映射,以及配置同步管理器(sync manager,SM)通道和现场总线内存管理单元(fieldbus memory management unit,FMMU)。在使用EC-01M配置过程中,只需要设置从站信息,设置从站信息是为了使EC-01M按照各个IO或伺服从站类型进行PDO数据的映射以及SM与FMMU的配置。EC-01M按照标准CiA402协议提供了特有的PDO映射,如图7所示,减少了工作人员对PDO映射配置的操作。在进行PDO数据传输过程中,只需要通过API函数发送对应的数据信息[14-16]。
指标体系在构建过程中,尽可能涵盖各种可能涉及的环境影响因素。西南地区煤炭矿区规划环评首先充分考虑到实现区域可持续发展、发展绿色煤都、持续推进清洁生产等方面要求,有针对性地选取若干套指标体系,并对指标进行可行性分析,再从煤炭矿区规划内容,区域发展规划和限制煤炭矿区发展的环境因子等不同角度对初选指标进行筛选,得到更具全面性和可行性的指标体系;最后经过专家咨询最终确立具有更高科学性和操作性的指标体系。
图7 CSP模式下PDO映射
伺服驱动器在启动前,需要先将伺服驱动器上电使能。在EtherCAT协议中,需要将地址60400010h控制字写入任意数至6至7至15的操作,才可以将伺服驱动器使能,操作复杂。使用EC-01M主站方案时,只需要执行1条API函数即可,对控制字写入操作交给EC-01M处理,大大精简了代码量。
周期性实时任务包括主站周期性实时生成控制指令、数据控制从站设备执行周期性任务以及实现主从站周期性过程数据交换。
总线配置完成后主站进入OP状态,通过调用API函数,将数据通过SPI发送至EC-01M芯片。MCU通过1 ms周期时间进行SPI通信,从而完成主从站实时数据交换。
EC-01M有一个大小为160个EtherCAT数据深度的缓冲FIFO。因为EC-01M和STM32H743IIT6时钟无法同步,所以STM32H743IIT6发送EtherCAT数据时会发生时钟漂移,导致EC-01M中的数据FIFO为空或者溢出的现象。FIFO为空时会导致EC-01M按照周期时间发送EtherCAT数据帧时为空指令,使从站停止;FIFO溢出时则会导致数据丢失,且从站与MCU同步时间过大。本设计针对以上问题提出一种方案,配置流程如图8所示,改进MCU与EC-01M传输方式,使得FIFO中数据数量稳定,提高整体系统同步性与稳定性。
在进行PDO数据传输之前,设置在充满2个FIFO空间之后再进行PDO数据传输,可以保证EC-01M在进行周期性传输任务期间,FIFO中必定有值,从而避免空包发出。之后每次传输PDO数据时,监测FIFO剩余的数量,如果数量小于158个,则表明FIFO中有2个以上冗余的数据,这个时候需要调大一些STM32H743IIT6发送PDO数据的周期,避免FIFO中数据持续冗余导致FIFO溢出以及同步性降低的问题;如果数量大于158个,表明FIFO中存储的数据小于2个,此时则调小STM32H743IIT6发送PDO数据的周期,避免出现FIFO中无数据,PDO数据为空,伺服电机停顿的情况。
图8 配置FIFO流程
本文根据系统整体方案,搭建了基于EtherCAT通信的嵌入式实验平台(如图9所示),并对所设计的系统进行功能测试,验证系统设计的可行性。
图9 实验平台
根据图1的整体框架,选择STM32H743IIT6开发板根据SPI接口使用杜邦线与EC-01M开发板相连,EC-01M使用网线根据线性拓扑规则将伺服驱动1、伺服驱动2和IO从站串接。伺服驱动1、2选用禾川X3E伺服驱动器与伺服电机,禾川X3E伺服电机支持EtherCAT通信且支持同步周期时间1 ms。IO从站选用的是EtherCAT从站芯片AX58100开发板,AX58100是一款EtherCAT从站控制器,集成2个支持100 Mbit/s全双工操作的快速以太网PHY。AX58100提供32个适用于工业实时I/O控制应用的数字控制I/O,以及I/O Watchdog提供监测I/O状态来适当处置以确保产品功能的安全性,所以将AX58100开发板的I/O口接入1个LED灯,通过LED的状态来验证主站对AX58100开发板的控制。
运行主站程序,实现数据收发后,PC通过交换机利用Wireshark网络抓包软件进行测试和统计,抓取到每帧数据如图10所示,每100 ms的收发包数量随时间变化如图11所示,最终测得每100 ms收发包数量如表1所示。因为EtherCAT采用得全双工的通信方式且EC-01 M发送EtherCAT数据帧时同时发送LRD和LWR读写指令,按照实验中1 ms的周期通信,100 ms的理论收发包数为100×2×2=400个。
图10 Wireshark软件的EtherCAT报文截图
图11 系统收发包情况
表1 每100 ms收发包数统计表 包
从图10可以看出0x910即为从站系统时间所在地址,在执行FRMW命令后,工作计数器的值由0变为3,说明成功完成了读写操作并返回。从图11可以看出,系统的接收发包数在396~404之间,较为稳定,满足数据传输稳定性要求。
在进入OP模式后,周期性数据开始发送,不断监测剩余FIFO数量,并通过串口在PC端打印出数据。由于周期性任务为1 ms传输1次,因为按照1 ms采集数据,则采集数据量过大,所以采用500 ms打印1次的周期进行采集。将采集到的数据绘制图像,如图12和图13所示。
图12 未进行补偿剩余FIFO数量
图13 进行补偿剩余FIFO数量
由图12可以看出,在未进行时钟补偿时,FIFO空间在周期性运行300 s后会被充满。整个系统的同步有160×1=160 ms的延时,同步性较差,如果继续以这个状态传输,那么则会导致有周期性数据丢失等问题。如图13可以看出,经过时钟补偿后,剩余FIFO数量在500 s之后仍然保持在158个左右,使得FIFO数量一直保持2~4个数据,解决了图12延迟越来越大和数据丢失的问题。
本文对基于EC-01M的EtherCAT嵌入式系统进行了研究,着重介绍了使用EC-01M搭建EtherCAT通信系统方案,给出了具体的硬件、软件设计方案。系统中STM32H743IIT6代码并不过多涉及EtherCAT协议,而是将EtherCAT协议部分交给EC-01M芯片,使得整体代码简洁,通用性好,易学习,可移植性高。实验根据EtherCAT协议,验证了该系统能够实现EtherCAT数据的实时传输和较好的通信稳定性。同时改进与EC-01M的传输规则,使得整个系统传输更稳定,同步性更好,解决了因为时钟不同步导致的数据丢失现象。为EtherCAT协议在嵌入式系统的应用提供了设计方案,具有一定的参考价值。