test什么意思(test什么指令)
三菱FX5U的PLC指令中,我注意到2个比较新颖的指令,至少西门子200PLC中是没有这样的指令的,所以特意写了一段程序,来和大家分享一下。
这2个指令是BSET指令和TEST指令,且这两个在FX3U的PLC指令表中是没有的!
BSET(字软元件的位设置),这里的SET就是置位的意思,对指定的字元件的指定位置1。
TEST(位测试),这个位测试叫法挺新的,因为做PLC的人做I/O测试的时候对DI/DO点的测试,也算是对位的测试。三菱中的这个TEST(位测试)其实算是读出一个字软元件中的某一位的状态,并把这个状态写到一个指定的位软元件中去!
先看一个图片吧:
M0接通三次时的程序截图
这个图片上边部分是SM402是一个初始脉冲,和西门子200PLC中的SM0.1一样,用来初始化程序,给D2一个二进制为2#1010 1010 1010 1010的初始值,给D0和D1的初始值都为0。
程序下边部分是BSET指令和TEST指令,还有一个INC指令,这个INC指令和西门子200PLC中的INC指令很像的,都是自加1指令,或者说是自增指令!---图片上为何都是MOVP,BSETP,TESTP,INCP,这些指令多一个P就代表是脉冲信号的意思!这里的M0第一次从off变为on的时候,三个指令都只执行一次!
这里先解释一下BSETP指令执行了3次,为何D1=7?
是因为D0的有效范围其实是十进制的0-15,因为BSET指令是字元件指令,所以16位中就是0-15。
在M0第一次为1时,D0=0,造成D1的值是2进制的2#0000 0000 0000 0001,而后下边的INCP指令执行才使得D0 1=0 1=1;
在M0第二次为1时,D0=1,造成D1的值是2进制的2#0000 0000 0000 0011,而后下边的INCP指令执行才使得D0 1=1 1=2;
在M0第三次为1时,D0=2,造成D1的值是2进制的2#0000 0000 0000 0111,也就是十进制的7,而后下边的INCP指令执行才使得D0 1=2 1=3;
所以BSET指令就是根据D0的值,把这个值看做是16位字长区域中的第几个位,然后将相应的位置位位1,因为是推进到下一位时,之前被置位的位依然是1!
再来看一个程序的动态监控图:
程序监控动态图片
这个动态图片主要用来说明TEST指令,上边我说给D2的初始值是2#1010 1010 1010 1010,这个点就是造成Y0一次接通一次断开的原因!
因为TEST指令就是D0为几时,就把D2的相关位的值写到Y0中去!需要说明的是这里的D0=1的时候,其实是D2的第0位,也就是D2.0的值;D0=3时,是要询问D2的第三位也就的D2.2的值!
以上就是三菱FX5U中的两个比较新颖的指令的简单介绍,感谢阅读!