第4章基本指令第4章基本指令4.1位操作类指令4.2运算指令4.3其他数据处理指令4.4表功能指令4.5转换指令第4章基本指令本章学习目的l位操作类指令,主要是位操作及运算指令,与时也包含与位操作密切相关的定时器和计数器指令等。l运算指令,包括常用的算术运算和逻辑运算指令。l其他数据处理类,包括数据的传送、移位、填充和交换等指令。l表功能指令,包括对表的存取和查找指令。l转换指令,包括数据类型转换、码转换和字符转换指令。返回本章首页第4章基本指令4.1位操作类指令4.1.1指令使用概述4.1.2基本逻辑指令4.1.3复杂逻辑指令4.1.4定时器指令4.1.5计数器指令4.1.6比较返回本章首页第4章基本指令4.1.1指令使用概述1.主机的有效编程范围存储器的存储容量及各编程元件的有效编程范围如右表4.1所示。第4章基本指令许多指令中含有操作数,操作数的有效编址范围如表4.2所示。第4章基本指令(1)指令例整数加法+I,整数加法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相加,产生一个16位整数结果输出(OUT)。在LAD和FBD中,以指令盒形式编程。指令盒的执行结果:IN1+IN2=OUT在STL中,执行结果:IN1+OUT=OUTIN1和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。第4章基本指令本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负)使能流输出ENO断开的出错条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址)指令格式:+IIN1,OUT第4章基本指令例:+IVW0,VW4本指令在梯形图和语句表中的编程如图4.1所示。图4.1整数加法LDI0.0//使能输入端+IVW0,VW4//整数加法//VW0+VW4=VW4第4章基本指令3.梯形图的基本绘制规则(1)Network(2)能流/使能(3)编程顺序(4)编号分配(5)内、外触点的配合(6)触点的使用次数(7)线圈的使用次数(8)线圈的连接返回本节第4章基本指令4.1.2基本逻辑指令基本逻辑指令在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。一般来说,语句表语言更适合于熟悉可编程序控制器和逻辑编程方面有经验的编程人员。用这种语言可以编写出用梯形图或功能框图无法实现的程序。选择语句表时进行位运算要考虑主机的内部存储结构。第4章基本指令可编程序控制器中的堆栈与计算机中的堆栈结构相同,堆栈是一组能够存储和取出数据的暂时存储单元。堆栈的存取特点是“后进先出”,S7-200可编程序控制器的主机逻辑堆栈结构如表4.3所示。第4章基本指令1.标准触点指令(1)LD:装入常开触点(LoaD)(2)LDN:装入常闭触点(LoaDNot)(3)A:与常开触点(And)(4)AN:与常闭触点(AndNot)。(5)O:或常闭触点(Or)(6)ON:或常闭触点(OrNot)(7)NOT:触点取非(输出反相)(8)=:输出指令第4章基本指令在语句表中,LD、LDN、A、AN、O、ON、NOT这几条指令的执行对逻辑堆栈的影响分别如表4.4、表4.5其后的说明。第4章基本指令表4.5指令AI0.2的执行第4章基本指令程序实例:本程序段用以介绍标准触点指令在梯形图、语句表和功能块图3种语言编程中的应用,仔细比较不同编程工具的区别与联系。其梯形图和语句表程序结构如图4.2所示。LDI0.0//装入常开触点OI0.1//或常开触点AI0.2//与常开触点=Q0.0//输出触点//如果本梯级中将I0.1的触点改//为Q0.0的常开触点,则成为电//机起动停止控制环节的梯形图。LDNI0.0//装入常闭触点ONI0.1//或常闭触点ANI0.2//与常闭触点=Q0.1//LDI0.0//OI0.1//AI0.2//NOT//取非,即输出反相=Q0.3//图4.2标准触点LAD和STL例第4章基本指令本程序对应的功能框图如图4.3所示。在功能框图中,常闭触点的装入和串并联用指令盒的对应输入信号端加圆圈来表示。程序执行的时序图如图4.4所示。LDI0.0//OI0.1//AI0.2//=Q0.0//////LDNI0.0//ONI0.1//ANI0.2//=Q0.1//////LDI0.0//OI0.1//AI0.2//NOT//=Q0.3//图4.3标准触点FBD例2.正负跳变指令第4章基本指令图4.4时序图I0.0Q0.2Q0.0I0.2I0.1第4章基本指令负跳变触点检测到脉冲的每一次负跳变后,产生一个微分脉冲。指令格式:ED(无操作数)应用举例:图4.5是跳变指令的程序片断。图4.6是图4.5指令执行的时序。第4章基本指令LDI0.0//输入常开触点EU//脉冲正跳变=Q0.0//输出触点LDI0.0//ED//脉冲负跳变=Q0.1//图4.5跳变应用第4章基本指令图4.6时序I0.0Q0.1Q0.0第4章基本指令(1)S,置位指令(2)R,复位指令置位即置1,复位即置0。置位和复位指令可以将位存储区的某一位开始的一个或多个(最多可达255个)同类存储器位置1或置0。这两条指令在使用时需指明三点:操作性质、开始位和位的数量。各操作数类型及范围如表4.6所示。3.置位和复位指令第4章基本指令(1)S,置位指令将位存储区的指定位(位bit)开始的N个同类存储器位置位。用法:Sbit,N例:SQ0.0,1第4章基本指令(2)R,复位指令将位存储区的指定位(位bit)开始的N个同类存储器位复位。当用复位指令时,如果是对定时器T位或计数器C位进行复位,则定时器位或计数器位被复位,同时,定时器或计数器的当前值被清零。用法:Rbit,N例:RQ0.2,3应用举例:图4.7为置位和复位指令应用程序片断。第4章基本指令LDI0.0//装入常开触点AI0.1//与常开触点=Q1.0//输出触点LDI0.0//AI0.1//SQ0.0,1//将Q0.0开始的//1个触点置1RQ0.2,3//将Q0.2开始的//3个触点置0图4.7置位复位第4章基本指令本程序对应的时序图如图4.8所示。图4.8时序图I0.0Q0.2-Q0.4Q0.0Q1.0I0.1第4章基本指令4.立即指令(1)立即触点指令(2)=I,立即输出指令(3)SI,立即置位指令(4)RI,立即复位指令第4章基本指令(1)立即触点指令在每个标准触点指令的后面加“I”。指令执行时,立即读取物理输入点的值,但是不刷新对应映像寄存器的值。这类指令包括:LDI、LDNI、AI、ANI、OI和ONI。下面以LDI指令为例。用法:LDIbit例:LDII0.2注意:bit只能是I类型。第4章基本指令(2)=I,立即输出指令用立即指令访问输出点时,把栈顶值立即复制到指令所指出的物理输出点,同时,相应的输出映像寄存器的内容也被刷新。用法:=Ibit例:=IQ0.2注意:bit只能是Q类型。第4章基本指令(3)SI,立即置位指令用立即置位指令访问输出点时,从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也被刷新。用法:SIbit,N例:SIQ0.0,2注意:bit只能是Q类型。SI和RI指令的操作数类型及范围如表4.7所示。第4章基本指令(4)RI,立即复位指令用立即复位指令访问输出点时,从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即复位,同时,相应的输出映像寄存器的内容也被刷新。用法:RIbit,N例:RIQ0.0,1应用举例:图4.9为立即指令应用中的一段程序,图4.10是程序对应的时序图。第4章基本指令LDI0.0//装入常开触点=Q0.0//输出触点,非立即=IQ0.1//立即输出触点SIQ0.2,1//从Q0.2开始的1个//触点被立即置1LDII0.0//立即输入触点指令=Q0.3//图4.9立即指令程序第4章基本指令图4.10时序图返回本节扫描周期n扫描周期n+1扫描周期n+3扫描周期n+2输出刷新输出刷新输出刷新输出刷新输出刷新输入扫描输入扫描输入扫描输入扫描输入扫描Q0.1I0.0Q0.0Q0.3Q0.2第4章基本指令4.1.3复杂逻辑指令1.栈装载与指令2.栈装载或指令3.逻辑推入栈指令4.逻辑弹出栈指令5.逻辑读栈指令6.装入堆栈指令第4章基本指令1.栈装载与指令ALD,栈装载与指令(与块)。在梯形图中用于将并联电路块进行串联连接。在语句表中指令ALD执行情况如表4.8所示。第4章基本指令OLD,栈装载或指令(或块)。在梯形图中用于将串联电路块进行并联连接。在语句表中指令OLD执行情况如表4.9所示。2.栈装载或指令第4章基本指令LPS,逻辑推入栈指令(分支或主控指令)。在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。注意:使用LPS指令时,本指令为分支的开始,以后必须有分支结束指令LPP。即LPS与LPP指令必须成对出现。在语句表中指令LPS执行情况如下表4.10所示。3.逻辑推入栈指令第4章基本指令4.逻辑弹出栈指令LPP,逻辑弹出栈指令(分支结束或主控复位指令)。在梯形图中的分支结构中,用于将LPS指令生成一条新的母线进行恢复。注意:使用LPP指令时,必须出现在LPS的后面,与LPS成对出现。在语句表中指令LPP执行情况如下表4.11所示。第4章基本指令5.逻辑读栈指令LRD,逻辑读栈指令。在梯形图中的分支结构中,当左侧为主控逻辑块时,开始第二个和后边更多的从逻辑块。在语句表中指令LRD执行情况如表4.12所示。第4章基本指令6.装入堆栈指令LDS,装入堆栈指令。本指令编程时较少使用。指令格式:LDSn(n为0~8的整数)例:LDS4指令LDS4在语句表中执行情况如下表4.13所示。第4章基本指令应用举例:图4.11是复杂逻辑指令在实际应用中的一段程序的梯形图。LDI0.0//装入常开触点OI2.2//或常开触点LDI0.1//被串的块开始LDI2.0//被并路开始AI2.1//OLD//栈装载或,并路结束ALD//栈装载与,串路结束LDI0.0//LPS//逻辑推入栈,主控AI0.5//=Q7.0//LRD//逻辑读栈,新母线LDI2.1//OI1.3//ALD//栈装载与=Q6.0//LPP//逻辑弹出栈,母线复原LDI3.1//OI2.0//ALD//=Q1.3//图4.11复杂逻辑指令的应用返回本节第4章基本指令4.1.4定时器指令系统提供3种定时指令:TON、TONR和TOF。精度等级:S7-200定时器的精度(时间增量/时间单位/分辨率)有3个等级:1ms、10ms和100ms,精度等级和定时器号关系如表4.14所示。第4章基本指令指令操作数1)编号:2)预设值PT:3)使能输入(只对LAD和FBD):第4章基本指令1.接通延时定时器TON,接通延时定时器指令。用于单一间隔的定时。上电周期或首次扫描,定时器位OFF,当前值为0。使能输入接通时,定时器位为OFF,当前值从0开始计数时间,当前值达到预设值时,定时器位ON,当前值连续计数到32767。使能输入断开,定时器自动复位,即定时器位OFF,当前值为0。指令格式:TONTxxx,PT例:TONT120,8第4章基本指令2.有记忆接通延时定时器TONR,有记忆接通延时定时器指令。用于对许多间隔的累计定时。上电周期或首次扫描,定时器位OFF,当前值保持。使能输入接通时,定时器位为OFF,当前值从0开始计数时间。使能输入断开,定时器位和当前值保持最后状态。使能输入再次接通时,当前值从上次的保持值继续计数,当累计当前值达到预设值时,定时器位ON,当前值连续计数到32767。TONR定时器只能用复位指令进行复位操作。指令格式:TONRTxxx,PT例:TONRT20