电话/手机:联系客服
求助:S7-1200 控制 V90 PN 伺服,走 EPOS 控制。
每次开机回零(Homing)都没问题。但奇怪的是,设备连续运行 48 小时左右,如果中间触发了一次急停,再重新回零,伺服就一直报错‘找不到参考点’。
挡块感应器信号我监控了,进 PLC 是正常的。
必须要把伺服驱动器断电重启,它才能重新认回这个挡块信号。
驱动器固件是最新的,V-Assistant 里看信号也对。为什么运行久了就‘间歇性失忆’?难道是 PN 通信丢包影响了内部锁存?”
优质评论内容
这事我不太像会先怀疑 PN 丢包。
更像是 急停后的回零状态机没有被完整复位,或者参考点状态 AxisRef 已经丢了,但 PLC 侧又没有按要求重新走一遍“清错→重新使能→回零上升沿”的序列。西门子文档里把 AxisRef 定义为“参考点已设定”,而通信类故障会单独报 16#8600/16#8601 这类 DPRD/DPWR_DAT 错误;所以如果你现在看到的是“找不到参考点”而不是通信错误码,方向更应放在 驱动内部回零/参考点逻辑,不是总线随机丢包。
你这个现象里,最关键的两点是:
第一,V90 PN 的 EPOS 回零不是“看到挡块信号就一定算成功”,而是要按配置的回零模式走完整流程。官方资料写得很明确,EPOS 下增量编码器常用的模式包括:
p29240 = 1:外部参考挡块 REF + 编码器零脉冲
p29240 = 2:只有编码器零脉冲
并且在开始回零前,要先确认 REF/SREF 的信号源分配正确。也就是说,PLC 里看到挡块输入正常,不等于驱动当前真的把它当成有效 REF 去参与这次回零。
第二,BasicPosControl 的回零触发本身要求一个 上升沿。西门子的示例里,回零是 ModePos = 4,然后给 ExecuteMode 一个 rising edge 才启动;同时块里还有 AckError 专门用于清错。很多现场问题其实不是传感器坏,而是急停后:
故障没被真正确认清掉
EnableAxis 没完整掉再上
ExecuteMode 没重新产生干净上升沿
结果看起来像“挡块失忆”,其实是 回零命令没有被驱动重新接受。
我更怀疑的几个点,按概率排:
1. 急停方式把回零过程打断后,AxisRef 被清掉,但程序没有完整重建状态。
V90 文档里说明 AxisRef 就是“参考点已设定”。急停尤其是 OFF3,本质上是以最大转矩制动,不是普通停机。被这样打断后,驱动很可能已经不再认为轴处于已参考状态。
2. 你现在用的是 REF + 零脉冲 模式,挡块信号虽然进 PLC 正常,但驱动侧这次没真正捕获到有效参考流程。
这尤其容易发生在急停后方向、速度、接近顺序不完全符合原来回零条件的时候。文档里也强调要在开始回零前检查 REF/SREF 的信号源。
3. 不是 PN 丢包。
如果真是 PROFINET 读写异常,BasicPosControl 更应该给出通信类状态,如 16#8600/16#8601。你现在是“找不到参考点”,这更像技术对象/驱动回零逻辑问题。
你现在最值得做的,不是先断电试,而是先在线抓这几个量:
AxisRef
AxisError
ActFault
Status
ExecuteMode
EnableAxis
驱动侧 REF 实际二进制信号
西门子自己的 BasicPosControl 示例也建议在诊断页监控这些状态。
建议你按这个顺序试:
先做一个完整的软件复位序列,不要直接再按一次回零:
急停恢复后,先 AckError = 1 一个脉冲
EnableAxis = 0 保持几百毫秒,再置 1
确认 AxisError = 0、Lockout = 0、AxisEnabled = 1
把 ModePos 明确切到 4
给 ExecuteMode 一个单独的上升沿
观察 AxisRef 是否从 0 重新变 1。
这个顺序比“再点一次回零”靠谱很多。
如果你用的是 p29240 = 1(REF + 零脉冲),我会特别建议你做个 A/B 测试:
把回零方式临时改成 p29240 = 2(只有编码器零脉冲) 做验证。
如果这样急停后就稳定能重新回零,那问题基本就锁定在 参考挡块 REF 这条链路的驱动侧识别或时序,不是 PN,也不是挡块本体。
再补一个细节:
如果是绝对值编码器,V90 对回零模式还有额外限制;文档里写了某些模式在“零位已经设定后”不再生效。所以也要确认你到底是增量还是绝对值。
我现在的判断是:
不像“48 小时后驱动失忆”,更像“急停后回零状态机没被正确复位,或 REF 模式下驱动没有重新接受这次参考挡块”。