EtherCAT从站错误0x001D调试指南
问题现象
配置9个Output PDO(总计288字节)时触发错误代码0x001D
,从站状态切换至SAFEOP
失败
一、问题根因分析
1. DPRAM地址冲突
-
错误触发条件:
PDO在DPRAM中的地址区域与其他同步管理器(Sync Manager)或邮箱(Mailbox)内存区域重叠。
-
日志关键参数:
nEscAddrOutputData: 4352 (0x1100) nPdOutputSize: 288 nPdOutputBuffer: 3 u16EscAddrSendMbx: 4224 (0x1080) u16SendMbxSize: 128
计算得PDO输出区域:
4352 + 288*3 = 5216 (0x1450)
,与邮箱发送区域4224~4352
冲突。
2. 同步管理器配置限制
-
原始Sync Manager配置:
问题本质:
输出PDO区域SM2
配置为3 Buffer模式(nPdOutputBuffer=3
),实际可用空间需满足:总空间 = SM2长度 / Buffer数 = 0x0300 (768字节) / 3 = 256字节 但配置需求为288字节,超出限制导致溢出。
二、解决方案
1. 调整DPRAM地址分配
-
修改前:
RXPDO起始地址:0x1100(4352) TXPDO起始地址:0x1400(5120)
-
修改后:
TXPDO起始地址调整至0x1D00(7424),释放SM2区域空间: 可用空间 = 0x1D00 - 0x1100 = 0xC00(3072字节) 实际可用空间 = 3072 / 3(Buffer模式) = 1024字节
2. 更新ESI文件并烧录
-
编辑ESI文件:
-
烧录配置至EEPROM:
-
主站重新加载设备描述:
-
TwinCAT操作路径:
EtherCAT Devices → 右键从站 → Reload Device Descriptions → 重新扫描设备
-
三、验证与优化
1. 验证步骤
-
检查Sync Manager状态:
在TwinCAT的“Online”视图中确认SM2的起始地址和长度已更新。
-
读写测试:
通过主站向新地址写入数据,监控从站响应及DPRAM数据变化。