搜索
写经验 领红包

传送与比较指令的作用(传送与比较指令的区别)

导语:传送与比较指令

3.3.1 比较指令----------------------CMP

3.3.2 区域比较----------------------ZCP

3.3.3 传送指令-----------------------MOV

3.3.4 位移动传送-----------------------SMOV

3.3.5 反向传送-----------------------CML

3.3.3 成批传送-----------------------BMOV

3.3.7 多点传送-----------------------FMOV

3.3.8 数据交换-----------------------XCH

3.3.9 BCD交换-----------------------BCD

3.3.10 BIN传送------------------------BIN

3.3.1 比较指令CMP

例: [CMP D1 D2 M0]

两个数D1与D2进行比较,M0开始的三位作为比较结果

当D1>D2时,则M0线圈接通

当D1=D2时,则M1线圈接通

当D1<D2时,则M2线圈接通

当执行完指令后,即使条件X0断开,最后的比较结果M0,M1,M2还是保持上次的比较结果不变。

指令不执行时,想要清除比较结果的话,可使用复位指令。

3.3.2区域比较ZCP

区域比较为三个数进行比较,比较的结果存放在后面的位软元件及紧随其后的两位软元件中。

例:[ZCP K100 K200 D0 M5]

其中K100、K100、D0是三个要比较的数,M5及紧随M5后面的两位M3、M7作为比较结果

具体的比较方法:

当K100>D0时 则M5线圈接通

当K100<D0<120时 则M3线圈接通

当D0最大时 则M7线圈接通

程序举例:

如上图所示,当条件X0接通,开始执行比较指令,通过对三个数K100、K120及C30进行比较,把比较结果存放在M3开始的三位软元件M3、M4、M5里面

其比较过程如下:

若C30<K100(即C30最小),则M3线圈接通

若K100<=C30<=K120(即C30在两个数中间),则M4线圈接通

若C30>K120(即C30最大),则M5线圈接通

我们可以根据线圈M3、M4、M5的通断情况来判断这三个数的大小关系。

当执行完指令后,即使条件X0断开,最后的比较结果M3,M4,M5还是保持上次的比较结果不变。指令不执行时,若要清除比较结果的话,同样可用复位指令。

区域比较指令是3个数之间的比较,其中第一个比较数一定要小于第二个比较数,这是区域比较的基本规则。

注:CMP与ZCP都是比较指令,其比较结果是位软元件,当在程序里使用M7作为比较结果时,跟在其后面的2位软元件M8、M9被占用,作为比较结果,为防止重复使用,在编写下面的程序时务必要注意避开使用。

3.3.3 传送指令MOV

程序1:

当X0接通,则指令将K100传送到D10寄存器里面,即D10=100。只要X0接通,程序扫描一次,指令就执行一次。

此后,即使X0断开,D10里的数据保持100不变。

程序2:

如上程序,MOVP指令,同样也是传送指令,当条件X1接通时,指令是把D1寄存器数据传送到D2寄存器里,然后把0传到D1寄存器里。

但是MOVP指令为脉冲型指令,即当条件X1接通时,程序只执行一个扫面周期,第二次扫面时,指令就不会再执行了。

程序3:

当X1接通,则指令将定时器T0当前的计时时间传送到D20里面。

定时器、计数器设定值的间接指定示例:

把D10的当前值作为定时器T20的设定定时时间。

位软元件的传送:

如上程序,左边的梯形图程序可用后边程序代替。执行结果完全相同。

32位数据的传送

运算结果以32位输出的应用指令,必须使用D指令;

如上程序,当指令条件接通,则把D0,D1组成的32位数据寄存器传送到D10,D11组成的32位数据寄存器里

C235本身是32位计数器,指令把C235的当前计数值传送到D20、D20组成的32位数据寄存器里

注:在下面的所有指令中,可以很多都会涉及到指令后面加“P”,或者指令前面加“D”,其用法都是一样的,在分析指令时,就不重复讲了。

加了“P”之后,指令即脉冲型了,当满足指令执行条件,指令只执行一个扫面周期,第二次扫描就不执行此指令了。

加了“D”之后,指令即32位型指令,即把原13位寄存器与其后面一个13位寄存器组合成32位寄存器使用。

3.3.4位移动指令SMOV

程序举例1:

SMOV D1 K4 K2 D2 K3

∕ ∣ \

D1的第四位 传2位 传到D2的第三位

第四位 第三位 第二位 第一位

\ ∣ ∣ /

D1= 0 1 2 3

\ \

第四位 第三位 第二位 第一位

\ ∣ ∣ /

D2= 0 0 1 0

如上:若D1=123,则指令分别将D1的第四位及第三位(0,1)传到D2的第三位及第二位中,D2的其他位数据不变.

程序举例2:

3.3.5 反向传送

希望将可编程控制器的输出以逻辑反向输出时,可以使用。

[CML D1 K1Y0] 把D1的每位取反(0变1,1变0)后,传到K1Y0

当条件X0接通,指令执行:

D0由13位二进制数组成,K1Y0是Y0-Y3组成的4位二进制数

执行指令后,把D0的前4位二进制的状态一一传送给Y0-Y3.

反向输入的读取:

左图的两个程序可用右边的程序代替。结果完全一样。

某些应用指令在某些场合能用很方便、很简化的方式编写程序。

3.3.6 成批传送BMOV

将指定的软元件为开头的N点数据向以目标指定的软元件为开头的N点软元件成批传送。

上图当条件X0接通,指令将执行图右边的变化

将D5的数据传送到D10里面

将D3的数据传送到D11里面

将D7的数据传送到D12里面

带有为指定的位软元件时,源和目标要采用相同的位数。

上图中K1M0是4位组合,K1Y0也是4位组合,其执行结果如右图所示

特殊继电器M8024能控制BMOV指令的传送方向:

如下程序:

当X0接通时,特殊继电器M8024线圈接通,此时传送结果为D10向D5传送

D11向D3传送

D12向D7传送

3.3.7 多点传送FMOV

将指定的软元件的内容向以目标指定的软元件为开头的N点软元件进行传送。

N点软元件的内容都一样。

当条件X0接通,K0传送到D0-D9一共10个每一个寄存器中

如要把一系列的数据寄存器清0,或者赋相同的值,用此指令会比较方便。

3.3.8 交换指令XCH

XCH指令使目标间的数据相互交换

执行前 D10=100 → 执行后 D11=120

D10=120 D11=100

交换指令的特殊用法:

如下程序:

当特殊继电器M8130线圈接通时,去交换的两个数据相同时,低8位与高8位可以交换。

32位指令的情况也一样。

3.3.9 BCD交换

指令将源数据的BCD码传给目标地址

如下程序:

当指令条件X0接通,则指令将D12的BCD码传给K2Y0

若D12=34 ,则BCD上面程序执行过程见下图:

当K2Y0被用作七段显示器上的输出点时,则Y0--Y3能显示数字“4”,Y4--Y7能显示数字“3”。

一般一个七段显示器只能显示一个数字,并且需要由4个输出点来控制,若要显示一个2位数,则须有2个显示器来显示。如上程序,要显示“34”这个2位数,则3用一个显示器来显示,4用另外一个显示器来显示。

3.3.10 BIN传送

程序举例:

当条件X0接通,则指令把K2X0的BIN码传到D13里面

注:当数据源不是BCD码时,会发生运算错误。

数据的比较还有下面几种:

如上程序,比较条件前面为“>”符号,则当D0寄存器的数据大于3时,此条件成立,Y001线圈就接通

如上程序,比较条件前面为“<”符号,则当D0寄存器的数据小于3时,此条件成立,Y001线圈就接通。

还有“=”、“>=”、“<=”等符号都是把比较当作条件来使用,当满足此比较条件时,此条件和触点一样接通。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小馨创作整理编辑!