一、核心结论(先记这个)
台达 PLC 发脉冲控制伺服(Y0/Y1/Y2 等高速脉冲输出),发送的总脉冲数存在专门的特殊寄存器里,不需要自己累加,PLC 自动记录。
台达 PLC 脉冲输出专用寄存器(最常用)
1)台达 DVP-ES2/EX2/EC3/ES3/SS2 通用型(最常见)
D1050 = Y0 已发送脉冲总数(32 位,D1051 是高字)
D1060 = Y1 已发送脉冲总数(32 位,D1061 是高字)
D1070 = Y2 已发送脉冲总数(32 位,D1071 是高字)
2)台达 DVP-PM/MC 运动控制型
用 CRxx 运动控制寄存器
最常用:CR116 = 轴 1 实际输出脉冲
你只要读这些寄存器,就是 PLC 真正发给伺服的脉冲数!
二、怎么读?(2 种用法)
方法 1:程序里直接读取(最常用)
直接把特殊寄存器传送到你自己的寄存器里使用:
plaintext
MOV D1050 D0 // 把Y0发的脉冲数读到D0(低字) MOV D1051 D1 // 高字
如果你要 32 位完整读取(脉冲数很大时必须用):
plaintext
DMOV D1050 D10 // D10低32位 = Y0总输出脉冲(直接用)
方法 2:PLC 软件在线监控(调试看)
打开 WPLSoft / ISPSoft
进入 监控模式
直接输入寄存器:
看 Y0 脉冲:D1050
看 Y1 脉冲:D1060
实时变化,就是当前发出去的脉冲总数。
三、关键注意点(现场必看)
这些寄存器是 32 位!发长距离一定要用 DMOV,不要用 MOV,否则数值会溢出乱跳。
断电不保存,发脉冲才会增加只有 PLC 输出脉冲给伺服时,数值才会涨。
如何清零?很多人需要回零后清空脉冲计数:
plaintext
// 清除Y0脉冲计数 MOV K0 D1050 MOV K0 D1051
或者用回零完成信号自动清零。
只能读 PLC 发出的脉冲,不是伺服实际位置如果你要读伺服电机真正走了多少,需要:
伺服接编码器反馈
用高速计数读取但你现在问的是 PLC 发给伺服的脉冲 → 直接读 D1050/D1060 就对了。
四、最简单总结
Y0 发脉冲 → 读 D1050(32 位)
Y1 发脉冲 → 读 D1060(32 位)
DMOV D1050 D10 就能读到总脉冲数
监控、程序运算、显示都可以直接用。

