比较指令包括数值比较和字符串比较两类,都属于逻辑运算类指令。比较指令只是作为条件来使用,并不对存储器中的具体单元进行操作。对梯形图指令来说,就是接通或切断能流;对语句表语言来说,就是根据条件对栈顶实施置1或置0的操作。
比较指令的LAD指令格式如图5-93所示。
图5-93 比较指令的LAD指令格式
图5-93中IN1、IN2为输入的两个操作数,指令名称可以为以下名称:
1.数值比较指令
比较结果为真时,使能流通过,否则切断能流。
比较的运算有:IN1=IN2(等于);IN1>=IN2(大于等于);IN1<=IN2(小于等于);IN1>IN2(大于);IN1<IN2(小于);IN1<>IN2(不等于)。
STL指令格式:LDB=IN1,IN2
AB=IN1,IN2
OB=IN1,IN2
IN1,IN2的取值类型:单字节无符号数、有符号整数、有符号双字、有符号实数。
IN1,IN2的数据类型要匹配。
IN1,IN2的取值范围:
BYTE IB QB,VB,MB,SMB,SB,LB,AC,∗VD,∗LD,∗AC及常数;
INT IW,QW,VW,MW,SMW,SW,LW,TC,AC,AIW,∗VD,∗LD,∗AC及常数;
DINT ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数;
REAL ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数。
2.字符串比较指令
字符串比较指令用于比较两个ASCII码字符串。
如果比较结果为真,使能流通过,允许其后续指令执行,否则切断能流。
能够进行的比较运算有:IN1=IN2(字符串相同);IN1<>IN2(字符串不同)。
其STL格式:LDS=IN1,IN2;
AS=IN1,IN2;
OS=IN1,IN2
LDS<>IN1,IN2;
AS<>IN1,IN2;
OS<>IN1,IN2。
当比较结果为真时,将栈顶数值置1,否则置0。
IN1,IN2的取值范围:VB、LB、∗VD、∗LD、∗AC。
无论是否有能流,比较指令都将执行。如果没有能流输入,输出为0;如果有能流输入,则能流输出的情况取决于比较指令的执行结果。结果为真,允许能流通过;结果为假,不允许能流通过。
3.传输指令
S7-200提供了多种方式的数据传输指令,可以灵活方便地对存储器中各个位置的值以不同的方式进行修改。
指令介绍:
(1)字节、字、双字和实数传输指令。其LAD指令格式如图5-94所示。
图5-94 传输指令的LAD指令格式
指令名称可以是MOV_B、MOV_W、MOV_D、MOV_R,分别表示进行字节传输、字传输、双字传输、实数传输。
其STL格式:MOVBIN,OUT
MOVWIN,OUT
MOVDIN,OUT
MOVRIN,OUT
指令功能:将操作数IN中指明的存储区中的值传输到OUT指明的存储区中。当需要使用指针时,可以使用双字传输指令创建一个指针。
ENO=0的错误条件:0006(间接寻址错)。
IN取值范围:
BYTE IB,QB,VB,MB,SMB,SB,LB,AC,∗VD,∗LD,∗AC及常数;
INT IW,QW,VW,VW,SMW,SW,LW,TC,AC,AIW,∗VD,∗LD,∗AC及常数;
DINT ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数;
REAL ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数。
OUT取值范围:
BYTE IB,QB,VB,MB,SMB,SB,LB,AC,∗VD,∗LD,∗AC及常数
INT IW,OW,VW,MW,SMW,SW,LW,TC,AC,AIW,∗VD,∗LD,∗AC及常数;
DINT ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数;
REAL ID,QD,VD,MD,SMD,SD,LD,AC,HC,∗VD,∗LD,∗AC及常数。
(2)字节立即传输指令。
字节立即传输指令包括字节立即读指令和字节立即写指令两种。
指令名称可以是MOV_BIR、MOV_BIW,分别表示进行字节立即读、字节立即写。字节立即传输指令是立即I/O指令功能的扩展,允许以字节为单位在I/O点和存储器之间进行数据传输。
STL指令格式:BIR IN,OUT
BIW IN,OUT
字节立即读指令(BIR)读物理输入IN,并将结果存入OUT中,但过程映像寄存器并不刷新。字节立即写指令(BIW)从存储器IN读取数据,写入物理输出OUT,同时刷新相应的输出过程映像区。
使ENO=0的出错条件:0006(间接寻址错);不能访问扩展模块。
IN BYTE IB,∗AC,∗VD,∗LD。
OUT BYTE IB,QB,VB,MB,SMB,SB,LB,AC∗,VD,∗LD,∗AC。
字节立即写指令操作数的取值范围:
IN BYTE IB,QB,VB,MB,SMB,SB,LB,AC∗,VD,∗LD,∗AC及常数。
OUT BYTE QB,∗VD,∗LD,∗AC。
(3)块传输指令。
块传输指令的LAD指令格式如图5-95所示。(www.xing528.com)
图5-95 块传输指令的LAD指令格式
字节块(BLKMOV_B)、字块传输(BLKMOV_W)和双字块传输(BLKMOV_D)指令可传输指定数量的数据到一个新的存储区,数据的起始地址为IN,数据长度为N字节、字或者双字,新块的起始地址为OUT。
例如:当指令名称是BLKMOV W时表示进行字块传输。
其STL指令格式:BMB IN,OUT,N
BMW IN,OUT,N
BMD IN,OUT,N
操作数IN的取值范围:
BYTE IB,QB,VB,MB,SMB,SB,LB,∗VD,∗LD,∗AC;
WORD QW,VW,SMW,SW,LW,T,C,AC,AIW,∗VD,∗LD,∗AC及常数;
INT QW,VW,SMW,SW,LW,T,C,AC,AIW,∗VD,∗LD,∗AC及常数;
DINT ID,QD,VD,MD,SMD,SD,LD,∗VD,∗LD,∗AC。
操作数OUT的取值范围:
BYTE IB,QB,VB,MB,SMB,SB,LB,∗VD,∗LD,∗AC;
WORD IW,QW,VW SMW,SW,LW,T,C,AC,AIW,∗VD,∗LD,∗AC及常数;
INT IW,QW,VW,SMW,SW,LW,T,C,AC,AIW,∗VD,∗LD,∗AC及常数;
DINT ID,QD,VD,MD,SMD,SD,LD,∗VD,∗LD,∗AC。
操作数的取值范围:
BYTE IB,QB,VB,MB,SMB,SB,LB,AC,∗VD,∗LD,∗AC及常数。
ENO=0的错误条件:0006(间接寻址错),0091(操作数超出范围)。
(4)传输指令举例。
如图5-96所示为一个块传输指令的梯形图程序。该程序将VB20开始的4个字节放到VB100开始的存储区域,其所占空间大小不变。
图5-96 传输指令的应用
4.定时器指令
由于现场设备动作速度比较缓慢且存在差异,高速的PLC在控制这些设备时需要使用定时器,以使设备协调地运行。
定时器指令的LAD指令格式如图5-97所示。
图5-97 定时器指令的LAD指令格式
定时器分为接通延时定时器(TON),有记忆的接通延时定时器(TONR)和断开延时定时器(TOF)三种。
IN:表示输入的是一个位值逻辑信号,起着一个输入端的作用。
Txxx:表示定时器的编号。
PT:定时器的初值。
定时器工作方式及类型拓展资源如表5-7所列。
表5-7 定时器工作方式及类型拓展资源
指令举例:如图5-98所示为一个使用定时器指令的LAD程序。在程序中的定时器为TON定时器,其初值为10。当I0.0有效时,定时器开始计时;I0.0无效时,定时器被复位。
图5-98 定时器指令的使用
5.计数器指令
1)指令介绍
计数器指令的LAD指令格式如图5-99所示。
图5-99 计数器指令的LAD指令格式
计数器名称可以是CTU、CTD、CTUD,它们分别表示递增计数器、递减计数器、递增/递减计数器。
Cxxx:计数器编号。程序可以通过计数器编号对计数器位或计数器当前值进行访问。
CU:递增计数器脉冲输入端,上升沿有效。
CD:递减计数器脉冲输入端,上升沿有效。
R:复位输入端。
LD:装载复位输入端,只用于递减计数器。
PV:计数器预置值。
STL指令格式:CTU Cxxx,PV
CTUD Cxxx,PV
CTD Cxxx,PV
操作数的取值范围:
Cxxx:WORD 常数。
CU,CD,LD,R:BOOL能流。
PV:INT VW,IW,QW,MW,SW,SMW,LW,AIW,T,C,AC,∗VD,∗AC,∗LD及常数。
递增计数器指令(CTU)在每一个CU输入的上升沿(从OFF到ON)递增计数,当计数当前值(Cxxx)大于或等于预置计数值(PV)时,计数器位被置位。计数继续进行,一直到最大值32 767时停止计数。当复位输入端(R)置位时,计数器被复位。
递减计数器指令(CTD)在每一个输入CD的上升沿进行递减计数。当计数当前值(Cxxx)减为0时,计数器位被置位,并停止计数。当装入(LD)输入时,计数器将预设值(PV)装入计数器,同时复位计数器位,可以开始计数。
递增/递减计数器指令(CTUD)在每一个CU输入的上升沿递增计数;在每一个CD输入的上升沿递减计数。当计数当前值(Cxxx)大于或等于预置计数值(PV)时,计数器被置位。计数继续进行,计数器的当前值从-32 767~32 767可循环往复地变化。当复位输入端(R)置位时,计数器被复位。
S7-200提供了C0~C255共256个计数器,每一个计数器都具有三种功能。由于每个计数器只有一个当前值,因此不能将一个计数器号当做几个类型的计数器来使用。在程序中,既可以访问计数器位(表明计数器状态),也可以访问计数器的当前值,它们的使用方式相同,都以计数器加编号的方式访问,可根据使用的指令方式的不同由程序确定。
2)计数器指令举例
如图5-100、图5-101所示为使用计数器指令的LAD程序。图5-100、图5-101中,程序中的两个计数器分别为递减计数器和递增/递减计数器,其初值分别为3和4。LAD程序的下方为程序对应的时序图。
图5-100 计数器指令应用
图5-101 计数器指令应用
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。