在三菱FX5U的PLC指令中,我注意到了两条比较新颖的指令,至少西门子200PLC中没有这样的指令,所以特意写了一个程序分享给大家。
这两条指令是BSET指令和测试指令,不在FX3U的PLC指令表中!
BSET(字软组件的位设置),其中SET表示设置,指定字组件的指定位置为1。
TEST (bit test),这个bit test的名字挺新的,因为做PLC的人做I/O测试的时候,DI/DO点的测试也可以看作是对齐的测试。三菱的这个测试实际上是读取一个word软件组件中某个bit的状态,并将这个状态写入一个指定的bit软件组件!
先看一张图:
这张图的上半部分显示SM402是一个初始脉冲,和西门子200PLC中的SM0.1一样,用来初始化程序,给D2一个初始二进制值2 # 1010101010101010,给D0和D1初始值0。
程序的下部是BSET指令和测试指令,还有一个INC指令。该INC指令与西门子200PLC中的INC指令非常相似。是自增指令,还是自增指令!-为什么MOVP、BSETP、TESTP和INCP都在照片里?这些指令里多一个P就是脉冲信号!这里,当M0第一次从off变为on时,所有三条指令只执行一次!
这里,首先说明BSETP指令执行了三次。为什么D1=7?
但是D0的有效范围实际上是十进制的0-15,而BSET指令是字部件指令,所以16位是0-15。
当M0第一次为1时,D0=0,导致D1的值为二进制2 # 0000 0000 0001,然后执行下面的INCP指令,使D01 = 01 = 1;
当M0第二次为1时,D0=1,导致D1的值为二进制2 # 0000 0000 0011,然后执行下面的INCP指令,使d01 = 11 = 2;
当M0第三次为1时,D0=2,导致D1的值为二进制2 # 0000 0000 000111,即十进制7,然后执行下面的INCP指令使D0 1 = 2 1 = 3;
所以BSET指令是以D0的值为基础,把D0看作16位字长区的位,然后把对应的位置设置为1,因为当它前进到下一位时,前面设置的位还是1!
我们来看一个程序的动态监控图:
这张动态图片主要用于说明测试说明。我在上面说过,D2的初始值是2 # 1010 1010 1010 1010 1010。这一点就是Y0开一次关一次的原因!
因为测试指令是当D0为时,将D2相关位的值写入Y0!需要注意的是,这里D0=1时,实际上是D2的第0位,也就是D2.0的值;当D0=3时,就是d2的值D2.2,是D2的第三位!
以上是对三菱FX5U中两条比较新颖的指令的简单介绍。感谢阅读!
以上就是由优质生活领域创作者 深圳生活网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.szbubu.com/2738173.html,转载请说明来源于:深圳生活网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场。