EtherCAT协议转换器:从站配置、主站对接与调试全解析
如果你做过非标自动化或者运动控制EtherCAT 这个名字大概率不陌生。板卡对板卡、驱动器对 PLC一根网线下去抖动小、同步准、刷新快这几年几乎成了高端设备的标配。但现实里很多产线并不是全 EtherCAT 的老的变频器走 Modbus伺服走 CANopen传感器走 RS485一条产线上挤着好几种协议。设备要更新、要联网、要和新的 EtherCAT 主站对上话总不能把现场设备全换一遍。这时候协议转换器就是那道桥。智嵌物联这次发布的 EtherCAT 协议转换器做的就是这件事。它把 EtherCAT 主站侧的标准接口和现场侧常见的串口、CAN、Modbus 等协议打通让老设备能被新的 EtherCAT 网络纳管。对工程师来说省掉的是一整条产线改造的时间和预算。这篇文章我会从协议本身讲起把这台转换器的硬件方案、从站配置、主站对接、抓包调试到常见故障一层层拆开聊适合正在选型或者已经在调 EtherCAT 项目的朋友参考。1. EtherCAT 到底强在哪为什么还需要协议转换器1.1 EtherCAT 通信原理与核心优势先给还没接触过的朋友补个基础。EtherCAT 是倍福在 2003 年左右推出的一种实时工业以太网协议它没有走传统“主站发请求—从站应答”这种一来一回的模式而是采用“帧逐站处理”的方式。主站发出一帧报文报文经过每个从站时从站只抽取属于自己的数据同时把自己的数据插入报文中对应位置然后继续往下传。整个网络从物理上看是线型或星型但逻辑上数据像在一条流水线上被每个站点“边读边写”最后一个站点处理完报文再原路返回。这样一圈下来一个周期内所有从站的数据都被交换过了。这个机制带来的好处第一个是刷新速度极快。百兆以太网的帧在站与站之间流水处理单站处理延迟可以做到微秒级甚至亚微秒级100 个从站的网络跑 1ms 周期是很轻松的事。第二个是同步精度高EtherCAT 通过分布式时钟DC让所有从站共享同一个时间基准从站之间的同步抖动可以做到百纳秒级这对多轴插补来说非常关键。第三个是拓扑灵活线型、星型、树型都能组不需要额外的交换机普通网线就能拉几十米对于现场布线来说是非常友好的。1.2 现场总线的现状与转换器的存在价值那 EtherCAT 这么强为什么现场还是一堆老协议答案很简单存量设备换不掉也犯不着换。一条产线里可能有一台用了十年的温控表走 Modbus RTU几台老变频器走 RS485还有几台气动阀岛走 CANopen。这些设备本身没坏功能也还够用但新上的中控系统、机器人或者视觉控制器只提供 EtherCAT 主站接口。要么整线改造要么把每个设备都换成带 EtherCAT 口的版本成本瞬间就上去了。协议转换器要解决的问题就是让这些“老古董”以最小代价接入新一代控制网络而不是直接淘汰。另外一个常见场景是设备扩展。有些设备本身是 EtherCAT 从站但厂内没有 EtherCAT 主站只有 PROFINET 或 Modbus TCP 的 PLC这时候需要的是反向转换。智嵌物联这次的产品线就是把 EtherCAT 当作“通用底座”一侧接 EtherCAT 主站网络另一侧按型号提供 RS232/RS485、CAN、Modbus、甚至 EtherNet/IP 等接口用户按现场总线选型号就行。这样一来不管你是升级老产线还是扩展新设备都能找到对应的接入方式。1.3 智嵌物联这个新品的定位按我们团队内部的定位这台转换器不是单纯做一个“网关盒子”而是想把它做成 EtherCAT 网络的“翻译官加接线员”。翻译官的意思是协议转换本身要稳数据映射要清晰不能出现丢数据、延迟抖得厉害的情况接线员的意思是从站扫描、同步、周期配置这些事要做得让用户省心插上电、导入 XML、配好 PDO 就能跑。后面我会从硬件和软件两个层面讲我们是怎么实现这个目标的。产品发布前我们在实验室里拿 TwinCAT 3、SOEM 开源主站、基于 Linux 的 IGH 主站分别做过长时间压力测试也配合过汇川、信捷、台达等主流国产 PLC 的 EtherCAT 主站做过现场验证。并不是“能通信”就算通过而是要反复确认断线重连、周期切换、DC 同步异常等边界情况下的表现。这些验证下来踩了不少坑后面几章我会把核心的部分都摊开讲。2. 硬件方案与接口设计解析2.1 主控与从站协议芯片怎么选协议转换器本质上是一个嵌入式设备一边跑 EtherCAT 从站协议栈一边跑另一种协议的收发逻辑中间还要做数据映射和缓存。主控我们用的是 STM32 系列具体型号是带以太网 MAC 的 F405/F407 这一档性能足够跑数据转发生态也成熟。EtherCAT 侧没有直接用软件协议栈去啃以太网控制器而是外挂了一颗专用的从站控制器ESC芯片型号用的是国产化比较到位的 AX58100ASIX 方案或者兼容 ET1100 的芯片。为什么要外挂 ESC而不是用软件实现 EtherCAT 从站原因很现实EtherCAT 对实时性要求太高了从站处理报文必须在硬件层面完成“边收边发”用 MCU 软件模拟的话一个周期里要处理中断、拷贝数据、维护状态机很难保证稳定的微秒级响应。而 ESC 芯片自带硬件信箱、FMMU、同步管理单元主站访问从站就像访问一块内存MCU 只需要在后台读写这块内存实时性由硬件兜底。这也是绝大多数商用从站的标准做法能少踩很多坑。2.2 接口布局与整体设计这台转换器我们做成了导轨安装的小盒体宽度大概是 4 个模数的尺寸。正面是一路 EtherCAT IN、一路 EtherCAT OUT支持线型级联两个 RJ45 也可以互换方向中间是串口 RJ45 引出 RS232/RS485底部还有一路 CAN 口按型号也可以提供第二路串口。供电用的 9-36V 宽压 DC 端子现场电源乱一点也不会动不动就掉线。面板上三个指示灯电源/运行、EtherCAT Link/ACT、协议侧 TX/RX调试时一眼能看出卡在哪个环节。这类工业盒子有几个细节容易被忽视。第一网口变压器旁边一定要做好防护EtherCAT 虽然走网线但工业现场往往有电机启停、变频器干扰百兆网口的共模电感、TVS 管以及外壳的接地处理都不能省。第二串口和 CAN 口的隔离最好做成带隔离的版本否则共地干扰很容易导致通信丢帧或者烧接口芯片。第三内部固件要支持远程升级协议转换器固件更新频率并不低每次从站 XML 调整、PDO 映射逻辑改动都会跟着刷一版能通过串口或 EtherCAT 在线升级会省很多售后成本。2.3 核心参数速览这里列一下这台转换器的核心规格方便大家对号入座。项目参数EtherCAT 接口2 x RJ45支持线型/星型拓扑10/100M从站协议标准 EtherCAT Slave ControllerESC 硬件实现转换协议按型号Modbus RTU/TCP、CANopen、RS232/RS485 自由协议周期能力最小 1ms 周期推荐 2ms 以上稳定运行串口波特率1200bps - 115200bps可自定义CAN 波特率125k / 250k / 500k / 1MPDO 映射支持 FMMU/SMPDO 可在线配置供电9-36V DC典型功耗 3W 以内工作温度-20℃ ~ 70℃安装方式35mm 导轨安装周期能力那栏要多说一句。很多客户一上来就要求 1ms 甚至更小。从站本身跑 1ms 没问题但如果你的串口从站用 115200 波特率传一批数据1ms 周期内可能传不完一帧完整的 Modbus 报文这时候就要适当调大周期或者改用更快的主站轮询逻辑。协议转换器不是越快越好得和“另一条腿”的速度匹配上这个道理后面讲配置的时候还会再提。3. 从站配置与 XML把设备“介绍”给主站3.1 从站是如何被主站识别的第一次接触 EtherCAT 的人往往会在“为什么主站认识我的从站”这个问题上卡很久。EtherCAT 主站在初始化和扫描阶段会给每个从站发一堆命令逐一读取每个从站的 ESC 寄存器、厂商 ID、产品码、版本号以及存储在从站 EEPROMSII里的配置信息。EEPROM 里存的其实就是一份从站“身份证”它记录了从站设备名、对象字典入口、PDO 映射、同步模式等必要信息。主站根据这些信息才能判断这个从站是什么设备、能交换多少字节的数据、该如何配置。而这份身份证通常以两种方式存在。一种是在从站出厂时把信息写进 EEPROM另一种是随设备提供一份 ESI 文件EtherCAT Slave Information一般是 XML 格式主站软件在扫描时加载这个 XML就知道该怎么和从站对话了。协议转换器这类设备比较特殊它的 PDO 大小和映射规则会因为用户接的现场设备不同而变化所以我们默认在 XML 里放了几套常用的映射模板用户也可以根据实际项目自己改 XML 后重新导入。3.2 用 SSC 工具处理和生成 XML提到从站 XML就绕不开 EtherCAT 官方提供的从站协议栈代码SSCSlave Stack Code。SSC 是一个带图形界面的工具它可以配置从站的基本信息、邮箱协议、对象字典、PDO 映射、是否启用 DC 同步等然后生成对应的从站协议栈工程源码和 XML 文件。我们用 AX58100 这类硬件 ESC 时SSC 生成的文件会在出厂前定制好XML 会跟着固件版本一起发布。对于用户来说通常不需要改从站代码但掌握 XML 的查看和简单修改非常有用。XML 里最常动的是这几处Device 标签里的名称和版本号Profile 里面的对象字典条目以及 RxPdo/TxPdo 里的 PDO 映射。比如你要调整“Modbus 寄存器地址对应 EtherCAT PDO 的哪个字节”改 XML 里的映射子索引顺序即可。改完 XML再用主站软件重新导入扫描看到的数据布局就变了。注意XML 的版本号最好跟着改否则 TwinCAT 等主站会对同名同版本的从站缓存旧的 XML 信息导致你改了没生效。3.3 配置从站时的常见坑从站配置看起来只是导入 XML、点几下鼠标实际操作中坑不少。第一个坑是 PDO 映射对不上。比如串口侧收到 8 字节 Modbus 数据如果你在 XML 里只分配了 4 字节的 RxPDO多余数据就被丢了主站读到的永远是残缺的。协议转换器的映射逻辑必须和 XML 里的描述严格一致改完主站配置后最好用抓包工具核对一次实际数据长度。第二个坑是同步模式选错。EtherCAT 从站支持 Free Run、SM 同步、DC 同步几种模式。对于串口类低速设备Free Run 其实更合适因为串口收发本来就不需要和 EtherCAT 周期严格对齐如果非要选 DC 同步串口数据从一个周期到下一个周期的传递反而会多等一拍。选同步模式前先想明白你的从站到底需要多高的同步精度别盲目追求 DC。第三个坑是 Watchdog 超时设置。主站和从站之间的通信如果中断从站会在 Watchdog 超时后自动进入 Safe-OP停止输出。这个时间设得太短现场偶发一帧丢包就会导致从站掉站复位设得太长主站和从站已经断了从站还在维持输出安全上又过不去。我们一般建议根据实际周期时间和网络可靠性选 3~5 个周期的超时值宁可偶尔丢一帧也不要轻易让从站停摆然后再从网络层找原因。4. 主站搭建与对接实操4.1 免费主站方案怎么选很多刚开始玩 EtherCAT 的工程师第一反应就是倍福 TwinCAT但一查授权价格又开始犹豫。其实现在能用的免费方案不少看你处在哪个阶段。TwinCAT 3 是倍福官方主站Windows 下运行有免费授权功能最全适合做开发和验证。限制版每 30 分钟会断一次但作为调协议转换器、看 XML 是否正确的工具绰绰有余。SOEM 是一个开源 C 语言库跑在 Windows/Linux/嵌入式平台都行结构简单适合自己写测试程序或者集成进设备做从站侧的验证。IGH EtherCAT Master 是 Linux 内核模块方案实时性好很多工控 ARM 板都在用适合做嵌入式主站只不过配置起来要碰内核和命令行。如果你手上正好有汇川、台达这些带 EtherCAT 主站的 PLC直接用 PLC 编程软件里的主站配置界面就行不用另外装软件。对协议转换器用户来说我建议第一阶段先用 TwinCAT 免费版做功能验证确认从站 XML 和映射没问题再回到实际控制平台去对接。原因很简单TwinCAT 的报错信息最全扫描、诊断、配合 Wireshark 抓包都很顺手排查问题效率高。4.2 TwinCAT 下扫描从站与基础配置以 TwinCAT 3 为例步骤大致是这样。用网线把转换器的 EtherCAT IN 接到工控机的 EtherCAT 网卡上。注意 TwinCAT 对网卡有要求最好用 Intel 芯片的网卡Realtek 的也能跑但兼容性要碰运气。打开 TwinCAT在 System Manager 或者 TwinCAT 3 的 Automation 界面里将网卡绑定为 EtherCAT 主站。点击扫描设备TwinCAT 会发送广播命令查找网络上的从站。转换器如果供电正常、固件没问题就会出现在设备树里。双击扫描到的从站加载对应的 ESI XML 文件然后查看 PDO 映射、在线状态。如果显示 Safe-OP 或 OP 状态说明通信已经建立。实际操作中你会发现第一次扫描时 TwinCAT 会弹一个对话框问你是否将扫描到的设备写入配置。这个步骤相当于把“探测到的硬件”固化成“工程配置”一旦写进配置以后程序启动时会按这个配置去检查实际硬件。如果现场换了不同批次、不同 XML 版本的从站主站就会报错。所以测试完最好把配置删掉再重新扫描一次保证每次都是“真扫描”而不是用旧配置去套。4.3 对接 PLC、关节模组和现场设备的思路这块我结合热词里的两个典型场景说一下。一个是 Easy521 控制关节模组。Easy521 这类小型 PLC 自带 EtherCAT 主站关节模组作为 EtherCAT 从站接入。如果关节模组的控制器本身就支持 EtherCAT那直接对接即可但如果你用的是老式关节模组内部是 RS485 或 CAN 总线那就需要转换器作为“翻译”PLC 通过 EtherCAT 周期读写 PDO转换器把 PDO 里的控制字转发给串口/CAN 上的关节模组同时把模组返回的位置、电流等信息填入 TxPDO 回给 PLC。这种场景对 PDO 的字节布局要求很细必须提前规划好每个字节的含义否则主站侧看到的全是乱码。我一般建议先画一张数据映射表把控制字、状态字、目标位置、实际位置这些字段按字节排好然后再去配 XML。方向字节 0-1字节 2-5字节 6-7PLC 到关节RxPDO控制字目标位置速度/力矩限制关节到 PLCTxPDO状态字实际位置电流/报警码另一个是汇川 PLC 控制 EtherCAT IO 站。汇川的 EtherCAT 主站配置界面里导入从站 XML 后一般就能自动识别 IO 映射。对于 IO 类应用关键是确认 IO 点数和刷新周期比如 64 点输入、64 点输出映射成 8 字节 RxPDO 8 字节 TxPDO周期 2ms跑起来非常稳。如果你的 IO 站里还带了模拟量或者计数器记得在对象字典里启用对应的索引别只改 PDO 映射不改对象字典否则值永远是 0。5. 网络调试与抓包分析5.1 为什么说 Wireshark 是 EtherCAT 的照妖镜EtherCAT 报文就是普通的以太网帧只不过 EtherType 是 0x88A4。这意味着你可以用 Wireshark 把它当成普通以太网报文抓下来解析。很多工程师遇到“从站进不了 OP”“数据对不上”的问题靠猜很难定位但一抓包基本就清楚了。比如主站到底有没有发出 Pre-Op 到 Safe-Op 的状态切换命令从站有没有回错误PDO 报文里实际传了多少字节几秒钟内全部现形。不过要提醒一点Wireshark 抓包会占用 CPU如果在真实控制周期里长时间开启抓包可能造成额外的延迟或丢帧。一般建议在调试阶段抓包抓到关键报文后立即停止别一直开着跑生产。5.2 Windows 下 Wireshark 抓 EtherCAT 报文的方法Windows 下用 Wireshark 抓 EtherCAT 报文最主要的是安装 WinPcap/Npcap 驱动并把网卡设置为混杂模式。默认情况下Windows 的网卡驱动会过滤掉某些不发给本机的广播帧EtherCAT 广播帧恰恰是其中最典型的。如果你看不到任何 0x88A4 报文十有八九是网卡驱动把帧过滤了。具体操作建议如下。安装最新版的 Wireshark 和 Npcap安装时勾选支持混杂模式。在网卡属性里把抓包网卡设置为不让 Windows 绑定 TCP/IP 协议的状态避免系统网卡驱动抢报文。这个步骤在 TwinCAT 里其实就是“网卡被 TwinCAT 独占”的配置。如果 Wireshark 和 TwinCAT 共用同一块网卡要先停掉 TwinCAT再启动 Wireshark或者用支持共享抓包的适配器。打开 Wireshark选择对应网卡在过滤栏输入ethercat或ecat就能看到 EtherCAT 帧。如果想看某个从站在报文里的具体位置可以在 Wireshark 的协议详情里展开 EtherCAT 数据段按从站地址定位或者自己数帧里的偏移量。实测下来最稳的抓包环境是把一台普通交换机串在网络中间做镜像让 Wireshark 电脑只接收不发送避免抓包电脑干扰 EtherCAT 网络。EtherCAT 本身不能用普通交换机跑正式通信因为会破坏实时性但调试时短暂串一个镜像交换机是可以接受的注意别在正式运动控制过程中这么干。5.3 典型报文与常见异常识别抓到报文后怎么判断是正常还是异常我列几个常见现象。如果看到大量 LRD/LWR逻辑读/逻辑写命令在周期报文里反复出现说明主站正在正常周期通信报文长度应当与你配置的 PDO 总字节数一致。如果报文长度和你配置的 PDO 对不上说明映射没配对。如果抓到的报文只有初始化的 APRD/APWR 状态机命令没有周期命令说明主站一直在尝试把从站从 Init 往 Pre-Op 推但没成功。问题多半在邮箱通信、对象字典或从站配置上。如果出现 ERR 标志位置位或者在读回数据里看到连续的错误代码那就要看具体是哪个从站返回的常见的是 0x0001从站未就绪、0x0005看门狗超时等。这些现场排错经验我用“扫描不到从站”和“偶发掉站”两个场景来串一下放在下一节详细讲。6. 常见问题与排查技巧实录6.1 从站扫描不到先别急着怀疑硬件“明明接好了线主站就是扫不到从站”是最高频的问题。我的排查顺序是这样的。看面板指示灯Link/ACT 是否亮起。不亮就是物理层问题换网线、换网口、检查供电。用 Wireshark 抓包主站扫描时有没有发出广播帧。如果主站侧就没发出任何 EtherCAT 帧那多半是主站网卡绑定或驱动问题如果发出了帧但没有响应帧再看从站。检查从站 SII EEPROM 是否为空或损坏。很多协议转换器出厂默认 EEPROM 已经写好但如果遇到二手、改装设备EEPROM 被清空过主站就识别不了设备名和产品码。这时候可以通过厂商提供的工具重新写入 EEPROM。检查 XML 版本和主站缓存。前面说过同名同版本的 XML 会被主站缓存如果你改了 XML 但版本号没变主站可能还在用旧缓存扫不到或者扫到的配置是旧的。清掉缓存重新加载往往能解决。6.2 偶发断线/掉站的排查思路运行一段时间后随机掉站是最让人头疼的问题。主要原因通常不在协议层而在物理层和电磁兼容。我在现场总结下来按概率排序是这样的。网线质量差或水晶头氧化。工业环境振动大网线水晶头如果没有做防松处理接触电阻变大偶发丢包就会导致掉站。建议用带金属屏蔽层的工业网线水晶头打紧后用扎带固定在安装板上。供电电压波动。协议转换器虽然用宽压电源但如果和电机共用一个开关电源启停瞬间电压跌落可能让主控复位。给转换器单独配一路电源或者加一个小的 DC-DC 隔离模块掉站问题往往就消失了。接地不良。EtherCAT 网线屏蔽层如果两端都接地容易形成地环路如果都不接地抗干扰又差。现场比较推荐单端接地且确保接地电阻尽量低。主站周期太紧。有时候是主站周期设置跟网络负载不匹配周期太短导致某个报文没来得及处理完就超时主站判定掉站。这种问题在抓包里能看到频繁的重传或断开适当放宽周期即可。6.3 同步和时序相关的疑难杂症如果掉站、扫描问题都排除了但现场还是抖动、数据偶尔错位大概率是同步问题。协议转换器因为是“EtherCAT 侧”和“串口/CAN 侧”双总线天然存在两边的时序差异。我踩过的几个具体坑如下。串口数据长帧拆包问题。Modbus RTU 一个报文可能是 8 字节也可能是 256 字节。如果 EtherCAT 周期是 2ms串口侧收到一帧长报文需要 20ms那中间多个 EtherCAT 周期读到的是半包数据。解决办法是让转换器内部做报文缓存和帧完成判断等完整一帧收到后再更新 PDO宁可多等一个周期也不能把半包数据丢给主站。DC 同步模式下从站输出更新时刻和主站期望的时刻有偏差。这个偏差如果大于一个周期就可能出现“数据迟到”。因为转换器连接的是低速设备我通常建议直接关闭 DC 同步或者把同步窗口设松一点让从站有足够的缓冲。多个转换器级联时每个转换器都会引入几十微秒的处理延迟。如果系统里有严格的轴间同步需求要么所有转换器都工作在 DC 同步模式要么在设计拓扑时把转换器挂在网络末端避免它影响其他高标准从站的同步路径。6.4 排除问题速查表现象可能原因处理建议扫描不到从站网线/供电/主站驱动问题按物理层-主站-从站顺序排查Wireshark 抓包确认扫描得到但进不了 OPPDO 映射不匹配/对象字典错误核对 XML 和实际报文检查 PDO 长度运行中偶发掉站网线松动/电压波动/地线问题换工业网线、独立供电、单端接地数据错位或乱码串口拆包/PDO 映射不匹配开启完整帧缓存重新核对映射同步抖动大DC 模式配置不当低速应用改用 Free Run或放宽同步窗口修改 XML 不生效主站缓存旧版本修改 XML 版本号清掉主站缓存这一套下来大多数 EtherCAT 对接问题都可以在半小时内定位到具体环节。最后说点个人体会。协议转换器最容易出现问题的时候不是新品刚做出来而是用户现场第一次把它的 PDO 和 XML 对上、第一次把串口和 EtherCAT 同时跑满的时候。我在实验室里测过无数次也去现场跟过几次调试最大的感受是EtherCAT 本身很可靠绝大多数故障都出在“边界的耦合”上——串口那边来了半包CAN 那边仲裁丢了帧或者供电抖了一下。所以如果你也要用这类设备建议一定留足调试时间把串口侧、CAN 侧的时序和 EtherCAT 周期放在同一张图里看抓包多抓几轮心态稳住问题总能定位到。最后再分享一个小技巧在新设备第一次接入现场网络前先在家里用 TwinCAT 免费版加 Wireshark 完整跑一遍扫描、进 OP、读写 PDO 的流程记住几个关键报文长什么样。到现场出问题时你会有底很多。