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

主题:偏移量(间接指定)使用过程出现的问题

点击:848 回复:10

附件 1-1-A.jpg
附件 1-2-B.jpg
附件 1-3-C.jpg
附件 1-4.jpg
测试时,使用的是XC2系统的主机,
    测试是随着“D0”值的增加,Y0....Y1....Y2.....Y3....依次有输出。
    但随着“D0”值得递减 ...Y3...Y2...且不会复位
根据资料,Y0[D0]=Y[0+D0],
   理解 Y0【D0],当D0=1时,Y0[D0]=Y1
               当D0=2时,Y0[D0]=Y2,若此时D0=1时,Y2应该复位 Y1有输出,
实际测试是复位不了,不知道是什么情况。
22-02-23 19:01
附件:
[本地下载]
测试时使用的程序在文件中!
22-02-23 19:05
我刚刚试了一下三菱的也是这样。
这个应该是相当于赋值功能,赋值后就会一直保持住,要想改变状态必须重新赋值。
你把M8000改成M8,然后在M8断开时再改变D0对应的值就会断开了,三菱是这样的。
22-02-23 19:28
经过测试 和三菱的效果一样,递减时,要把驱动条件断开就可以实现了。
这种使用方法,在递减时,如果驱动条件不断开的话,就算D0值发生变化,YO[D0]的结果也不会变,【此时扫描周期对它不影响】
谢谢!
资料上讲的不清楚,个人觉得这里就是个:BUG!
22-02-23 20:01
没看见你给人家复位.不都是得电(不是复位,置位).
22-02-24 08:23

引用 pqsh 在 2022/2/24 8:23:12 发言【内容省略】

LDP M0
DEC D0
LD M8000
OUT Y0[D0]
虽然 LD M8000,没断点,但是M0的信号有变化,即D0的值也就变化了。由于PLC是从上到下的扫描顺序,即使 LD M8000 没端开,那么Y0[D0]也是应该发生变化才对。
比如: LD M8000
     INC D10
这条指令的触点M8000,没有断开的情况下,D10的值也是变化的,
那么 LD M8000
    OUT Y0[D0]  ,这条指令,在D0有变化的情况下,Y0[D0]这个变量的结果反而没变化。这和PLC从上到下的扫描顺序,(个人认为)就有了冲突。手册中也没有看见对这种情况的特殊说明。
22-02-24 09:01
附件 1-1-A.jpg
在这谢谢2楼的指导,虽然说按2楼的方法解决了问题,但还是不知道所以然。
还有4楼讲的没有给它复位的情况(这里使用的只是普通的输出指令,又不是置位指令set/rst)
重点不能理解的是。由于PLC扫描的原因。当D0 发生变化,对应的YO[D0],在条件没有复位的情况下,不会发生变化;
条件复位会变化。
           就是说条件复位时 Y0[D0]的条件在不接通的条件下,D0就值由变化时,Y0[D0]有变化(条件不接通为什么可以复位)还是说这种情况驱动的线圈有类似置位功能。
不是纠结,是不明白 此时的扫描顺序,怎么不能常规理解!
22-02-24 09:32

引用 cma_520 在 2022/2/24 9:32:31 发言【内容省略】

你完全理解错了.当d0变化y0[d0]这个地址随着d0变化,这叫变址(间接),但它的值还是取决于指令.此处y=m8000,这是赋值语句.
注释里面的y0[d0]=y[0+d0](虽然这样写是错误的,但暂时可以理解)是解释的地址(或者标号或者下标),并不是指令本身会执行y=哈哈哈.
22-02-24 11:22
多谢指导!!
22-02-24 11:45
打个比方,某一时刻你往PLC里面写了LD M8000,OUT Y0。然后删除这行程序,那么你猜Y0是继续ON还是OFF?所以你这个问题和这种情况一个道理。这些输出如果在程序中不改变它的值就继续保持上次计算结果,除非断电复位。三菱5U子程序的EN引脚有两种实现方式,MCR和不使用MCR,因此EN引脚OFF时的运行结果也会有区别。
22-02-24 13:39

上一页下一页

工控新闻

更多新闻资讯