工业以太网是改进的标准以太网 ,其中冗余技术是提高以太网系统可靠性和可维护性最有效的手段之一 . EtherCAT(Ethernet for Control andAutomation Technology)是工业以太网的一种 ,它很好解决了以太网的实时性问题,其从站控制芯片 ESC(EtherCAT Slave Controller)提供了环回通信机制.本文研究了工业以太网 EtherCAT的冗余控制、热插拔技术及故障点快速诊断方法 ,设计并实现了环型拓扑下的链路冗余控制系统. 开发了EtherCAT链路冗余主站驱动程序 ,并通过实验分析和验证了 EtherCAT冗余后系统的性能.
1 EtherCAT工作原理
EtherCAT是一种实时工业以太网技术 ,已成为国际标准 IEC 61158212, IEC 6178422 以及ISO1574524的一部分 .
图 1为 EtherCAT的基本工作原理.介质访问控制 (MAC,Media Access Control)使用主从模式.
主站发送以太网帧给各从站 ,从站从数据帧中抽取数据或将数据插入数据帧 ,然后将该数据帧传输到下一个 EtherCAT从站. 最后一个 EtherCAT从站发回经过完全处理的报文 ,并由第 1个从站作为响应报文发送给主站. 主站使用标准的以太网接口卡
或具有以太网接口的嵌入式工业控制计算机 , EtherCAT从站使用专用的从站控制芯片ESC.
ESC采取接收转发机制 ,以太网帧可以双向通行 ,但只有以太网帧由下行电报方向进入时 ,相应的报文才能得到处理. 如果指定转发的网口未连接 , ESC自动将以太网帧沿原入口径返回.
EtherCAT数据帧使用以太网 V2 格式的MAC帧 ,以太类型为 0x88A4.图 2为 EtherCAT数据链路层帧结构.一个EtherCAT以太网数据帧包含一个或多个 EtherCAT子报文 ,每个子报文寻址独立的设备或存储区域.
每个 EtherCAT子报文包括子报文头、数据域和相应的工作计数器 (WKC,Working Counter) ,子报文寻址到从站节点并交换数据后 ,工作计数器将被增加 ,用以记录该子报文的处理状态.子报文头中 ,8bit命令字节 ,指定了子报文类型 (读写类型 ,寻址类型 ); 8 bit索引号给出子报文编码; 32bit的子报文地址指定了对从站的操作地址 ,寻址类型定义了寻址方式; 8bit长度用以指示报文数据区的字节数;R为 4 bit的保留位; 4 bitM表示本报文是否为最后一个报文; 16bit中断目前保留.
2 EtherCAT冗余和热插拔技术要求
2. 1 拓扑结构
冗余以太网的拓扑结构包括网络型拓扑、环型拓扑以及混合型拓扑 . 对于一般的工业以太网系统 ,网络型和混合型拓扑过于复杂 ,环型拓扑非常有效而且实用. 本文研究环型拓扑的冗余技术 ,消除单点故障对系统产生的影响.
环型结构的信息流在网中是沿固定方向流动的.由于环型结构中出现一个节点故障将会影响全网 ,要提高可靠性 ,需采用双向环结构 ,使环具有自愈功能 ,即在断点处自动环回 , ESC从站控制器具有这种自动环回功能.
EtherCAT冗余技术采用环型冗余结构 ,也就是将最后一个 ESC节点连接到主站.要实现这个功能 ,需要主站具有 2个以太网接口 ,见图 3.
2. 2 单点故障
环形冗余链路仅具备双重冗余 ,因此只能应对单点故障.单点故障主要有以下几种可能情况:
1) 网口故障 ,包括主站网卡本身故障和连接在网卡上的链路故障;
2) 链路故障 ,指从站节点之间的链路存在断线;
3) 节点故障 ,指环路中某节点出现故障 ,导致帧转发功能失效.在此情况下 ,发生故障的节点的失效不认为是整个系统的失效. 这种情况也可能发生在需要不断电情况下更换一个从站节点的场合 ,通常也称为“热插拔 ”.
2. 3 EtherCAT链路冗余主站
EtherCAT主站结构如图 4所示 ,其中 Ether-CAT主站驱动实现了网卡驱动与上层控制任务的交互.冗余机制不应影响应用层控制任务的性能和功能. 在本文系统设计中,将常规 EtherCAT主站驱动程序做了修改 ,加入链路冗余机制 ,对上层应用屏蔽了冗余信息和操作.
在 EtherCAT主站驱动程序中 ,向上层应用的接口主要为 1个发送队列 (用于存放控制任务要发送的 EtherCAT帧 )和 1个接收队列 (用于存放处理过后返回的 EtherCAT帧 ).本文设计的冗余机制旨在实现当系统处于任何正常或容错运行状态下这 2个帧队列都与网口和网络状态无关.
3 冗余系统设计
3. 1 冗余帧传播机制
冗余主站设计如图 4所示 ,主站具有 A和 B2个网口 ,每个网口均具备发送和接收以太网帧的功能.
根据故障情况 ,图 5中列出了冗余系统正常工作和出现各种单点故障时的帧传播策略:
1) 正常情况时,发送帧交由 A网口发送,经过从站节点的遍历,经 B网口接收,进接收队列;
2) A网口故障时,发送帧交由 B 网口发送,反向到达第 1个从站节点,以原链路环回,经 B网口接收后,进接收队列;
3) B 网口故障时,发送帧交由 A网口发送,到达最后一个从站节点,以原链路环回,经 A网口接收后,进接收队列;
4) 出现链路故障 (或热插拔 )时,发送帧交由 A网口发送,遍历至故障点处环回,经 A网口接收,交由 B 网口发送,从另一个方向遍历至故障点处环回,经 B网口接收后,进接收队列;
5) 出现节点故障时,发送帧交由 A 网口发送,遍历至故障点处环回,经 A网口接收,交由 B网口发送,从另一个方向遍历至故障点处环回,经B网口接收后,进接收队列.
3. 2 故障点诊断
发生网口故障时,能够确定故障点在主站接口上;而在发生链路故障和节点故障时,则需侦听A网口和 B 网口的接收帧,结合数据帧中子报文的工作计数器实现.
每个子报文最后具有一个 WKC,在通过从站节点时 ,如果为该从站的子报文 ,WKC将加 1(也有一些类型的报文增加值大于 1).故障点诊断规则如下:
首先 ,根据读取网口状态判断是否出现故障及故障类型.如果 A网口或 B 网口状态为未连接或连接出错,则表明出现了网口故障;如果 A网口接收到了环回的帧,则表明为链路故障或节点故障;否则,表明系统正常.
然后,对 A网口和 B 网口的接收帧进行侦听和 WKC分析.根据子报文的报文指令类型 ,以及子报文的 WKC值,可以判断出该子报文是否得以执行.从而,检测出 A网口和故障点之间离故障点最近的有效节点及 B 网口和故障点之间离故障点最近的有效节点.
最后 ,可以判断出 ,故障点出现在 2个有效节点之间的链路或节点上.
4 冗余主站的实现
冗余 EtherCAT主站驱动程序采用 WinPcap软件开发包 ,实现 EtherCAT帧的收发. WinPcap是 Windows平台下一个免费、公共的网络访问系统 ,为 Win32应用程序提供访问网络底层的能力.
在程序底层定义了一个设备类 ,用于与硬件接*互.在该设备类中定义了一个网络设备结构体指针链表 ,用以指向系统中所用到的网卡设备.在该类中定义了一个先入先出的队列 ,用以存储接收环回的 EtherCAT帧 ,并提供了一个发送原始帧的接口函数 (发送队列在上层定义 ).
程序启动时 ,该设备类根据主站描述文件中提供的冗余网卡的 MAC地址信息初始化网络设备结构体指针链表.并启动一个接收线程 ,以捕获接收到以太网帧 ,并对接收到的帧进行相应处理.
发送 EtherCAT帧时 ,首先读取并记录各网口的连接状态 ,根据网络状态选择相应网口发送该帧.接收线程接收到以太网数据帧后 ,判断是否为Ether2CAT帧 (0x88A4帧 ).若是则按图 5规则选择相应网口进行转发或进接收队列;若否则丢弃
该帧.这样可以省去在转发时判断网口状态 ,缩短转发时间 ,减少传播延时.
5 实验验证系统
图 6为冗余系统的实验验证系统 ,由 1个主站 (PC)、2个 EtherCAT2IO从站和 1个测试从站(PC)组成.主站向从站发送周期读写数据. 分别在 PC主站程序和测试从站程序的应用层中设置发送计数器 SendCounter和接收计数器 Recv2 Counter,记录发送和接收的周期帧数量. 在一段时间内 ,接收计数器和发送计数器的差值即为该时间段内的总丢帧数.
实验过程如下: ①设置通讯周期为 30ms,发送和接收计数器清零; ②启动主站的周期发送 ,在一定的时间内 (1min左右 ) ,对系统进行拔线、节点断电以及移除和插入节点等操作 ,模拟单点故障和热插拔的发生; ③关闭主站的周期发送 ,获取和比较发送计数器和接收计数器的数值 确认未,发生丢帧 ,能够在 1个通讯周期内恢复正常控制 ,表示系统运行正确 ,满足冗余和热插拔任务要求.
6 结 束 语
EtherCAT提供了一种双向数据传输机制.论文研究和实验结果表明 ,采用具有双 Ethernet网口的 PC计算机作为控制主站控制 EtherCAT从站芯片 ,可以非常方便地实现高性能工业控制系统线路故障冗余和热插拔任务要求 ,性能优越 ,运行可靠 ,无需复杂的主站控制程序.