1、在传送过程中不改变数据的大小。传送后,输入存储器IN中的内容不变使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指令格式BMB IN,OUTBMW IN,OUTBMD
2、IN,OUTVB, IB, QB, MB, SB, SMB, LB。 数据类型:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW。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(操作数
3、超出范围)。【例5-2】程序举例:将变量存储器VB20开始的4个字节(VB20- VB23)中的数据,移至VB100开始的4个字节中(VB100-VB103)。程序如图5-2所示。LAD STL LD I0.0BMB VB20 ,VB100, 4图5-2 例5-2图程序执行后,将VB20VB23中的数据30、31、32、33送到VB100VB103。执行结果如下:数组1数据 30 31 32 33数据地址 VB20 VB21 VB22 VB23块移动执行后:数组2数据 30 31 32 33数据地址 VB100 VB101 VB102 VB1035.1.2 字节交换、字节立即读写指令1. 字节
4、交换指令字节交换指令用来交换输入字IN的最高位字节和最低位字节。指令格式如表5-3所示。表5-3 字节交换指令使用格式及功能功能及说明SWAP IN功能:使能输入EN有效时,将输入字IN的高字节与低字节交换,结果仍放在IN中VW, IW, QW, MW, SW, SMW, T, C, LW, AC。ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)【例5-3】字节交换指令应用举例。如图5-3所示。程序执行结果:指令执行之前VW50中的字为:D6 C3指令执行之后VW50中的字为:C3 D62. 字节立即读写指令字节立即读指令(MOV-BIR)读取实际输入端IN给出的1个
5、字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。字节立即写指令从输入IN所指定的存储单元中读取1个字节的数值并写入(以字节为单位)实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。指令格式及功能如表5-4所示。表5-4字节立即读写指令格式BIR IN,OUT字节立即读 IN: IBVB, IB, QB, MB, SB, SMB, LB, AC。BIW IN,OUT字节立即写QB 0006(间接寻址错误),SM4.3(运行时间)。注意:字节立即读写指令无法存取扩展模块。5.1.3 移位指令及应用举例移位指令分为左、右移位和循环左、右移位及寄存器移位指令三大类。前
6、两类移位指令按移位数据的长度又分字节型、字型、双字型3种。1. 左、右移位指令左、右移位数据存储单元与SM1.1(溢出)端相连,移出位被放到特殊标志存储器SM1.1位。移位数据存储单元的另一端补0。移位指令格式见表5-5。(1)左移位指令(SHL)使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM1.1。如果移位结果为0,零标志位SM1.0置1。(2)右移位指令使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向右移N位后,将结果输出到OUT所指定的存储单
7、元中,移出位补0,最后一移出位保存在SM1.1。(3)使ENO = 0的错误条件:SLB OUT,NSRB OUT,NSLW OUT,NSRW OUT,NSLD OUT,NSRD OUT,NVB, IB, QB, MB, SB, SMB, LB, AC, 常量。VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。VW, IW, QW, MW, SW, SMW, LW, T, C, AC。VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常量。VD, ID, QD, MD, SD, SMD, LD, AC。N数据类型(B、W、D)
8、对应的位数SHL:字节、字、双字左移N位;SHR:字节、字、双字右移N位表5-5 移位指令格式及功能说明:在STL指令中,若IN和OUT指定的存储器不同,则须首先使用数据传送指令MOV将IN中的数据送入OUT所指定的存储单元。如:SLB OUT,N 2. 循环左、右移位指令循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的位。指令格式见表5-6。(1)循环左移位指令(ROL)使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零
9、标志位SM1.0为1。(2)循环右移位指令(ROR)使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。(3)移位次数N数据类型(B、W、D)时的移位位数的处理如果操作数是字节,当移位次数N8时,则在执行循环移位前,先对N进行模8操作(N除以8后取余数),其结果0-7为实际移动位数。如果操作数是字,当移位次数N16时,则在执行循环移位前,先对N进行模16操作(N除以16后取余数),其结果0-15为实际移动位数。如果操作数是双字,当移位次数N32时,则在执行循环移位前,先对N进行模32操作(N除以3
10、2后取余数),其结果0-31为实际移动位数。(4)使ENO = 0的错误条件:表5-6 循环左、右移位指令格式及功能RLB OUT,NRRB OUT,NRLW OUT,NRRW OUT,NRLD OUT,NRRD OUT,NROL:字节、字、双字循环左移N位;ROR:字节、字、双字循环右移N位。【例5-4】程序应用举例,将AC0中的字循环右移2位,将VW200中的字左移3位。程序及运行结果如图5-4所示。图5-4 例5-4题图【例5-5】用I0.0控制接在Q0.0Q0.7上的8个彩灯循环移位,从左到右以0.5s的速度依次点亮,保持任意时刻只有一个指示灯亮,到达最右端后,再从左到右依次点亮。分析
11、:8个彩灯循环移位控制,可以用字节的循环移位指令。根据控制要求,首先应置彩灯的初始状态为QB0=1,即左边第一盏灯亮;接着灯从左到右以0.5s的速度依次点亮,即要求字节QB0中的“1”用循环左移位指令每0.5s移动一位,因此须在ROL-B指令的EN端接一个0.5s的移位脉冲(可用定时器指图5-5 例5-5题图令实现)。梯形图程序和语句表程序如图5-5所示。LD SM0.1 /首次扫描时MOVB 1, QB0 /置8位彩灯初态LD I0.0 /T37产生周期为 AN T37 0.5s的移位脉冲 TON T37, +5 LD T37 /每来一个脉冲RLB QB0, 1 彩灯循环左移1位 3. 移位
12、寄存器指令(SHRB)移位寄存器指令是可以指定移位寄存器的长度和移位方向的移位指令。其指令格式如图5-6所示。(1)移位寄存器指令SHRB将DATA数值移入移位寄存器。梯形图中,EN为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动1位。DATA为数据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的长度和移位方向,移位寄存器的最大长度为64位,N为正值表示左移位,输入数据(DATA)移入移位寄存器的最低位(S_BIT),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(SM1.1)中。N为负值表示
13、右移位,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT)。(2)DATA和S-BIT的操作数为I, Q, M, SM, T, C, V, S, L 。数据类型为:BOOL变量。N的操作数为VB, IB, QB, MB, SB, SMB, LB, AC, 常量。0006(间接地址),0091(操作数超出范围),0092(计数区错误)。(4)移位指令影响特殊内部标志位:SM1.1(为移出的位值设置溢出位)。【例5-6】移位寄存器应用举例。程序及运行结果如图5-7所示。溢出位(SM1.1)S-BITI0.1溢出位第一次移位第一次移位后第二次移位后第一次移位前时序图MB10I0.0图5-7
14、 例5-6梯形图、语句表、时序图及运行结果【例5-7】用PLC构成喷泉的控制。用灯L1L12分别代表喷泉的12个喷水注。(1)控制要求:按下起动按钮后,隔灯闪烁,L1亮0.5秒后灭,接着L2亮0.5秒后灭, 接着L3亮0.5秒后灭,接着L4亮0.5秒后灭,接着L5、L9亮0.5秒后灭,接着L6、L10亮0.5秒后灭,接着L7、L11亮0.5秒后灭,接着L8、L12亮0.5秒后灭,L1亮0.5秒后灭,如此循环下去,直至按下停止按钮。如图5-8所示。图5-8 喷泉控制示意图(2)I/O分配输入 输出(常开)起动按钮:I0.0 L1:Q0.0 L5、L9: Q0.4(常闭)停止按钮:I0.1 L2:
15、Q0.1 L6、L10:Q0.5L3:Q0.2 L7、L11:Q0.6L4:Q0.3 L8、L12:Q0.7(3)喷泉控制梯形图梯形图程序如图5-10所示。应用移位寄存器控制,根据喷泉模拟控制的8位输出(Q0.0Q0.7),须指定一个8位的移位寄存器(M10.1M11.0),移位寄存器的S-BIT位为M10.1,并且移位寄存器的每一位对应一个输出。如图5-9所示。M11.0M10.7M10.6M10.5M10.4M10.3M10.2M10.1M10.0DATAQ0.4Q0.3Q0.2Q0.1Q0.0图5-9 移位寄存器的位与输出对应关系图在移位寄存器指令中,EN连接移位脉冲,每来一个脉冲的上升
16、沿,移位寄存器移动一位。移位寄存器应0.5s移一位,因此需要设计一个0.5s产生一个脉冲的脉冲发生器(由T38构成)。M10.0为数据输入端DATA ,根据控制要求,每次只有一个输出,因此只需要在第一个移位脉冲到来时由M10.0送入移位寄存器S-BIT位(M10.1)一个“1”,第二个脉冲至第八T38构成0.5s产生一个机器扫描周期脉冲的脉冲发生器8位的移位寄存器移位寄存器的每一位对应一个输出图5-10 例5-7喷泉模拟控制梯形图个脉冲到来时由M10.0送入M10.1的值均为“0”,这在程序中由定时器T37延时0.5s导通一个扫描周期实现,第八个脉冲到来时M11.0置位为1,同时通过与T37并
17、联的M11.0常开触点使M10.0置位为1,在第九个脉冲到来时由M10.0送入M10.1的值又为1,如此循环下去,直至按下停止按钮。按下常闭停止按钮(I0.1),其对应的常闭触点接通,触发复位指令,使M10.1M11.0的8位全部复位。5.1.4 转换指令转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD码与整数之间的转换等。1. 字节与字整数之间
18、的转换字节型数据与字整数之间转换的指令格式见表5-7所示。表5-7 字节型数据与字整数之间转换指令BTI IN,OUTITB IN,OUTVB, IB, QB, MB, SB, SMB, LB, AC, 常量, 数据类型:VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:VB, IB, QB, MB, SB, SMB, LB, AC, 数据类型:功能及说明BTI指令将字节数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。因为字节不带符号,所以
19、无符号扩展ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。输入的字整数0至255被转换。超出部分导致溢出,SM1.1=1。输出不受影响ENO=0的错误条件0006 间接地址SM4.3 运行时间SM1.1 溢出或非法数值2. 字整数与双字整数之间的转换字整数与双字整数之间的转换格式、功能及说明,如表5-8所示。3. 双整数与实数之间的转换双整数与实数之间的转换的转换格式、功能及说明,如表5-9所示。表5-8 字整数与双字整数之间的转换指令ITD IN,OUTDTI IN,OUTVW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,
20、数据类型:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,数据类型:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:ITD指令将整数值(IN)转换成双整数值,并将结果置入OUT指定的存储单元。符号被扩展DTI指令将双整数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。如果转换的数值过大,则无法在输出中表示,产生溢出SM1.1=1,输出不受影响表5-9 双字整数与实数之间的转换指令DTR IN,OUTROUND IN,OUTTRUNC I
21、N,OUTDTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元 ROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元TRUNC(截位取整)指令按将小数部分直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元值得注意的是:不论是四舍五入取整,还是截位取整,如果转换的实数数值过大,无法在输出中表示,则产生溢出,即影响溢出标志位,使SM1.1=1,输出不受影响。4. BCD码与整数的转换BCD码与整数之间的转换的指令格式、功能及说明,如表5-10所示。表5-10 BCD码与整数之间的转换
22、的指令BCDI OUTIBCD OUTIN :VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量VW, IW, QW, MW, SW, SMW, LW, T, C, ACIN/OUT数据类型:BCD-I指令将二进制编码的十进制数IN转换成整数,并将结果送入OUT指定的存储单元。IN的有效范围是BCD码 0至9999I-BCD指令将输入整数IN转换成二进制编码的十进制数,并将结果送入OUT指定的存储单元。IN的有效范围是0至99990006 间接地址,SM1.6 无效BCD数值,SM4.3 运行时间(1)数据长度为字的BCD格式的有效范围为:09999(十进制),00009999(十六进制)0000 0000 0000 00001001 1001 1001 1001(BCD码)。(2)指令影响特殊标志位SM1.6(无效BCD)。(3)在表5-10的LAD和STL指令中,IN和OUT的操作数地址相同。若IN和OUT操作数地址不是同一个存储器,对应的语句表指令为: MOV IN OUT
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2