S7200指令Word格式.docx
《S7200指令Word格式.docx》由会员分享,可在线阅读,更多相关《S7200指令Word格式.docx(113页珍藏版)》请在冰点文库上搜索。
![S7200指令Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/312ce55c-50de-44fa-a11e-a869be250429/312ce55c-50de-44fa-a11e-a869be2504291.gif)
在传送过程中不改变数据的大小。
传送后,输入存储器IN中的内容不变
使ENO=0即使能输出断开的错误条件是:
SM4.3(运行时间),0006(间接寻址错误)。
【例5-1】将变量存储器VW10中内容送到VW100中。
程序如图5-1所示。
LDI0.1
MOVWVW10,VW100
图5-1例5-1题图
2.字节、字、双字、实数数据块传送指令BLKMOV
数据块传送指令将从输入地址IN开始的N个数据传送到输出地址OUT开始的N个单元中,N的范围为1至255,N的数据类型为:
字节。
指令格式及功能如表5-2所示。
表5-2数据传送指令BLKMOV指令格式
BMBIN,OUT
BMWIN,OUT
BMDIN,OUT
VB,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(操作数超出范围)。
【例5-2】程序举例:
将变量存储器VB20开始的4个字节(VB20-VB23)中的数据,移至VB100开始的4个字节中(VB100-VB103)。
程序如图5-2所示。
LADSTL
LDI0.0
BMBVB20,VB100,4
图5-2例5-2图
程序执行后,将VB20~VB23中的数据30、31、32、33送到VB100~VB103。
执行结果如下:
数组1数据30313233
数据地址VB20VB21VB22VB23
块移动执行后:
数组2数据30313233
数据地址VB100VB101VB102VB103
5.1.2字节交换、字节立即读写指令
1.字节交换指令
字节交换指令用来交换输入字IN的最高位字节和最低位字节。
指令格式如表5-3所示。
表5-3字节交换指令使用格式及功能
功能及说明
SWAPIN
功能:
使能输入EN有效时,将输入字IN的高字节与低字节交换,结果仍放在IN中
VW,IW,QW,MW,SW,SMW,T,C,LW,AC。
ENO=0的错误条件:
0006(间接寻址错误),SM4.3(运行时间)
【例5-3】字节交换指令应用举例。
如图5-3所示。
程序执行结果:
指令执行之前VW50中的字为:
D6C3
指令执行之后VW50中的字为:
C3D6
2.字节立即读写指令
字节立即读指令(MOV-BIR)读取实际输入端IN给出的1个字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。
字节立即写指令从输入IN所指定的存储单元中读取1个字节的数值并写入(以字节为单位)实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。
指令格式及功能如表5-4所示。
表5-4字节立即读写指令格式
BIRIN,OUT
字节立即读
IN:
IB
VB,IB,QB,MB,SB,SMB,LB,AC。
BIWIN,OUT
字节立即写
QB
0006(间接寻址错误),SM4.3(运行时间)。
注意:
字节立即读写指令无法存取扩展模块。
5.1.3移位指令及应用举例
移位指令分为左、右移位和循环左、右移位及寄存器移位指令三大类。
前两类移位指令按移位数据的长度又分字节型、字型、双字型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所指定的存储单元中,移出位补0,最后一移出位保存在SM1.1。
(3)使ENO=0的错误条件:
SLBOUT,N
SRBOUT,N
SLWOUT,N
SRWOUT,N
SLDOUT,N
SRDOUT,N
VB,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)对应的位数
SHL:
字节、字、双字左移N位;
SHR:
字节、字、双字右移N位
表5-5移位指令格式及功能
说明:
在STL指令中,若IN和OUT指定的存储器不同,则须首先使用数据传送指令MOV将IN中的数据送入OUT所指定的存储单元。
如:
SLBOUT,N
2.循环左、右移位指令
循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的位。
指令格式见表5-6。
(1)循环左移位指令(ROL)
使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。
当需要移位的数值是零时,零标志位SM1.0为1。
(2)循环右移位指令(ROR)
使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。
(3)移位次数N≥数据类型(B、W、D)时的移位位数的处理
如果操作数是字节,当移位次数N≥8时,则在执行循环移位前,先对N进行模8操作(N除以8后取余数),其结果0-7为实际移动位数。
如果操作数是字,当移位次数N≥16时,则在执行循环移位前,先对N进行模16操作(N除以16后取余数),其结果0-15为实际移动位数。
如果操作数是双字,当移位次数N≥32时,则在执行循环移位前,先对N进行模32操作(N除以32后取余数),其结果0-31为实际移动位数。
(4)使ENO=0的错误条件:
表5-6循环左、右移位指令格式及功能
RLBOUT,N
RRBOUT,N
RLWOUT,N
RRWOUT,N
RLDOUT,N
RRDOUT,N
ROL:
字节、字、双字循环左移N位;
ROR:
字节、字、双字循环右移N位。
【例5-4】程序应用举例,将AC0中的字循环右移2位,将VW200中的字左移3位。
程序及运行结果如图5-4所示。
图5-4例5-4题图
【例5-5】用I0.0控制接在Q0.0~Q0.7上的8个彩灯循环移位,从左到右以0.5s的速度依次点亮,保持任意时刻只有一个指示灯亮,到达最右端后,再从左到右依次点亮。
分析:
8个彩灯循环移位控制,可以用字节的循环移位指令。
根据控制要求,首先应置彩灯的初始状态为QB0=1,即左边第一盏灯亮;
接着灯从左到右以0.5s的速度依次点亮,即要求字节QB0中的“1”用循环左移位指令每0.5s移动一位,因此须在ROL-B指令的EN端接一个0.5s的移位脉冲(可用定时器指
图5-5例5-5题图
令实现)。
梯形图程序和语句表程序如图5-5所示。
LDSM0.1//首次扫描时
MOVB1,QB0//置8位彩灯初态
LDI0.0//T37产生周期为
ANT370.5s的移位脉冲
TONT37,+5
LDT37//每来一个脉冲
RLBQB0,1彩灯循环左移1位
3.移位寄存器指令(SHRB)
移位寄存器指令是可以指定移位寄存器的长度和移位方向的移位指令。
其指令格式如图5-6所示。
(1)移位寄存器指令SHRB将DATA数值移入移位寄存器。
梯形图中,EN为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动1位。
DATA为数据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。
S_BIT指定移位寄存器的最低位。
N指定移位寄存器的长度和移位方向,移位寄存器的最大长度为64位,N为正值表示左移位,输入数据(DATA)移入移位寄存器的最低位(S_BIT),并移出移位寄存器的最高位。
移出的数据被放置在溢出内存位(SM1.1)中。
N为负值表示右移位,输入数据移入移位寄存器的最高位中,并移出最低位(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-BIT
I0.1
溢出位
第一次移位
第一次移位后
第二次移位后
第一次移位前
时序图
MB10
I0.0
图5-7例5-6梯形图、语句表、时序图及运行结果
【例5-7】用PLC构成喷泉的控制。
用灯L1~L12分别代表喷泉的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.0L1:
Q0.0L5、L9:
Q0.4
(常闭)停止按钮:
I0.1L2:
Q0.1L6、L10:
Q0.5
L3:
Q0.2L7、L11:
Q0.6
L4:
Q0.3L8、L12:
Q0.7
(3)喷泉控制梯形图
梯形图程序如图5-10所示。
应用移位寄存器控制,根据喷泉模拟控制的8位输出(Q0.0~Q0.7),须指定一个8位的移位寄存器(M10.1~M11.0),移位寄存器的S-BIT位为M10.1,并且移位寄存器的每一位对应一个输出。
如图5-9所示。
M11.0
M10.7
M10.6
M10.5
M10.4
M10.3
M10.2
M10.1
M10.0
DATA
Q0.4
Q0.3
Q0.2
Q0.1
Q0.0
图5-9移位寄存器的位与输出对应关系图
在移位寄存器指令中,EN连接移位脉冲,每来一个脉冲的上升沿,移位寄存器移动一位。
移位寄存器应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并联的M11.0常开触点使M10.0置位为1,在第九个脉冲到来时由M10.0送入M10.1的值又为1,如此循环下去,直至按下停止按钮。
按下常闭停止按钮(I0.1),其对应的常闭触点接通,触发复位指令,使M10.1~M11.0的8位全部复位。
5.1.4转换指令
转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。
转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。
不同功能的指令对操作数要求不同。
类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD码与整数之间的转换等。
1.字节与字整数之间的转换
字节型数据与字整数之间转换的指令格式见表5-7所示。
表5-7字节型数据与字整数之间转换指令
BTIIN,OUT
ITBIN,OUT
VB,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指定的存储单元。
因为字节不带符号,所以无符号扩展
ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。
输入的字整数0至255被转换。
超出部分导致溢出,SM1.1=1。
输出不受影响
ENO=0的错误条件
0006间接地址
SM4.3运行时间
SM1.1溢出或非法数值
2.字整数与双字整数之间的转换
字整数与双字整数之间的转换格式、功能及说明,如表5-8所示。
3.双整数与实数之间的转换
双整数与实数之间的转换的转换格式、功能及说明,如表5-9所示。
表5-8字整数与双字整数之间的转换指令
ITDIN,OUT
DTIIN,OUT
VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,常量,数据类型:
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双字整数与实数之间的转换指令
DTRIN,OUT
ROUNDIN,OUT
TRUNCIN,OUT
DTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元
ROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元
TRUNC(截位取整)指令按将小数部分直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元
值得注意的是:
不论是四舍五入取整,还是截位取整,如果转换的实数数值过大,无法在输出中表示,则产生溢出,即影响溢出标志位,使SM1.1=1,输出不受影响。
4.BCD码与整数的转换
BCD码与整数之间的转换的指令格式、功能及说明,如表5-10所示。
表5-10BCD码与整数之间的转换的指令
BCDIOUT
IBCDOUT
IN:
VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,常量
VW,IW,QW,MW,SW,SMW,LW,T,C,AC
IN/OUT数据类型:
BCD-I指令将二进制编码的十进制数IN转换成整数,并将结果送入OUT指定的存储单元。
IN的有效范围是BCD码0至9999
I-BCD指令将输入整数IN转换成二进制编码的十进制数,并将结果送入OUT指定的存储单元。
IN的有效范围是0至9999
0006间接地址,SM1.6无效BCD数值,SM4.3运行时间
(1)数据长度为字的BCD格式的有效范围为:
0~9999(十进制),0000~9999(十六进制)0000000000000000~1001100110011001(BCD码)。
(2)指令影响特殊标志位SM1.6(无效BCD)。
(3)在表5-10的LAD和STL指令中,IN和OUT的操作数地址相同。
若IN和OUT操作数地址不是同一个存储器,对应的语句表指令为:
MOVINOUT