ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

EtherCAT能不能用交换机?实时链路与存储转发如何取舍

EtherCAT能不能用交换机?实时链路与存储转发如何取舍 我是做EtherCAT主站和从站开发的做这行久了被问得最多的一个技术问题就是EtherCAT通信控制网络可不可以使用交换机。尤其是当项目从“一条线上拖几个伺服”变成“几十个轴分布在车间不同角落”总有人想用一台现成的千兆交换机把设备全连起来省得布线问题马上就来了。我的答案向来不是简单的“能”或者“不能”而是要看交换机被放在哪条数据路径上、承担什么任务。搞懂这个底层逻辑比死记一句“不能用”有用得多。这篇博文我就从EtherCAT帧怎么跑、交换机转发为什么破坏实时性、实际工程怎么决策、如何用实验数据验证这四条线展开把这个问题彻底讲透适合做伺服系统、PLC运动控制、EtherCAT从站开发的工程师参考。1. 先把EtherCAT的数据流搞清楚它为什么对“中间环节”这么敏感1.1 集总帧与“飞过式”处理机制EtherCAT实时以太网控制自动化技术之所以能在1kHz甚至更高频率下驱动大量伺服靠的是一套非常特殊的数据搬运方式。主站每个周期只发一个标准以太网帧帧类型固定为0x88A4里面塞了若干个“子报文”。这些子报文在链路中依次经过每个从站每个从站通过内部的ESCEtherCAT从站控制器比如常见的高性能SSC、AX58100等芯片在硬件层面完成“读取属于自己地址的内容、写入需要反馈的数据、把剩下报文继续往下一个从站送”这套动作。整个过程发生在帧还在传输进行的瞬间延迟只有纳秒到几十纳秒级别所以业界叫它“on-the-fly”或“飞过式”处理。这也是为什么EtherCAT能做到一台主站带几十上百个轴而不会像传统现场总线那样每加一个站轮询时间就猛涨。1.2 线型拓扑才是EtherCAT的主场正是因为有这种“切开—处理—闭合”的机制EtherCAT最擅长的是线型菊花链拓扑。帧经过的每一段都是点对点以太网物理链路从站的两个端口之间就是PHY芯片和内部转发逻辑中间没有额外的排队和调停。在这种结构里帧什么时候从上一站到下一站完全是确定性的。主站通过分布式时钟DCDistributed Clock还能把每个从站的同步时间误差压到亚微秒级别。这也是汇川H5U这类主站能带几十个660伺服轴并稳定运行的底层原因一个轴接着一个轴串联周期恒定、队列确定、时间可预测。如果中间突然插进一台通用交换机这个“完全确定性”的前提就没了。1.3 分布式时钟有多苛刻如果你用到了CSP周期同步位置模式、CSV周期同步速度模式或者插补类运动控制模式基本都要开启DC同步。主站在每次周期帧里携带同步信号从站硬件记录帧实际到达的时间戳并据此校准本地系统时钟从而让所有轴的动作在时间轴上严格对齐。这个机制要求每个从站对“帧到达时刻”的感知稳定且可控。一旦中间插入一个转发行为不确定的设备帧到达各从站的时间关系就会被扰乱轻则各轴同步误差变大、插补轨迹发飘重则直接触发同步丢失报警。要知道伺服驱动对同步误差的容忍度通常是微秒级超过这个量级电机就会表现出抖动、顿挫甚至过流报警。2. 交换机插进EtherCAT链路到底会出哪些问题2.1 存储转发机制带来的“确定性破坏”普通交换机的工作原理是存储转发store-and-forward先把一整个帧收进端口缓存查MAC地址表再根据目的端口排队发送。这个过程中有三个天然的不确定性来源。第一帧在端口缓冲区排队的时间随当前负载变化旁边端口有大数据流量时你的EtherCAT帧就可能多等一会儿。第二MAC地址学习与老化过程会改变转发行为老地址被清除后交换机可能把帧当未知单播去泛洪。第三多个端口同时需要出数据时内部调度器会引入排队延迟这个延迟和帧长、端口数量都相关。即使是最快的商用交换机转发延迟也通常在几微秒到几十微秒而且抖动很大。这种不确定性对EtherCAT的线型链路是致命的因为它直接破坏了“帧到达时刻可预测”的根基。2.2 那些容易被忽视的“软”问题除了转发延迟交换机还会带来几个工程师容易踩的暗坑。第一个是MAC学习问题EtherCAT帧通常使用主站MAC作为源地址目标地址可能是广播或多播地址普通交换机见到广播帧会向所有端口泛洪白白增加整体负载。第二个是帧长与MTU的兼容问题部分交换机默认会检查帧长对超大帧或异常小帧有特殊处理策略可能改变转发行为。第三个是VLAN和端口隔离配置如果交换机里划了VLANEtherCAT从站之间可能直接就不通了。第四个是IGMP和组播处理很多网管交换机默认开启IGMP Snooping而EtherCAT的组播帧并不一定走标准IGMP流程结果可能是帧被丢弃或者被延迟处理。这些问题比延迟更隐蔽有时候表面看链路是通的但一个广播风暴就能让所有伺服从站集体掉线。对比项线型直连无交换机普通交换机介入帧转发方式从站ESC硬件飞过式存储转发加排队单节点延迟纳秒级微秒到几十微秒延迟抖动几乎为零随负载明显波动对DC同步影响可做到亚微秒级大概率恶化到微秒甚至毫秒级拓扑适应性线型、树型不适合实时主线2.3 “能通但不代表能用”的实验现象我做过一次很直观的对比实验。用SOEM软主站跑一块AX58100从站板卡不插交换机时循环周期1ms周期抖动约正负10微秒DC误差小于0.5微秒。在主站和从站之间加一台普通的千兆交换机其他配置完全不变结果周期抖动直接跳到几百微秒从站偶发看门狗超时。通讯功能本身没断但从站状态在OP和SAFE_OP之间来回跳如果是带伺服电机电机就会出现明显的顿挫。这个实验说明了一个关键点EtherCAT链路里加交换机不只是“可能变慢一点”而是会打破整个实时控制的确定性“通讯通”和“控制能用”是两回事。3. 场景决定答案哪些地方能忍交换机哪些地方一根线都不能动3.1 实时主链路结论要分位置说抛开具体场景谈能不能用都是耍流氓。至少要把EtherCAT网络里的位置分成几类来看。第一类主站网口到第一个从站之间的“干线”这是绝对的实时主链路不建议使用任何交换机。第二类从站与从站之间的“支线”完全没有必要用交换机因为从站本身就带两个物理网口天然适合串联。第三类主站侧的扩展或星型汇聚如果一定要做星型结构优先用专用的EtherCAT分支器或耦合器而不是交换机。第四类调试和管理链路比如主站上独立的普通以太网口接HMI、接编程电脑或者通过EoE、FoE访问从站诊断页面这些非实时路径完全可以用交换机而且用了很省事。3.2 专用替代设备分支器和耦合器才是正解比普通交换机靠谱得多的方案是EtherCAT分支器或者耦合器。这类设备本质上就是一个自带多路EtherCAT接口的特殊从站主站的数据线经过它以后被分发到多个支路上。它与交换机的本质区别在于它不做MAC学习、不做存储转发而是完全按照EtherCAT从站方式处理帧的进出每个方向的延迟都是确定的微秒级甚至更低。用这类设备组星型或树型拓扑比对任何交换机都安全。市面上进口和国产方案都有成熟选择。特别提醒一下如果你是基于STM32自己做EtherCAT从站想顺手给设备加一个“分支输出”功能工程上我不建议用单片机纯软件转发哪怕跑裸机、用中断也难以保证多路输出时序的一致性。老老实实用带ESC的从站控制器方案把协议处理交给硬件软件只做应用逻辑这才是成熟的做法。3.3 汇川H5U带24个660伺服轴的实际接线参考热词里提到的“汇川H5U带24个660伺服轴EtherCAT通信程序案例”在实际工程里通常有两种做法。第一种如果所有伺服都在同一个电柜或者相邻区域直接用线型菊花链第一个伺服进、第二个伺服出一直串到最后一个只要总线总长度在100米以内链路预算足够这是最简单也最可靠的方案。第二种如果设备分布在不同工位每个工位需要单独一条支路那就在工位起点放一个EtherCAT耦合器或分支模块从主站主线引出多条支线。把这两种情况翻译一下就是不管24个轴还是更多轴工程上都没有用交换机把伺服串起来的合理场景。所有轴的实时数据都必须走主站网口直接拉出去的线型或分支器网络。千万不要图机柜里布线好看就把伺服全插到交换机上现场一旦出现同步报警排查会非常痛苦。3.4 非实时通道上的“例外”用法必须说清楚交换机并非完全不能出现在EtherCAT系统里只是不能出现在实时主链路上。我在不少设备里见过这样的布局EtherCAT主线单独走专用网口同一个机柜里放一台工业交换机专门负责给触摸屏、上位机、MES网关以及伺服自带的调试网口提供网络连接。这种“实时走实时线、非实时走交换机”的做法很常见也完全没问题。还有一种情况是用普通交换机跑EoEEtherCAT over EtherCAT或者FoEFile over EtherCAT这些服务。EoE本质上是把标准以太网报文封装在EtherCAT数据中传输周期松一点也能忍对延时要求不高所以在某些特殊项目里交换机介入后的影响可以接受。但前提依然是不要因此影响到同一条物理链路上的实时PDO数据。4. 真要用交换机怎么测、怎么看数据说话4.1 实验室复现的完整测试步骤如果因为客观条件限制不得不考虑在某个环节使用交换机我的建议是先在实验室把风险验证清楚别等设备上了产线再发现问题。验证步骤可以这样设计。第一步先跑基准组不插交换机把主站和从站按最常规的线型接好记录循环周期时间、周期抖动、DC同步误差以及看门狗计数。第二步在同一位置插入交换机主站到交换机、交换机到第一从站其他配置全部保持原样再记录同样的指标。第三步加负载用另一台电脑往交换机持续灌入大量流量模拟真实网络环境里其他设备通信的情况。第四步至少连续跑10分钟统计最大值、最小值、平均值并把从站状态变化次数、掉线次数记录下来。整个过程有没有问题数据会直接给出答案。4.2 几条实用的经验判断线判断结果不能凭感觉我在实际项目里积累了几条经验线。第一如果周期抖动的最大值超过了周期设定值的5%这个系统已经处于不稳定边缘。第二如果DC同步误差从亚微秒级放大到微秒级以上伺服同步质量会明显下降此时插补轴之间的轮廓误差会变大。第三如果看门狗或SM错误计数在一分钟内超过1次说明链路已经不可靠了。第四如果从站状态从OP跳到SAFE_OP那就是硬性不合格。我见过不少人在测试时只盯着“逻辑是否正常”而不看时序指标最后设备到现场就跑飞了。记住EtherCAT是硬实时系统光看通不通没有意义必须看时间参数。4.3 一次现场“带24轴”的排障实录我曾经处理过一起很典型的故障。客户用一台普通交换机把24个伺服从站全部接到一个星型网络里结果是伺服数量少的时候勉强能跑数量一多就频繁报某几个轴超时。我们到现场之后先是把跑机一个小时的周期时间记录导出来发现只要交换机某个端口收到大量广播帧后面那批伺服的周期时间就会被拉长一大截。后来把拓扑改成线型接线伺服从站一台接一台同一个程序连续跑了几个小时一个站都没掉。这件事给我的教训很深EtherCAT拓扑上的任何非标设备都可能在压力测试下暴露问题。问题没出现的时候你会以为它没问题一旦负载上来就是定时炸弹。5. 常见误区与排查经验汇总5.1 至少要避开的几个认知陷阱关于“EtherCAT能不能用交换机”我整理了这几条高频误区。第一条“千兆交换机比百兆快所以延迟低”这完全是混淆了带宽和延迟EtherCAT关键不在于链路速率而在于转发过程的确定性和排队行为。第二条“路由器当交换机用更灵活”这个更危险路由器涉及三层转发、NAT处理延迟比交换机还高绝对不能用。第三条“用交换机就能随便扩展从站数量”从站数量的上限主要受EtherCAT帧大小和周期时间限制和交换机没有任何关系。第四条“无网管交换机比网管交换机更安全”其实无网管交换机同样有存储转发和队列调度并不比网管版更适合EtherCAT。第五条“加了交换机只影响速度不影响正确性”这是最需要纠正的它会破坏时序确定性导致掉站和同步报警。误区实际情况千兆交换机延迟低延迟不等于带宽排队与抖动才是关键路由器可替代交换机三层转发延迟更高绝不能用于实时链路交换机可扩展从站数从站数取决于帧容量和周期与交换机无关无网管交换机更安全同样存在存储转发和队列问题交换机只影响速度破坏确定性会造成掉站、同步报警5.2 现场排查问题时的操作顺序排查EtherCAT链路问题时我习惯按照下面的顺序来能省大量时间。如果从站间歇性掉线先看交换机或物理链路端口的错误计数有没有CRC错误、丢包统计再查主站看门狗日志最后才怀疑从站自身硬件。如果同步误差变大先检查是不是链路里新增了交换机、延长线、转接头再检查EtherCAT帧有没有被中间设备拆分或修改可以抓包对比帧长度和报文内容。如果只有某个从站报错优先怀疑这个从站到上一个站之间的网线质量、接地和屏蔽层以及这个从站自身的供电而不是一上来就怀疑主站配置。按照这个顺序排查大多数问题都能在一小时内锁定根因。5.3 一个能直接讲给同事听的比喻如果你要把这个问题讲给机械工程师或现场电工听我推荐用一个很直白的类比。EtherCAT主站就像一趟按时刻表运行的高铁每个从站是站台上的接车员大家的时间表精确到毫秒列车到站和出发必须分秒不差。交换机相当于在高铁和站台之间加了一个中转物流中心货物到了要先扫码、排队、找车然后再发出去。物流中心虽然快但是到达时间根本没法保证准时。你问EtherCAT能不能用交换机答案就很清楚了如果这条线路上运的是不能晚点的生产命令就不要在中途加一个会把准时性搞丢的中转中心。我在实际项目里也不是完全不用交换机。有一个样机阶段的项目我就在EtherCAT主站另外一个调试用的普通网口上接了一台千兆交换机用来同时连接示波器、诊断终端和另外一套上位机这部分不是实时路径交换机用得很随意一点问题都没有。但同一台设备里EtherCAT主线我还是老老实实走线型接线一个网口一条线串下去从站数量多就加分支器绝不为了一时方便去碰那段实时链路。后来这台设备装到现场跑了整整一年从来没有因为通信拓扑出过故障。如果你也正在纠结要不要在EtherCAT网络里用交换机不妨先画一张拓扑图标出哪条是实时路径、哪条是调试路径然后再决定交换机的位置。画清楚了答案自己就出来了。
返回列表