首先纠正一下你的错误观念,不管是哪款PLC,不能进行N次移位,因为最多只能移32位!所说你只能说X次移位!
程序如下:
这程序最多移位10次(K10),每次移1位(K1),从M1110开始到M1119结束,而这里只移了1次位,就是从从M1110移到M1111,M1111得电后就输出了M500,用M500驱动了Y0。移完位的下一位。也就是M1112,用它来复位了后面的。
追问你这个程序如果x1连续触发了两次的话,Y0会不会也是连续两次输出?
追答在一个周期内X1给2次信号还是触发一次,如果是连续2个周期给了2次触发就会触发2次。
你应该是做不良排出之类的程序,就是在A位置判断,经过B\C\D\E\F。。。。。。后,在X位置排出,不管有多少个连续不良品信号,反正不良品都要在X位置排出。
再说你写进去试一下不就知道了。
不能这样,因为X1是故障信号,x0是周期性的 也就是说有可能每个x0之后都有可能触发X1,但是每个X1信号在经过N次后都要驱动Y0输出。不知道你理解我说的没有
追答如你所说,如果X1触发一次后就对X0进行计数,如果在这个过程中X1再有触发,则又重新开始计数,只有计到N次,并且计数过程中X1无触发,才能有输出?如果不是,那你可描述详细一点。
追问假设N=3 也就是说x1触发后x0经过3次计数,Y0即刻输出,在此过程中如果X1连续触发,那么Y0在经过3次x1后也是连续输出
追答“在此过程中如果X1连续触发,那么Y0在经过3次x1后也是连续输出”,我理解为:只要X1有触发,则对X0进行计数3次后Y0输出,例:如果第一次X1触发后在对X0进行计数至N=2时,X1又有触发,那么,再对X0计一次数则N=3,Y0输出,对于第二次X1的触发,此时只要X0再2个数,则Y0输出,即:从每次X1触发算起只要X0计数3次即Y0输出?
追问写错了 是“Y0在经过3次x0后也是连续输出”我的意思是X1触发几次 Y0也必须输出几次,你这个程序是如果连续的两个x1 那么 y0只输出一次
追答也就是说:如果X1有触发,那么在对X0计数过程中如果X1再有触发,则记下,等此次计数完并输出后,再计数3次X0后并输出。我刚说的内容并不是两次X1触发输出一次Y0.也是两次,只是第二次时只计了两个数。
本回答被网友采纳就是一个工作节拍点亮一次
追答用计数器来编不就行了吗?何必用移位呢?假设计数器设定3次,到X0输出3次信号后Y0有输出,然后使计数器清零。如果非用移位的话也可以,输出之后加一短延时,延时到后让移位寄存器重新赋值,等待下次出发。