1、,单击此处编辑母板标题样式,处编辑幻灯片母版样式,第,4,章 基本指令,基本指令 知识,4.1,位操作类指令,4.2,运算指令,4.3,其他数据处理指令,4.4,表功能指令,4.5,转换指令,本章学习目的,l,位操作类指令,主要是位操作及运算指令,与时也包含与位操作密切相关的定时器和计数器指令等。,l,运算指令,包括常用的算术运算和逻辑运算指令。,l,其他数据处理类,包括数据的传送、移位、填充和交换等指令。,l,表功能指令,包括对表的存取和查找指令。,l,转换指令,包括数据类型转换、码转换和字符转换指令。,返回本章首页,4.1,位操作类指令,4.1.1,指令使用概述,4.1.2,基本逻辑指令,
2、4.1.3,复杂逻辑指令,4.1.4,定时器指令,4.1.5,计数器指令,4.1.6,比较,返回本章首页,4.1.1,指令使用概述,1.,主机的有效编程范围,存储器的存储容量及各编程元件的有效编程范围如右表,4.1,所示。,许多指令中含有操作数,操作数的有效编址范围如表,4.2,所示。,(,1,)指令例,整数加法,+I,,整数加法指令。使能输入有效时,将两个单字长(,16,位)的符号整数,IN1,和,IN2,相加,产生一个,16,位整数结果输出(,OUT,)。,在,LAD,和,FBD,中,以指令盒形式编程。指令盒的执行结果:,IN1+IN2=OUT,在,STL,中,执行结果:,IN1+OUT=
3、OUT,IN1,和,IN2,的寻址范围:,VW,、,IW,、,QW,、,MW,、,SW,、,SMW,、,LW,、,AIW,、,T,、,C,、,AC,、,*,VD,、,*,AC,、,*,LD,和常数。,OUT,的寻址范围:,VW,、,IW,、,QW,、,MW,、,SW,、,SMW,、,LW,、,T,、,C,、,AC,、,*,VD,、,*,AC,和,*,LD,。,本指令影响的特殊存储器位:,SM1.0,(零);,SM1.1,(溢出);,SM1.2,(负),使能流输出,ENO,断开的出错条件:,SM1.1,(溢出);,SM4.3,(运行时间);,0006,(间接寻址),指令格式:,+IIN1,OUT
4、,例:,+IVW0,VW4,本指令在梯形图和语句表中的编程如图,4.1,所示。,图,4.1,整数加法,3.,梯形图的基本绘制规则,(,1,),Network,(,2,)能流,/,使能,(,3,)编程顺序,(,4,)编号分配,(,5,)内、外触点的配合,(,6,)触点的使用次数,(,7,)线圈的使用次数,(,8,)线圈的连接,返回本节,4.1.2,基本逻辑指令,基本逻辑指令在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。,一般来说,语句表语言更适合于熟悉可编程序控制器和逻辑编程方面有经验的编程人员。用这种语言可以编写出用梯形图或功能框图无法实现的程
5、序。选择语句表时进行位运算要考虑主机的内部存储结构。,可编程序控制器中的堆栈与计算机中的堆栈结构相同,堆栈是一组能够存储和取出数据的暂时存储单元。堆栈的存取特点是“后进先出”,,S7-200,可编程序控制器的主机逻辑堆栈结构如表,4.3,所示。,1.,标准触点指令,(,1,),LD,:装入常开触点(,LoaD,),(,2,),LDN,:装入常闭触点(,LoaD Not,),(,3,),A,:与常开触点(,And,),(,4,),AN,:与常闭触点(,And Not,)。,(,5,),O,:或常闭触点(,Or,),(,6,),ON,:或常闭触点(,Or Not,),(,7,),NOT,:触点取非
6、(输出反相),(,8,),=,:输出指令,在语句表中,,LD,、,LDN,、,A,、,AN,、,O,、,ON,、,NOT,这几条指令的执行对逻辑堆栈的影响分别如表,4.4,、表,4.5,其后的说明。,表,4.5,指令,A,I0.2,的执行,程序实例:,本程序段用以介绍标准触点指令在梯形图、语句表和功能块图,3,种语言编程中的应用,仔细比较不同编程工具的区别与联系。,其梯形图和语句表程序结构如图,4.2,所示。,图,4.2,标准触点,LAD,和,STL,例,本程序对应的功能框图如图,4.3,所示。在功能框图中,常闭触点的装入和串并联用指令盒的对应输入信号端加圆圈来表示。,程序执行的时序图如图,4
7、.4,所示。,图,4.3,标准触点,FBD,例,2.,正负跳变指令,图,4.4,时序图,负跳变触点检测到脉冲的每一次负跳变后,产生一个微分脉冲。,指令格式:,ED,(无操作数),应用举例:图,4.5,是跳变指令的程序片断。图,4.6,是图,4.5,指令执行的时序。,图,4.5,跳变应用,图,4.6,时序,(,1,),S,,置位指令,(,2,),R,,复位指令,置位即置,1,,复位即置,0,。置位和复位指令可以将位存储区的某一位开始的一个或多个(最多可达,255,个)同类存储器位置,1,或置,0,。这两条指令在使用时需指明三点:操作性质、开始位和位的数量。各操作数类型及范围如表,4.6,所示。,
8、3.,置位和复位指令,(,1,),S,,置位指令,将位存储区的指定位(位,bit,)开始的,N,个同类存储器位置位。,用法:,Sbit,N,例:,SQ0.0,1,(,2,),R,,复位指令,将位存储区的指定位(位,bit,)开始的,N,个同类存储器位复位。当用复位指令时,如果是对定时器,T,位或计数器,C,位进行复位,则定时器位或计数器位被复位,同时,定时器或计数器的当前值被清零。,用法:,Rbit,N,例:,RQ0.2,3,应用举例:图,4.7,为置位和复位指令应用程序片断。,图,4.7,置位复位,本程序对应的时序图如图,4.8,所示。,图,4.8,时序图,4.,立即指令,(,1,)立即触点
9、指令,(,2,),=I,,立即输出指令,(,3,),SI,,立即置位指令,(,4,),RI,,立即复位指令,(,1,)立即触点指令,在每个标准触点指令的后面加“,I,”,。指令执行时,立即读取物理输入点的值,但是不刷新对应映像寄存器的值。,这类指令包括:,LDI,、,LDNI,、,AI,、,ANI,、,OI,和,ONI,。下面以,LDI,指令为例。,用法:,LDIbit,例:,LDII0.2,注意:,bit,只能是,I,类型。,(,2,),=I,,立即输出指令,用立即指令访问输出点时,把栈顶值立即复制到指令所指出的物理输出点,同时,相应的输出映像寄存器的内容也被刷新。,用法:,=Ibit,例:
10、,=IQ0.2,注意:,bit,只能是,Q,类型。,(,3,),SI,,立即置位指令,用立即置位指令访问输出点时,从指令所指出的位(,bit,)开始的,N,个(最多为,128,个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也被刷新。,用法:,SIbit,N,例:,SIQ0.0,2,注意:,bit,只能是,Q,类型。,SI,和,RI,指令的操作数类型及范围如表,4.7,所示。,(,4,),RI,,立即复位指令,用立即复位指令访问输出点时,从指令所指出的位(,bit,)开始的,N,个(最多为,128,个)物理输出点被立即复位,同时,相应的输出映像寄存器的内容也被刷新。,用法:,RIbi
11、t,N,例:,RIQ0.0,1,应用举例:,图,4.9,为立即指令应用中的一段程序,图,4.10,是程序对应的时序图。,图,4.9,立即指令程序,图,4.10,时序图,返回本节,4.1.3,复杂逻辑指令,1.,栈装载与指令,2.,栈装载或指令,3.,逻辑推入栈指令,4.,逻辑弹出栈指令,5.,逻辑读栈指令,6.,装入堆栈指令,1.,栈装载与指令,ALD,,栈装载与指令(与块)。在梯形图中用于将并联电路块进行串联连接。,在语句表中指令,ALD,执行情况如表,4.8,所示。,OLD,,栈装载或指令(或块)。在梯形图中用于将串联电路块进行并联连接。,在语句表中指令,OLD,执行情况如表,4.9,所示
12、。,2.,栈装载或指令,LPS,,逻辑推入栈指令(分支或主控指令)。在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。,注意:,使用,LPS,指令时,本指令为分支的开始,以后必须有分支结束指令,LPP,。即,LPS,与,LPP,指令必须成对出现。,在语句表中指令,LPS,执行情况如下表,4.10,所示。,3.,逻辑推入栈指令,4.,逻辑弹出栈指令,LPP,,逻辑弹出栈指令(分支结束或主控复位指令)。在梯形图中的分支结构中,用于将,LPS,指令生成一条新的母线进行恢复。,注意:,使用,LPP,指令时,必须出现在,LPS,的后面,与,LPS,成对出现
13、。,在语句表中指令,LPP,执行情况如下表,4.11,所示。,5.,逻辑读栈指令,LRD,,逻辑读栈指令。在梯形图中的分支结构中,当左侧为主控逻辑块时,开始第二个和后边更多的从逻辑块。,在语句表中指令,LRD,执行情况如表,4.12,所示。,6.,装入堆栈指令,LDS,,装入堆栈指令。本指令编程时较少使用。,指令格式:,LDSn,(,n,为,08,的整数),例:,LDS4,指令,LDS4,在语句表中执行情况如下表,4.13,所示。,应用举例:,图,4.11,是复杂逻辑指令在实际应用中的一段程序的梯形图。,图,4.11,复杂逻辑指令的应用,返回本节,4.1.4,定时器指令,系统提供,3,种定时指
14、令:,TON,、,TONR,和,TOF,。,精度等级:,S7-200,定时器的精度(时间增量,/,时间单位,/,分辨率)有,3,个等级:,1ms,、,10ms,和,100ms,,精度等级和定时器号关系如表,4.14,所示。,指令操作数,1,)编号:,2,)预设值,PT,:,3,)使能输入(只对,LAD,和,FBD,):,1.,接通延时定时器,TON,,接通延时定时器指令。用于单一间隔的定时。上电周期或首次扫描,定时器位,OFF,,当前值为,0,。使能输入接通时,定时器位为,OFF,,当前值从,0,开始计数时间,当前值达到预设值时,定时器位,ON,,当前值连续计数到,32767,。使能输入断开,
15、定时器自动复位,即定时器位,OFF,,当前值为,0,。,指令格式:,TONTxxx,,,PT,例:,TONT120,,,8,2.,有记忆接通延时定时器,TONR,,有记忆接通延时定时器指令。用于对许多间隔的累计定时。上电周期或首次扫描,定时器位,OFF,,当前值保持。使能输入接通时,定时器位为,OFF,,当前值从,0,开始计数时间。使能输入断开,定时器位和当前值保持最后状态。使能输入再次接通时,当前值从上次的保持值继续计数,当累计当前值达到预设值时,定时器位,ON,,当前值连续计数到,32767,。,TONR,定时器只能用复位指令进行复位操作。,指令格式:,TONRTxxx,,,PT,例:,T
16、ONRT20,,,63,3.,断开延时定时器,TOF,,断开延时定时器指令。用于断开后的单一间隔定时。上电周期或首次扫描,定时器位,OFF,,当前值为,0,。使能输入接通时,定时器位为,ON,,当前值为,0,。当使能输入由接通到断开时,定时器开始计数,当前值达到预设值时,定时器位,OFF,,当前值等于预设值,停止计数。,TOF,复位后,如果使能输入再有从,ON,到,OFF,的负跳变,则可实现再次启动。,指令格式:,TOFTxxx,,,PT,例:,TOFT35,,,6,4.,应用举例,例,1,:图,4.12,是介绍,3,种定时器的工作特性的程序片断,其中,T35,为通电延时定时器,,T2,为有记
17、忆通电延时定时器,,T36,为断电延时定时器。,图,4.12,定时器特性,本梯形图程序中输入输出执行时序关系如图,4.13,所示。,图,4.13,定时器时序,例,2,:用,TON,构造各种类型的时间继电器触点。,有的厂商的,PLC,只有,TON,定时器,因此,在这种情况下可以利用,TON,来构造断电延时型的各种触点。,图,4.14,是用,TON,构造,TOF,作用的触点。其时序图与,TOF,的时序完全相同。,图,4.15,用通电延时定时器与输出继电器组成带瞬动触点的定时器。,图,4.16,是利用常开触点实现通电和断电都延时的触点作用。,本程序实现的功能是:用输入端,I0.0,控制输出端,Q0.
18、0,,当,I0.0,接通后,过,3,个时间单位,Q0.0,端输出接通,当,I0.0,断开后,过,6,个时间单位,Q0.0,断开。,图,4.14,定时器应用,图,4.14,定时器应用,图,4.15,定时器应用,图,4.16,定时器应用,返回本节,4.1.5,计数器指令,1.,概 述,2.,增计数器,3.,增减计数器,4.,减计数器,5.,应用举例,1.,概述,计数器用来累计输入脉冲的次数。计数器也是由集成电路构成,是应用非常广泛的编程元件,经常用来对产品进行计数。,计数器指令有,3,种:增计数,CTU,、增减计数,CTUD,和减计数,CTD,。,指令操作数有,4,方面:编号、预设值、脉冲输入和复
19、位输入。,图,4.18,电机顺序起动,2.,增计数器,CTU,,增计数器指令。首次扫描,定时器位,OFF,,当前值为,0,。脉冲输入的每个上升沿,计数器计数,1,次,当前值增加,1,个单位,当前值达到预设值时,计数器位,ON,,当前值继续计数到,32767,停止计数。复位输入有效或执行复位指令,计数器自动复位,即计数器位,OFF,,当前值为,0,。,指令格式:,CTUCxxx,,,PV,例:,CTUC20,,,3,程序实例:,图,4.19,为增计数器的程序片断和时序图。,图,4.19,增计数程序及时序,3.,增减计数器,CTUD,,增减计数器指令。有两个脉冲输入端:,CU,输入端用于递增计数,
20、,CD,输入端用于递减计数。,指令格式:,CTUDCxxx,,,PV,例:,CTUDC30,,,5,程序实例:如图,4.20,所示为增减计数器的程序片断和时序图。,图,4.20,增减计数程序及时序,4.,减计数器,CTD,,增减计数器指令。脉冲输入端,CD,用于递减计数。首次扫描,定时器位,OFF,,当前值为等于预设值,PV,。计数器检测到,CD,输入的每个上升沿时,计数器当前值减小,1,个单位,当前值减到,0,时,计数器位,ON,。,复位输入有效或执行复位指令,计数器自动复位,即计数器位,OFF,,当前值复位为预设值,而不是,0,。,指令格式:,CTDCxxx,,,PV,例:,CTDC40,
21、,,4,程序实例:图,4.21,为减计数器的程序片断和时序图。,图,4.21,减计数程序及时序,5.,应用举例,1,)循环计数。,以上三种类型的计数器如果在使用时,将计数器位的常开触点作为复位输入信号,则可以实现循环计数。,2,)用计数器和定时器配合增加延时时间,如图,4.22,所示。试分析以下程序中实际延时为多长时间。,图,4.22,计数器应用例,返回本节,4.1.6,比较,1.,字节比较,2.,整数比较,3.,双字整数比较,4.,实数比较,5.,应用举例,1.,字节比较,字节比较用于比较两个字节型整数值,IN1,和,IN2,的大小,字节比较是无符号的。比较式可以是,LDB,、,AB,或,O
22、B,后直接加比较运算符构成。,如:,LDB=,、,AB,、,OB=,等。,整数,IN1,和,IN2,的寻址范围:,VB,、,IB,、,QB,、,MB,、,SB,、,SMB,、,LB,、,*,VD,、,*,AC,、,*,LD,和常数。,指令格式例:,LDB=VB10,VB12,ABMB0,MB1,OB=,等。,整数,IN1,和,IN2,的寻址范围:,VW,、,IW,、,QW,、,MW,、,SW,、,SMW,、,LW,、,AIW,、,T,、,C,、,AC,、,*,VD,、,*,AC,、,*,LD,和常数。,指令格式例:,LDW=VW10,VW12,AWMW0,MW4,OW=AC2,1160,3.,
23、双字整数比较,双字整数比较用于比较两个双字长整数值,IN1,和,IN2,的大小,双字整数比较是有符号的(双字整数范围为,16#80000000,和,16#7FFFFFFF,之间)。,指令格式例:,LDD=VD10,VD14,ADMD0,MD8,OD=HC0,*AC0,4.,实数比较,实数比较用于比较两个双字长实数值,IN1,和,IN2,的大小,实数比较是有符号的(负实数范围为,-1.175495E-38,和,-3.402823E+38,,正实数范围为,+1.175495E-38,和,+3.402823E+38,)。比较式可以是,LDR,、,AR,或,OR,后直接加比较运算符构成。,指令格式例:
24、,LDR=VD10,VD18,ARMD0,MD12,OR*AC1,VD100,5.,应用举例,控制要求:,一自动仓库存放某种货物,最多,6000,箱,需对所存的货物进出计数。货物多于,1000,箱,灯,L1,亮;货物多于,5000,箱,灯,L2,亮。,其中,,L1,和,L2,分别受,Q0.0,和,Q0.1,控制,数值,1000,和,5000,分别存储在,VW20,和,VW30,字存储单元中。,本控制系统的程序如图,4.23,所示。程序执行时序如图,4.24,所示。,图,4.23,程序举例,图,4.24,时序图,返回本节,4.2,运算指令,4.2.1,加法,4.2.2,减法,4.2.3,乘法,4
25、.2.4,除法,4.2.5,数学函数指令,4.2.6,增减,4.2.7,逻辑运算,返回本章首页,4.2.1,加法,1.,整数加法,+I,,整数加法指令。使能输入有效时,将两个单字长(,16,位)的符号整数,IN1,和,IN2,相加,产生一个,16,位整数结果,OUT,。,图,4.25,整数加法例,2.,双整数加法,+D,,双整数加法指令。使能输入有效时,将两个双字长(,32,位)的符号双整数,IN1,和,IN2,相加,产生一个,32,位双整数结果,OUT,。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,IN1+IN2=OUT,。,在,STL,中,执行结果:,IN1+OUT=OUT
26、,。,OUT,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、*,VD,、*,AC,、*,LD,。,指令格式:,+DIN1,,,OUT,例:,+DVD0,,,VD4,+R,,实数加法指令。使能输入有效时,将两个双字长(,32,位)的实数,IN1,和,IN2,相加,产生一个,32,位实数结果,OUT,。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,IN1+IN2=OUT,。,OUT,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、,*,VD,、,*,AC,、,*,LD,。,本指令影响的特殊存
27、储器位:,SM1.0,(零);,SM1.1,(溢出);,SM1.2,(负)。,返回本节,4.2.2,减法,减法指令是对有符号数进行相减操作。包括:整数减法、双整数减法和实数减法。这三种减法指令与所对应的加法指令除运算法则不同之外,其他方面基本相同。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,IN1-IN2=OUT,。,在,STL,中,执行结果:,OUT-IN2=OUT,。,指令格式:,-IIN2,OUT,(整数减法),-DIN2,OUT,(双整数减法),-RIN2,OUT,(实数减法),例:,-IAC0,VW4,返回本节,4.2.3,乘法,*,I,,整数乘法指令。使能输入有效时
28、,将两个单字长(,16,位)的符号整数,IN1,和,IN2,相乘,产生一个,16,位整数结果,OUT,。,指令格式:*,IIN1,,,OUT,例:*,IVW0,,,AC0,1.,整数乘法,2.,完全整数乘法,MUL,,完全整数乘法指令。使能输入有效时,将两个单字长(,16,位)的符号整数,IN1,和,IN2,相乘,产生一个,32,位双整数结果,OUT,。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,IN1*IN2=OUT,。,OUT,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、,*,VD,、,*,AC,、,*,LD,。,本指令影响
29、的特殊存储器位:,SM1.0,(零);,SM1.1,(溢出);,SM1.2,(负);,SM1.3,(被,0,除)。,指令格式:,MULIN1,,,OUT,例:,MULAC0,,,VD10,3.,双整数乘法,*,D,,双整数乘法指令。使能输入有效时,将两个双字长(,32,位)的符号整数,IN1,和,IN2,相乘,产生一个,32,位双整数结果,OUT,。,在,STL,中,执行结果:,IN1*OUT=OUT,。,IN1,和,IN2,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,HC,、,AC,、,*,VD,、,*,AC,、,*,LD,和常数。,OUT,的寻址范
30、围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、,*,VD,、,*,AC,、,*,LD,。,本指令影响的特殊存储器位:,SM1.0,(零);,SM1.1,(溢出);,SM1.2,(负);,SM1.3,(被,0,除)。,指令格式:,*,DIN1,,,OUT,例:,*,DVD0,,,AC0,4.,实数乘法,*,R,,实数乘法指令。使能输入有效时,将两个双字长(,32,位)的实数,IN1,和,IN2,相乘,产生一个,32,位实数结果,OUT,。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,IN1*IN2=OUT,。,在,STL,中,执行结果:,IN
31、1*OUT=OUT,。,IN1,和,IN2,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、,*,VD,、,*,AC,、,*,LD,和常数。,OUT,的寻址范围:,VD,、,ID,、,QD,、,MD,、,SD,、,SMD,、,LD,、,AC,、,*,VD,、,*,AC,、,*,LD,。,本指令影响的特殊存储器位:,SM1.0,(零);,SM1.1,(溢出);,SM1.2,(负);,SM1.3,(被,0,除)。,指令格式:,*,RIN1,,,OUT,例:,*,RVD0,,,AC0,返回本节,4.2.4,除法,在,LAD,和,FBD,中,以指令盒形式编
32、程,执行结果:,IN1/IN2=OUT,。,在,STL,中,执行结果:,OUT/IN2=OUT,。,指令格式:,/IIN2,OUT,(整数除法),DIVIN2,OUT,(整数完全除法),/DIN2,OUT,(双整数除法),/RIN2,OUT,(实数除法),例:,DIVVW10,VD100,/IVW20,VW200,两条指令的编程及执行情况比较如图,4.26,所示。,图,4.26,除法指令应用,对于除法指令:,对于完全除法指令:,返回本节,4.2.5,数学函数指令,1.,平方根,2.,自然对数,3.,指数,4.,正弦、余弦、正切,1.,平方根,SQRT,,平方根指令。把一个双字长(,32,位)的
33、实数,IN,开平方,得到,32,位的实数结果。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,SQRT(IN)=OUT,。,在,STL,中,执行结果:,SQRT(IN)=OUT,。,本指令影响的特殊存储器位:,SM1.0,(零);,SM1.1,(溢出和非法值);,SM1.2,(负)。,使能流输出,ENO,断开的出错条件:,SM1.1,(溢出);,SM4.3,(运行时间);,0006,(间接寻址)。,指令格式:,SQRTIN,,,OUT,例:,SQRTVD0,,,AC0,2.,自然对数,LN,,自然对数指令。将一个双字长(,32,位)的实数,IN,取自然对数,得到,32,位的实数结果
34、。,应用实例:,求以,10,为底的,50,(存于,VD0,)的常用对数,结果放到,AC0,。,本运算程序如图,4.27,所示。,图,4.27,自然对数的应用,3.,指数,EXP,,指数指令。将一个双字长(,32,位)的实数,IN,取以,e,为底的指数,得到,32,位的实数结果,OUT,。,在,LAD,和,FBD,中,以指令盒形式编程,执行结果:,EXP(IN)=OUT,。,在,STL,中,执行结果:,EXP(IN)=OUT,。,指令格式:,EXPIN,OUT,例:,EXPVD0,AC0,4.,正弦、余弦、正切,SIN,、,COS,、,TAN,,即正弦、余弦、正切指令。将一个双字长(,32,位)
35、的实数弧度值,IN,分别取正弦、余弦、正切,各得到,32,位的实数结果。,如果已知输入值为角度,要先将角度值转化为弧度值,方法:使用(,*,R,),MUL_R,指令用角度值乘以,/180,即可。,例:,TANVD0,AC0,应用实例:求,COS160,o,的值。如图,4.28,所示。,图,4.28,三角函数应用例,返回本节,4.2.6,增减,1.,字节增和字节减,2.,字增和字减,3.,双字增和双字减,4.,应用实例,1.,字节增和字节减,INCB,,字节增指令。使能输入有效时,把一字节长的无符号输入数(,IN,)加,1,,得到一,字节的无符号输出结果,OUT,。,DECB,,字节减指令。使能
36、输入有效时,把一字节长的无符号输入数(,IN,)减,1,,得到一字节的无符号输出结果,OUT,。,2.,字增和字减,3.,双字增和双字减,INCD,,双字增指令。使能输入有效时,把双字长(,32,位)的有符号输入数(,IN,)加,1,,得到双字长的有符号输出结果,OUT,。,DECD,,双字减指令。使能输入有效时,把双字长的有符号输入数(,IN,)减,1,,得到双字长的有符号输出结果,OUT,。,4.,应用实例,控制要求:,食品加工厂对饮料生产线上的盒装饮料进行计数,每,24,盒为一箱,要求能记录生产的箱数。,程序及说明:,程序如图,4.29,所示。,图,4.29,增减指令的应用,返回本节,4
37、.2.7,逻辑运算,1.,字节逻辑运算,2.,字逻辑运算,3.,双字逻辑运算,1.,字节逻辑运算,字节逻辑运算包括字节与、字节或、字节异或、字节取反。,2.,字逻辑运算,字节逻辑运算包括字节与、字节或、字节异或、字节取反。,3.,双字逻辑运算,字逻辑运算包括双字与、双字或、双字异或、双字取反。,返回本节,4.3,其他数据处理指令,4.3.1,传送类指令,4.3.2,移位指令,4.3.3,字节交换指令,4.3.4,填充指令,返回本章首页,4.3.1,传送类指令,1.,单一传送,(,1,),MOVB,,字节传送指令,(,2,),BIR,,传送字节立即读指令,(,3,),BIW,,传送字节立即写指令
38、,(,4,),MOVW,,字传送指令,(,5,),MOVD,,双字传送指令,(,6,),MOVR,,实数传送指令,2.,块传送,(,1,),BMB,,字节块传送指令,(,2,),BMW,,字块传送指令,(,3,),BMD,,双字块传送指令,1.,单一传送,(,1,),MOVB,,字节传送指令,使能输入有效时,把一个单字节无符号数据由,IN,传送到,OUT,所指的字节存储单元。,IN,的寻址范围:,VB,、,IB,、,QB,、,MB,、,SB,、,SMB,、,LB,、,AC,、,*,VD,、,*,AC,、,*,LD,和常数。,OUT,的寻址范围:,VB,、,IB,、,QB,、,MB,、,SB,、
39、,SMB,、,LB,、,AC,、,*,VD,、,*,AC,、,*,LD,。,指令格式:,MOVBIN1,OUT,例:,MOVBVB0,QB0,(,2,),BIR,,传送字节立即读指令,使能输入有效时,立即读取单字节物理输入区数据,IN,,并传送到,OUT,所指的字节存储单元。,IN,的寻址范围:,IB,OUT,的寻址范围:,VB,、,IB,、,QB,、,MB,、,SB,、,SMB,、,LB,、,AC,、,*,VD,、,*,AC,、,*,LD,。,指令格式:,BIRIN1,OUT,例:,BIRIB0,VB10,2.,块传送,指令可用来进行一次多个(最多,255,个)数据的传送,数据块类型可以是字
40、节块、字块、双字块。,三条指令中,N,的寻址范围都是:,VB,、,IB,、,QB,、,MB,、,SB,、,SMB,、,LB,、,AC,、*,VD,、*,AC,、*,LD,和常数。,使,ENO,断开的出错条件:,SM4.3,(运行时间);,0006,(间接寻址);,0091,(数超界)。,返回本节,4.3.2,移位指令,1.,左移和右移,2.,循环左移、循环右移,3.,寄存器移位,(,1,)字节左移和字节右移,SLB,和,SRB,,字节左移和字节右移。使能输入有效时,把字节型输入数据,IN,左移或右移,N,位后,再将结果输出到,OUT,所指的字节存储单元。最大实际可移位次数为,8,。,1.,左移
41、和右移,以第一条指令为例,指令执行情况如表,4.16,所示。,表,4.16,指令,SLB,执行结果,SLW,和,SRW,,字左移和字右移。指令盒与字节移位比较,只有名称变为,SHR_W,和,SHR_W,。使能输入有效时,把字型输入数据,IN,左移或右移,N,位后,再将结果输出到,OUT,所指的字存储单元。最大实际可移位次数为,16,。,指令格式:,SLWOUT,N,(字左移),SRWOUT,N,(字右移),例:,SLWMW0,2,SRWLW0,3,以第二条指令为例,指令执行情况如表,4.17,所示。,(,3,)双字左移和双字右移,SLD,和,SRD,,双字左移和双字右移。指令盒与字节移位比较,
42、只有名称变为,SHL_DW,和,SHR_DW,,其他部分完全相同。使能输入有效时,把双字型输入数据,IN,左移或右移,N,位后,再将结果输出到,OUT,所指的双字存储单元。最大实际可移位次数为,32,。,指令格式:,SLDOUT,N,(双字左移),SRDOUT,N,(双字右移),例:,SLDMD0,2,SRDLD0,3,2.,循环左移、循环右移,循环左移和循环右移根据所循环移位的数的长度分别又可分为字节型、字型、双字型。,循环移位特点:,移位数据存储单元的移出端与另一端相连,同时又与,SM1.1,(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到,SM1.1,位存储单元。例如在循环右
43、移时,移位数据的最右端位移入最左端,同时又进入,SM1.1,。,SM1.1,始终存放最后一次被移出的位。,循环移位,的类型,(,1,)字节循环左移和字节循环右移,(,2,)字循环左移和字循环右移,(,3,)双字循环左移和双字循环右移,表,4.18,指令,RRW,执行结果,SHRB,,寄存器移位指令。,该指令在梯形图中有,3,个数据输入端:,DATA,为数值输入,,将该位的值移入移位寄存器;,S_BIT,为移位寄存器的最低位端;,N,指定移位寄存器的长度。每次使能输入有效时,整个移位寄存器移动,1,位。,移位特点:,移位寄存器长度在指令中指定,没有字节型、字型、双字型之分。可指定的最大长度为,6
44、4,位,可正也可负。,3.,寄存器移位,表,4.19,指令,SHRB,执行结果,返回本节,4.3.3,字节交换指令,SWAP,,字节交换指令。使能输入有效时,将字型输入数据,IN,的高字节和低字节进行交换。,本指令只对字型数据进行处理,指令的执行不影响的特殊存储器位。,使能流输出,ENO,断开的出错条件:,SM4.3,(运行时间);,0006,(间接寻址)。,指令格式:,SWAPIN,(字节交换),例:,SWAPVW10,以第本指令为例,指令执行情况如表,4.20,所示。,返回本节,4.3.4,填充指令,FILL,,存储器填充指令。使能输入有效时,用字型输入数据,IN,填充从输出,OUT,所指
45、的单元开始的,N,个字存储单元。,填充指令只对字型数据进行处理,,N,值为字节型,可取从,1255,的整数。指令的执行不影响的特殊存储器位。,使能流输出,ENO,断开的出错条件:,SM4.3,(运行时间);,0006,(间接寻址);,0091,(操作数超界)。,指令格式:,FILLIN,OUT,N,(填充指令),例:,FILL10,VW100,12,本条指令的执行结果是:将数据,10,填充到从,VW100,到,VW122,共,12,个字存储单元。,返回本节,4.4,表功能指令,4.4.1,表存数指令,4.4.2,表取数指令,4.4.3,表查找指令,返回本章首页,表只对字型数据存储,表的格式例如
46、表,4.21,所示。,4.4.1,表存数指令,ATT,,表存数指令。,该指令在梯形图中有,2,个数据输入端:,DATA,为数值输入,指出将被存储的字型数据或其地址;,TBL,表格的首地址,用以指明被访问的表格。当使能输入有效时,将输入字型数据添加到指定的表格中。,表存数特点:,表存数时,新存的数据添加在表中最后一个数据的后面。每向表中存一个数据,实际填表数,EC,会自动加,1,。,表,4.22,指令,ATT,执行结果,返回本节,4.4.2,表取数指令,1.FIFO,,先进先出指令,2.LIFO,,后进先出指令,1.FIFO,,先进先出指令,当使能输入有效时,从,TBL,指明的表中移出第一个字型
47、数据并将其输出到,DATA,所指定的字单元。,FIFO,表取数特点:,取数时,移出的数据总是最先进入表中的数据。每次从表中移出一个数据,剩余数据依次上移一个字单元位置,同时实际填表数,EC,会自动减,1,。,指令格式:,FIFOTBL,DATA,例:,FIFOVW100,AC0,如果仍是对表,4.21,存取,则指令执行情况如表,4.23,所示。,表,4.23,指令,FIFO,执行结果,2.LIFO,,后进先出指令,当使能输入有效时,从,TBL,指明的表中移出最后一个字型数据并将其输出到,DATA,所指定的字单元。,LIFO,表取数特点:,取数时,移出的数据是最后进入表中的数据。每次从表中取出一
48、个数据,剩余数据位置保持不变,实际填表数,EC,会自动减,1,。,指令格式:,LIFOTBL,DATA,例:,LIFOVW100,AC0,如果仍是对表,4.21,存取,则指令执行情况如表,4.24,所示。,表,4.24,指令,LIFO,执行结果,返回本节,4.4.3,表查找指令,FND?,,表查找指令。通过表查找指令可以从字型数表中找出符合条件的数据所在的表中数据编号,编号范围为,099,。,在梯形图中有,4,个数据输入端:,TBL,表格的首地址,用以指明被访问的表格;,PTN,是用来描述查表条件时进行比较的数据;,CMD,是比较运算符“?”的编码,它是一个,14,的数值,分别代表,=,、,、
49、,运算符;,INDX,用来指定表中符合查找条件的数据的地址。,表,4.25,表查找指令执行结果,返回本节,4.5,转换指令,4.5.1,数据类型转换,4.5.2,编码和译码,4.5.3,七段码,4.5.4,字符串转换,返回本章首页,4.5.1,数据类型转换,1.,字节与整数,(,1,)字节到整数,(,2,)整数到字节,2.,整数与双整数,(,1,)双整数到整数,(,2,)整数到双整数,3.,双整数与实数,(,1,)实数到双整数,(,2,)双整数到实数,4.,整数与,BCD,码,(,1,),BCD,码到整数,(,2,)整数到,BCD,码,5.,程序实例,1.,字节与整数,(,1,)字节到整数,B
50、TI,,字节转换为整数指令。使能输入有效时,将字节输入数据,IN,转换成整数类型,并将结果送到,OUT,输出。字节型是无符号的,所以没有符号扩展。,使能流输出,ENO,断开的出错条件:,SM4.3,(运行时间);,0006,(间接寻址)。,指令格式:,BTIIN,OUT,例:,BTIVB0,AC0,(,2,)整数到字节,ITB,,整数转换字节指令。使能输入有效时,将整数输入数据,IN,转换成字节类型,并将结果送到,OUT,输出。输入数据超出字节范围(,0255,)则产生溢出。,移位指令影响的特殊存储器位:,SM1.1,(溢出)。,使能流输出,ENO,断开的出错条件:,SM1.1,(溢出);,S