尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

EtherCAT背板方案深度解析:SYNC0/SYNC1与多轴伺服同步实战

EtherCAT背板方案深度解析:SYNC0/SYNC1与多轴伺服同步实战 前两年我帮客户改造一条锂电池卷绕设备打开控制柜那一刻整个人都愣住了24根脉冲线从PLC侧板一路扎进端子排再密密麻麻分到各个驱动器柜门几乎被线缆塞死。后来整套换成了EtherCAT架构柜内清爽了但接线依然保留了旧习惯——每一根网线还是一个一个从主站口串出去的。真正让我改变看法的是接触到方芯半导体的EtherCAT背板方案。这个方案把从站接口、物理层收发电路和配电做在一块PCB背板上主站信号进入背板后按槽位分发每个槽位对应一个伺服轴或IO站。整套下来线少了接线错误没了调试时间降了不止一半。这套架构天生适合高速、高精度的多轴运动控制场景比如锂电卷绕、3C点胶、光伏串焊机轴数越多优势越明显。这篇就把我对这类背板方案的架构理解、同步原理、配置过程和踩坑经验一次性讲清楚适合正在做EtherCAT从站选型、柜内布线改造或者想搞懂SYNC0/SYNC1到底怎么用的朋友。1. 为什么最后一米决定了高速高精度系统的成败1.1 脉冲控制柜里的三大难题经历过的人都知道在没有EtherCAT之前多轴设备最常用的控制方式是脉冲方向或者模拟量速度给定。以24个伺服轴的锂电卷绕机为例每个轴至少要拉过去脉冲、方向、使能、报警、复位这几根线。算下来光控制线就是100多根再加上动力线、编码器线一个电柜塞满600根线缆是很正常的事。这种接线方式带来的问题做设备的人都有体会。第一是干扰脉冲线稍微走错路径伺服就会丢脉冲位置精度直接崩掉。第二是对线难设备到客户现场之后接线端子松了一根你得顺着线号一根根查运气不好查半天。第三是调试效率低换一个轴型或者改一个方向逻辑要在PLC端改映射、在驱动器端改参数两边来回跑。这就是传统方案在最后一米上的硬伤通信速度可以提高但物理层面的接线瓶颈一直在。1.2 EtherCAT把站间通信提速了柜内走线却成了新瓶颈EtherCAT的出现解决的是站与站之间的高速交换问题。它的逻辑不是主站发指令给从站从站应答后再发下一个而是像接力赛一样报文从主站出发经过第一个从站时从站当场把属于自己的数据读走、又把自己要反馈的数据塞进去然后报文立刻继续流向下一个从站。整条链路上所有从站的处理时间加起来通常只有微秒级。这个机制让100Mbps的普通以太网物理层跑出了极高的实时性。但问题来了如果柜内仍然采用主站网口—交换机—各从站或者主站网口—一根根网线串联的接法虽然比脉冲线少了许多但每个轴依然需要单独一根网线从主站侧串出来。24根网线在柜内走线颜色稍乱一点插错一个水晶头的概率直线上升。而且网线的对绞结构和长度差异会带来微小的传输延迟差在要求纳秒级同步的多轴场景里这部分差异会成为后期调同步的隐患。1.3 背板方案的本质从总线到站变成总线到板方芯半导体的EtherCAT背板方案思路其实和服务器里的Riser背板、PLC里的IO背板一脉相承不再把通信链路拉到每一根独立的网线上而是把所有从站接口做到一块PCB板上主站信号进入背板后走板内高速走线按槽位依次接入各个从站控制核心。这样做最直接的好处是最后一米被完全标准化了。背板上的走线在PCB设计阶段就做了阻抗匹配和等长处理人工接线的不可控因素被消除。每个槽位对应一个明确地址插上就通拔下就断不需要再费脑筋去核对线号。对我这种经常跑现场的人来说光是不用再趴在地上找哪根网线对应哪个轴这一点就值得换方案了。2. 方芯半导体背板方案的架构拆解从站矩阵与数据流2.1 整块背板就是一个高密度从站矩阵一块典型的EtherCAT背板从外观上看类似PLC的电源底板一端是主站入口通常是一个RJ45或者工业端子另一端是供电端子中间排布着一排从站插槽。每个插槽可以插入伺服驱动模块、IO模块或者专用的轴控模块槽位数量从8、16到24甚至更多。但内部结构比PLC背板要专得多。它并不是简单地把以太网线并联到每个槽位——那样就变成星形拓扑了实时性反而不如串联。背板内部实际是一条高速差分信号链路主站报文从入口进入沿板内走线依次穿过每一个从站槽位的物理层芯片每经过一个槽位对应的从站控制核心就处理一次报文然后再把报文继续推给下一个槽位。所以从协议角度看它是一条标准的EtherCAT线形拓扑但从物理形态看它是一块整齐的板卡。这种形态对电柜设计非常友好。设备的轴数定了之后选对应槽位数的背板装进柜子然后只需要从每个槽位引一根很短的线到驱动器接口或者直接把驱动器模块插在背板槽位上整个通信链路就完成了。机柜走线量下降一个数量级。2.2 从站控制核心与物理层的三个关键模块EtherCAT从站能实现飞行读写核心靠三样东西配合从站控制器ESC、物理层收发器PHY、以及协议栈软件。模块作用选型关注点ESC从站控制器处理EtherCAT帧读取/插入数据管理FMMU和同步管理器支持的FMMU通道数、SM通道数、中断响应速度PHY收发器负责100BASE-TX物理层信号的编码解码晶振精度、抗干扰能力、是否支持MII/RMII接口协议栈应用层状态机Init、Pre-Op、Safe-Op、Op、PDO数据处理是否支持CoE、FoE、EOE是否提供SYNC中断回调ESC是整个从站的核心。它本质上是硬件化的帧处理引擎EtherCAT报文路过它时它利用FPGA或ASIC逻辑在极短时间通常远小于1微秒内完成取出属于本站的数据写入本站要反馈的数据然后立刻重新生成帧头交给下一个从站。这样整条链路才不需要在每个从站等待处理完再转发延迟才能压到纳秒级。方芯半导体的背板方案里这套从站控制核心以专用芯片形式嵌入背板而不是让每个现场工程师自己画一个FPGA从站板。好处是背板的从站行为一致性有保障每槽位的处理延迟、时钟校准行为、同步信号产生逻辑都是由同一套芯片和固件决定的批量设备之间不会因为个别硬件手焊质量差而出现行为差异。2.3 EtherCAT飞行读写的数据流帧如何在背板上流动网上很多刚接触EtherCAT的同学会习惯性地拿传统的Modbus TCP思维来理解它然后被搞糊涂为什么还有帧经过从站不返回这种操作打个比方。Modbus TCP像寄快递驿站收到包裹后通知你你跑过去取然后驿站再把回执寄回去。EtherCAT则像一条流水线包裹沿着传送带经过每个工位每个工位在包裹经过的一瞬间拿出属于自己的物件、放进去自己的东西包裹头也不回地继续走走到流水线末端再掉头返回。具体到背板里一个完整的流程是这样的主站把一帧EtherCAT报文发进背板主站入口。报文到达第1槽位的PHY被解码后交给ESC。ESC比对报文中携带的FMMU配置确认哪些数据属于本站读出的数据交给应用层处理同时把应用层准备好的数据写回报文的指定位置。经过硬件处理后报文被重新编码直接从第1槽位发给第2槽位。依次类推直到最后一个槽位处理完。报文从背板末端或者最后一块从站返回回到主站。这个过程里每个从站都把报文延迟控制在极短范围所以24个轴链路的整体循环周期可以做到1ms甚至500us以内而对多轴插补来说这个周期内所有从站是否同时动作就取决于下一章要讲的同步机制了。3. SYNC0与SYNC1多轴设备高速高精度的真正开关3.1 为什么要同步多轴插补容不得时间差很多刚入门的人以为只要主站把24个轴的目标位置放到同一帧报文里发给各从站各轴就会同时开始运动。实际上不是这样。报文飞过第1个从站和第24个从站之间存在延迟差各从站收到数据后还要经过本地处理、驱动刷新如果每个从站都在自己收到数据的瞬间执行运动那么24个轴的动作时间点会有明显的先后偏差。对单轴点动来说这个偏差感觉不出来但多轴插补就不行了数控系统里的插补器假设所有轴在同一时刻到达指令位置假如1号轴0.2ms后执行、24号轴0.5ms后执行走出来的轨迹就不是规划出来的直线或圆弧而是一条被时间轴扭曲的曲线。所以EtherCAT引入了分布时钟机制核心目的就是给每一个从站一个统一的节拍让所有从站在同一个心跳信号到来时同步刷新输出。SYNC0和SYNC1就是这套机制里的两个关键事件线。3.2 分布式时钟DC给每个从站装上统一原子钟分布式时钟的思路通俗讲就是让每个从站都维护一个本地的纳秒级时钟而主站周期性地校准这些时钟让它们之间的差异缩小到纳秒级别。校准过程大致分两步第一步测量传播延迟。主站向第一个从站参考从站发送特定报文记录从站处理报文的耗时然后依次测量每个从站相对参考从站的传输延迟。这个过程在EtherCAT里对应的是ARMW和FRMW报文。第二步漂移补偿。各从站的本地晶振精度有限时间长了会有漂移主站会周期性发送时钟同步报文告诉每个从站你的本地时间快了/慢了请校正多少纳秒。校准完成后所有从站的本地时间被拉齐此时主站只需定义在某个本地时刻产生SYNC0事件那么每个从站都会在同一时刻触发中断——这就是多轴同时动作的基础。3.3 SYNC0事件与SYNC1事件的典型分工在EtherCAT从站协议栈里SYNC0和SYNC1通常由分布时钟模块产生它们可以配置为周期性脉冲也可以配置为单次事件。实际项目中这两个事件最常见的使用方式是这样的SYNC0作为全局同步节拍。运动控制程序通常把SYNC0周期设成与主站循环周期一致如1ms所有从站在SYNC0中断里刷新输出比如更新伺服驱动器的目标位置、电流环给定等。这保证所有轴在同一时刻执行位置更新。SYNC1作为辅助同步事件常用于输入锁存和更细分的时间调度。比如需要精确记录编码器位置或者IO输入的时刻就可以让SYNC1在SYNC0之后的某个偏移时刻触发从站把此刻的位置值锁存下来主站读取到的就是精确时刻的量。参数含义典型值Cycle TimeSYNC0周期两个SYNC0脉冲之间的间隔1ms、500usShift Time偏移时间SYNC1相对SYNC0的偏移量0至数百usPulse Length同步脉冲的持续时间由从站硬件决定Sync Signal Type同步信号类型DC-SYNC理解这个分工对配置和排查都非常重要。我见过不少工程师在从站应用层里把输入采样和输出刷新逻辑都塞进同一个中断结果输出刷新耗时一波动输入采样时刻也跟着漂移位置精度莫名其妙变差。正确做法是让SYNC0负责输出刷新让SYNC1负责输入锁存两个事件各管一块互不拖累。3.4 配置中常见的同步模式选择EtherCAT从站同步模式有三种常用选择Free Run从站自由运行不依赖主站节拍。适合普通IO、传感器采集这类不要求严格同步的应用。SM Event以接收到的同步管理报文作为触发事件。响应有延迟差实时性一般。DC-SYNC以分布时钟产生的SYNC0事件为触发所有从站严格同拍。运动控制和高速采集必须用这种。实操里我基本都是伺服轴一律DC-SYNC普通IO如果只是状态检测Free Run就可以省一点配置复杂度如果IO里包含需要和时间关联的高速锁存输入比如追剪的飞剪编码器那就老老实实开DC。4. 实战复盘24个660伺服轴的背板方案组网4.1 项目背景与拓扑连线正好借着圈子里一个常被拿来讨论的案例——汇川H5U作为EtherCAT主站下面挂24个SV660系列伺服轴的场景——来复盘一下背板方案在这种规模下的表现。我在实际调试中就用类似的配置搭过一套设备是消费电子行业的全自动组装线24个轴分布在四个工位每个工位承担定位、压合、拧紧动作。拓扑结构很简洁H5U主站网口 → 方芯半导体EtherCAT背板主站入口 → 背板24槽位每个槽位插入对应轴的伺服驱动接口模块 → 各槽位引出短接线到SV660伺服驱动器或者驱动器直接背板插装。24根独立网线被替换成了一块背板24段短跳线柜内走线量从蜘蛛网变成横平竖直。最关键的是哪怕哪个槽位的伺服出问题拔掉该槽位模块即可单独维护其他23轴不受影响这在传统串联网线式的拓扑里是做不到的——节点中途断开后面所有站都会跟着掉线。4.2 组态配置的核心步骤用H5U配套的编程软件InoProShop为例背板方案下的配置并不复杂但步骤顺序不能乱。安装设备描述文件。SV660N的ESI文件要提前导入InoProShop的设备库否则主站不认识从站身份。新建工程后在EtherCAT主站配置界面里执行扫描网络。背板的每个槽位会被识别成一个独立从站依次出现在从站列表里。给每个从站分配站地址。背板方案的站地址分配由槽位顺序决定一般不需要手动拨码按槽位顺序依次分配即可。配置PDO映射。对伺服轴需要把控制字、目标位置、目标速度、运行模式6060h加入RxPDO把状态字、实际位置、实际速度加入TxPDO。开启DC同步把SYNC0周期设为与主站循环周期一致。高速高精度场景建议先设1ms跑通再根据负载尝试500us。逐个下使能点动验证每个轴的方向和限位信号。第一次配置时最容易被绊倒的是PDO映射。SV660N的伺服对象字典里常见的几个对象6040h控制字、6041h状态字、607Ah目标位置、6064h实际位置这些必须和从站的PDO条目严格对应。配置错了轴会出现主站显示在线但伺服没有任何反应的奇怪现象。4.3 实测结果同步精度与周期稳定性这套系统跑起来之后我在示波器上直接观察了多个从站的SYNC0信号。在DC同步开启的情况下24轴之间的同步信号偏差可以控制在几十到几百纳秒的水平这比单纯靠报文到达时刻触发的方式高了一个数量级以上。对于SV660N这种支持EtherCAT的伺服来说位置环刷新周期在1ms时轴间同步误差对设备工艺的影响基本可以忽略。印象很深的是一次压合工序的轨迹改善。原来用脉冲控制时四工位同时下降时总有一个工位的位置超前或滞后导致产品压接力不均匀。换成背板DC同步之后四个工位的动作在示波器上看几乎是同一条曲线压合力波动从原来的将近10%降到3%以内。这个改善不是背板本身跑得快而是它把同步机制稳定地落地了。4.4 大轴数下背板方案的运维优势轴数越少背板方案的相对优势越不明显但到24轴这个量级运维上的差距就拉大了。首先是对线效率。传统一轴一根网线的接法24根网线插错一根就要从头查。背板方案里槽位顺序和轴号一一对应装模块时看一眼槽位标签就够了。其次是故障定位。哪一轴报通信故障看背板上对应槽位的状态灯就行。哪一轴需要单独断电重启拔掉对应模块比去柜子里找继电器更直接。第三是扩展性。设备后续要加轴如果是串联拓扑新增节点往往要改变既有链路顺序背板方案只需选更大槽位数的背板或者把相邻两块背板串起来原有槽位配置可以原样保留工艺验证的代价小很多。5. 从站开发与配置实操从零跑通一套EtherCAT背板5.1 主站侧环境准备不管用哪个品牌的主站EtherCAT组态的基本套路是相通的。主站软件常见有倍福TwinCAT、CODESYS以及汇川InoProShop这一类集成开发环境。新手不用贪多先把手头主站配套的软件用熟即可。以InoProShop为例创建一个新工程后左侧设备树里找到EtherCAT主站节点右键导入从站ESI文件。这里有个细节ESI文件必须是和从站硬件固件版本匹配的。伺服固件升级之后忘记更新ESI会导致主站扫描出未知从站或者参数错乱这个坑在实操里非常常见。主站参数里需要关注的是周期任务设置。EtherCAT主站通常有一个Process Data Cycle运动控制建议从1ms开始确认链路稳定后再往下压。不要一上来就500us那样一旦链路有噪声问题排查起来要把同步问题、拓扑问题和干扰问题混在一起难度会成倍增加。5.2 ESI文件、网络扫描与站地址分配ESI文件本质上是一个XML文本定义了从站的设备名称、厂商ID、产品码、PDO默认映射、同步能力等。它就像是每个从站递给主站的身份证说明书。网络扫描是主站软件的核心操作它会遍历整条EtherCAT链路读取每个从站的ESC寄存器获取厂商ID和产品码然后从已安装的ESI库中找到匹配的设备描述。如果主站找不到对得上的ESI就会把这个从站标记为未知设备。站地址分配有两种一种是主站配置软件自动给每个从站分配一个逻辑地址另一种是依赖硬件拨码开关设定物理地址。背板方案里主站软件按探测顺序分配的逻辑地址最常用槽位顺序就是站地址顺序记一个槽位表就够了。5.3 从站侧ESC 协议栈生成 最小系统如果你不是用现成的背板模块而是想自己基于方芯半导体的从站控制核心做一块从站板那么标准路径是这样的硬件上ESC芯片 PHY 微控制器三者之间通过SPI或者并行总线连接。软件上使用SSC工具EtherCAT Slave Stack Code生成协议栈源码。SSC工具会问你目标硬件、应用层协议CoE、FoE、SoE等、PDO数量然后生成C代码工程。应用层在协议栈提供的中断回调里实现自己的功能。一个最小的从站应用框架类似这样/* SYNC0中断输出刷新 */ void ECAT_Application( void ) { if ( pSync0Flag ) { /* 读取主站下发的目标位置/控制字 */ target_pos RxPdo_TargetPosition; /* 更新本地运动控制输出 */ DriveSetTargetPosition( target_pos ); } if ( pSync1Flag ) { /* 锁存编码器当前位置 */ TxPdo_ActualPosition EncoderGetPosition(); } }注意SYNC0中断和SYNC1中断是两回事别把编码器锁存逻辑塞进SYNC0里。这个我前面已经强调过了但每次写代码都还有人再踩一遍。5.4 让一个轴动起来PDO映射与伺服参数校验从站节点进入OperationalOp状态后伺服轴才能真正接收控制指令。这里有一个所有CoE伺服都通用的流程发送控制字6040h0x0006让伺服进入快速停止状态。设置运行模式6060h位置模式选1速度模式选3转矩模式选4。发送控制字6040h0x007F解除抱闸并下使能。写入目标位置607Ah伺服开始运动。每个伺服品牌在对象字典上可能有小差异但CoE规范定义了这些标准对象号。如果某个对象在SV660N上不生效优先查EDS文件里对应的对象子索引和数据类型八成是对不上。一个很实用的做法在背板方案里每个槽位对应一个轴可以在主站软件中建一组统一的PDO映射模板24个轴共用同一套映射然后通过轴号偏移做参数区分。这样既能保证每个轴行为一致又大大减少组态的重复配置工作量。6. 高频故障与排查路径我在现场踩过的坑6.1 分布式时钟失效先查参考时钟与拓扑背板方案里出现过多轴不同步的现象多半不是背板硬件本身的问题而是分布式时钟的参考从站选错了或者链路中间串入了无法参与DC校准的从站。有一次在客户现场4个工位中有两个工位同步偏差明显偏大示波器一看其中一个从站的SYNC0信号晚了好几百微秒。排查后发现问题出在背板的链路顺序用户把一块不带DC功能的老式IO模块串在了两块背板之间导致参考时钟无法把DC信息传递给后段从站。换成支持DC的模块后同步偏差立刻回到纳秒级。这个坑给新手的启示是EtherCAT链路里如果混用老设备先确认所有从站都开启了DC支持实在无法统一就把需要严格同步的轴放在同一段链路里避开中间断电的节点。6.2 抖动超标晶振精度、背板布线与EMC现场测试同步信号时如果发现SYNC0脉冲的周期在持续抖动不要急着换主站或者换背板先按优先级检查三个地方从站本地晶振精度EtherCAT从站一般要求25MHz晶振的精度在50ppm以内劣质晶振会让本地时钟漂移过快。背板高速走线质量背板方案的走线在PCB厂已经做了等长处理但安装时的接插件松动、金手指氧化仍可能引入微小信号劣化。电源噪声伺服驱动模块的开关电源噪声会通过地线耦合到背板的PHY芯片导致时钟信号抖动。给背板单独供电或者用带屏蔽的电源端子往往能立竿见影。我在一次压机调试时遇到类似问题最终发现是24V开关电源和背板共用了过长的电缆在伺服急加减速时电压跌落导致PHY芯片工作不稳定。分开供电之后就再也没出现。6.3 PDO映射不一致导致主站丢站丢站这个现象很多新手第一反应是换网线。但在我接触的背板方案故障里PDO映射长度不一致才是最常见的元凶之一。症状是设备跑一段时间后主站偶尔报从站丢失或者看门狗超时重新扫描一遍又从站全在过一会又报。抓取报文后才发现某个从站的TxPDO实际输出长度比主站配置的RxPdo长度长了几个字节主站在解析固定长度报文时发生边界错位整个链路的校验直接崩掉。排查方法也不复杂主站软件里导出每个从站的当前PDO配置和从站ESI文件里声明的映射做逐项对比重点看数据长度是否一致、子索引是否完整。背板方案因为各个槽位共用同一套模板只要一个槽位改了PDO而其他槽位没改就特别容易出现这类隐性问题。我的习惯是每次调整PDO映射后把整条链路上所有从站都统一刷新一遍再进入Op状态验证。6.4 实用调试工具与建议清单最后分享一份我这些年下来觉得最实用的排查工具组合主站自带诊断TwinCAT的Error CountersInoProShop的从站诊断页都能直接看到每个从站的CRC错误计数和看门狗计数。示波器至少两通道分别接参考从站和远端从站的SYNC0信号直接看同步偏差。网口抓包EtherCAT帧不需要IP协议也能抓把网口设为混杂模式即可看到广播帧和周期过程数据帧。这个在排查主站到底有没有发出正确的PDO时特别好用。背板槽位状态灯每个槽位的LINK/ACT指示灯先看物理链路状态再看协议状态。遇到过不去的故障时我有个固执的顺序先物理层再数据链路层再应用层。先确认灯亮不亮、线插没插紧再抓报文看帧结构和CRC最后才去动应用层逻辑。很多时候背板方案不稳定的结论最后都会落在某根没压好的端子上。EtherCAT本身太稳定了反而是那些装机时的小马虎最容易制造出让人查通宵的疑难杂症。以上是我在背板方案上从选型到落地的大部分经验和教训。这些东西看起来零散但每一条都是项目真实推进时用时间换来的。如果你正准备上一套多轴EtherCAT设备在确定轴数、选好主站之后多花点时间在背板的物理布局和DC同步配置上一定值得。
返回列表