英威腾PLC与伺服EtherCAT通信状态机卡在Pre-Operational的PDO映射修复

发布于 2026-03-14 05:29:46 · 浏览 5 次 · 评论 0 条

EtherCAT通信以其高速实时性著称,但在实际工业自动化项目调试中,状态机卡在 Pre-Operational(预运行)状态是极为常见的故障。此时伺服驱动器无法接收PLC的控制指令,导致设备停机。本文将以英威腾(Inovance)PLC与伺服系统为例,深入解析PDO(过程数据对象)映射错误的修复流程,帮助工程师快速恢复生产。


一、 故障现象与状态机原理分析

在开始排查前,必须明确EtherCAT状态机(ESM)的转换逻辑。EtherCAT从站初始化过程需经历四个核心状态:Init -> Pre-Op -> Safe-Op -> Op

当系统卡在 Pre-Operational 状态时,意味着从站已经成功建立了基本的邮箱通信,但未能完成过程数据映射。此时主站(PLC)与从站(伺服)无法进行实时数据交换。

以下是状态机转换失败逻辑的示意:

graph LR A["Init State"] -- "初始化邮箱通信" --> B["Pre-Operational"] B -- "配置PDO映射与SM设置" --> C["Check Configuration"] C -- "配置匹配成功" --> D["Safe-Operational"] C -- "配置错误: 长度/索引不匹配" --> E["Stuck in Pre-Op"] D -- "输出数据有效" --> F["Operational"]

导致卡在 Pre-Op 的核心原因通常有三点:

  1. PDO映射对象不存在:PLC中配置的参数索引在伺服驱动器中未开放或不支持。
  2. 数据长度不一致:PLC配置的发送/接收数据长度与伺服实际定义的长度不符。
  3. SM(同步管理器)配置冲突:内存地址分配重叠或模式设置错误。

二、 前期准备:硬件与基础连接排查

在深入软件配置前,需先排除物理层干扰。

  1. 检查 网线连接状态。观察PLC端口与伺服驱动器端口的指示灯。正常通信下,Link灯应常亮,Active灯应快速闪烁。若灯灭,更换 工业级超五类或六类屏蔽网线。
  2. 确认 拓扑结构。若使用星型耦合器,检查 耦合器供电是否正常。 EtherCAT通常推荐手拉手(线性)拓扑,若为星型,需确认交换机是否支持EtherCAT数据帧透传。
  3. 观察 伺服驱动器LED显示屏。若显示 EC00 或类似代码,表示EtherCAT链路断开;若显示 EC01 或通信中代码但PLC报错,则进入软件配置排查阶段。

三、 核心修复步骤:ESI文件与设备描述

ESI(EtherCAT Slave Information)文件是PLC识别伺服驱动器能力的“说明书”。文件版本不匹配是导致PDO映射失败的常见原因。

1. 获取与更新ESI文件

  1. 访问 英威腾官网技术支持板块,下载对应型号伺服驱动器的最新版ESI文件压缩包(通常为 .xml 格式)。
  2. 解压 文件至英文路径文件夹(路径中禁止包含中文字符或空格)。
  3. 打开 PLC编程软件(如InoPro Pack或AutoStation)。
  4. 进入 设备仓库管理界面,点击 “安装设备”按钮,选择 解压后的 .xml 文件进行导入。
  5. 重启 PLC编程软件,确保新设备描述生效。

2. 扫描与配置从站

  1. 打开 项目树中的“通信配置”窗口。
  2. 选择 目标网卡接口,点击 “扫描网络”。
  3. 确认 扫描到的伺服驱动器图标显示正常。若图标旁有黄色感叹号,双击 图标查看详细诊断信息。

四、 关键实操:PDO映射修复详解

这是解决状态机卡顿的核心环节。PDO映射决定了PLC与伺服之间交换哪些数据(如控制字、状态字、目标位置等)。

步骤1:读取从站实际配置

  1. 连接 PLC与伺服,确保处于在线调试状态。
  2. 双击 伺服设备图标,进入 “EtherCAT从站配置”选项卡。
  3. 点击 “从站读取”功能。此操作将从伺服驱动器中读取当前的SM(同步管理器)和PDO默认配置。
  4. 观察 “过程数据”选项卡中的“输入数据”和“输出数据”区域。

步骤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)

操作动作

  1. 展开 项目树中的“TxPDO”或“RxPDO”映射列表。
  2. 删除 任何标红或显示“无效”的映射条目。
  3. 添加 必需的映射条目。例如,若需控制位置模式,添加 0x6040(控制字)和 0x607A(目标位置)。
  4. 注意 数据长度计算。若PLC端配置了6个字节的输出(控制字2字节+目标位置4字节),而伺服端SM配置定义为4字节,状态机将拒绝进入 Safe-Op

步骤3:修复SM(同步管理器)配置

PDO映射的修改必须同步更新SM配置。SM负责定义数据在从站内存中的存取区域。

  1. 切换 至“SM配置”选项卡。
  2. 检查 SM0(邮箱输出)和SM1(邮箱输入)配置,通常由ESI文件自动生成,无需手动修改。
  3. 重点检查 SM2(过程数据输出)和SM3(过程数据输入)。
  4. 确认 “长度”字段。
    • SM2长度应等于所有RxPDO对象字节数之和。
    • SM3长度应等于所有TxPDO对象字节数之和。
  5. 应用 修改后,下载 配置至PLC。

五、 进阶诊断:CoE对象字典一致性检查

若上述步骤完成后仍卡在 Pre-Op,需通过CoE(CANopen over EtherCAT)在线读取驱动器内部的映射参数 0x1600(RxPDO映射)和 0x1A00(TxPDO映射)。

诊断逻辑

PLC发送的映射请求必须与驱动器内部 0x16000x1A00 中的内容物理对应。

  1. 打开 在线变量监视窗口。
  2. 输入 索引 0x1600监视 子索引 0x00。该值代表映射对象的数量。
  3. 逐个监视 子索引 0x010x0N
    • 数据格式为:索引(16bit) + 子索引(8bit) + 位长度(8bit)
    • 例如,监视值为 0x60400010,解析为:索引 0x6040,子索引 0x00,长度 16bit(2字节)。
  4. 对比 PLC配置界面中的变量列表。
    • 若PLC配置了 0x607A(目标位置),但驱动器 0x1600 中未包含此索引,通信将失败。
  5. 修复方法
    • 方法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)功能测试是否为同步信号问题。

七、 验证与运行

完成配置修改后,执行以下验证步骤:

  1. 点击 编程软件中的“复位”按钮,将EtherCAT主站状态重置为 Init
  2. 重新启动 PLC运行控制。
  3. 观察 通信状态灯或软件界面状态栏。
    • 若状态顺利流转至 Op,表示修复成功。
    • 若仍卡在 Pre-Op右键点击 从站图标,选择 “诊断信息”,查看 “AL状态码”。
  4. 测试 运动控制功能。在程序中置位 Enable(使能)信号,观察伺服驱动器是否解锁,确认状态字 0x6041 的数值变化正常。

通过精确匹配PDO映射对象、校验SM数据长度以及核对ESI文件版本,即可系统性解决英威腾PLC与伺服EtherCAT通信中状态机卡在 Pre-Operational 的故障。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文