免责声明:以下内容非原创,基于ETG和Beckhoff的官方信息加上我自己的理解。
可能影响 EtherCAT 网络的错误分为 2 类:
1.硬件错误
•物理介质中断:数据帧无法到达所有从站,或者根本无法返回到主站。比如电缆损坏、接口松动、运行中从站重启等。
• 信息损坏:数据帧到达网络中的所有从设备并返回主设备,但正确的位顺序已损坏(例如 EMC 干扰、错误设备等)。
2.软件错误
•从站在启动时未达到 OP 状态,因为错误地检测到来自主站的一个或多个初始化命令(例如错误的过程数据长度/配置、不支持的循环时间等)。
•由于运行过程中检测到错误,正常工作的从站突然离开OP 状态。 (例如同步丢帧、看门狗超时等)。
1.硬件错误
由代码逻辑以外的原因引起的故障,如EMC干扰、人为因素、硬件故障等。
网络拓扑扫描
从机EEPROM保存从机的Vendor ID、Product Code、Revision Number、Serial Number等信息,可以唯一确定从机的型号。
网络启动时主站扫描的拓扑与配置文件的拓扑不匹配。出现此类错误的原因可能是缺少网络设备或网线顺序错误(插入错误的网线)。
如果发生硬件错误,建议检查 EtherCAT 网络设备是否共用同一地(因为不同地之间的循环电流可能导致数据损坏)
Link Lost error 计数器 0x310
主站在以下两种情况下认为数据帧“丢失”:
(a)数据帧不返回主站;
(b) 数据帧在传输过程中发生失真,导致其中的信息无意义。
有时两个 EtherCAT 从站之间的物理连接会完全中断:信号根本无法到达相邻的从站。
链接丢失,很可能是由于:
• 电缆或连接器损坏(电缆连接)、接触弹片弹性不足或氧化(Ebus 连接)。
•设备临时或永久断电,或设备重启
•EMC 干扰
某个端口的物理连接中断,slave会将该端口的Link Lost Counter加1
链接/活动指示器
连接永久断开的原因可能是连接器被拔出,电缆严重损坏,或设备断电。
EtherCAT 从设备要求每个可插拔端口都支持链接/运行灯。
在检查链路丢失计数器之前(或者对于一些不支持链路丢失计数器的从站),通过查看链路/运行灯很容易看出是否存在永久链路断开问题:这种情况下较低LED 将始终关闭。
尝试使用可拆卸连接器连接到每个端口,目视检查链接/活动指示灯将有助于检查此类故障:
无效帧(Invalid frame)错误计数器
有时,即使硬件信号到达相邻的从机,接收到的信号也与原来发送的不一样:
数据包已损坏,很可能是因为:
•如果此错误计数偶尔增加,则很可能是由于外部 EMC 干扰。
•如果错误计数快速而稳定地增加,则很可能是由于设备损坏。
当某个端口的数据帧损坏时,从站将该端口的Invalid Frame Counter加1。
RX 错误计数器和 CRC 校验错误计数器都表示硬件接收到的数据帧损坏,表征信息非常相似,但两者在从机架构的不同层级检测。意思也略有不同。
这个硬件错误分为两种,都在无效帧计数器中累积:
1.RX 错误(无效帧计数器高字节 0x301+i *2)(i=0,1,2,3)
• MII 端口:RX 错误指向 PHY 芯片检测到的所有可能的错误(如 4B/5B 编码信号错误,或硬件 MLT-3 信号电平错误)。这些错误通过硬件上的 RX_ER 引脚的上升沿反映到 ESC,这是 MII 接口的一部分。
•EBUS 端口:每当出现意外的曼彻斯特编码错误时,都会检测到 RX 错误,尤其是在以下情况下:
——脉冲太窄(≤<3.5ns)导致位检测小于
–IDLE越界:数据框外的逻辑1
–在数据帧内检测到帧开始标志(在两个帧开始标志标记之间没有帧结束)
--数据框外的帧结束标志(两个帧结束标志之间没有帧开始标志)
注意:可能发生在数据帧内部或外部(即使没有数据帧传输,每个物理接口都会传输idle symbol,即idle)
2.CRC 错误(无效帧计数器的低字节 0x300+i* 2) (i=0,1,2,3)
l 整个数据帧的循环冗余校验 (CRC) 错误
l 在数据帧中出现(只检查以太网数据帧)
注意:数据帧内发生的RX错误也将被视为非法帧错误。
@ >
为了从显示的CRC错误计数分析网络中故障点的分布,建议:
1.沿网络数据帧传播方向逻辑确定从端口执行CRC校验的顺序
2.检查第一个报告错误计数器不为零的端口:报告第一个报告不为零的无效错误计数器的端口→很可能是故障点。
3.定位故障点后,应进行如下操作:
•检查与最后一个从站的连接电缆:
-EtherCAT网线的方向是否靠近电源线或干扰源?
-自制电缆的接头做工差吗?
-电缆的屏蔽层是否接地良好?
•检查故障点的站和之前的从站:
-是否供电不足(提供给本站的电流太小,例如:EBUS电流)?
-两个从机的连接位置不是等电位的吗?
•尝试用之前的从站替换这个从站,或者交换两者的顺序,看看错误是跟随从站还是发生在原来的位置。
对于EMC干扰,应该会导致RX和CRC错误都增加(尽管增加的概率可能不同),因为外部干扰不能与通信同步,所以以太网数据帧内外都有将是损坏的数据。
完全不平衡的计数值(很多 RX 错误但没有 CRC 错误,或非常 CRC 错误但没有 RX 错误)可能意味着其中一个从站中存在内部硬件错误或接口损坏。
转发的 CRC 错误计数器
一些从站还支持转发 CRC 错误计数器 0x308+i (i=0,1,2,3)(Forwarded CRC Error Counters ):第一个检测到 CRC 错误的从站增加其 CRC 错误计数器 ( Register0x0300),以及第二个及以后检查CRC错误的slave增加其转发CRC错误计数器(Register0x0308),而CRC错误计数器保持不变。
并非所有从站都支持转发 CRC 错误计数器功能(此功能是可选的),因此应将此计数视为补充信息:有助于定位第一个错误设备,但不是关键指标。
当这种类型的ESC第一次检测到错误时,将转发给下一个从机的数据帧会有一个FCS校验错误,并且在数据帧的末尾有一个额外的数据位。这个帧会被下一个slave检查(根据双方使用的PHY/ESC),并将错误映射到对应的转发RX错误计数器寄存器。
某些 ESC 不支持转发 RX 错误计数器。一些 PHY 会将此视为电平错误并附加 4B/5B 禁用信号会导致下一个 ESC 接收“优先级”RX 错误,而不是转发 RX 错误。
此错误转发机制可以作为附加或可选说明:如果 ESC 端口显着增加转发的 RX 错误计数器,但 RX 和非法帧错误计数器没有显着变化,则通信问题很可能不在前面的段中港口。反之(只有当有RX/非法帧错误且没有转发RX错误时,判断问题出在端口之前)不一定正确!
EtherCAT 主站支持两种不同的错误计数器:
EtherCAT 主站支持两种不同的错误计数器:
p>
•RxErrors:与slave端的RX错误计数器类似,网卡统计符号错误(数据帧内外发生的错误)的数量。
•丢失数据帧:由于EtherCAT闭环某处中断,返回主站失败的数据帧和返回但CRC校验错误的数据帧,TwinCAT将其视为丢失的“丢失” ”。在 TwinCAT 中,如果一个数据帧丢失,该数据帧中包含的所有数据包(Datagram,SyncUnit 同步单元)会报 Working Counter 错误,表明所有从站的 WcState 都是 Invalid。
考虑不同的数据框类型:
•Cyclic:循环数据帧发送要交换的过程数据(ProcessData):
•Queued:排队数据帧,包括所有非周期性数据帧特征数据帧:
邮箱,
状态机,
注册访问
注意:刚上电,每个端口的环回状态默认设置为自动模式。
RX Error Counter、Invalid Frame Error Counter、Forward RX Error Counter的值只有在端口状态打开时才会递增。
硬件错误的补充信息
当设备上电或相邻设备断电时,设备可以立即检测到 RX 错误(或部分 CRC 错误)。只有在操作期间发生的错误才应被视为实际或潜在问题,并进行持续监控。
没有通讯接口是完全没有错误的。一个典型的通信接口可以容忍 10-12 的误码率(每万亿比特传输数据一个错误),这意味着即使在没有恶劣环境的情况下,硬件错误计数器的值也会偶尔发生变化(在几天内) 或连续运行数周)。只有大的或频繁的硬件错误(在几秒钟或几分钟内)才应被视为实际或潜在问题。
发生在数据帧之外的错误,当它们在运行时发生时,也可以被认为是硬件错误的信号。但是,CRC错误应该主要被注意,因为它们代表了帧内容和它所携带的信息中的错误。
例子
ECAT 处理单元错误计数器 0x30C
ESC 的 EtherCAT 处理单元能够检测到数据帧结构中的更多错误
-EtherCAT 帧长度错误(对于 IEEE80 定义的最大和最小帧长度太大2.3 帧长或太短)
-如果寄存器0X0100.0=0,端口接收非EtherCAT数据帧
-如果端口0关闭,则loopback帧的环回计数位等于1
工作计数器 WKC
EtherCAT 数据帧中的每个数据包都以 16 位工作计数器 (WKC) 结束。在数据报文中指定一个从站后,它将递增。递增原理如下:
只读命令(xRD):如果从站内存可读,则WKC+1.
p>
只写命令(xWR):如果从内存是可写的,那么WKC+1.
Read+Write 命令(xRW):如果从机内存可读 WKC+ 1. WKC+2 如果可写(即读写都成功,则WKC+3).
工作计数器的信息是随数据帧周期性刷新的,不依赖于特定寄存器的通道。
主站同时接收工作计数器和对应的子报文,当接收到非法或不一致的数据时迅速响应。
与工作计数器有关 该消息是一个数字量(“工作计数器正确”或“工作计数器非法”),不区分错误原因。非法工作计数器可能由几种不同的情况引起:
-一个或多个从设备与网络物理断开连接,或者没有被数据帧寻址
-一个或多个从站重新启动
-addressed 到达的slave未能处理相应的子消息
-从机的EEPROM前7个字有错误(这里不知道原理)
-a slave 本站当前状态机不允许对该命令对应的存储区进行操作(可能是邮箱通道或进程数据通道)
-一个slave还在响应最后一个命令(只有邮箱通道)
p>
-从机的ESC或处理器级别出现硬件错误,或者处理器级别出现固件错误
工作计数器的主要目的是立即检测通信错误,(即主站快速响应),而不是准确分析通信错误
注意:未来希望的一个功能,但是这个功能对master和内核有很大的改变:SyncUnits(同步单元)把slave分成不同的组网络连接错误105是什么意思,每个组使用不同的数据报,所以每次同步单位有独立的WKC。如果发生故障,会出现 WKC 错误,丢弃该组数据,使用旧数据。
2.软件错误
软件层面的诊断信息,通常与EtherCAT状态机的运行有关:一旦slave不能按照master的要求进入正确的状态,就会在slave的寄存器字(Register 0x0134))。
•初始化状态
-没有应用层通信
-master 只能访问数据链路层寄存器
•运营前状态
-启用邮箱通信
-无进程数据通信
•安全运行状态
- 可以进行邮箱通信
- 可以处理数据通信,但只有输入数据有效
•运行状态
-可以通过邮箱进行交流
-可处理数据通讯,输入输出数据均有效
• 启动状态
- 可选,用于固件更新
- 没有进程数据通信
- 通过特殊设置进行邮箱通信(仅限 FoE)
p>
初始化错误(从站启动时无法进入OP状态):
在状态机切换过程中,主站根据ESI文件的内容向从站发送初始化命令。如果从站检测到一个或多个启动参数无效,则拒绝相应的状态机切换。
此时Register0x0134的值显示为:
-0x0003:InvalidDeviceSetup(从站应用相关设置无效,如总线耦合器未安装物理模块)
-0x001D:无效的输出配置(配置的输出过程数据无效)
-0x001E: Invalid Input Configuration(配置无效输入过程数据)
-0x0035:无效的同步循环时间(不支持在直流模式下设置的循环时间)
运行时错误(从机退出OP到低级状态):
正确配置的slave成功进入OP状态后,运行过程中检测到错误,因此执行切换到较低状态。
此时Register0x0134的值显示为:
-0x001A:同步错误(网络抖动导致从机同步丢失)
-0x001B:Sync manager watchdog(从站不接收周期性数据的时间,持续时间比看门狗时间长)
-0x002C: FatalSYNCerror(ESC没有再次收到SYNC硬件中断)
疑难解答:
1.检查主设备的抖动性能(抖动范围)是否可以证明发生了同步丢失。 (当最大抖动超过通信周期的20-30%时,容易出现同步错误)。
2.检查是否发生硬件错误,例如物理连接丢失,可能间接导致Watchdog动作网络连接错误105是什么意思,或丢失同步
3. 仅仅检查并不能解决问题,使用 Wireshark 进行跟踪可能是一个有用的解决方案。
4.读取从站的最小循环时间0x1C32/0x1C33,用网络分析仪测试帧传播抖动,检查主站设置的移位时间。
5.利用 Beckhoff 主站本身的诊断功能,可以测试从站内部处理时序相关的抖动。比如从站接收到的数据帧的抖动,同步偏移时间SYNC Shift Time。
6.(AM60等模块化从站0)检查配置的模块列表是否与实际物理连接的从站模块相对应。