DECO译码指令本人感觉蛮难理解。最近有网友说对难懂的指令,可以编一小段指令进行试验,然后看结果,比较好理解。
我用三菱PLC仿真软件进行仿真运行。
我用M8013的上升沿去触发MOV K0 D0,用M8013的下降沿去触发INCP D0,
然后用译码指令DECO D0 Y100 K3去译码,本意是让Y00~Y07循环输出。可结果是只有Y00和Y01交替输出。后来分析的结果可能是下降沿过后D0马上又让上升沿置0了,下一个脉冲无法执行“加一”指令所造成。于是删掉MOV K0 D0,结果正确。
进一步仿真发现,当K=1时,只有1个输出;K=2时,有4个输出;K=3时,有
8个输出,K=4时,有16个输出。本例中DECO D0 Y100 K3 ,因K=3,置位情况如下:
D=0 Y00=1
D=1 Y01=1
D=2 Y02=1
D=3 Y03=1
D=4 Y04=1
D=5 Y05=1
D=6 Y06=1
D=7 Y07=1
感觉有趣,记录于此。望同行指正。
我用三菱PLC仿真软件进行仿真运行。
我用M8013的上升沿去触发MOV K0 D0,用M8013的下降沿去触发INCP D0,
然后用译码指令DECO D0 Y100 K3去译码,本意是让Y00~Y07循环输出。可结果是只有Y00和Y01交替输出。后来分析的结果可能是下降沿过后D0马上又让上升沿置0了,下一个脉冲无法执行“加一”指令所造成。于是删掉MOV K0 D0,结果正确。
进一步仿真发现,当K=1时,只有1个输出;K=2时,有4个输出;K=3时,有
8个输出,K=4时,有16个输出。本例中DECO D0 Y100 K3 ,因K=3,置位情况如下:
D=0 Y00=1
D=1 Y01=1
D=2 Y02=1
D=3 Y03=1
D=4 Y04=1
D=5 Y05=1
D=6 Y06=1
D=7 Y07=1
感觉有趣,记录于此。望同行指正。