理论教育 数据比较和传送指令的优化方案

数据比较和传送指令的优化方案

时间:2023-06-16 理论教育 版权反馈
【摘要】:PLC程序运算过程中会产生一些数据,可以用数据比较和传送指令进行处理。图5-24 比较指令CMP举例图5-25 区间比较指令ZCP举例●[S1·]>[S3·],即K100>C30的当前值时,M3接通。移位传送指令应用图5-27 移位传送指令SMOV举例解:X000满足条件,执行SMOV指令。图5-28 取反传送指令CML举例6.块传递指令块传送指令可以将数据批量进行传送。

数据比较和传送指令的优化方案

PLC程序运算过程中会产生一些数据,可以用数据比较和传送指令进行处理。

1.比较指令

比较指令用于两个数据的大小比较。

(1)指令格式

指令编号及助记符:比较指令FNC10 CMP[S1·][S2·][D·]。

●[S1·][S2·]为两个比较的源操作数

●[D·]为比较结果的标志元件,指令中给出的是标志软元件的首地址(标号最小的那个)。

标志位的软元件有Y、M、S。源操作数的软元件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS。

(2)指令用法

比较指令CMP是将源操作数[S1·]和源操作数[S2·]进行比较,结果送到目的操作数[D·]中,比较结果有3种情况:大于、等于和小于。

CMP指令可以比较两个16位二进制数,也可以比较两个32位二进制数,在作32位操作时,使用前缀(D):(D)CMP[S1·][S2·][D·]。

CMP指令也可以有脉冲操作方式,使用扩展名(P):(D)CMP(P)[S1·][S2·][D·],只有在驱动条件由OFF→ON时进行一次比较。

具体用法如图5-24所示。

●若K100>(C20),则M0被置1。

●若K100=(C20),则M1被置1。

●若K100<(C20),则M2被置1。

2.区间比较指令

区间比较指令是将数据与某一区间的数据进行比较。

(1)指令格式

指令编号及助记符:区间比较指令FNC11ZCP[S1·][S2·][S3·][D·]。

●[S1·]和[S2·]为区间起点和终点。

●[S3·]为另一比较软元件。

●[D·]为标志软元件,指令中给出的是标志软元件的首地址。

●标志位的软元件有Y、M、S。

●源操作数的软元件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS。

(2)指令用法

ZCP指令是将源操作数[S3·]与[S1·]和[S2·]的内容进行比较,并将比较结果送到目的操作数[D·]中。如图5-25所示。

978-7-111-35634-9-Chapter05-24.jpg

图5-24 比较指令CMP举例

978-7-111-35634-9-Chapter05-25.jpg

图5-25 区间比较指令ZCP举例

●[S1·]>[S3·],即K100>C30的当前值时,M3接通。

●[S1·]≤[S3·]≤[S2·],即K100≤C30的当前值≤K120时,M4接通。

●[S3·]>[S2·],即C30当前值>K120时,M5接通。

●当X000为OFF时,不执行ZCP指令,M3~M5仍保持X000=OFF之前的状态。使用ZCP时,[S2·]的数值不能小于[S1·];所有的源数据都被看成二进制值处理。

3.传送指令

传送指令用于存储单元之间的数据传递、变换。

传送指令包括传送MOV(Move)、BCD码移位传送SMOV(Shift Move)、取反传送CML(Complement Move)、数据块传送BMOV(Block Move)、多点传送FMOV(Fill Move)以及数据交换XCH(Exchange)指令等。

(1)指令格式

指令编号及助记符:传送指令FNC12 MOV[S·][D·]。

●[S·]为源数据。

●[D·]为目的软元件。

●目的操作数为T、C、V、Z、D、KnY、KnM、KnS。

●源操作数的软元件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS。

(2)指令用法

传送指令MOV是将源操作数传送到指定的目的操作数,即[S·]→[D·]。如图5-26所示。

【实例5-11】传送指令应用

978-7-111-35634-9-Chapter05-26.jpg

图5-26 传送指令MOV举例

当常开触点X000闭合为ON时,每扫描到MOV指令时,就把存入[S·]源数据中操作数100(K100)转换成二进制数,再传送到目的操作数D10中去。

当X000为OFF时,则指令不执行,数据保持不变。

4.移位传送指令

移位传送指令可以将数据按照指定的格式变换成BCD码进行传送。

(1)指令格式

指令编号及助记符:传送指令FNC13 SMOV[S·]m1m2[D·]n。

●[S·]为源数据,m1为被传送的起始位,m2为传送位数。

●[D·]为目的软元件,n为传送的目的起始位。

●目的操作数可取T、C、V、Z、D、KnY、KnM、KnS。

●源操作数的软元件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS。

●n、m1、m2的软元件有K、H。

(2)指令用法

移位传送指令SMOV的功能是将[S·]第m1位开始的m2个数移位到[D·]的第n位开始的m2个位置去,m1、m2和n取值均为1~4。分开的BCD码重新分配组合,一般用于多位BCD拨盘开关的数据输入。如图5-27所示。

【实例5-12】移位传送指令应用

978-7-111-35634-9-Chapter05-27.jpg

图5-27 移位传送指令SMOV举例

X000满足条件,执行SMOV指令。

源操作数[S·]内的16位二进制数自动转换成4位BCD码,然后将源操作数(4位BCD码)的右起第m1位开始,向右数共m2位的数,传送到目的操作数(4位BCD码)的右起第n位开始,向右数共m2位上去,最后自动将目的操作数[D]中的4位BCD码转换成16位二进制数。

图5-27中,m1为4,m2为2,n为3,当X000闭合时,每扫描一次该梯形图,就执行SMOV移位传送操作,先将D1中的16位二进制数自动转换成4位BCD码,并从4位BCD码右起第4位开始(m1为4),向右数共2位(m2为2)(即103,102)上的数传送到D2内4位BCD码的右起第3位(n=3)开始,向右数共2位(即102,101)的位置上去,最后自动将D2中的BCD码转换成二进制数。

上述传送过程中,D2中的另两位(即103,100)上的数保持不变。

5.取反传送指令

取反传送可以将数据取反之后进行传送。

(1)指令格式

指令编号及助记符:取反传送指令FNC14CML[S·][D·]。

●[S·]为源数据。

●[D·]为目的软元件。

●目的操作数的软元件为T、C、V、Z、D、KnY、KnM、KnS。(www.daowen.com)

●源操作数的软元件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS。

(2)指令用法

取反传送指令CML的功能是将[S·]源操作数按二进制的位逐位取反并传递到指定目的软元件中,指令说明如图5-28所示。

978-7-111-35634-9-Chapter05-28.jpg

图5-28 取反传送指令CML举例

6.块传递指令

块传送指令可以将数据批量进行传送。

(1)指令格式

指令编号及助记符:块传送指令FNC15BMOV[S·][D·]n。

●[S·]为源软元件。

●[D·]为目的软元件。

●n为数据块个数。

●源操作数可取KnX、KnY、KnM、KnS、T、C、D、K、H。

●目的操作数可取KnY、KnM、KnS、T、C和D。

●数据块个数可取常数K、H。

(2)指令用法

块传送指令BMOV的功能是将源操作数元件中n个数据组成的数据块传送到指定的目的软元件中去。如果元件号超出允许元件号的范围,数据仅传送到允许范围内。指令用法如图5-29所示。

【实例5-13】块传递指令应用实例

978-7-111-35634-9-Chapter05-29.jpg

图5-29 块传送指令BMOV举例

●如果X000断开,则不执行块传送指令,源、目数据均不变。

●如果X000接通,则将执行块传送指令。

●根据K3指定数据块个数为3,则将D5~D7中的内容传送到D10~D12中去。

●传送后D5~D7中的内容不变,而D10~D12内容相应被D5~D7内容取代。

●当源、目的软元件的类型相同时,传送顺序自动决定。

●如果源、目的软元件的类型不同,只要位数相同就可以正确传送。

●如果源、目的软元件号超出允许范围,则只对符合规定的数据进行传送。

7.多点传送指令

多点传送指令可以将一个数据传送到多个存储位置。

(1)指令格式

指令编号及助记符:传送指令FNC16 FMOV[S·][D·]n。

●[S·]为源软元件。

●[D·]为目的软元件。

●n为目的软元件个数。

●指令中给出的是目的软元件的首地址。常用于对某一段数据寄存器清零或置相同的初始值。

●源操作数可取除V、Z以外的所有的数据类型,目的操作数可取KnY、KnM、KnS、T、C或者D,n,512。

(2)指令用法

多点传送指令FMOV是将源操作数中的数据传送到指定目的开始的n个元件中去,这n个元件中的数据完全相同。指令操作如图5-30所示。触点X000闭合,数据0被传递到D0~D9中。

8.数据交换指令

数据交换指令用于存储单元之间的数据交换。

(1)指令格式

指令编号及助记符:数据交换指令FNC17XCH[D1·][D2·]。

●[D1·]、[D2·]为两个目的软元件。

●目的软元件操作数可取KnY、KnM、KnS、T、C、D、V和Z。

(2)指令用法

数据交换指令XCH是将数据在两个指定的目的软元件之间进行交换,指令说明如图5-31所示,当X000为ON时,将D1和D17中的数据相互交换。

978-7-111-35634-9-Chapter05-30.jpg

图5-30 多点传送指令FMOV举例

978-7-111-35634-9-Chapter05-31.jpg

图5-31 数据交换指令XCH举例

9.BCD变换指令

数据变换指令包括两条指令,分别是二进制数转换成BCD码并传送BCD码以及BCD码转换为二进制数并传送BIN指令。

(1)指令格式

指令编号及助记符:BCD码变换指令FNC18 BCD[S·][D·]。

●[S·]为被转换的软元件。

●[D·]为目的软元件。

●源操作数可取KnX、KnY、KnM、KnS、T、C、D、V和Z。

●目的操作数可取KnY、KnM、KnS、T、C、D、V和Z。

(2)指令用法

变换指令BCD是将源操作数中的二进制数转换成BCD码并传送到目的操作数中去。指令说明如图5-32所示。当X000为ON时,将D12内的二进制数据转换成BCD码送到Y0~Y7。BCD码变换指令将PLC内的二进制数变换成BCD码后,再译成7段码,就能输出驱动LED显示器

10.BIN变换指令

BIN变换指令可以将BCD码数据变换成二进制数据。

(1)指令格式

指令编号及助记符:BIN变换指令FNC19 BIN[S·][D·]。

●[S·]为被转换的软元件。

●[D·]为目的软元件。

●源操作数可取KnX、KnY、KnM、KnS、T、C、D、V和Z。

●目的操作数可取KnY、KnM、KnS、T、C、D、V和Z。

(2)指令用法

变换指令BIN将源元件中的BCD码转换成二进制数送到指定的目的元件中去。指令使用说明如图5-33所示。当X000为ON时,将D12内的BCD码转换成二进制数据送到Y0~Y7。此指令作用正好与BCD变换指令相反,用于将软元件中的BCD码转换成二进制数。

978-7-111-35634-9-Chapter05-32.jpg

图5-32 变换指令BCD举例

978-7-111-35634-9-Chapter05-33.jpg

图5-33 变换指令BIN举例

四则运算(+、-、×、÷)与增量指令、减量指令等可编程序控制器内的运算都用BIN码进行。因此,可编程序控制器在用数字开关获取BCD码的信息时要用FNC19(BIN→BCD)变换指令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈