第5章 Electrical Control and PLC Technology 数据处理、运算指令 PLC产生初期主要用于在工业控制中以逻辑控制来代替继电器控制。随着计算机技术与PLC技术的不断发展与融合,PLC增加了数据处理功能,使其在工业应用中功能更强,应用范围更广。在当今自动化程度越来越高的加工生产线中,仅仅具备基本指令的功能是远远不够的,还应该具备数据处理和运算的功能。
5.1数据处理指令 数据处理指令涉及对数据的非数值运算操作,主要包括传送、移位、字节交换、循环移位和填充等指令。
5.1.1数据传送指令 该类指令用来完成各存储单元之间一个或者多个数据的传送。可分为单一传送指令和块传送指令。 1. 字节、字、双字、实数单个数据传送指令MOV 数据传送指令MOV用来传送单个的字节、字、双字、实数。指令格式及功能如表51所示。 表51单个数据传送指令MOV指令格式 LAD STLMOVB IN,OUTMOVW IN,OUTMOVD IN,OUTMOVR IN,OUT 操作数及数据类型 IN: VB,IB,QB,MB,SB,SMB,LB,AC及常量; OUT: VB,IB,QB,MB,SB,SMB,LB,AC IN: VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC及常量; OUT: VW,T,C,IW,QW,SW,MW,SMW,LW,AC,AQW IN: VD,ID,QD,MD,SD,SMD,LD,HC,AC及常量; OUT: VD,ID,QD,MD,SD,SMD,LD,AC IN: VD,ID,QD,MD,SD,SMD,LD,AC及常量; OUT: VD,ID,QD,MD,SD,SMD,LD,AC 数据类型: 字节数据类型: 字、整数数据类型: 双字、双整数数据类型: 实数 功能使能输入有效时,即EN=1时,将一个输入IN的字节、字/整数、双字/双整数或实数送到OUT指定的存储器输出。在传送过程中不改变数据的大小。传送后,输入存储器IN中的内容不变 【提示】使ENO=0,即使能输出断开的错误条件是: SM4.3(运行时间)、0006(间接寻址错误)。 【例51】单个数据传送指令MOV程序举例。
(1) 将数据255传送到VB1里面。程序如图51所示。 图51MOV_B指令(例51题图) 设计分析: 当I0.1接通时,MOV_B指令将数据255传给VB1,传送后,VB1=255,此后,即使I0.1断开,VB1里的数据保持255不变。
(2) 将变量存储器VW10中的内容送到VW100中。程序如图52所示。 图52MOV_W指令(例51题图) (3) 在I0.1控制开关导通时,将VD100中的双字数据传送到VD200中。程序如图53所示。 图53MOV_DW指令(例51题图) (4) 在I0.1控制开关导通时,将常数3.14传送到双字单元VD200中。程序如图54所示。 图54MOV_R指令(例51题图) (5) 定时器及计数器当前值的读取。程序如图55所示。 图55定时器及计数器当前值的读取(例51题图) (6) 定时器(计数器)设定值的间接指定。程序如图56所示。 图56定时器设定值的间接指定(例51题图) 【提示】因定时器及计数器的数据类型都为整数型,因此使用传送指令时一定要用MOV_W。 【提示】功能指令涉及的数据类型多,编程时应保证操作数在合法范围内。S7200 PLC不支持完全数据类型检查。操作数的数据类型应与指令标识符相匹配。
2. 字节、字、双字、实数数据块传送指令BLKMOV 该类指令可用来进行一次多个(*多255)数据的传送。数据块传送指令将从输入地址IN开始的N个数据传送到输出地址OUT开始的N个单元中,N的范围为1~255,N的数据类型为字节。指令格式及功能如表52所示。 表52数据传送指令BLKMOV指令格式 LAD STLBMBIN,OUTBMWIN,OUTBMDIN,OUT 续表 操作数及数据类型 IN: VB,IB,QB,MB,SB,SMB,LB; OUT: VB,IB,QB,MB,SB,SMB,LB; 数据类型: 字节IN: VW,IW,QW,MW,SW,SMW,LW,T,C,AIW; OUT: VW,IW,QW,MW,SW,SMW,LW,T,C,AQW; 数据类型: 字 IN/OUT: VD,ID,QD,MD,SD,SMD,LD; 数据类型: 双字 N: VB,IB,QB,MB,SB,SMB,LB,AC及常量; 数据类型: 字节; 数据范围: 1~255 功能使能输入有效时,即EN=1时,把从输入IN开始的N个字节(字、双字)传送到以输出OUT开始的N个字节(字、双字)中 【提示】使ENO=0的错误条件: 0006(间接寻址错误)、0091(操作数超出范围)。 【例52】块传送指令BLKMOV程序举例。将变量存储器VB1开始的3个字节(VB1~VB3)中的数据移至VB11开始的3个字节中(VB11~VB13)。程序如图57所示。 图57例52题图
5.1.2字节交换、存储器填充与字节立即读写指令
1. 字节交换与存储器填充指令 字节交换指令用来交换输入字IN的*高位字节和*低位字节,交换结果仍存在输入端(IN)指定的地址中。 存储器填充指令在EN端口执行条件存在时,用IN指定的输入值填充从OUT指定的存储单元开始的N个字的存储空间。多用于字数据存储区填充及对空间的清零。指令格式如表53所示。 表53字节交换指令使用格式及功能 LADSTL功能及说明 SWAP IN功能: 使能输入EN有效时,将输入字IN的高字节与低字节交换,结果仍放在IN中; IN: VW,IW,QW,MW,SW,SMW,T,C,LW,AC; 数据类型: 字 续表 LADSTL功能及说明 FILL IN,OUT,N功能: 将字型输入数据从OUT开始的N个字存储单元中; IN: VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,常数,*VD,*AC,*LD; OUT: VW,IW,QW,MW,SW,SMW,LW,T,C,AQW,*VD,*AC,*LD; N: VB,IB,QB,MB,SB,SMB,LB,AC,常数,*VD,*AC,*LD; 数据类型: IN、OUT为字型,N为字节型,取值范围为1~255的整数 【提示】ENO=0的错误条件: 0006(间接寻址错误)、SM4.3(运行时间)。 【例53】字节交换和存储器填充指令应用举例,如图58、图59和图510所示。
(1) 字节交换指令 图58字节交换指令(例53题图) 分析: 指令执行之前VW50中的字为D6 C3; 指令执行之后VW50中的字为C3 D6。
(2) 存储器填充指令 图59VM200~VM219中全部清0(例53题图) 分析: 指令执行之后,VW200~VW219中全部清0。 另外,如果将VW100开始的256个字节全部清0。N怎么给? 图510VM100开始的256个字节全部清0(例53题图) 分析: 在I0.1控制开关导通时,将VW100开始的256个字节全部清0。
2. 字节立即读写指令 字节立即读指令(MOVBIR)在EN端口执行条件存在时,读取实际物理输入端IN给出的1个字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。 字节立即写指令(MOVBIW)在EN端口执行条件存在时,从输入IN所指定的存储单元中读取1个字节的数值并写入实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。指令格式及功能如表54所示。 表54字节立即读写指令格式