引用
引用第10楼zhangqi_1234于2022-03-30 19:45发表的 :
我看你发的程序,我个人认为,程序设计者使用C251意思是:用它来接收X0和X1端的脉冲。当X0的脉冲超前X1脉冲90度时,进行加计数,当X0脉冲滞后X1脉冲90度时,进行减计数。当计数值等于1时,表明X0端和X1端各自输入了一个脉冲,两个脉冲相差90度,X0端超前X1端90度。然后C251常开触头闭合,C251闭合的第一个扫描周期使D31自加1,然后C251复位,C251常开触头断开。C251重新从零开始计数,计数值等于1又开始上述动作,如此周而复始。然后把D31转存D33,D33转换成实数存D55,D55又经过一系列实数运算,得出的结果可能是某零件的长度。那么你说的C251不断累加计数,而没有复位的这种故障,很有可能是X0端输入的脉冲不是超前X1端脉冲90度,而是滞后X1端90度,结果导致C251减计数,计数结果为负数,始终不等于1,无法实现复位。这个属于PLC的X0端和X1端接编码器的故障 ,不是PLC的故障。还有一种可能,就是这样编程使用C251有个前提条件:X0和X1端输入的脉冲周期不能小于PLC的扫描周期,否则会导致C251不断累加计数而不会复位。另外,需要指出的是,你开始只拿部分程序出来,而不说明PLC的X0和X1端接的什么,别人也很难作出判断。
出问题时候,一直正计数,您说的没错,可能是编码器故障,另外一种情况不会出现,因为出问题前一直这样使用没问,现在用比较指令复位C251,使用没问题,谢谢解答。