EtherCAT通信以其高速实时性著称,但在实际工业自动化项目调试中,状态机卡在 Pre-Operational(预运行)状态是极为常见的故障。此时伺服驱动器无法接收PLC的控制指令,导致设备停机。本文将以英威腾(Inovance)PLC与伺服系统为例,深入解析PDO(过程数据对象)映射错误的修复流程,帮助工程师快速恢复生产。
一、 故障现象与状态机原理分析
在开始排查前,必须明确EtherCAT状态机(ESM)的转换逻辑。EtherCAT从站初始化过程需经历四个核心状态:Init -> Pre-Op -> Safe-Op -> Op。
当系统卡在 Pre-Operational 状态时,意味着从站已经成功建立了基本的邮箱通信,但未能完成过程数据映射。此时主站(PLC)与从站(伺服)无法进行实时数据交换。
以下是状态机转换失败逻辑的示意:
导致卡在 Pre-Op 的核心原因通常有三点:
- PDO映射对象不存在:PLC中配置的参数索引在伺服驱动器中未开放或不支持。
- 数据长度不一致:PLC配置的发送/接收数据长度与伺服实际定义的长度不符。
- SM(同步管理器)配置冲突:内存地址分配重叠或模式设置错误。
二、 前期准备:硬件与基础连接排查
在深入软件配置前,需先排除物理层干扰。
- 检查 网线连接状态。观察PLC端口与伺服驱动器端口的指示灯。正常通信下,Link灯应常亮,Active灯应快速闪烁。若灯灭,更换 工业级超五类或六类屏蔽网线。
- 确认 拓扑结构。若使用星型耦合器,检查 耦合器供电是否正常。 EtherCAT通常推荐手拉手(线性)拓扑,若为星型,需确认交换机是否支持EtherCAT数据帧透传。
- 观察 伺服驱动器LED显示屏。若显示
EC00或类似代码,表示EtherCAT链路断开;若显示EC01或通信中代码但PLC报错,则进入软件配置排查阶段。
三、 核心修复步骤:ESI文件与设备描述
ESI(EtherCAT Slave Information)文件是PLC识别伺服驱动器能力的“说明书”。文件版本不匹配是导致PDO映射失败的常见原因。
1. 获取与更新ESI文件
- 访问 英威腾官网技术支持板块,下载对应型号伺服驱动器的最新版ESI文件压缩包(通常为
.xml格式)。 - 解压 文件至英文路径文件夹(路径中禁止包含中文字符或空格)。
- 打开 PLC编程软件(如InoPro Pack或AutoStation)。
- 进入 设备仓库管理界面,点击 “安装设备”按钮,选择 解压后的
.xml文件进行导入。 - 重启 PLC编程软件,确保新设备描述生效。
2. 扫描与配置从站
- 打开 项目树中的“通信配置”窗口。
- 选择 目标网卡接口,点击 “扫描网络”。
- 确认 扫描到的伺服驱动器图标显示正常。若图标旁有黄色感叹号,双击 图标查看详细诊断信息。
四、 关键实操:PDO映射修复详解
这是解决状态机卡顿的核心环节。PDO映射决定了PLC与伺服之间交换哪些数据(如控制字、状态字、目标位置等)。
步骤1:读取从站实际配置
- 连接 PLC与伺服,确保处于在线调试状态。
- 双击 伺服设备图标,进入 “EtherCAT从站配置”选项卡。
- 点击 “从站读取”功能。此操作将从伺服驱动器中读取当前的SM(同步管理器)和PDO默认配置。
- 观察 “过程数据”选项卡中的“输入数据”和“输出数据”区域。
步骤2:核对映射对象索引
假设伺服需要接收目标位置与控制字,PLC配置中必须包含对应的对象字典索引。常见错误是配置了驱动器不支持的对象。
以下为英威腾伺服常用的标准PDO对象索引对照表:
| 对象名称 | 索引 | 子索引 | 数据类型 | 长度 | 方向 |
|---|---|---|---|---|---|
| 控制字 | 0x6040 |
0x00 |
UINT16 | 2 Byte | Output (RxPDO) |
| 目标位置 | 0x607A |
0x00 |
DINT32 | 4 Byte | Output (RxPDO) |
| 目标速度 | 0x60FF |
0x00 |
DINT32 | 4 Byte | Output (RxPDO) |
| 状态字 | 0x6041 |
0x00 |
UINT16 | 2 Byte | Input (TxPDO) |
| 实际位置 | 0x6064 |
0x00 |
DINT32 | 4 Byte | Input (TxPDO) |
| 错误代码 | 0x603F |
0x00 |
UINT16 | 2 Byte | Input (TxPDO) |
操作动作:
- 展开 项目树中的“TxPDO”或“RxPDO”映射列表。
- 删除 任何标红或显示“无效”的映射条目。
- 添加 必需的映射条目。例如,若需控制位置模式,添加
0x6040(控制字)和0x607A(目标位置)。 - 注意 数据长度计算。若PLC端配置了6个字节的输出(控制字2字节+目标位置4字节),而伺服端SM配置定义为4字节,状态机将拒绝进入
Safe-Op。
步骤3:修复SM(同步管理器)配置
PDO映射的修改必须同步更新SM配置。SM负责定义数据在从站内存中的存取区域。
- 切换 至“SM配置”选项卡。
- 检查 SM0(邮箱输出)和SM1(邮箱输入)配置,通常由ESI文件自动生成,无需手动修改。
- 重点检查 SM2(过程数据输出)和SM3(过程数据输入)。
- 确认 “长度”字段。
- SM2长度应等于所有RxPDO对象字节数之和。
- SM3长度应等于所有TxPDO对象字节数之和。
- 应用 修改后,下载 配置至PLC。
五、 进阶诊断:CoE对象字典一致性检查
若上述步骤完成后仍卡在 Pre-Op,需通过CoE(CANopen over EtherCAT)在线读取驱动器内部的映射参数 0x1600(RxPDO映射)和 0x1A00(TxPDO映射)。
诊断逻辑
PLC发送的映射请求必须与驱动器内部 0x1600 或 0x1A00 中的内容物理对应。
- 打开 在线变量监视窗口。
- 输入 索引
0x1600,监视 子索引0x00。该值代表映射对象的数量。 - 逐个监视 子索引
0x01至0x0N。- 数据格式为:
索引(16bit)+子索引(8bit)+位长度(8bit)。 - 例如,监视值为
0x60400010,解析为:索引0x6040,子索引0x00,长度16bit(2字节)。
- 数据格式为:
- 对比 PLC配置界面中的变量列表。
- 若PLC配置了
0x607A(目标位置),但驱动器0x1600中未包含此索引,通信将失败。
- 若PLC配置了
- 修复方法:
- 方法A:修改PLC配置,移除驱动器不支持的对象。
- 方法B:通过PLC程序或调试软件,向驱动器
0x1600对应子索引写入正确的映射值(需驱动器支持动态映射)。写入顺序必须遵循:先写子索引数量为0(清空),再逐个写入映射值,最后写子索引数量(生效)。
六、 典型故障代码解析与处理
在英威腾系统中,状态机卡在 Pre-Op 时,PLC通常会报错。以下是常见错误代码及其处理方案:
| 错误代码 | 故障描述 | 可能原因 | 解决方案 |
|---|---|---|---|
0x1A01 |
SM配置无效 | SM通道地址或长度不匹配 | 重新计算 PDO总长度,手动修正SM2/SM3长度配置。 |
0x0602 |
对象不存在 | 请求映射的对象索引在从站中未找到 | 更新 ESI文件,或删除 PLC端配置中不存在的PDO对象。 |
0x0607 |
数据类型不匹配 | 主站定义的数据类型与从站定义不一致 | 检查 0x607A 等对象是定义为 DINT 还是 UDINT,修正PLC数据类型。 |
0x1B00 |
通用PDO错误 | 同步管理器配置冲突 | 检查 SM配置中的“操作模式”是否为“正常模式”,禁用 分布时钟(DC)功能测试是否为同步信号问题。 |
七、 验证与运行
完成配置修改后,执行以下验证步骤:
- 点击 编程软件中的“复位”按钮,将EtherCAT主站状态重置为
Init。 - 重新启动 PLC运行控制。
- 观察 通信状态灯或软件界面状态栏。
- 若状态顺利流转至
Op,表示修复成功。 - 若仍卡在
Pre-Op,右键点击 从站图标,选择 “诊断信息”,查看 “AL状态码”。
- 若状态顺利流转至
- 测试 运动控制功能。在程序中置位
Enable(使能)信号,观察伺服驱动器是否解锁,确认状态字0x6041的数值变化正常。
通过精确匹配PDO映射对象、校验SM数据长度以及核对ESI文件版本,即可系统性解决英威腾PLC与伺服EtherCAT通信中状态机卡在 Pre-Operational 的故障。

暂无评论,快来抢沙发吧!