简介:面向工业自动化工程师与TwinCAT初学者的故障排查参考手册,聚焦EtherCAT实时以太网与倍福TwinCAT平台的常见问题定位。内容从EtherCAT通讯机制与TwinCAT软件架构讲起,依次覆盖CX5020、EK1100、BK1250等模块的硬件诊断要点,再深入WorkingCounter作用、Sync unit同步单元设置、主从站状态字解读、TcSyslog日志抓取分析以及CRC与change count等软件诊断方法,形成硬件到软件的完整排查链路。资源为单个PDF文件,压缩包约2.79MB,篇幅紧凑便于随查随用。已有2457人学习,适合希望建立系统化排错思路、提升现场故障处理效率的读者参考。
1. 产线停了三小时,最后靠一份 PDF 定位到第 5 个模块
凌晨两点,某风电现场的主控柜报出总线故障,PLC 程序里一片 WcState 报警,现场工程师把柜门打开又关上,反复上电三次,故障依旧。真正让排查出现转机的,不是换模块,也不是重刷固件,而是有人翻出一份 EtherCAT 与 TwinCAT 故障排查手册,按里面的 BK1250 指示灯闪烁规律数了 14 下、5 下,直接锁定后端第 5 个总线端子模块格式错误。这份 PDF 的价值就在这里:它把 EtherCAT 实时通讯机制、CX5020/EK1100/BK1250 的硬件诊断、WorkingCounter 与 Sync unit 的软件诊断、TcSyslog 日志抓取、CRC 与 Online State 判读、典型失效模式分类,一直到换模块和 CF 卡备份,串成了一条能照着走的排查链路。适合做产线调试、设备维护、系统集成的从业者,尤其是手里有 TwinCAT 2 主站、又不想每次故障都靠猜的人。
2. EtherCAT 通讯机制与 TwinCAT 状态机:先搞懂报文怎么走
2.1 从站端口与帧转发顺序决定了故障点在哪
EtherCAT 从站通常有 4 个通讯口,标为 Port0(A 口)到 Port3(D 口)。报文经过从站时不是先收下来再解码,而是由从站内的 FMMU 在帧经过的瞬间读取编址数据、同时把输入数据插回报文,整个过程只有几纳秒延迟。这个机制决定了排查思路:故障不是“某个设备没响应”这么简单,而是“报文在哪一段回不来了”。
从站实际使用的端口数量不同,帧的通讯顺序也不同。2 口从站是 0→处理单元→1,反向 1→0;3 口从站可能是 0→1→2→0,也可能是 0→3→1→0;4 口从站是 0→3→1→2→0。没接设备的端口会自动锁闭,信号继续往下传。现场常见的 EK1100 是两端口耦合器,信号从左到右走 Port0 进、Port1 出,从右到左走 Port1 进、Port0 出。
真正有用的是故障时的返回行为。如果某个模块通讯有问题,它前面那个模块会自动闭锁 B 口,让报文原路返回。如果网线导致 Tx 和 Rx 都断,报文就在断点前面的模块处返回。如果 Tx 正常、Rx 断,主站能把报文发到拓扑末端,但回程收不到,连续 10 个周期没有回复后,主站状态字会被置为 INIT。这条规则是后面判读 Online State 和 CRC 的基础,先记住:报文回不来,先怀疑回程路径,而不是整条链路。
2.2 TwinCAT 的四种颜色和 Base Time 参数
TwinCAT System Manager 是配置中心,任务栏图标颜色直接反映系统状态:红是停止模式,蓝是配置模式,黄是正在启动,绿是运行模式。现场排查时先看这个图标,比翻日志快。System-Configuration 里的 Auto boot 决定服务启动后进入 RUN MODE 还是 Config MODE,调试阶段一般放 Config MODE,避免上电就带载运行。
Base time 最低可设 50 微秒,本质是把 Windows 时间切成片,TwinCAT 在片内跑 PLC 和运动控制。CPU Limit 默认 80%,意思是 1ms 里 80% 给 TwinCAT,20% 留给 Windows 进程。所有任务周期都是 Base time 的倍数,比如要 500 微秒的 PLC 周期,可以把 Base time 设 500 微秒、任务周期设 1 倍,或者 Base time 设 250 微秒、任务周期设 2 倍。这个参数和故障排查的关系在于:周期设得过紧、CPU Limit 又压得高,容易出现看门狗触发和帧丢失,表现和真实总线故障很像,排查前先确认这两个值没有被改乱。
I/O 配置可以在 Configuration Mode 下点 I/O Devices → Append Device 手动加,也可以 Scan Devices 自动扫描。扫描时会提示不是所有设备都能自动获取,点确定继续即可。Free run 模式是调试用的,会自动给 I/O 一个 4ms 的 Task,右下角图标在 config 和 free run 之间闪烁,适合在不跑 PLC 程序的情况下看模块输入输出状态。
3. 硬件诊断:三款模块的指示灯就是第一手日志
3.1 CX5020 与 EK1100 的灯语对照
CX5020 是带 1.6GHz 处理器、WinCE 系统、TwinCAT 2 PLC run-time 的嵌入式控制器,两个独立 LAN 口都支持 10/100/1000 Mbit。状态灯里,PWR 绿灯是电源正常;TC 灯绿是运行、红是停止、蓝是配置;HDD 闪红是读写闪存;FB1 和 FB2 亮红表示现场总线状态异常。网口上部的 LINK/ACT 绿灯闪烁表示已连接且有数据交换,下部 SPEED 灯绿色是 10/100 Mbit、红色是 1000 Mbit。E-bus 电源灯 Us 和 Up 正常都是绿色,L/A 灯灭是没连接、亮是连接但无数据、闪是连接且有数据。
EK1100 负责把 100BASE-TX 以太网报文转成 E-bus 信号,一个站由它加任意多个 EL 端子组成。它的 RUN 灯直接对应 EtherCAT 状态机:灭是 INIT,慢闪是 PREOP,闪一次是 SAFEOP,常亮是 OP,快闪是 BOOT(固件更新)。LINK/ACT 分三组:E-Bus 那组看后端总线,X1 看前一个 EtherCAT 设备,X2 看后一个设备,灭/亮/闪分别对应未连接/已连接无数据/已连接有数据。现场判断“是前面断还是后面断”,看 X1 和 X2 就够了,比拿表量线快。
3.2 BK1250 的闪烁次数是定位后端模块的钥匙
BK1250 装在端子模块之间,用于 EtherCAT 端子(ELxxxx)和标准总线端子(KLxxxx)混用。它有两个关键故障灯:ERROR 红灯慢闪表示 PLC 错误或丢帧;I/O ERROR K-bus 红灯的闪烁次数直接对应故障类型。连续慢闪是 EMC 问题;闪 1 次是 EEPROM 校验错误或代码缓冲区溢出;闪 2 次是编程配置有错误表项;闪 3 次是 K 总线命令错误;闪 4 次是 K 数据错误或超出总线耦合器/端子模块;闪 5 次是第 n 个总线端子模块寄存器通信的 K 总线错误;闪 14 次是第 n 个模块格式错误;闪 15 次是模块个数不正确;闪 16 次是 K 总线数据长度不正确。
手册里那个例子值得抄下来:上电后 I/O ERROR K-bus 先闪 14 次,隔约 1 秒再闪 5 次,然后高速闪烁并循环。查表得知 14 次对应第 5 个总线端子模块格式错误(n=5),拆掉 BK1250 后端第 5 个模块再上电,故障消失。这里的关键动作是“数闪烁次数并记录间隔”,不是看一眼红灯就换模块。数的时候用手机慢动作录像,回放数,比肉眼靠谱。
4. 软件诊断:WorkingCounter、状态字与 TcSyslog 怎么读
4.1 Sync unit 划分与 WcState 判读
默认情况下整个系统是一个同步单元,所有从站的读写都算进一个 WorkingCounter:读一次 +1,写一次 +2,读写一次 +3。主站把收到的 WKC 和“ShouldBe”值比对,相等则 WcState=0,不等则 WcState=1。问题是一个 WcState=1 只能告诉你“这个组里有问题”,定位不到具体模块。所以手册建议按物理柜、通讯模块、特殊模拟量模块(如编码器)、客户需要单独监测的模块分别划 Sync unit,让每个组有自己的 WKC。
划分之后,每个模块还有自己的 state 位,值为 8 表示正常运行。同步单元 WcState=0 意味着组内所有模块都在 OP 且通讯正常;WcState=1 可能是通讯问题,也可能是有模块不在 OP。FrmnWcState 的每一位对应一个同步单元的 WcState,比如 Frm0WcState 的 bit0 到 bit15 分别对应第 1 到第 15 个 EtherCAT 命令,bit15(0x8000)表示整帧丢失。一个 EtherCAT Frame 最多传 16 个命令,所以同步单元数量要控制在这个范围内。
行为上有个细节必须知道:某个同步单元 WcState=1 时,DI/AI 值保持上一周期不变;DO/AO 则看模块自身 state,state=8 时仍按 PLC 程序输出,state 不为 8 时输出被置 0。这意味着故障时输出可能“看起来还在动”,排查时不能只看执行机构动作,要看 WcState 和 state 位。
4.2 主站与从站状态字的位定义
主站侧四个诊断量:Frame State 是 UINT,每一位表示一个 EtherCAT 命令是否执行成功,0 成功、1 失败,比如 Frm0State=0x0004 表示数据帧 0 的第 3 个命令失败;Frame Working Counter State 就是上面的 WcState;Slave Count 是实际收到的从站数,CfgSlaveCount 是配置的从站数,两者不等就说明有从站在通讯中丢失;Device State Master 是快速报警值,bit0 链路错误、bit1 链路错误后 I/O 锁定需复位、bit5 看门狗触发、bit8 至少一个设备在 INIT、bit9 在 PREOP、bit10 在 SAFEOP、bit11 至少一个设备报错、bit12 分布式时钟不同步。它只能告诉你“有站不正常”,定位还得往下看从站。
从站侧看两个量:WcState(1 bit)和 Slave State(16 bit)。WcState=0 表示该从站数据交换正确,=1 表示刷新输入或输出时 WKC 不正确。Slave State 正常为 8,不为 8 时该从站故障,同时 WcState 也会变 1。同一个同步单元同一个命令下可能挂多个子站,主站只报命令无效时,就逐个看子站的 WcState 和 Slave State 来锁定问题模块。
4.3 TcSyslog 抓取与 CRC、Online State 判读
TcSyslog 是 TwinCAT 的故障记录文件,抓取分三步:先开通 FTP 功能,再开启 TcSyslog 记录,然后用 FTP 把 tcsyslog.txt 拷出来分析。现场常见做法是在控制器上启用 FTP 服务,用资源管理器或命令行连上去取文件,注意取完就关掉 FTP,别长期开着。日志里重点看时间戳附近的错误码和从站地址,和前面的状态字对得上。
CRC 与 change count 用来判断物理层质量:CRC 错误增长说明线缆、接头或电磁干扰有问题;change count 异常增长说明链路在反复重连。Online State 则结合端口锁闭行为判断断点位置——如果某个从站 Online State 显示端口异常,而它前一个模块的 B 口已闭锁,故障点就在这两者之间。EtherCAT 拓扑图功能可以把实际扫描到的从站顺序画出来,和设计图纸对比,接错线、少接模块一眼就能看出来。Emergency Scan 用于扫描总线上的紧急报文,适合在常规状态字都正常但偶发故障时补一刀。
5. 避坑清单:这几处翻车最多
5.1 把 WcState=1 直接当成模块坏了
现象:看到某个同步单元 WcState=1,现场直接换模块,换完还是报警。原因:WcState=1 只说明该组 WKC 不匹配,可能是组内有模块不在 OP,也可能是配置的从站数和实际不一致,甚至只是 Sync unit 划得太粗。解决:先比 SlaveCount 和 CfgSlaveCount,再逐个子站看 Slave State 是否为 8,最后才动硬件。同步单元按柜子和通讯模块拆细,是预防这类误判的前置动作。
5.2 数 BK1250 闪烁次数数错
现象:红灯闪得很快,肉眼数出 13 次或 15 次,拆错模块。原因:闪烁间隔短、循环播放,人眼容易丢帧。解决:手机慢动作录像回放数,或者等它循环两轮再确认;同时记录“闪几次—停多久—再闪几次”的完整序列,手册里的例子就是 14 次、间隔约 1 秒、5 次、高速闪,单看一个数字会误判。
5.3 忽略 Tx 正常但 Rx 断的特殊失效
现象:主站能发报文,拓扑末端模块也亮,但主站状态很快掉到 INIT,现场以为是主站网卡问题。原因:Tx 线正常、Rx 线断时,报文能发到最后一个模块,回程中断,主站连续 10 个周期收不到回复就置 INIT。解决:看从站 Online State 和端口锁闭情况,重点查回程路径上的网线和接头,而不是只查发送方向。这类故障用“换主站”去试,基本是白换。
5.4 调试期把 Base time 和 CPU Limit 改乱
现象:偶发看门狗触发、帧丢失,和真实总线故障表现一样。原因:Base time 设得过小、CPU Limit 压得过高,Windows 侧进程抢占导致 TwinCAT 任务超时。解决:排查前先确认 Base time 和 CPU Limit 是设计值,任务周期是 Base time 的整数倍;Free run 模式只用于调试,别在正式运行里长期开着。
5.5 换模块前没做 CF 卡备份
现象:模块换完,配置丢了,产线多停半天。原因:CX5020 这类控制器带 CF 卡,配置和程序在里面,换硬件前没备份。解决:按手册的 CF 卡数据备份流程先备份再动手;TcSyslog 取完就关 FTP;换模块后重新扫描 I/O、核对 SlaveCount 与 CfgSlaveCount 一致再进 OP。
6. 把排查流程固化成一张检查表:我的收尾习惯
这份手册最值钱的不是某一页,而是它把“硬件灯语—主站状态字—从站状态字—日志—拓扑”串成了固定顺序。我现在的习惯是把它压成一张检查表,每次故障按顺序走,不跳步:
| 顺序 | 检查项 | 判据 | 下一步 |
|---|---|---|---|
| 1 | TwinCAT 图标颜色 | 红/蓝/黄/绿 | 非绿先查服务与 Auto boot |
| 2 | CX5020 的 TC、FB1/FB2、L/A | 灯语对照 | 定位主站侧还是总线侧 |
| 3 | EK1100 的 RUN、X1、X2 | OP 常亮、X1/X2 闪烁 | 判断断点在前段还是后段 |
| 4 | BK1250 的 I/O ERROR K-bus | 闪烁次数序列 | 按次数锁定后端第 n 个模块 |
| 5 | SlaveCount vs CfgSlaveCount | 是否相等 | 不等查丢失从站 |
| 6 | Frm0WcState 与各子站 Slave State | WcState=0、State=8 | 锁定具体同步单元和子站 |
| 7 | CRC、change count、Online State | 是否异常增长 | 查线缆、接头、干扰 |
| 8 | TcSyslog | 时间戳附近错误码 | 与前面结论交叉验证 |
| 9 | 拓扑图与 Emergency Scan | 与设计图纸比对 | 查接错线、少接模块 |
| 10 | 换模块前 CF 卡备份 | 备份完成 | 再动手换硬件 |
这张表可以直接抄进现场作业指导书。参数上再补两个容易忽略的点:同步单元数量控制在 16 个命令以内,超了就要拆帧;Frm0WcState 的 bit15 是整帧丢失,看到它先查物理链路而不是查单个从站。验证方法也简单:在 Configuration Mode 下用 Free run 逐个点模块看输入输出,再切回运行模式比对 WcState,两步都过再交付。
血泪经验是,最早我也犯过“看到红灯就换模块”的毛病,结果换下来的模块拿回实验室是好的,真正的问题在回程网线。从那以后我每次上电前都强制走一遍“先灯语、再状态字、最后日志”的顺序,哪怕看起来只是个小报警。希望帮到你。
本文还有配套的精品资源,点击获取