应用场景:
smart带一台信捷的伺服系统,脉冲控制,单圈绝对编码器。脉冲线Q0.0和Q0.2(脉冲+方向)接到伺服驱动器接口,接口在接两根线返回到I0.0和I0.1(HSC0),都是屏蔽线,滤波时间设置到1.6us。向导组态运动指令。另外MODBUS RTU读取伺服驱动器的编码器位置数据,读数据约50次/秒,PLC扫描周期,最小1ms,最大5ms。
测试程序的逻辑:
SM0.1使能HSC0,当前值更新为0;-----
用RSEEK回零,回零后,更新HSC0的当前值和预置值,同时记录伺服的位置数据;----
GOTO命令,绝对模式,到起始点;-------
GOTO命令(绝对模式,位置超过后面两个中断位置),同时更新HSC预置值1,启用中断;----
中断程序内置位标志位1,扫描程序中标志位1重新触发GOTO(绝对位置不变,只变速度,超驰),更新HSC预置值2-------
中断程序内置位标志位2,扫描程序中标志位2触发其他动作(和运动及HSC无关)。----
GOTO结束,返回起始点。
这个过程中,组态轴位置和伺服驱动器编码器位置相符合,但是HSC0计算出的位置(HC0/单圈脉冲数2000*单圈位移量16mm)出现偏差,三四次来回,相差了近2mm。起始点设置30mm,HSC计算的是28mm左右。
如果说是脉冲信号衰减慢,伺服位置和轴位置是相符合,说明伺服接收脉冲正常;
只更新HSC预置值会影响计数值吗?
这种问题用什么办法解决?
--------
感谢各位的指导!
后来又测试了一次,因没有合适电阻,还是原配置不动,第一次伺服回零之后,没有运动命令,HSC数字一直在变动,脉冲信号屏蔽层接在驱动器上,拆开屏蔽线使之悬空之后,计数不动了。
重新回零并启动,运行了约一百二十多个来回,HSC的起点位置变成了30.144mm(设置值30mm),相差脉冲数0.144/16*2000=18。一次往返的脉冲总数177500。
这个偏差是否正常?
后来加了一条程序,在轴停止时,如果计数器和轴位置偏差大于0.1,用伺服编码器位置LDPOS更新轴位置和HSC当前值。
另外还想请教一下,组态轴的实时位置CPOS刷新周期多少毫秒?在循环扫描程序中使用HC0本扫描周期开始时的数值吗?