三菱PLC命令CMP

cmp k0 k1x0004 m1 请问这个命令是什么意思
假设x004等于k0,那么M2常闭是否就应该要断开?那这个程序下面的部分我就更看不懂了。

CMP   D0   D2   M0该指令为比较道指令,将比较的结果回<,=,>三种结果分别告知给M0,M1,M2。

如果D0>D2,M0=1,如果D0=D2,M1=1,如果D0<D2,M2=1,所以使用这个指令会连续占用以M0为首的三个连续的位地址。

CMP用于16位数据比较,比较的数据范知围是-32768到+32767,比较数据类型可以是常熟K,H等,可以是数据寄存器D,也可以是计数器C,可以是时间继电器T,还可以是连续的位址(如K1X0,K2Y0,K3M0,K2S0等)。



扩展资料:

CF=1 则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1<oprd2

CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2

当有符号时:若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2;若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1<oprd2

若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1<oprd2;若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2

最后两个可以作出这种判断的原因是,溢出的本质问题:两数同为正,相加,值为负,则说明溢出;两数同为负,相加,值为正,则说明溢出;故有,正正得负则溢出,负负得正则溢出

参考资料:百度百科——CMP指令

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-11-03
CMP是比较指令,用于16位数据比较,比较的数据范围是-32768到+32767,比较数据类型可以是常熟K,H等,可以是数据寄存器D,也可以是计数器C,可以是时间继电器T,还可以是连续的位址(如K1X0,K2Y0,K3M0,K2S0等)。
指令用法如下:
CMP D0 D2 M0
该指令为比较指令,将比较的结果<,=,>三种结果分别告知给M0,M1,M2。
如果D0>D2,M0=1
如果D0=D2,M1=1
如果D0<D2,M2=1
所以使用这个指令会连续占用以M0为首的三个连续的位地址。

另外,若比较数据范围大于65535,请使用DCMP,这个是双字比较指令,用法和CMP一样,只不过比较的数据都是双字32位数据,所以使用时不要出现
DCMP D0 D1 M0本回答被网友采纳
第2个回答  2011-08-19
CMP用于16位数据比较,比较的数据范围是-32768到+32767,比较数据类型可以是常熟K,H等,可以是数据寄存器D,也可以是计数器C,可以是时间继电器T,还可以是连续的位址(如K1X0,K2Y0,K3M0,K2S0等)。
指令用法如下:
CMP D0 D2 M0
该指令为比较指令,将比较的结果<,=,>三种结果分别告知给M0,M1,M2。
如果D0>D2,M0=1
如果D0=D2,M1=1
如果D0<D2,M2=1
所以使用这个指令会连续占用以M0为首的三个连续的位地址。

另外,若比较数据范围大于65535,请使用DCMP,这个是双字比较指令,用法和CMP一样,只不过比较的数据都是双字32位数据,所以使用时不要出现
DCMP D0 D1 M0
这种情况是不对的,因为比较数据D0已经占用了D1和D0,所以这样写是错误的。

希望可以帮到你!
第3个回答  2012-12-11
k1x4表示由x4~x7组成的一个四位的数,这个数与k0比较。①k1x4小于k0,则m1接通。②k1x4等于k0,则m2接通。③k1x4大于k0,则m3接通。
第4个回答  推荐于2017-10-02
k0 就是0000 0000
K1X0004 也是0000 0000 但是实际对应X4 X5 X6 X7
如果有一个ON那么K0就<K1X0004输出M3
K0=K1X0004时候输出M2
不存在大于本回答被提问者和网友采纳