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。
图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。
图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分别表示字节右移、字右移和双字右移。
图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。
图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中的双整数转换成实数。
图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个单元中。
图3-26 数据转换指令
5.数学运算指令
(1)加减乘除指令
该指令的功能是对有符号整数或实数进行加减乘除运算。加减乘除运算指令包括整数、双整数和实数运算,运算结果分别是整数、双整数和实数。如图3-27所示,当I0.0为ON时,加法指令盒接通,VW10和VW12中的整数进行相加,结果送入VW12中;当I0.1为ON时,执行MUL_DI指令,VD20和VD24中的双整数相乘,结果送入VD24中。
图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中。
图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中。
图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。
图3-30 循环移位练习
【例3-7】如何在S7-200的变量VB0中生成全0的状态位00000000;在变量VB1中生成全1的状态位11111111。
分析:若两个字节状态相反,则相“与”后可以得到每一位恒定为“0”的变量字节,相“或”后可以得到每一位恒定为“1”的变量字节,程序如图3-31所示。
图3-31 例3-7图
程序中,MB0、MB1为两个标志字节,MB1为MB0的取“反”状态。VB0为全0字节,VB1为全1字节。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。