s7-200 传送及移位指令(MOV SHL)
- 格式:doc
- 大小:183.00 KB
- 文档页数:5
案例7相关背景知识关于:数据处理指令一、传送类指令传送类指令用于在各个编程元件之间进行数据传送。
根据每次传送数据的数量,可分为单个传送指令和块传送指令。
1.单个传送指令MOVB,BIR,BIW,MOVW,MOVD,MOVR单个传送指令每次传送l个数据,传送数据的类型分为字节传送、字传送、双字传送和实数传送。
(1)字节传送指令MOVB,BIR,BlW字节传送指令可分为周期性字节传送指令和立即字节传送指令。
①周期性字节传送指令MOVB。
在梯形图中,周期性字节传送指令以功能框的形式编程,指令名称为MOV_B。
当允许输入EN有效时,将一个无符号的单字节数据IN传送到0UT中。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时问),0006(问接寻址)。
在语句表中,周期性字节传送指令MOVB的指令格式为:MOVB IN,OUT。
IN和0UT的寻址范围。
操作数类型寻址范围IN BYTE VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常数OUT BYTE VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD②立即字节传送指令BIR,BIW。
立即读字节传送指令BIR:当允许输入EN有效时,BIR指令立即读取(不考虑扫描周期)当前输入继电器区中由IN指定的字节,并传送到OUT。
在梯形图中,立即读字节传送指令以功能框的形式编程,指令名称为:MOV_BIR。
当允许输入EN有效时,将1个无符号的单字节数据IN传送到0UT中。
在语句表中,立即读字节传送指令BIR的指令格式为: BIR IN,OUT。
IN和0UT的寻址范围如下表所示.操作数类型寻址范围IN BYTE IBOUT BYTE VB,IB,QB,MB,SB,SMB,LB,AC,。
VD,8AC,。
LD(2)字传送指令MOVW字传送指令MOVW将1个字长的有符号整数数据IN传送到OUT。
在梯形图中,字传送指令以功能框的形式编程,当允许输入EN有效时,将1个无符号的单字长数据IN传送到0UT中。
S7-200指令详解PLC在运行时需要处理的数据一般都根据数据的类型不同、数据的功能不同而把数据分成几类。
这些不同类型的数据被存放在不同的存储空间,从而形成不同的数据区。
S7-200的数据区可以分为数字量输入和输出映像区、模拟量输入和输出映像区、变量存储器区、顺序控制继电器区、位存储器区、特殊存储器区、定时器存储器区、计数器存储器区、局部存储器区、高速计数器区和累加器区。
3.1 S7-200的数据区1. 数字量输入和输出映象区(1) 数字量输入映像区(I区)数字量输入映像区是S7-200 CPU为输入端信号状态开辟的一个存贮区,用I表示。
在每次扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像区寄存器中。
该区的数据可以是位(1bit)、字节(8bit)、字(16bit)或者双字(32bit)。
其表示形式如下。
·用位表示I0.0、I0.1、…I0.7I1.0、I1.1、…I1.7…I15.0、I15.1、…I15.7共l28点。
输入映像区每个位地址包括存储器标识符、字节地址及位号三部分。
存储器标识符为“I”,字节地址为整数部分,位号为小数部分。
比如Il.0表明这个输入点是第1个字节的第0位。
·用字节表示IB0、IB1、…IB15共l6个字节。
输入映像区每个字节地址包括存储器字节标识符、字节地址两部分。
字节标识符为“IB”,字节地址为整数部分。
比如IB1表明这个输入字节是第1个字节,共8位,其中第0位是最低位,第7位是最高位。
·用字表示IW0、IW2、…IW14共8个字。
输入映像区每个字地址包括存储器字标识符、字地址两部分。
字标识符为“IW”,字地址为整数部分。
一个字含两个字节,一个字中的两个字节的地址必须连续,且低位字节在一个字中应该是高8位,高位字节在一个字中应该是低8位。
比如,IW0中的IB0应该是高8位,IB1应该是低8位。
·用双字表示ID0、ID4、…ID12共4个双字。
S7-200 SMART移位和循环移位运算指令
移位指令
S7-200 SMART移位指令分为左、右移位、循环左、右移位及寄存器移位指令三大类。
前两类移位指令按移位数据的长度又分字节型、字型、双字型3种。
下图所示为移位指令梯形图:
图1. 移位指令:
移位与循环指令相关视频教程的链接如下:
如下为一个移位和循环移位实例:
图2.移位和循环移位程序图
其中:
I4.0上升沿触发
FOR_W为字循环右移
SHL_W为字左移
其移位和循环移位的过程可由下图进一步说明:
图3.移位和循环移位过程说明图
For Next 循环
程序循环结构用于描述一段程序的重复循环执行。
由 FOR和NEXT指令构成程序的循环体。
FOR指令标记循环的开始,NEXT指令为循环体的结束指令。
图4.For Next 循环
其中:
INIT,FINAL分别定义起始值和结束值。
使能输入EN有效,循环体开始执行,执行到NEXT指令时返回,每执行一次循环体,当前值计数器INDX增1,达到终止值FINAL时,循环结束。
使能输入无效时,循环体程序不执行。
每次使能输入有效,指令自动将各参数复位。
注意:使用 FOR 和 NEXT 指令可在重复执行分配计数的循环中执行程序段。
每条 FOR 指令需要一条 NEXT 指令。
For Next 编程实例
图5.For Next 循环循环程序图
使用状态表监控程序的运行如下图所示
图6.状态监视图
如上表所示,VW100值为4, INDEX大于终止值,循环终止。
数据处理、运算指令及应用本章要点●数据传送、字节交换、字节立即读写、移位、转换指令的介绍、应用及实训●算术运算、逻辑运算、递增/递减指令的介绍、应用及实训●表的定义、填表指令、表取数指令、填充指令、表查找指令的介绍5.1 数据处理指令5.1.1 数据传送指令1. 字节、字、双字、实数单个数据传送指令MOV数据传送指令MOV,用来传送单个的字节、字、双字、实数。
指令格式及功能如表5-1所示。
表5-1单个数据传送指令MOV指令格式使ENO = 0即使能输出断开的错误条件是:SM4.3(运行时间),0006(间接寻址错误)。
【例5-1】将变量存储器VW10中内容送到VW100中。
程序如图5-1所示。
LD I0.1MOVW VW10, VW100图5-1 例5-1题图2. 字节、字、双字、实数数据块传送指令BLKMOV数据块传送指令将从输入地址IN 开始的N 个数据传送到输出地址OUT 开始的N 个单元中,N 的范围为1至255,N 的数据类型为:字节。
指令格式及功能如表5-2所示。
表5-2 数据传送指令BLKMOV 指令格式使ENO= 0的错误条件:0006(间接寻址错误)0091(操作数超出范围)。
【例5-2】程序举例:将变量存储器VB20开始的4个字节(VB20- VB23)中的数据,移至VB100开始的4个字节中(VB100-VB 103)。
程序如图5-2所示。
LAD STLLD I0.0BMB VB20 ,VB100, 4图5-2 例5-2图程序执行后,将VB20~VB23中的数据30、31、32、33送到VB100~VB103。
执行结果如下:数组1数据 30 31 32 33数据地址 VB20 VB21 VB22 VB23块移动执行后:数组2数据 30 31 32 33数据地址 VB100 VB101 VB102 VB1035.1.2 字节交换、字节立即读写指令1. 字节交换指令字节交换指令用来交换输入字IN 的最高位字节和最低位字节。
一般的逻辑控制系统用软继电器、定时器和计数器及基本指令就可以实现。
利用功能指令可以开发出更复杂的控制系统,以致构成网络控制系统。
这些功能指令实际上是厂商为满足各种客户的特殊需要而开发的通用子程序。
功能指令的丰富程度及其合用的方便程度是衡量PLC性能的一个重要指标。
S7-200的功能指令很丰富,大致包括这几方面:算术与逻辑运算、传送、移位与循环移位、程序流控制、数据表处理、PID指令、数据格式变换、高速处理、通信以及实时时钟等。
功能指令的助记符与汇编语言相似,略具计算机知识的人学习起来也不会有太大困难。
但S7-200系列PLC功能指令毕竟太多,一般读者不必准确记忆其详尽用法,需要时可可查阅产品手册。
表4-20 四则运算指令
表4-21 逻辑运算指令
表4-22 数据传送指令
表4-23 移位与循环移位指令
表4-24 交换和填充指令
表4-25 表操作指令
表4-26 数据转换指令
表4-27 特殊指令。
4.4 S7-200 PLC的功能指令PLC的功能指令(Functional Instruction)或称应用指令,是指令系统中满足特殊控制要求的那些指令。
在本节中主要介绍数据处理指令、数据运算指令、转换指令、表功能指令、程序控制类指令、中断指令、高速计数器指令、高速脉冲指令等。
1.指令格式指令的梯形图格式主要以指令盒的形式表示,如图4-49所示:图4-49 指令的梯形图格式指令盒的顶部为该指令的标题,如MOV_B,一般由两部分组成,前面部分为指令的助记符,后面部分为参与运算的数据类型,B表示字节,W表示字,DW表示双字、R表示实数、I表示整数、DI表示双整数。
指令的指令表格式也分为两部分,如字节传送指令的指令表格式为:MOVB IN,OUT。
前面部分为指令的助记符,后面部分为指令的操作数,其中“IN”为源操作数,“OUT”为目的操作数。
为了节省篇幅,对每条功能指令的操作数的内容即数据类型做如下约定:字节型:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*LD、*AC和常数。
字型及INT型:VW、IW、QW、MW、SW、SMW、LW、AC、T、C、*VD、*LD、*AC和常数。
双字型及DINT型:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*LD、*AC和常数。
2.指令的执行条作和运行情况指令梯形图格式中的“EN”端是允许输入端,为指令的执行条件,只要有“能流流入EN 端,指令就执行。
要注意的是:只要条件存在,该指令会在每个扫描周期执行一次,如果希望只执行一次,要在“EN”前加一条跳变指令。
在语句表(STL)程序中没有EN允许输入端,允许执行STL语句的条件是栈顶的值必须是“1”。
4.ENO状态(用于指令的级联)指令盒的右边设有“ENO”使能输出,若EN端有“能流”且指令被准确无误地执行了,则ENO端会有“能流”输出,传到下一个程序单元,如果指令运行出错,ENO端状态为0。
S7-200指令表指令名称梯形图语句表触点指令常开触点LD A O 位地址常闭触点LDN AN ON位地址常开立即触点LDI AI OI 位地址常闭立即触点LDNI ANI ONI位地址取反触点NOT正转换触点P EU负转换触点N ED线圈指令输出指令-()=位地址置位指令-( S )S 位地址、个数复位指令-( R )R 位地址、个数立即输出指令-( I )=I 位地址立即置位指令-(SI )SI 位地址、个数立即复位指令-(RI )RI 位地址、个数时间指令接通延时定时器TON TON T××PT(预设值)有记忆接通延时定时器TONR TONR T××PT 断开延时定时器TOF TOF T××PT 触发时间间隔指令BGN__ITIME BITIM OUT计算时间间隔指令CAL__ITIME CITIM IN OUT计数器指令增计数器CTU CTU C××PV(预设值)减计数器CTD CTD C××PV增减计数器CTUD CTUD C××PV普通传送指令字节传送指令MOV__B MOVB IN,OUT 字传送指令MOV__W MOVW IN,OUT 双字传送指令MOV__DW MOVD IN,OUT 实数传送指令MOV__R MOVR IN,OUT字节指令字节立即读指令MOV__BIR BIR IN ,OUT 字节立即写指令MOV__BIW BIW IN ,OUT块传送指令字节块传送指令BLKMOV__B BMB IN,OUT,N(数目)字块传送指令BLKMOV__W BMW IN,OUT,N(数目) 双字块传送指令BLKMOV__D BMD IN,OUT,N(数目)交换指令字节交换指令SWAP S字节比较指令字节等于比较指令==B LDB=IN1,IN2 AB=IN1,IN2 OB=IN1,IN2 字节不等于指令<>B LDB<>IN1,IN2 AB<>IN1,IN2 OB<>IN1,IN2 字节大于等于指令>=B LDB>=IN1,IN2 AB>=IN1,IN2 OB>=IN1,IN2 字节小于等于指令<=B LDB<=IN1,IN2 AB<=IN1,IN2 OB<=IN1,IN2 字节大于指令>B LDB>IN1,IN2 AB>IN1,IN2 OB>IN1,IN2 字节小于指令整数比较整数等于比较指令==I LDW=IN1,IN2 AW=IN1,IN2 OW=IN1,IN2 整数不等于指令<>I LDW<>IN1,IN2 AW<>IN1,IN2 OW<>IN1,IN2。
案例7相关背景知识关于:数据处理指令一、传送类指令传送类指令用于在各个编程元件之间进行数据传送。
根据每次传送数据的数量,可分为单个传送指令和块传送指令。
1.单个传送指令MOVB,BIR,BIW,MOVW,MOVD,MOVR单个传送指令每次传送l个数据,传送数据的类型分为字节传送、字传送、双字传送和实数传送。
(1)字节传送指令MOVB,BIR,BlW字节传送指令可分为周期性字节传送指令和立即字节传送指令。
①周期性字节传送指令MOVB。
在梯形图中,周期性字节传送指令以功能框的形式编程,指令名称为MOV_B。
当允许输入EN有效时,将一个无符号的单字节数据IN传送到0UT中。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时问),0006(问接寻址)。
在语句表中,周期性字节传送指令MOVB的指令格式为:MOVB IN,OUT。
IN和0UT的寻址范围。
操作数类型寻址范围IN BYTE VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常数OUT BYTE VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD②立即字节传送指令BIR,BIW。
立即读字节传送指令BIR:当允许输入EN有效时,BIR指令立即读取(不考虑扫描周期)当前输入继电器区中由IN指定的字节,并传送到OUT。
在梯形图中,立即读字节传送指令以功能框的形式编程,指令名称为:MOV_BIR。
当允许输入EN有效时,将1个无符号的单字节数据IN传送到0UT中。
在语句表中,立即读字节传送指令BIR的指令格式为: BIR IN,OUT。
IN和0UT的寻址范围如下表所示.操作数类型寻址范围IN BYTE IBOUT BYTE VB,IB,QB,MB,SB,SMB,LB,AC,。
VD,8AC,。
LD(2)字传送指令MOVW字传送指令MOVW将1个字长的有符号整数数据IN传送到OUT。
在梯形图中,字传送指令以功能框的形式编程,当允许输入EN有效时,将1个无符号的单字长数据IN传送到0UT中。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址)。
在语句表中,字传送指令MOVW的指令格式为MOVW IN,OUT。
IN和0UT的寻址范围.操作数类型寻址范围IN WORD VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD和常数OUT WORD VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD(3)双字传送指令MOVD双字传送指令MOVD将1个双字长的有符号整数数据IN传送到0UT。
在梯形图中,双字传送指令以功能框的形式编程,指令名称为:MOV_DW。
当允许输入EN有效时,将1个有符号的双字长数据IN传送到0UT中。
影响允许输出EN0正常工作的出错条件为SM4.3(运行时间),0006(问接寻址)。
在语句表中,双字传送指令MOVD的指令格式为:MOVD IN,OUT。
IN和0UT的寻址范围如下表所示。
操作数类型寻址范围IN DWORD VD,ID,QD,MD,SMD,LD,AC,HC,*VD,*AC,*LD和常数OUT DWORD VD,ID,QD,MD,SMD,LD,AC,*VD,*AC,*LD(4)实数传送指令MOVR实数传送指令MOVR 将1个双字长的实数数据烈传送到OUT 。
在梯形图中,实数传送指令以功能框的形式编程,当允许输入EN 有效时,将1个有符号的双字长实数数据IN 传送到OUT 中。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址)。
在语句表中,实数传送指令MOVR 的指令格式为:MOVR IN ,OUT 。
I N 和 0UT 的寻址范围如下表所示。
操作数类 型 寻址范围 INREAL VD ,ID ,QD ,MD ,SMD ,LD ,AC ,HC ,*VD ,*AC ,*LD 和常数 0UT REAL VD ,ID ,QD ,MD ,SMD ,LD ,AC ,4VD ,*AC ,*LD2.块传送指令BMB ,BMW ,BMD块传送指令用来进行一次传送多个数据,将最多可达255个的数据组成1个数据块,数据块的类型可以是字节块、字块和双字块。
(1) 字节块传送指令BMB字节块传送指令BMB 的功能是:当允许输入EN 有效时,将从输入字节IN 开始的N 个字节型数据传送到从OUT 开始的N 个字节存储单元。
(2)字块传送指令BMW字块传送指令BMW 的功能是:当允许输入EN 有效时,将从输入字IN 开始的N 个字型数据传送到从0UT 开始的N 字存储单元。
(3)双字块传送指令BMD双字块传送指令BMD 的功能是:当允许输入EN 有效时,将从输入双字IN 开始的N 个双字型数据传送到从OUT 开始的N 个双字存储单元。
块传送指令在梯形图中以功能框形式编程,影响允许输出EN0正常工作的出错条件为:M4.3(运行时间),0006(间接寻址),0091(数超界),在语句表中,块传送指令的指令格式如下。
字节块传送指令:BMB IN ,OUT ,N 。
字块传送指令: BMW IN ,OUT ,N 。
双字块传送指令:BMD IN ,OUT ,N 。
块传送指令的IN ,N ,OUT 的寻址范围 指令 操作数 类型 寻址范围BMB INBYTE VB ,Ⅲ,QB ,Ⅷ,SMB ,LB ,AC ,HC ,*VD ,*AC ,*LD OUTBYTE VB ,IB ,QB ,MB ,SMB ,LB ,AC ,HC ,*VD ,*AC ,*LD NBYTE VB ,IB ,QB ,MB ,SMB ,LB ,AC ,*VD ,*AC .*LD BMW INWORD VW ,IW ,QW ,MW ,SMW ,LW ,AIW ,T ,C ,AQW ,AC ,HC ,*VD ,*AC .*LD OUTWORD NBYTB VB ,IB ,QB ,MB ,SMB ,LB ,AC ,*WD ,*AC .*LD BMD INDWORD VD ,ID ,QD ,MD ,SMD ,SD ,LD ,AC ,HC ,*VD ,*AC .*LD OUTDWORD NBYTE VB ,113,QB ,MB ,SMB ,LB ,AC ,+VD ,*AC ,*LD 和常数 关于:移位指令1.左移和右移指令左移或右移指令的功能是将输入数据IN 左移或右移N 位后,把结果送到0UT 。
左移或右移指令的特点如下。
.被移位的数据是无符号的。
.在移位时,存放被移位数据的编程元件的移出端与特殊继电器SM1.1连接,移出位进入SM1.1(溢出),另一端自动补0。
.移位次数N与移位数据的长度有关,如N小于实际的数据长度,则执行N次移位。
如N大于数据长度,则执行移位的次数等于实际数据长度的位数。
.移位次数Ⅳ为字节型数据。
左移和右移指令影响的特殊继电器:SM1.0(零),当移位操作结果为0时,SM1.0自动置位;SM1.1(溢出)的状态由每次移出位的状态决定。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址)。
(1)字节左移指令SLB(Shift Left Byte)和字节右移指令SRB(Shift Right Byte)在梯形图中,字节左移指令或字节右移指令以功能框的形式编程,指令名称分别为:SHL B和SHR B。
当允许输入EN有效时,将字节型输入数据IN左移或右移N位(N≤8)后,送到0UT指定的字节存储单元。
在语句表中,字节左移指令SLB或字节右移指令SRB的指令格式如下。
字节左移指令:SLB OUT,N(OUT与IN为同一个存储单元)字节右移指令:SRB OUT,N(OUT与IN为同一个存储单元)(2)字左移指令SLW(ShiftLeftWord)和字右移指令SRW(ShiftRightWord)在梯形图中,字左移指令SLW或字右移指令SRW以功能框的形式编程,指令的名称分别为:SHL_W和SHR_W。
当允许输入EN有效时,将字型输入数据IN左移或右移N位(N≤l6)后,送到0UT指定的字存储单元。
在语句表中,字左移指令SLW或字右移指令SRW的指令格式如下。
字左移指令:SLW OUT,N(OUT与IN为同一个存储单元)字右移指令:SRW OUT,N(OUT与IN为同一个存储单元)(3)双字左移指令SLD(Shift Left Double word)和双字右移指令SRD(Shift Right Double word)在梯形图中,双字左移指令SLD或双字右移指令SRD以功能框的形式编程,当允许输入EN有效时,将双字型输入数据IN左移或右移N位(N≤32)后,送到0UT指定的双字存储单元。
在语句表中,双字左移指令SLD或双字右移指令SRD的指令格式如下。
双字左移指令:SLD OUT,N(OUT与IN为同一个存储单元)双字右移指令:SRD OUT,N(OUT与IN为同一个存储单元)2.循环左移和循环右移指令循环移位的特点如下。
·被移位的数据是无符号的。
·在移位时,存放被移位数据的编程元件的移出端既与另一端连接,又与特殊继电器SM1.1连接,移出位在被移到另一端的同时,也进入SM1.1(溢出),另一端自动补0。
·移位次数N与移位数据的长度有关,如N小于实际的数据长度,则执行N次移位。
如N大于数据长度,则执行移位的次数为N除以实际数据长度的余数。
·移位次数N为字节型数据。
循环移位指令影响的特殊继电器:SM1.0(零),当移位操作结果为0时,SM1.0自动置位:SM1.1(溢出)的状态由每次移出位的状态决定。
影响允许输出EN0正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址)。
(1)字节循环左移指令RLB(Rotate Left Byte)和字节循环右移指令RB(RotateRightByte)在梯形图中,字节循环移位指令以功能框的形式编程,指令名称分别为:ROL_B和ROR_B当允许输入EN有效时,把字节型输入数据州循环移位Ⅳ位后,送到由0UT指定的字在语句表中,字节循环移位指令的指令格式如下。
字节循环左移指令:RLB OUT,N字节循环右移指令:RRB OUT,N(2)字循环左移指令RLW(Rotate Left Word)和字循环右移指令RRW(Rotate Right Word)在梯形图中,字循环移位指令以功能框的形式编程,指令名称分别为:ROL_W和ROR_W。
当允许输入EN有效时,把字型输入数据IN循环移位N位后,送到由OUT指定的字。
在语句表中,字循环移位指令的指令格式如下。
字循环左移指令:RLW OUT,N字循环右移指令:RRW OUT,N(3)双字循环左移指令RLD(Rotate Left Double word)和双字循环右移指令RRD(Rotate Right Double word) 在梯形图中,双字循环移位指令以功能框的形式编程,指令名称分别为:ROL_DW和ROR_DW。