EtherCAT协议分析
2014-07-07杨晓鸿
杨晓鸿
EtherCAT协议是德国倍福自动化有限公司(Beckhoff Automation GmbH)于2003年提出,并于2005年被定为IEC标准62407;2007年,IEC把EtherCAT协议加到工业现场总线标准61158。
一、协议概述
为提高通信效率以及实时性,EtherCAT协议的主要思想有两方面。简化协议,协议兼容以太网的MAC层协议,并由纯硬件完成解析,提高处理速度;而其他协议由软件解析上层协议,由于CPU的负载在不同时段的不确定性导致相应的处理时间偏差加大,而纯硬件的方式能在确定的时间内完成处理,使时间更加精确。EtherCAT协议考虑到工业应用中每次通信的数据量小和对实时性要求高的特点,在以太网数据包的基础上加入自己的协议,把一个以太网数据包分成若干个EtherCAT数据包加以充分利用,并给主站控制各从站提供了更大的灵活性。
EtherCAT网络由一个主站(Master)和最大可能为216次个从站(Slave)组成,支持以太网的所有拓扑结构(星型/总线型/环型等),其工作原理如下:EtherCAT网络就像是一列运行的火车,主站是火车的起点和终点,火车把车上的乘客(数据包)送(写操作)到任何指定的站点(从站),也能在所有它经过的站点上接收新的乘客(读操作),它是工业领域中飞速传输的以太网。
二、EtherCAT关键技术
1.帧结构
EtherCAT在以太网帧结构的基础上加入了新的协议,数据的最外层是以太网数据帧。在以太网数据帧的数据部分中实现EtherCAT协议,由EtherCAT协议头开始,后跟若干个数据包。数据包由包头和数据组成,最后跟WKC以判断每次操作是否正确。
2.寻址方式
EtherCAT主站通过特定的寻址方式选择从站,当整个EtherCAT网络中有路由器时,主站先通过网段间寻址(segment addressing)找到子网,网段寻址通过以太网数据帧中的目标地址(Destination Address)找到目标网段,而这个DA是目标网段内第一个EtherCAT从站的MAC地址。当EtherCAT数据包经过第一个子网络后,从站把DA和SA(Source Address)互换,因为数据经过全部从站后,要返回到主站。
EtherCAT网段内寻址包括设备寻址(Device addressing)和逻辑寻址(Logical addressing),设备寻址分两种寻址方式,位置寻址(position addressing)和节点寻址(Node addressing)。位置寻址的地址由从站在网段中的位置决定,一般上电后主站通过位置寻址统计网段内的从站总数;节点寻址通过给每个从站配一个各不相同的节点地址,主站通过节点地址选择从站。逻辑寻址由主站发一个32位的逻辑地址,从站通过现场总线内存管理单元(FMMU)的配置确定是否被选中以及要访问的从站内的寄存器地址,这种寻址方式最灵活,在一个数据包管理多个从站的应用中作用明显。
3.FMMU
FMMU(FieldBus Memory Management Unit)类似CPU中的MMU,系统上电后通过EEPROM或主站对每个从站的FMMU(每个从站最多16个FMMU条目)配置逻辑地址和物理地址的映射关系,每个条目包含一对映射关系。主站发出32位逻辑地址,从站查找FMMU的条目,如果某一个条目中的逻辑地址与接收到的逻辑地址相等,且当前条目的配置有效,则当前从站被选中。
4.SyncManager
EtherCAT从站的同步管理单元(SyncManager)用于同步主站和从站间的数据操作,它可以把从站中的操作对象(寄存器和存储单元)配置成实时操作的buffer模式和握手方式的Mailbox模式。当从站接收到数据或请求后,同步管理单元也会向从站外接的设备发出中断或请求信号,以快速完成主站的请求。
5.操作命令
每个数据包由一个命令(Command)确定功能,用于告诉从站主站的寻址方式和操作请求。主站对从站主要有读/写/读写三种操作方式,所以相应的命令有位置寻址读/写/读写命令、节点寻址读/写/读写、逻辑寻址读/写/读写命令,除此之外还有广播模式下的读/写/读写命令。
三、应用实现
EtherCAT网络由主站和从站组成,目前从站主要由Beckhoff公司提供芯片。EtherCAT主站在硬件上只要求以太网接口,市场上常见的应用处理器(Application Processor)都可以作为EtherCAT的主站。
由于通用的Linux是非实时的,作用主站的Linux必须加实时补丁,工业上常用Adeos+Xenomai作为Linux上的实时补丁。Adeos在中断控制器硬件和Linux中断处理程序中间提供了中断处理的中间层,在系统运行过程中做到不关闭硬件中断,所以可以快速响应一些实时要求高的应用,如EtherCAT驱动;Xenomai是在adeos上的Linux实时补丁,是一个独立的实时内核。通过Adeos和Xenomai可以满足EtherCAT实时应用的要求。
(作者单位:浙江宁波市鄞州职业教育中心学校)endprint