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

资讯详情

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

EtherCAT从站接入倍福TwinCAT2:史陶比尔机器人配置与排错实战

EtherCAT从站接入倍福TwinCAT2:史陶比尔机器人配置与排错实战 接手这个项目的时候现场是一台史陶比尔 TX2-90 机器人控制器是老款的 CS8产线总控用的倍福 TwinCAT2工控机还是 Windows XP 时代的老机器。需求很直接把机器人作为 EtherCAT 从站挂到倍福主站下面主站要能实时拿到机器人的关节实际位置和状态字同时下发目标关节位置和运行指令为后续视觉定位和工件抓取做准备。听起来挺常规但真正做起来从 ESI 文件到过程数据映射再到 DC 同步每一步都有细节坑而且网上中文资料大多停在扫描一下就能用的层面真遇到问题基本得靠自己抓报文、翻手册。这篇不打算写成下一步下一步的傻瓜式教程而是把整条配置链路拆开讲清楚先从方案选型说到硬件拓扑再给 TwinCAT2 主站侧完整配置流程和机器人侧参数设置最后把我实测遇到的排错链路和周期压缩经验一并放出来。适合刚开始接触 EtherCAT 集成的调试工程师也适合准备把机器人从硬接线 I/O 方案切换到总线控制的项目人员参考。1. 为什么走 EtherCAT这台机器人接入总控的最优解先说说方案选型。把一台六轴机器人接入 PLC 总控传统做法是硬接线 I/O机器人给 PLC 几个在原点运行中报警的干接点信号PLC 给机器人启动暂停复位的指令。这套方案不是不能用但问题很明显——数据量太少关节角度、笛卡尔坐标、速度这些状态完全拿不到更不用说总控侧做视觉纠偏或者轨迹补偿了。某些项目里为了多传几个字节有人会走 Modbus TCP但 Modbus TCP 的刷新周期和实时性都不够做视觉伺服的场合基本直接出局。EtherCAT 的优势在于它的数据帧是在从站间逐站流转的主站发一个帧经过所有从站后再收回来从站个数对刷新周期影响非常小。实测下来挂四五个伺服轴加一个机器人控制器1ms 周期的 CPU 负载远低于预期。这个特性特别适合产线总控这种一台 PLC 带一堆分布式设备的架构。而且 EtherCAT 的同步精度靠分布式时钟DC保证配合倍福的实时网卡驱动可以把整个网络设备的动作节拍对齐到微秒级这是普通 Modbus 网络完全做不到的。至于为什么用 TwinCAT2 而不是 TwinCAT3 或者其他品牌 PLC一是现场已有的产线软件全是 TC2 平台改造代价最小二是 TC2 的 EtherCAT 主站功能非常成熟稳定性和实时性经过了大量现场验证。唯一要注意的是 TC2 对硬件支持比较挑剔尤其是网卡这一点放到后面硬件准备部分细说。选型还有个容易忽略的点史陶比尔控制柜的 EtherCAT 从站功能是需要软件选件支持的不是买回来就默认开通。项目前期就要跟机器人供应商确认控制柜版本和功能包把从站描述文件ESI 文件拿到手。我们项目里光盘附带了一个 XML 文件但版本和现场机器人系统软件对不上后来专门找供应商重新要了一版匹配的。所以这里先提醒一句EI 文件版本必须和机器人本体软件版本一致否则后面 PDO 映射容易出各种奇怪问题。2. 硬件与网络拓扑配置前最容易被忽视的几件事EtherCAT 配置出问题很大比例是硬件和拓扑层面的软件操作反而占了小头。这一节把动手前必须确认的硬件清单和网络结构讲清楚。2.1 主站工控机网卡别让 Realtek 拖垮整个网络TwinCAT2 的 EtherCAT 主站对网卡要求比很多人想象的高。普通千兆网卡虽然物理上能通甚至 ping 从站能通但实时数据就是不稳定因为 EtherCAT 主站的周期节拍依赖网卡的硬件中断和 DMA 行为实时驱动需要网卡提供稳定的抓包和中断处理能力。项目里用的是 Intel 82574L 网卡在倍福官方兼容列表里实测周期抖动明显比板载 Realtek 好。Realtek 网卡在 TC2 下经常出现丢帧、同步抖动飙升的问题做 EtherCAT 还是建议直接放弃。动手配置前先打开设备管理器看网卡型号。能装 TwinCAT2 的工控机大多是半老不新的型号里面最常见的兼容网卡就是 Intel 82574L、82571、82580 系列。如果机器上只有 Realtek 网卡别折腾了加一块 Intel 千兆网卡是成本最低的稳妥方案。2.2 从站接口确认CS8 控制柜的 EtherCAT 端子史陶比尔 CS8 控制柜上EtherCAT 从站功能一般通过控制柜内可选通讯卡或自带网口引出具体接口位置不同批次会有差异。说明书里通常会标出EtherCAT Slave或External Sercos/EtherCAT字样。我们项目里是从控制柜背部下方的一个 RJ45 口引出旁边还带一个调试网口两者千万别搞混——调试网口是给 VAL3 编程器用的普通以太网口跟 EtherCAT 链路没有关系。从站的供电也得注意。EtherCAT 网络里的从站供电一般有两种方式一种是每个从站独立供电另一种是网线中走 E-Bus 供电。机器人控制柜的从站模块通常是独立供电的所以不需要担心 E-Bus 电流问题。但接线时还是要确认控制柜内部这个接口模块的电源开关状态有些控制柜把通讯模块电源和主电源分开控制模块不上电时从站自然扫不到。2.3 网络拓扑与线缆尽量简短、不要菊花链太长EtherCAT 网络拓扑是典型的线型Daisy Chain结构主站网线进从站 IN 口再从 OUT 口接到下一个设备。机器人从站在整条链路里的位置没有强制要求可以在中间也可以放最后。但从可靠性和排查方便的角度我一般建议放在链路末端或者靠近主站的位置避免后面再挂过多设备导致故障面扩大。线缆方面别心疼钱EtherCAT 对线缆要求不低现场常规的成品网线长度超过 10 米后抗干扰能力会明显下降。我们现场用的是倍福配套的 ZB90xx 系列预装网线跟普通超五类网线比起来屏蔽层和端头做工差异很大。接头接触不良是 EtherCAT 掉站的致命原因尤其在机器人本体旁边机械振动会慢慢让 RJ45 卡扣松动曾经就遇到过一个小时掉两三次站的现场最后排查下来是机器人底座附近一根网线被防护盖挤压导致簧片变形。2.4 ESI 文件准备版本一致性决定配置成败ESI 文件EtherCat Slave Information是从站的身份证包含了设备 ID、对象字典、PDO 映射定义、周期参数等关键信息。TwinCAT2 主站加载从站描述文件后才知道怎么跟这台从站交换数据。史陶比尔控制柜随附的 XML 文件通常在安装光盘的通讯文件夹里文件名类似Staubli_CS8_EtherCAT_xxx.xml。这里特别强调版本一致问题机器人控制器软件升级后对象字典的索引和数据类型可能变化旧版 ESI 文件匹配不上轻则 PDO 映射数据错位重则直接识别不了从站。排查这类问题非常恶心因为报错信息往往只有Device not responding或者PDO mismatch。拿到新版 ESI 文件后最好和供应商确认一下对应的机器人系统软件版本号并把文件统一归档到项目文件夹里。3. TwinCAT2 主站侧配置流程从驱动绑定到激活这一节是所有操作的基座按顺序做完主站侧就算通了。假设 TwinCAT2 已经装在工控机上版本 2.11 以上。3.1 网卡实时驱动安装与绑定打开 TwinCAT System Manager左侧树顶层有 Real-Time Ethernet Adapters 节点点进去能看到所有网卡。选中接 EtherCAT 从站的那张 Intel 网卡点击 InstallTwinCAT 会把该网卡的 Windows 驱动替换成自己的实时驱动。安装成功后网卡会显示为带 TwinCAT 标识的虚拟设备原来的 IP 协议栈被实时驱动接管此时这张网卡不能再用来做普通 TCP/IP 通信。这个环节有个经典坑工控机上如果有多张网卡一定要把接 EtherCAT 的那张认准确。装错网卡后 TwinCAT 主站设备是起来了但链路永远建立不了而且因为其他网卡还能联网和 ADS 通信很容易让人误以为配置没问题。我的习惯是安装前在网卡属性里看 MAC 地址用ipconfig /all和网卡物理位置双重确认安装完实时驱动后再 ping 不通该网卡的 IP因为协议栈被接管了反而是正常现象。3.2 创建 EtherCAT 主站设备并加载 ESI 文件在 System Manager 左侧树中右键 I/O Devices选择 Insert New Device在弹出的设备列表里选 EtherCAT Master确认后生成一个新的设备节点。默认配置就能满足大多数需求主站周期和从站特性先保持默认后面再统一调。接下来把史陶比尔的 ESI 文件放进去。TwinCAT2 安装目录下有一个IO\EtherCAT\ESI文件夹常见路径是C:\TwinCAT\IO\EtherCAT\ESI把 XML 文件复制进去重启 System Manager 让它重新加载。然后右键刚才创建的主站设备选择 Append Box挂接从站弹出列表里应该能看到史陶比尔的型号。如果列表里没有先确认 XML 文件放置路径是否正确再检查 TwinCAT 版本是否太老导致读不了新格式的 XML。从站注册还有两种补充方式一是用扫描功能右键主站设备选择 Scan BoxesTwinCAT 会轮询 EtherCAT 总线上的从站 EEPROM 信息并自动匹配 ESI。扫描前务必确认从站使能是断开状态机器人要打到 T1 手动模式防止扫描过程误触发设备动作。二是在 Append Box 列表里手动指定手动方式适合 ESI 文件匹配但扫描失败的情况后面会细说排查思路。3.3 过程数据 PDO 映射把机器人状态摆到 PLC 地址上这一步是配置的核心。选中挂接好的史陶比尔从站节点右下角有多个标签页关键的是 Process Data 页。页面上会出现 TxPDO从站发送给主站的数据对应 PLC 输入区和 RxPDO主站发送给从站的数据对应 PLC 输出区两个列表。勾选需要的 PDO 条目TwinCAT 会自动生成映射到主站过程映像的地址TxPDO 生成%I*地址RxPDO 生成%Q*地址。以我们项目为例配置的数据块大致如下方向数据内容建议数据类型说明TxPDO输入状态字UINT16机器人当前运行状态、准备好、报警等标志位TxPDO输入关节实际位置6 × REAL六个关节当前角度单位与机器人配置相关TxPDO输入关节实际速度6 × REAL用于监控和轨迹预判TxPDO输入笛卡尔实际坐标6 × REALX/Y/Z 及姿态角是否启用看机器人送的数据块RxPDO输出控制字UINT16使能、复位、启动、停止控制位RxPDO输出关节目标位置6 × REAL主站给机器人下发的关节角度目标值RxPDO输出模式选择UINT16切换机器人运行模式外部位移/关节模式注意这些条目具体索引号一定要依据 ESI 文件里的对象字典不同版本可能略有差异。哪怕差一个字节机器人侧收到的都是乱码数据。PDO 映射勾选完成后下方 Process Image 区域会显示自动生成的地址表。PLC 编程时可以直接在 TwinCAT PLC 中声明一个结构体变量然后绑定到这些%I*/%Q*地址。建议在 PLC 侧定义一个和设备映射严格对应的结构体不要散着写变量后续维护会省很多事。3.4 周期设置与激活配置周期时间在主站设备的 Cycle Time 属性里设置。默认值一般是 1ms1000 µs对于机器人通信来说 1ms 是起步要求后面做视觉伺服时我会压到 500µs。设置完成后在 System Manager 工具栏点击 Activate Configuration激活配置。激活瞬间主站会向所有从站发送运行帧观察从站状态是否为 OPOperational。只要不再是 INIT 或者 PREOP说明主从通信建立了。激活后建议第一时间在 System Manager 里打开 TwinCAT 的实时诊断窗口看实际周期最大值Task Cycle Time max和抖动Jitter。这里记录下基线数据后面调 DC 同步和网卡参数时才有对比。4. 机器人侧参数设置光配主站是不够的主站侧配置完成后如果机器人控制器没有使能从站功能通信状态永远停在 PREOP 或 SAFEOP进不了 OP。机器人侧这套参数往往最容易被人忽略而且不同控制柜版本的菜单路径不太一样我只能把通用逻辑讲透具体以史陶比尔调试手册为准。4.1 使能 EtherCAT Slave 功能块CS8 控制柜的机器人系统软件里默认情况下 EtherCAT 从站功能是不激活的。需要在机器人示教器或者电脑端 VAL3 配置界面里找到通讯设置启用 EtherCAT Slave 选项。启用后控制柜会重启通讯模块此时机器人的网口才真正进入从站模式等待外部主站连接。这里有个重要变化要提前告诉产线操作人员启用从站模式后机器人本体的示教器程序启动逻辑可能会受主站控制字影响也就是说机器人不再自己说了算而是等 PLC 那边发出使能和运行指令。如果没有把这个联锁关系跟操作工讲清楚现场很容易投诉机器人不动了。4.2 映射数据块对齐机器人侧也要定义发送给主站的数据内容和接收主站的数据内容两者必须和主站侧的 PDO 配置一一对应。这个对应关系一般通过机器人控制柜内的一个通讯数据表设定把机器人实际关节位置变量、笛卡尔坐标变量、状态字变量填充到发送区把主站下发的目标位置和控制字读取到机器人程序变量里。数据顺序、数据类型、字节序一个都不能错。为了验证映射正确性第一次联调时可以先不看运动把主站输入的关节实际位置和机器人示教器显示的当前角度做对比。如果数值对得上说明 TxPDO 方向正确再用主站给控制字发一个简单的复位指令看机器人侧是否收到标志位变化确认 RxPDO 方向正确。4.3 机器人程序侧的心跳与模式切换史陶比尔机器人的 VAL3 程序里需要有一小段逻辑专门处理 EtherCAT 通信状态。简单说就是判断从站通信是否健康可以通过状态字的通信心跳位判断通信异常时机器人要停下来并报警不要带病运行。这个逻辑虽然简单但非常重要特别是后面挂视觉、自动上下料这些需要外部总控配合的场景PLC 断线瞬间机器人如果还在动就容易出事故。另外机器人一般有手动/自动安全模式切换。EtherCAT 外部控制要正常运行机器人必须处在自动运行模式。我们项目里最开始忘了这一点PLC 使能信号发过去机器人状态字总是报Not ready排查了半天才注意到机器人示教器上还在 T1 手动模式。这个点写进现场 SOP能让后面调试少走很多弯路。4.4 控制字/状态字位定义一个可参考的约定具体的控制字位定义需以史陶比尔官方手册为准每个位含义与控制柜系统版本相关。这里分享一个我习惯的约定写法不是标准答案但逻辑上可以借鉴控制字位含义说明Bit0使能1允许机器人伺服使能Bit1复位1复位机器人报警复位后需回 0Bit2启动循环1机器人开始执行目标位置Bit3急停反馈确认与安全回路联动的确认位Bit4模式切换0关节模式1笛卡尔模式视项目定义状态字类似的位定义中最重要的两个标志是机器人准备好和运动到位。PLC 程序里所有联锁都应当基于准备好位而不是简单地延时等待这样后续通信抖动时才不会出现逻辑误判。5. 实测排错链路使能失败、瞬断丢站和同步抖动配置完成后真正头疼的是各种问题。这一节把我实际遇到过的四类典型故障按完整排查链路写出来供你复现排查思路。5.1 从站扫不出来先从物理层和 ESI 匹配查起现象执行 Scan Boxes 后主站设备下一直不出现任何从站或者出现一个Unknown Device。我的排查顺序先用万用表量从站模块电源是否正常看控制柜通讯模块指示灯状态。CS8 控制柜的通讯模块一般有 LINK/ACT 指示灯网线插上后灯不亮基本就是物理链路问题。换一根确认良好的网线直接连主站和从站跳过中间其他设备排除线缆和中间设备故障。检查网卡实时驱动是否还在。Windows 更新偶尔会把实时驱动顶掉导致网卡回退到普通驱动。如果状态异常重新点击 Install 实时驱动再激活配置。检查 ESI 文件是否被正确识别。从站显示 Unknown Device 时多半是 EEPROM 里的厂商 ID 和产品 ID 与 XML 文件不匹配。用 TwinCAT 的 ESI 管理器看看当前加载的史陶比尔描述文件必要时手动 Append Box 强制指定从站类型。如果扫描不出来但又能看到 Unknown Device可以分别查看未知设备的 EEPROM 数据和 ESI 文件的厂商 ID/产品 ID把两个数一对比就知道问题在哪里。5.2 使能立即报 Fault机器人侧模式和数据格式的坑现象PLC 给控制字下了使能位机器人状态字瞬间进入 Fault主站周期还在跑但机器人根本没反应。排查链路先看机器人示教器报警详情EtherCAT 通信异常类报警一般会直接显示External control data error或类似描述。确认机器人是否已经切到自动模式。手动模式下收到外部使能信号会被安全逻辑拒绝。检查 PDO 数据格式。这个坑我踩过主站侧把关节目标位置当成了 4 字节整数机器人侧按 REAL浮点解析数值直接变成天文数字机器人安全逻辑立刻报错。核对主站映射数据类型和机器人侧通信数据表定义确保 UINT16、REAL、INT32 完全一致。检查控制字和状态字的初始时刻。机器人从站通常要求在进入 OP 前控制字为 0进入 OP 后再切换到操作位。如果 PLC 程序里使能位置 1 的过程和主站启动时序冲突也可能引起 Fault。这类问题的排查核心思路是不要盯着一端看两端报错信息对照起来分析。机器人的报警日志里有非常具体的错误码PLC 端则只有状态字的变化两者时间戳对上基本能锁定方向。5.3 瞬时掉站重点关注网线、屏蔽和终端电阻现象系统运行一两个小时后偶发从站进入 Lost重新激活又能恢复一天掉一两次特别难复现。这种偶发掉站是最磨人的。排查链路在 System Manager 的诊断页里查看掉站发生的链路位置。如果从站是最后一个设备掉站一般表现为整个链路不通如果中间某个从站掉后续设备全部失联。确认整条链路是否有终端电阻问题。EtherCAT 和 CAN 类似需要在物理链路末端处理信号反射虽然多数从站模块内置了自动终端但混用不同品牌从站设备时还是要在末端设备的 OUT 口接上倍福的终端电阻模块更保险。项目里曾因末端从站不支持自动终端导致偶发误码掉站。检查网线屏蔽层是否有效接地。靠近机器人本体的网线会受到伺服电机动力线的强烈干扰尤其当屏蔽层没接地时干扰直接耦合到信号线上表现为偶发 CRC 错误。现场把网线屏蔽层可靠接入控制柜接地排后掉站问题明显缓解。如果掉站永远指向同一从站优先考虑该从站的供电稳定性。控制柜内部通讯模块和伺服驱动器共用电源时伺服启动瞬间电压跌落会导致从站异常重启。最后建议在 PLC 程序里针对 EtherCAT 从站状态字加一个通信断开次数监控变量掉站问题偶尔发生且主站侧没报错时这个累计值能帮你判断问题是否真的消失。5.4 同步抖动大BIOS 设置和 CPU 实时性能现象周期时间设置 1ms但诊断窗口里实际周期最大值经常跳到 2ms、3ms 甚至更高视觉同步图像偶尔卡顿。EtherCAT 主站的实时性不只是网卡决定的CPU 的实时调度和节流策略起了很大作用。老工控机拿到手先做这几件事BIOS 里关闭 CPU 节能相关项C1E、C-States、SpeedStepEIST、CPU Power Management这类功能会让 CPU 降频或休眠直接导致主站定时器中断不均匀。关闭 PCI Express ASPMActive State Power Management和网卡的节能模式特别是网卡驱动的Green Ethernet选项要关掉。关闭 Windows 系统不必要的后台服务尤其是自动更新和索引服务。TwinCAT2 在系统时钟节拍上依赖 Windows 的内核定时器后台干扰会导致周期性延迟。确认工控机 BIOS 里的 HPET高精度事件定时器处于开启状态。改完 BIOS 后重新启动工控机再回诊断窗口看抖动值通常会改善一个数量级。我们现场把一台老工控机的 C-State 全部关闭后抖动从 ±30µs 降到了 ±5µs 左右效果立竿见影。6. 从 2ms 压到 500µsDC 分布式时钟与周期优化配置基础通信稳定后下一步就是压周期、提同步精度。这一步不是所有项目都需要但如果后面要做视觉引导、实时轨迹插补就必须用 DC 分布式时钟把从站时钟对齐到主站时钟上。6.1 为什么普通模式满足不了高精度同步不带 DC 的 EtherCAT 网络里各从站的数据采样时刻由各自本地的晶振决定晶振之间会有几十微秒到几百微秒的偏差而且这个偏差会累计。做视觉抓取时相机采集瞬间和机器人实际位置时刻不一致哪怕差一两毫秒在高速运动下也会导致抓取精度跑偏。DC 的机制是主站周期性地向所有从站发送同步信号SYNC0/SYNC1每个从站把自己的时钟与主站时钟对齐然后所有从站在同一个系统时间点同时采样和输出。这样整条链路的设备动作节拍就同步了。6.2 TwinCAT2 中使能 DC 的步骤选择从站节点在属性页找到 DC 标签页勾选 Enable Distributed Clocks。然后选择从站所支持的同步单元类型一般选 SYNC0即固定周期同步。使能后TwinCAT 会自动测量从站与主站之间的时间偏移Shift Time并写入从站的时钟寄存器里。如果出现 DC 使能后报错最常见的原因是从站未正确支持 DC或者主站网卡的实时驱动不支持硬件时间戳。可以先关掉 DC 跑普通模式确认通信正常再单独调试 DC。6.3 实测效果周期和抖动数据参考以我们的项目为例下面是一组没做什么额外优化的实测数据对比配置状态周期设置实际最大抖动视觉同步表现普通模式未关闭节能2ms±40µs偶发卡顿普通模式BIOS 优化1ms±15µs基本可用DC 使能BIOS 优化500µs±5µs流畅精度达标注意把周期从 2ms 压到 1ms 再压到 500µs 时主站 CPU 负载会上升。可以在 System Manager 实时诊断里观察任务超时计数Task Timeout Count如果持续增长说明周期压得太狠要么优化 PLC 程序扫描周期要么换更强的主站硬件。6.4 周期优化过程的其他细节有一个容易忽略的细节是主站设备的 Sync Unit Cycle Time 和从站实际期望的周期必须一致。有些从站包括部分机器人控制器在 ESI 文件里固定了最小周期要求比如不支持低于 1ms。如果主站强行设 500µs从站会拒绝进入 OP 或者看门狗频繁超时。遇到这种情况到从站的 Process Data 页面里看看周期相关参数必要时按从站能力调整。另外DC 使能后从站的 SYNC 事件可以配置为每 N 个周期触发一次比如每 2 个周期采样一次。这对某些只要求数据刷新 1ms、但运动周期 500µs 的场景很有用可以降低从站中断频率减少发热和延迟。具体参数在 DC 配置页里有选项按项目实际需要调整。按照这个思路调完整套系统后我们项目的通信周期稳定跑在 1msDC 同步打开后视觉系统直接复用 PLC 的 500µs 控制周期整个产线的节拍和精度都上了一个台阶。7. 最后几句实在话折腾完这个项目几点感触最深的话放在最后。第一EtherCAT 配置出问题八成不在软件操作而在物理链路的可靠性和 ESI 文件的版本匹配。调试的时候不要一上来就怀疑 PDO 映射先花十分钟把网线、终端电阻、从站电源、网卡驱动和 ESI 版本核对一遍很多玄学故障的根源就是这些基础项。第二机器人侧和 PLC 侧的数据约定一定要留文档。控制字每个位的含义、状态字每个位的含义、数据类型、字节序都要写清楚放在项目文件夹里。不要依赖我记得过三个月再来维护这个产线的人是大概率没参与过调试的。第三联调时别急着做运动。先把状态字对上了、使能位逻辑理清了再让机器人动。很多新手一上来就让机器人跑一段轨迹结果映射错位导致机器人乱冲险些酿成安全事故。通信配置这种事慢就是快安全永远第一位。
返回列表