以前我用这个东西控制伺服经常发现伺服的命令脉冲数比PLC的输出脉冲数多一个。
每发一轮脉冲就会有时候多一个有时候相等。我发的脉冲有一个特殊性,就是,不是自然停止,而是用PLSY指令前面的能流切断。使得脉冲强制中断。就会发生这种情况。
今天总算找到原因了。(正常停止的脉冲串不会有这种情况)
伺服收到的脉冲是对的。物理上也是产生了这数量的脉冲。错的是PLC。PLC记录脉冲完整个数是在脉冲下降缘登记的。脉冲完成标志也是大概这个时刻置位的。脉冲串的低电平忽略了。
当强制中断脉冲的话,执行完PLSY指令之后就会终止脉冲。而这个终止会发生在波形的任意位置。
当终止发生在低电平的时候波形的高电平完整,伺服也执行了这个脉冲,PLC的内部计数也登记了这个脉冲。这样的话伺服的命令脉冲寄存器与PLC的内部脉冲计数器数值相等。一切都不存在问题。
当终止发生在波形的高电平的时候。波形高电平不完整了。但但但 是是是 伺服却执行了这半个高电平。 而而而 PLC却不承认这个脉冲的发出。结果发生了本文第一句话的情况。
我相信三菱其他小型系列都是这种情况了。
欢迎拍砖。
可以。
谁都可以向我提问,我回答。但是反过来让我说一下……那我从何说起呢?
但是不要叫我提供电路图和程序,有点越限。
基本就是
1.伺服发出就绪信号上升缘就请求找零点。因为就绪信号一直存在就可判断伺服正在ON。零点分布在两端极限的中间区域。极限信号先进去PLC再用PLC输出给伺服的极限停车。因为找零过程有可能到达极限,这很正常,所以要程序屏蔽。找零后,程序正常就永远不会到达极限开放程序屏蔽,驱动伺服极限。自己要想出一个最简单可靠的找零路径。
2.上面说到。用高计累计高出脉冲。不要用D8xxx。高计的计数方向受伺服的方向命令驱动,一定要注意扫描过程一定要先驱动伺服的方向信号,下一个周期执行高计方向指令再执行高速计数器线圈再执行脉冲输出。道理很复杂,有兴趣再详述。
3.点动使用PLSY指令。自动使用PLSR指令。两个指令同时驱动一个输出同时扫描不产生双线圈。但是两个相同的指令就是双线圈。
4.程序用高速计数器触点作为远端软限位开关,用比较指令作为近端限位开关供程序使用。然后看情况串联上伺服的定位完成信号作为特殊使用。
5.慎重考虑。当自动时,达到高速的时间紧急停止,脉冲命令突然消失,伺服有可能一下子就要停车,将会跳闸并且自然转到自由状态。我未有方法解决。这个暂时只有调低伺服的硬度缓和一下。将会牺牲定位时间。
当我用一个边缘指令驱动一个子程序。然后子程序用M8000驱动一个高计的话。高计的当前值一直不发生变化。但硬件是一直在接收脉冲的。并且是一直在计数的。当我再次触发边缘指令时,高计当前值更新了。
说明高计要经过OUT C***刷新。
远端(近端)的软限位并非用于禁止发脉冲。发脉冲的数量早在PLSY(PLSR)指令里面定好了。一定不会超限的。仅仅用作程序动作的到位于否的传递,给下一个动作做触发。所以不需要考虑扫描影响。PLSY(PLSR)在驱动前就事先预算好我这次驱动最多要走多少,写好脉冲数。最大值就是走到尽头(软尽头),点动的话就可以随时停,高计都知道的。