首页 理论教育 数据处理指令及其应用场景

数据处理指令及其应用场景

时间:2023-06-26 理论教育 版权反馈
【摘要】:数据块传送指令的功能是完成多个数据的传送,BMB、BMW、BMD分别表示字节块传送、字块传送和双字块传送。图3-23 例3-5程序循环移位指令将输入IN中的各位向右或向左移动N位后,送给OUT。图3-25 数据转换指令ASCII码转换指令ASCII码转换指令功能是当使能端有效时,将数据IN端的数据类型按指令要求转换成相应的数据类型存放到OUT中。图3-26 数据转换指令5.数学运算指令加减乘除指令该指令的功能是对有符号整数或实数进行加减乘除运算。

数据处理指令及其应用场景

1.比较指令

用来比较两个数IN1与IN2的大小。在梯形图中,满足比较关系式给出的条件时,触点接通。比较关系有等于(=)、大于等于(>=)、小于等于(<=)、大于(>)、小于(<)、不等于(<>)。触点中间的B、I、D、R、S分别表示字节比较、整数比较、双整数比较、实数比较和字符串比较。

如图3-21所示,在整数比较指令中,当VW0>=VW2并且VW6<1000时,Q0.0为1;在实数比较指令中,当VD0=VD4或VD8<9.6时,Q0.1为1。

978-7-111-51420-6-Chapter03-24.jpg

图3-21 比较指令

2.传送指令

传送指令用于在各个编程元件之间进行数据传送。根据每次传送数据的数量,可分为数据传送指令和数据块传送指令。

数据传送指令每次传送一个数据,MOVB、BIR、BIW、MOVW、MOVD、MOVR分别表示字节传送、立即读字节、立即写字节、字传送、双字传送和实数传送。数据块传送指令的功能是完成多个数据的传送,BMB、BMW、BMD分别表示字节块传送、字块传送和双字块传送。如图3-22所示,当I0.0为ON时,执行字传送指令,将VW10中的数据传送到VW20中,同时利用ENO使Q0.0为ON;接着执行立即读指令,将输入I1口的状态读入VB30中;当I0.1为ON时,执行字节块的传送指令,将VB40开始的5个连续的字节数据传送到VB50开始的5个字节存储单元中,并且使Q0.1为ON。

978-7-111-51420-6-Chapter03-25.jpg

图3-22 传送指令

【例3-5】以10s为一个周期,依次循环点亮三盏信号灯;按下启动按钮I0.0,Q0.0点亮3s→Q0.1点亮4s→Q0.2点亮3s→Q0.0再次点亮…,不断循环;按下停止按钮I0.1,信号灯熄灭。

设计要点:1)考虑采用比较指令进行三段输出的切换;2)由于每10s循环一次,因此考虑每10s定时器复位并重新计时;3)考虑初始化问题,以便每次重新启动,程序按照预定的顺序执行,变量按照设定的值动作。

程序设计如图3-23所示。

3.移位指令与循环指令

移位指令将输入IN中的数的各位向右或向左移动N位后送给输出OUT。移位指令对移出的位自动补0,如果移动的位数N大于允许值(字节操作数为8,字操作数为16,双字操作数为32),则实际移位的位数为最大允许值,N为字节变量。当移位操作结果为0时,SM1.0被置1;当移位次数大于0时,SM1.1存放最后一次被移出的位的值。SLB、SLW、SLD分别表示字节左移、字左移和双字左移;SRB、SRW、SRD分别表示字节右移、字右移和双字右移。

978-7-111-51420-6-Chapter03-26.jpg

图3-23 例3-5程序

循环移位指令将输入IN中的各位向右或向左移动N位后,送给OUT。循环移位是环形的,即被移出来的位将返回到另一端空出来的位置。如果移动的位数N大于允许值(字节操作数为8,字操作数为16,双字操作数为32),则执行移位的次数为N除以实际数据长度余数,N为字节变量,SM1.0被置1;当移位次数大于0时,SM1.1存放最后一次被移出的位的值。RLB、RLW、RLD分别表示字节循环左移、字循环左移和双字循环左移;RRB、RRW、RRD分别表示字节循环右移、字循环右移和双字循环右移。

如图3-24所示。I0.0为ON时,执行一次左移位指令,如果VB10移位前的数据是10001100,则左移2位后变为00110000,SM1.1为0;I0.1为ON时,执行一次循环右移指令,如果VB50移位前的数据为01111011,则循环右移5位后变为11011011,SM1.1为1。

978-7-111-51420-6-Chapter03-27.jpg

图3-24 移位指令和循环指令

4.转换指令

(1)数据转换指令

数据转换指令功能是当使能端有效时,将数据IN端的数据类型按指令要求转换成相应的数据类型存放到OUT中。数据转换指令包括字节(B)与整数(I)之间、整数与双整数(DI)之间、BCD码与整数之间以及双整数与实数(R)之间的转换。当输出数据超出相应的数据类型范围时,错误标志寄存器SM1.1置1。

如图3-25所示,当I0.1为ON时,首先将16位模拟量输入(AIW0)的整数数据转化成双整数数据存放在AC0中,再将VW0中的整数转换成BCD码存放在VW2中,然后将AC0中的双整数转换成实数。

978-7-111-51420-6-Chapter03-28.jpg

图3-25 数据转换指令(www.xing528.com)

(2)ASCII码转换指令

ASCII码转换指令功能是当使能端有效时,将数据IN端的数据类型按指令要求转换成相应的数据类型存放到OUT中。ASCII码转换指令包括ASCII码与十六进制数、整数、双整数和实数之间的转换。可进行转换的ASCII码为30~39和41~46,对应的十六进制数为0~9和A~F。ATH、HTA、ITA、DTA、RTA分别表示将ASCII码转换成十六进制数、将十六进制数转换成ASCII码、整数转换成ASCII码、双整数转换成ASCII码以及实数转换成ASCII码。如图3-26所示,当PLC上电时,从VB100开始的连续2个单元的十六进制数(24,56)被转换成ASCII码,依次存放到以VB200开始的连续的4个单元中。

978-7-111-51420-6-Chapter03-29.jpg

图3-26 数据转换指令

5.数学运算指令

(1)加减乘除指令

该指令的功能是对有符号整数或实数进行加减乘除运算。加减乘除运算指令包括整数、双整数和实数运算,运算结果分别是整数、双整数和实数。如图3-27所示,当I0.0为ON时,加法指令盒接通,VW10和VW12中的整数进行相加,结果送入VW12中;当I0.1为ON时,执行MUL_DI指令,VD20和VD24中的双整数相乘,结果送入VD24中。

978-7-111-51420-6-Chapter03-30.jpg

图3-27 加减乘除指令

(2)加1减1指令

加1减1指令就是对有符号数或无符号数进行加1或减1的操作。加1指令包括字节递增INCB、字递增INCW和双字递增INCD;减1指令包括字节递减DECB、字递减DECW和双字递减DECD。如图3-28所示,当I0.0的状态从0跳变为1时,VB0中的数据就进行自加1,结果放回VB0中;VW2中的数据进行自减1,结果放回VW2中。

978-7-111-51420-6-Chapter03-31.jpg

图3-28 加1减1指令

(3)逻辑运算指令

逻辑运算指令操作数包括字节、字和双字,该指令的功能是对无符号数进行处理,指令包括逻辑与、逻辑或、逻辑异或和逻辑取反。逻辑与包括字节的逻辑与(ANDB)、字的逻辑与(ANDW)和双字的逻辑与(ANDD);逻辑或包括字节的逻辑或(ORB)、字的逻辑或(ORW)和双字的逻辑或(ORD);逻辑异或包括字节的逻辑异或(XORB)、字的逻辑异或(XORW)和双字的逻辑异或(XORD);逻辑取反包括字节的逻辑取反(INVB)、字的逻辑取反(INVW)和双字的逻辑取反(INVD)。如图3-29所示,当I0.0为ON时,对VB0中的数据逻辑取反后存放在VB2中;当I0.1为ON时,VW4和VW6中的数据相与后结果存放在VW8中。

978-7-111-51420-6-Chapter03-32.jpg

图3-29 逻辑运算指令

【例3-6】分析执行图3-30程序后的运行结果。

分析:VB200中被赋值16#03,该值为VW200的高8位,即(VW200)=16#0300,如果连接在输入端I0.2的开关开合了一次,则通过执行ROL_W指令后,(VW200)=16#0C00;如果连接在输入端I0.2的开关开合了两次,则(VW200)=16#3000。

978-7-111-51420-6-Chapter03-33.jpg

图3-30 循环移位练习

【例3-7】如何在S7-200的变量VB0中生成全0的状态位00000000;在变量VB1中生成全1的状态位11111111。

分析:若两个字节状态相反,则相“与”后可以得到每一位恒定为“0”的变量字节,相“或”后可以得到每一位恒定为“1”的变量字节,程序如图3-31所示。

978-7-111-51420-6-Chapter03-34.jpg

图3-31 例3-7图

程序中,MB0、MB1为两个标志字节,MB1为MB0的取“反”状态。VB0为全0字节,VB1为全1字节。

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

我要反馈