登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:这个程序仅仅一点差别,结果就是不一样

点击:1216 回复:9

附件
开始我是这么编的,发现调试结果有问题
然后我仅仅只是把DECP K2Y000Z0放下一行,就没问题,但是我还是不明白这是为什么?
附件
13-04-17 22:16
程序就是Y0到Y14依次点亮,然后反序熄灭,循环。
开始出现的问题是点亮Y14后,Y16到Y24就全亮不再熄灭,调换次序后就没这个问题。
附件
13-04-17 22:20
应当是,指令执行先后的区别。
13-04-18 06:17
因为你incp z0执行完后,z0=15
所以接着执行decp k2y0z0是执行decp k2y15而不是y14。
13-04-18 12:15
这条指令这么用,很不理解。我试了INCP K4Y0Z0这1条指令,执行的结果不是顺序点亮,而是K4Y0加1  , 下面并联输出一个INCP Z0, 就变成顺序点亮了。不明白。
13-04-19 07:47

引用 step1 在 2013/4/19 7:47:59 发言【内容省略】

请阅读FX2N编程手册第5-3章节中关于Knx,Kny使用间接寻址的注意点。
Good Luck~
13-04-19 09:04
楼主的程序很有意思啊
做流水灯一般没人这样做的啊哈哈
我来说一下你的程序思路:按下X0执行第一行与第二行的加,首先Y0Z0=Y0,加1Y0置位,然后执行第二行Z0+1=1,则第二次执行时候Y0Z0=Y1,INC再置位Y1,依次类推执行,当执行到Y14置位的时候神奇了,置位Y14后,Z0又加1了,这时候Y0Z0=Y15!!!!!然后你就执行了减法指令,要指出的是,这时候K2Y15=0!!!减1为负值!!!,二进制中-1可是等于11111111的啊,所以才出现了你所述的错误现象
程序更改后,首先Z0减1后,Y0Z0=Y14=1,依次减下去,就得出了你所述的流水灯依次递减。
13-04-19 09:22

引用 step1 在 2013/4/19 7:47:59 发言【内容省略】

K4Y0Z0,如果Z0一直为0,相当于K4Y0。让这个加一,相当于Y15。。。Y0,按1(Y0),2(Y1),3(Y0+Y1
),4。。。点亮。而你的要求是:1,1+2,1+2+4,1+2+4+8。。。位亮
13-04-19 11:57
多谢各位,我还要再思考思考,似乎明白又不明白。
13-04-21 20:45
z是间接寻址寄存器,你程序里的使用是将一个字节元件加上它的值做为起始地址用的
13-04-21 21:42

工控新闻

更多新闻资讯