2.5 EtherCAT数据链路层协议规范
2.5.1 DL协议概述
1.工作原理
EtherCAT DL是实时以太网技术,旨在最大限度地利用全双工以太网带宽。媒体访问控制采用主站/从站原则,主站节点(典型的控制系统)发送以太网帧给从站节点,从站节点从这些帧中提取和插入数据。
从以太网的角度看,一个EtherCAT网段就是一个单个的以太网设备,它接收和发送标准的ISO/IEC8802-3以太网帧。但这种以太网设备并不局限于带后方的微处理器的单个以太网控制器,它可能还包含大量的EtherCAT从站设备。这些从站设备直接处理到来的以太网帧,从中读取数据和/或插入自己的数据,并把帧传给下一个从站设备。网段内的最后一个从站设备沿着设备链反向发送已完全处理的以太网帧,并通过第一个从站设备把收集的信息返回给主站,主站接收信息作为以太网响应帧。
此方法采用以太网全双工的模式:双方向的通信都是独立执行的,主站设备和由一个或多个从站设备构成的EtherCAT网段直接通信不需要使用交换机。
2.拓扑结构
通信系统的拓扑结构对自动化的成功应用是一个非常重要的因素。拓扑结构对布线、诊断特性、冗余选项和热插拔特性都有很大影响。
EtherNet常用的星形拓扑结构可导致布线以及基础结构成本的增加。所以,尤其是对自动化应用,往往优先考虑总线型或树形拓扑结构。
从站节点的布置构成一个开环总线,在开环的一端,主站设备通过直连方式或者交换机发送数据帧。在另一端接收被处理的数据帧。从一个节点到下一个节点数据帧传输都有延时,数据帧从最后一个节点返回PDU到主站。利用以太网全双工能力,由此产生的拓扑结构是一个物理线型。
原则上,分支在任何地方都是可以的,它可以用来把总线型结构提升为树形结构,而树形结构支持很简单的布线,比如单个的分支可以拓展到控制柜或机器模块,而主干线却只能从一个模块到下一个模块。
3.帧处理原则
要实现最高的性能,应以“OnFly”方式直接处理以太网帧。如果以这种方式实现,从站节点在帧通过从站时识别并执行相应的指令。
EtherCAT DL能够通过标准以太网控制器实现而不直接处理。传输机制对传输性能的影响在IEC61784-2中有相关描述。
节点都有通过读或写服务访问的可寻址内存,这种读或写服务可以是单节点连续或多节点同步访问。多个EtherCATPDU可以嵌入到一个以太网帧中,每个PDU寻址一个聚合的数据段。
EtherCAT的PDU传输帧结构如图2-34所示。
1) 直接在以太网帧的数据区内。
2)通过IP传输的UDP报文的数据段内。
变种1)只能在一个以太网子网中使用,因为组合的帧不能被路由器传送。在机械控制应用中,这种限制并不代表一种约束。多个EtherCAT网段被连接到一个或多个交换机。同一个网段的第一个节点的以太网MAC地址被用作EtherCAT网段寻址。
变种2)通过UDP/IP产生一个较长的协议头(IP和UDP头),但对于楼宇自动化等非时间关键的应用,允许使用IP路由选择。在主机端可以实现任何标准的UDP/IP传输协议。
图2-34EtherCAT的PDU传输帧结构
4.数据链路层
通过一个以太网帧携带多个EtherCATPDU,多个节点可以被独立地寻址。被无间隙的打包到一个以太网帧中。最后一个EtherCATPDU是帧的结尾,除非当帧的大小小于64字节时,在这种情况下帧必须填充到64字节。
相对于每个节点传输一帧数据,EtherCAT能够更好地利用以太网的带宽。然而,例如一个只包含2bit用户数据的2通道数字输入节点,一个单个的EtherCATPDU的开销仍然过多。
因此,从站节点同样可以支持逻辑地址映射。过程数据可以插入到逻辑地址空间内的任何地方。如果包含用于明确的过程数据映射区(位于相应逻辑地址)的读或写服务,Ether-CATPDU被发送,而不是寻址特定节点,那么每个节点从正确的位置提取或插入过程数据,单个帧的数据映射如图2-10所示。
所有的节点都检测是否有地址与过程映像相匹配,如果匹配的话就插入它们的数据,这样多个节点可以被一个EtherCATPDU同时寻址。主站可以通过单个的EtherCATPDU得到完整的逻辑过程映像序列。主站不再需要额外的映射,所以过程数据可以直接分配到不同的控制任务中。每个任务都可以创建自己的过程映射并在自己的Timeframe内交换过程映像。节点的物理顺序完全是任意的,仅和首次初始化阶段相关。
逻辑地址空间大小为232八位位组(4GB)。EtherCAT现场总线可以被认为是一个用于自动化系统的串行背板,并使其在大的和非常小的自动化设备下都能连接到分布式过程数据。使用标准的以太网控制器和标准的以太网电缆,大量的I/O通道(无分配限制)可与自动化设备连接,因此EtherCAT具有高带宽,低延迟和最佳的有效可用数据传输率。同时,为了保留现存的技术和标准,像现场总线扫描仪这样的设备也可以连接。
5.错误检测
EtherCAT DL通过以太网帧的检测序列(FCS)来判断一个帧是否被正确传输。由于一个或几个从站会在数据传输过程中修改以太网帧,因此在传播过程中,每个从站都全在接收时检查FCS,并在发送时重新计算。如果检测到校验和错误,从站不进行FCS修改,而是通过增加错误计数来通知主站,确保在一个开环拓扑里能够精准地确定单一错误源的位置。
当对EtherCATDLPDU读或写数据时,被寻址的从站要将位于DLPDU尾部的工作计数器(WKC)递加。通过分析WKC,主站能检测出期望的节点号是否已经处理过相应的DLPDU。
6.节点参考模型
(1)映射到OSI基本参考模型
使用ISO/IEC7498信息处理系统-开放系统互连-基本参考模型(OSI)中的原理、方法和模型描述了EtherCATDL。OSI模型为通信标准提供了一种各个层可以独立开发和修改的分层方法。在EtherCATDL规范中按自顶向下定义了完整的OSI协议栈的功能和协议栈的用户功能。OSI的中间3~6层的功能被并入到EtherCATDL数据链路层或EtherCATDL应用层。同样的,那些现场总线应用层的用户常规特性由EtherCAT应用层提供,以便简化用户操作。
(2)数据链路层特征
数据链路层为通过EtherCATDL连接的设备之间的数据通信提供基本时间关键的支持。
数据链路层的任务包括计算、比较、生成帧校验序列,并通过从以太网帧中提取或插入数据来实现通信。这些任务依据在被预先定义的内存位置中的数据链路层参数来实现。在物理内存中通过邮箱配置和过程数据部分使得应用层能够使用应用数据。
7.操作
(1)与ISO/IEC8802-3的关系
这部分描述了ISO/IEC8802-3以外的数据链路层服务。
(2) 数据帧结构
EtherCAT PDU嵌入式以太网帧如图2-35所示。
EtherCAT以太网帧包括一个或多个EtherCATPDU,每个PDU寻址独立的设备或存储区。通过帧类型0x88A4和EtherCAT帧头识别EtherCAT帧。
图2-35EtherCATPDU 嵌入式以太网帧
EtherCAT PDU嵌入式UDP/IP如图2-36所示。
当采用符合IETFRFC791/IETFRFC768的UDP/IP传输时,通过目的UDP的端口号(349802)=0x88A4和EtherCAT帧头识别EtherCAT帧。其他分散的IP数据包被忽略。如果UDP校验被从站设置成0,也会被忽略。不检查IP服务类型,不校验IP协议头,但需要IP数据包长度和UDP的数据长度。
每个EtherCATPDU都包含一个EtherCAT头、数据域和相应的工作计数器。所有节点被EtherCATPDU寻址并且交换相关的数据后,将增加工作计数器的值。
1)IEEE注册机构为EtherCAT分配的以太网帧类型为0x88A4。
2)互联网数字分配机构(IANA)为EtherCAT分配的UDP端口号是34980。
图2-36EtherCATPDU嵌入式UDP/IP
2.5.2 EtherCAT的帧结构
1.帧编码原则
EtherCAT DL采用标准的ISO/IEC8802-3以太网帧结构来传输EtherCATPDU。也可以选择通过UDP/IP发送PDU。EtherCAT的特定协议部分在这两种情况下是相同的。
2.数据类型和编码规则
为了能够交换有意义的数据,数据格式和含义必须被生产者和消费者们知道。本规范通过数据类型的概念模型化以上需求。
编码规则定义了数据类型的数值的描述以及传输语法的描述。数值以位序列描述。位序列以八位位组为单位传输。
3.DLPDU 结构
(1)EtherCAT帧嵌入以太网帧
EtherCAT帧嵌入以太网帧见表2-7。
表2-7EtherCAT帧嵌入以太网帧
(2)EtherCAT帧结构
包含EtherCATPDU的EtherCAT帧结构见表2-8。
包含网络变量的EtherCAT帧结构见表2-9。
包含邮箱的EtherCAT帧结构见表2-10。
EtherCAT帧结构应由表2-8、表2-9和表2-10中的结构之一构造。
4.网络变量结构
网络变量编码见表2-11。
表2-8 包含EtherCATPDU的EtherCAT帧结构
表2-9 包含网络变量的EtherCAT帧结构
表2-10 包含邮箱的EtherCAT帧结构
表2-11 网络变量编码
5.EtherCAT 邮箱结构
邮箱编码见表2-12。邮箱编码应与EtherCAT邮箱内存元素结合使用,或编码成通过以太网DL或IP传送邮箱的数据结构。
表2-12 邮箱编码
错误回复的服务数据编码见表2-13。
表2-13 错误回复的服务数据编码
2.5.3 分布式时钟 (DC)
分布时钟(DistributedClock,DC)可以使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步进行。从站设备可以根据同步的系统时间产生同步信号,用于中断控制或触发数字量输入/输出。支持分布式时钟的从站称为DC从站。
分布时钟具有以下主要功能。
① 实现从站之间时钟同步。
② 为主站提供同步时钟。
③ 产生同步的输出信号SYNC。
④ 为输入事件产生精确的时间标记。
⑤ 产生同步的中断。
⑥ 同步更新数字量输出。
⑦ 同步采样数字量输入。
2.5.4 EtherCAT的DL用户内存区
1.DL用户内存区概述
系统复位后,理论上内存区可以在没有任何限制条件下用于通信和本地DL 用户。即这个区域可有通信,但是通过这一机制数据处理可能不一致。
通过SYNC管理器SM(SYNCManager)可以用协调的方式使用这个内存区。因为SYNC管理器是由主站创建的,所以从站不能使用这个通信专用区域。
该内存区支持以下2种通信处理模式。
1)缓存模式,始终允许双向读写的操作。这种模式需要三个内存区域支持。本地的刷新率和通信周期都可以单独设定。
2)邮箱模式:使用一个缓存区,实现了带有握手机制的数据交换。一个实体(通信或DL用户)写入数据,然后这个存储区被锁定直到被另一个实体读取数据。
2.邮箱访问类型
(1) 邮箱传送
邮箱传送服务是从主站关于读写方向(写操作是指由主站写入数据,读操作是指由主站读出数据)和从站关于服务描述的角度介绍的。这个操作包含了握手协议,也就是说,主站必须在发出服务请求之后等待从站的确认动作,反之亦然。
数据链路层指定了读写每一帧数据的复原服务。
写服务时,主站(客户端模式)向从站发出修改从站内存区的请求。如果这个被寻址的从站是可用的,并且邮箱是空的的话,写服务将被确认。然后检查操作数是否重复。如果连续写入相同的值将只被执行一次。
这个数据将被更新并保存到有下一次数据更新。
(2) 主站写
对邮箱的成功写序列如图2-37所示,该图表示了在主站、DLL与DL用户之间成功写的操作原语序列。
主站发送一个含工作计数器(WKC=x)的写服务,然后从站的DLL(从站控制器)在DL用户的内存区写入该接收到的反馈数据,同时工作计数器加1(WKC=x+1)并生成一个事件。相应的SM通道锁定DL用户的内存区域直到被DL用户读取。因为WKC加1,所以主站收到此次写操作成功的响应。在DL用户读取DL用户内存区域时,相应的SM通道解锁该内存区域,保证了主站下一次的写入操作。
对邮箱的失败写序列如图2-38所示。该图表示了在主站、DLL与DL用户之间失败写的操作原语。
图2-37 对邮箱的成功写序列
图2-38 对邮箱的失败写序列
主站发送一个含工作计数器(WKC=x)的写指令,然后从站的DLL(从站控制器)在DL用户的内存区写入一个反馈数据,同时工作计数器加1(WKC=x+1)并生成一个事件,相应的SM通道锁DL用户的内存区域直到被DL用户读取。因为WKC加1,所以表示主站此次操作成功。在DL用户读取DL用户内存区域前,主站再次对该区域进行写入操作。因为这时DL用户内存区域仍然被锁定,从站的DLL将忽略主站这个操作,工作计数器将不再增加。这时主站将收到一个失败的反馈信息。之后在DL用户读取存储区域时,相应的SM通道解锁该内存区域,保证了主站下一次的写入操作。
(3)主站读
对邮箱的成功读序列如图2-39所示。该图表示了在主站、DLL与DL用户之间成功读的操作原语。
DL用户更新了DL用户内存区域。相应的SM通道锁定DL用户的内存区域直到被主站读取。主站发送一个读取指令,从站的DLL(从站控制器)发送DL用户内存区的数据,工作计数器自加1(WKC=x+1),并对DL用户产生一个事件。因为WKC加1,表示主站此次操作成功,相应的SM通道解锁DL用户内存区域,保证了DL用户下一次的写入操作。
对邮箱的失败读序列如图2-40所示。该图表示了在主站、DLL与DL用户之间失败读的操作原语。
DL用户更新了DL用户内存区域。相应的SM 通道锁定DL用户的内存区域直到被主站读取。主站发送一个带工作计数器的读取指令,从站的DLL(从站控制器)发送DL用户内存区的数据,工作计数器自加1(WKC=x+1),并对DL用户产生一个事件。因为WKC加1,主站收到此次操作成功的响应,相应的SM通道解锁DL用户内存区域,保证了DL用户下一次的写入操作。
3.缓存访问类型
(1) 主站写
成功的写缓存序列如图2-41所示。该图表示了在主站、DLL和DL用户之间连续写的操作原语。该图表示了快速主站向较慢速率从站写操作的示例。
图2-39 对邮箱的成功读序列
图2-40 对邮箱的失败读序列
主站发送一个含工作计数器(WKC=x)的写请求,从站的DLL(从站控制器)在DL用户内存区写入一个接收数据,工作计数器自加1(WKC=x+1),并对DL用户产生一个事件。因为WKC加1,主站收到此次操作成功的响应。在DL用户读取内存区之前,主站再次执行写入指令,因为缓存型的DL用户内存区域从来不锁定,从站的DLL(从站控制器)重新在同一个DL用户内存区写入一个接收数据,工作计数器自加1(WKC=x+1),同时再次对DL用户产生一个事件。因为WKC加1,主站收到此次操作成功的响应。然后DL用户读取内存区域。
(2)主站读
成功的读缓存序列如图2-42所示。该图表示了在主站、DLL和DL用户之间连续读的操作原语。
图2-41 成功的写缓存序列
图2-42 成功的读缓存序列
DL用户更新内存区“1.本地写”。DL用户用新值再次更新内存区“2.本地写”,因为缓存型的DL用户内存区域从来不锁定,相应的SM通道就覆盖掉旧数据,主站发送一个带工作计数器的读指令,从站的DLL(从站控制器)发送DL用户内存区的数据,工作计数器自加1(WKC=x+1),并对DL用户产生一个事件。因为WKC加1,主站收到此次操作成功的响应。
2.5.5 EtherCAT的FDL协议状态机
1.从站DL状态机概述
从站的状态机结构如图2-43所示。该图表示一个DL从站的大致结构,以及和各个状态机之间的交互。
图2-43 从站的状态机结构
2.状态机描述
(1)端口状态机(Portstatemachine,PSM)
PSM协调下层端口状态机与PDU处理机,下层端口状态机用于处理MAC帧,并将其以八位位组的长度传送到PDU处理程序。对于具有2个或更多DL接口的DL都分配一个状态机。对于没有明确定义的状态机端口可以参照ISO/IEC8802-3。
1) 信息从DL接口的传输是一个八位位组紧接着一个八位位组传输,而不是传输整个帧。
2) 如果一个端口没有链接Tx.req原语,那么将导致一个Rx.ind原语(在自动模式下使端口在自动状态,或者由指令关闭该回路)。
另外,ETG.1000.3定义的统计计数器可以被PSM处理。
(2)PDU处理状态机(PDUhandlerstatemachine,DHSM)
DHSM的处理方式是在第一个端口分拆以太网帧给单独的EtherCATPDU,在第二个端口ReceiveTime0写请求,并将其映射到单独的寄存器或SYSM(同步管理状态机)或DC-SM(DC状态机)。FMMU把全局地址映射到物理地址上,通过操作位于DHSM上的寄存器,激活SIISM和MIISM。
(3)同步信号管理器状态机(Synchmanagerstatemachine,SYSM)
同步信号管理器状态机的处理被SynchM用作邮箱和缓存存储器的存储区域。邮箱服务被转发到一个处理重试的状态机(恢复邮箱状态机RMSM)。对于每个SM都存在一个SYSM。访问内存时,只要没有激活的SYSM对应该地址,则访问将从一个SYSM转移到另一个SYSM。如果对应一个特殊的内存地址没有激活的SYSM,则将有一个对存储区域或寄存器的请求。
(4)恢复邮箱状态机(Resilientmailboxstatemachine,RMSM)
RMSM是负责在操作读邮箱过程中进行重试操作和检查写邮箱指令的序列号。一个写入邮箱的重试操作就是将同一个序列号再次写入的过程。通过写入一个非零序列号可激活重试机制。
读邮箱的重试机制使用SM通道的Repeat 和RepeatAck 的参数,Repeat参数中的toggle触发从站进行最后一次读取的重试操作。
(5)SII状态机(SIISM)
1)从站信息交互接口操作流程
SIISM负责访问SII。在这个端口上有指定的读取、写入及重新加载操作。主站可以根据特定程序来激活这些操作。
2)读操作
SII读操作流程如图2-44所示。
3) 写操作
SII写操作流程图如图2-45所示。
图2-44SII读操作流程
图2-45SII写操作流程
4)重新加载操作
SII重新加载操作流程如图2-46所示。
图2-46SII重新加载操作流程
(6)MII状态机(MIISM)
MIISM负责访问MII媒体独立接口。其命令、地址和数据缓存区都有具体的地址。
(7)DC状态机(DCSM)
DCSM处理协调本地时钟、本地时钟同步和时间戳。
分布式时钟可以使所有从站设备具有相同的时间。网段内的第一个从站设备所包含的时钟作为参考时钟。其作用是同步其他从站设备的从站时钟与主站设备的时钟。主站设备每隔一定时间发送一个同步PDU(为了避免从站时钟超出应用规定的范围),有参考时钟的从站设备将自身的当前时间写入该同步PDU,然后带有从站时钟的其他从站设备通过ARMW服务从同一PDU读取时间。由于逻辑环结构,这种情况是有可能发生的,因为参考时钟位于该网段的其他从站时钟之前。