西门子S7-300系列PLC基本指令系统.ppt
第4章S7-300系列PLC基本指令系统,4.1指令及其结构4.2位逻辑指令4.3定时器与计数器指令4.4数据处理功能指令4.5数据运算指令4.6控制指令思考与练习题,4.1指令及其结构,4.1.1指令的组成1.语句指令一条指令由一个操作码和一个操作数组成,操作数由标识符和参数组成。操作码定义要执行的功能;操作数为执行该操作所需要的信息,例如AI1.0是一条位逻辑操作指令,其中“A”是操作码,它表示执行“与”操作;“I1.0”是操作数,对输入继电器I1.0进行的操作。有些语句指令不带操作数。它们操作的对象是惟一的。例如NOT(是对逻辑操作结果RLO取反。),2.梯形逻辑指令梯形逻辑指令用图形元素表示PLC要完成操作。在梯形逻辑指令中,其操作码是用图素表示的,该图素形象表明CPU做什么,其操作数的表示方法与语句指令相同。如Q4.0该指令中可认为是操作码,表示一个二进制赋值操作。Q4.0是操作数,表示赋值的对象。梯形逻辑指令也可不带操作数。如|NOT|是对逻辑操作结果取反的操作。,4.1.2操作数1.标识符及表示参数一般情况下,指令的操作数在PLC的存储器中,此时操作数由操作数标识符和参数组成。操作数标识符由主标识符和辅助标识符组成。主标识符表示操作数所在的存储区,辅助标识符进一步说明操作数的位数长度。若没有辅助标识符指操作数的位数是一位。主标识符有I输入过程映像存储区,Q输出过程映象存储区,M位存储区,PI外部输入,PQ外部输入,T定时器,C计数器,DB数据块,L本地数据。,辅助标识符有X位,B字节,W字2字节,D双字4字节。PLC物理存储器是以字节为单位的,所以存储单元规定为字节单元。位地址参数用一个点与字节地址分开。如M10.1当操作数长度是字或双字时,标识符后给出的标识参数是字或双字内的最低字节单元号。图4.1给出了字节、字、双字的相互关系及表示方法。当使用宽度为字或双字的地址时,应保证没有生成任何重叠的字节分配,以免造成数据读写错误。,图4.1以字节单元为基准标记存储器存储单元,位存储区M,,,,,表4.1存储区及其功能,表4.1存储区及其功能,2.操作数的表示法在STEP7中,操作数有两种表示方法一是物理地址绝对地址表示法;二是符号地址表示法。用物理地址表示操作数时,要明确指出操作数的所在存储区,该操作数的位数具体位置。例如Q4.0。STEP7允许用符号地址表示操作数,如Q4.0可用符号名MOTOR_ON替代表示,符号名必须先定义后使用,而且符号名必须是惟一的,不能重名。定义符号时,需要指明操作数所在的存储区,操作数的位数、具体位置及数据类型。,4.1.3寻址方式操作数是指令的操作或运算对象。所谓寻址方式是指令得到操作数的方式,可以直接给出或间接给出。STEP7指令操作对象的有常数;S7状态字中的状态位;S7的各种寄存器、数据块;功能块FB,FC和系统功能块SFB,SFC;S7的各存储区中的单元。S7有四种寻址方式立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。,1.立即寻址这是对常数或常量的寻址方式。操作数本身直接包含在指令中。下面是立即寻址的例子SET//把RLO置1OWW16A320//将常量W16A320与累加器1“或”运算L27//把整数27装入累加器1LABCD//把ASCII码字符ABCD装入累加器1LC0100//把BCD码常数0100装入累加器1,2.直接寻址包括对寄存器和存储器的直接寻址。在直接寻址的指令中,直接给出操作数的存储单元地址。例如AI0.0//对输入位I0.0进行“与”逻辑操作SL20.0//把本地数据位L20.0置1M115.4//使存储区位M115.4的内容等于RLO的内容LIB10//把输入字节IB10的内容装入累加器1TDBD12//把累加器1中的内容传送给数据双字DBD12中,3.存储器间接寻址在存储器间接寻址的指令中,给出一个存储器必须是表4.1中的存储器,该存储器的内容是操作数所在存储单元的地址,该地址又被称为地址指针。存储器间接寻址方式的优点是,当程序执行时,能改变操作数的存储器地址,这对程序中的循环尤为重要。例如AI[MD2]//对由MD2指出的输入位进行“与”逻辑操作。如MD2的值为//200000000000000000000000001010110则是对I10.6进行“与”操作。,图4.2存储器间接寻址的指针格式,位3至18范围0至65535被寻址字节的字节编号位0至2范围0至7被寻址位的位编号,4.寄存器间接寻址在S7中有两个地址寄存器,它们是AR1和AR2。通过地址寄存器,可以对各存储区的存储器内容实现寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,该指针指向数值所在的存储单元。地址寄存器存储的地址指针有两种格式区内寄存器间接寻址区域间寄存器间接寻址。其长度均为双字。图4.3给出了这两种格式的细节及其差别,区域标识位的组合状态见表4.2。,图4.3寄存器间接寻址的指针格式,3124231615870,位310表明是区域内寄存器间接寻址;1表明是区域间寄存器间接寻址。位24、25和26rrr区域标识见表3.2位3至18bbbbbbbbbbbbbbbb被寻址位的字节编号范围0至65535位0至2被寻址的位编号范围0至7,表4.2地址指针区域标识位含义,4.1.4状态字状态字用于表示CPU执行指令时所具有的状态。一些指令是否执行或以何方式执行可能取决于状态字中的某些位;执行指令时也可能改变状态字中的某些位;你也能在位逻辑指令或字逻辑指令中访问并检测它们。图4.4显示了状态字的结构。,图4.4状态字的结构,159876543210,1首次检测位FC状态字的位0称为首次检测位。若FC位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串第一条指令。2逻辑操作结果RLO逻辑操作结果RLOResultofLogicOperation。该位存储位逻辑指令或算术比较指令的结果。3状态位STA状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。,,,4或位OR状态字的位3称为或位OR。在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其它指令将OR位清0。,5溢出位OV溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误错误溢出、非法操作、不规范格式。,6溢出状态保持位OSOV被置1时OS也被置1;OV被清0时OS仍保持。只有下面的指令才能复位OS位JOSOS1时跳转;块调用和块结束指令。7条件码1CC1和条件码0CC0状态字的位7和位6称为条件码1和条件码0。这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系;比较指令的执行结果或移位指令的移出位状态。详见表4.3和表4.4。,表4.3算术运算后的CC1和CC0,表4.4比较、移位和循环移位、字逻辑指令后的CC1和CC0,8二进制结果位BR它将字处理程序与位处理联系起来,用于表示字操作结果是否正确异常。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行如果执行出现了错误,BR位为0,ENO也为0;如果功能被正确执行,BR位为1,ENO也为1。在用户编写的FB和FC程序中,必须对BR位进行管理,当功能块正确运行后使BR位为1,否则使其为0。使用STL指令SAVE或LAD指令SAVE,可将RLO存入BR中,从而达到管理BR位的目的。当FB或FC执行无错误时,使RLO为1并存入BR,否则,在BR中存入0。,,4.2位逻辑指令,位逻辑指令主要包括位逻辑运算指令、位操作指令和位测试指令,逻辑操作结果RLO用以赋值、置位、复位布尔操作数,也控制定时器和计数器的运行。,4.2.1位逻辑运算指令位逻辑运算指令是“与”AND、“或”OR、“异或”XOR指令及其组合。它对“0”或“1”这些布尔操作数扫描,经逻辑运算后将逻辑操作结果送入状态字的RLO位。,1.“与”和“与非”A,AN指令逻辑“与”在梯形图里是用串联的触点回路表示的,如果串联回路里的所有触点皆闭合,该回路就通“电”了。在图4.5的回路所示,图4.5“与”逻辑梯形图,上述梯形逻辑图,可用语句表指令完全表示,对应的语句表为,AI0.0AQ4.1ANM10.1=Q4.0,,,,I0.0Q4.1M10.1Q4.0,2.“或”和“或非”O,ON指令逻辑“或”在梯形图里是用并联的触点回路表示的,被扫描的操作数标在触点上方。在图4.6中,只要有一个触点闭合,输出4.1的信号状态就为“l”。,I1.1,M2.0,Q4.0,图4.6“或”逻辑梯形图及语句表,OI1.1ONM2.0OQ4.0=Q4.1,,(),Q4.1,3.“异或”和“异或非”X,XN指令图4.7是“异或”逻辑梯形图,下面是与梯形图对应的语句表。在的语句表中,使用了“异或”和“异或非”指令,分别用助记符“X”和“XN”来标识。它类似“或”和“或非”指令,用于扫描并联回路能否“通电”。,XI0.0XI0.1=Q4.0,图4.7“异或”逻辑梯形图,4.2.2位操作指令1.输出指令逻辑串输出指令又称为赋值操作指令,该操作把状态字中RLO的值赋给指定的操作数位地址。表4.5列出了操作数的数据类型和所在的存储区。,表4.5输出指令,AI0.0AI0.1ONI0.2=Q4.0AI0.3=Q4.1,图4.8多重输出梯形图,一个RLO可被用来驱动几个输出元件。在LAD中,输出线圈是上下依次排列的。在STL中,与输出信号有关的指令被一个接一个地连续编程,这些输出具有相同的优先级。图4.8是多重输出梯形图,与之对应的语句表如下,2.置位/复位指令置位/复位指令根据RLO的值,来决定被寻址位的信号状态是否需要改变。若RLO的值为1,被寻址位的信号状态被置1或清0;若RLO是0,则被寻址位的信号保持原状态不变。置位/复位指令有关内容见表4.6。,表4.6置位/复位指令,图4.10置位/复位指令a复位指令操作b置位指令操作,3.RS触发器RS触发器梯形图方块指令表示见表4.7。方块中标有一个置位输入S端,一个复位输入R端,输出端标为Q。触发器可以用在逻辑串最右端,结束一个逻辑串,也可用在逻辑串中,影响右边的逻辑操作结果。,表4.7RS触发器,RS触发器分为置位优先和复位优先型两种,置位优先型RS触发器的R端在S端之上,当两个输入端都为1时,下面的置位输入最终有效。既置位输入优先,触发器或被复位或保持复位不变,如图4.11。,,AI0.0RM0.0AI0.1SM0.0AM0.0Q4.0,图4.11置位优先型RS触发器,4.对RLO的直接操作指令这一类指令直接对逻辑操作结果RLO进行操作,改变状态字中RLO位的状态。有关内容见表4.8。,表4.8对RLO的直接操作指令,4.2.3位测试指令当信号状态变化时就产生跳变沿。当从0变到1时,产生一个上升沿或正跳沿;若从1变到0,则产生一个下降沿或负跳沿。S7中有两类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点跳变沿直接检测的梯形图方块指令。具体内容见表4.9。,图4.12是使用RLO正跳沿检测指令的例子。这个例子中,若CPU检测到输入I1.0有一个正跳沿,将使得输出Q4.0的线圈在一个扫描周期内通电。对输入I1.0常开触点扫描的RLO值存放在存储位M1.0中。,表4.9跳变沿检测指令,图4.12RLO正跳沿检测,图4.13触点负跳沿检测,图4.13是使用触点负跳沿检测指令的例子。图中,由给出需要检测的触点编号I0.3,M0.0用于存放该触点在前一个扫描周期的状态。,4.2.4位逻辑指令编程举例1.传送带控制图4.14表示一个能够电气启动的传送带。在传送带的起点有两个按钮开关用于START的S1和用于STOP的S2。在传送带的尾部也有两个按钮开关S3用于START,S4用于STOP。可以从任一端启动或停止传送带。另外,当传送带上的物件到达末端时,传感器S5使传送带停机。,图4.14传送带示意图,表4.10用于传送带系统符号编程的元素,图4.15控制传送带程序,2.串并联组合表示法当逻辑串是复杂组合时,CPU的扫描顺序是先“与”后“或”。图4.16a给出的梯形逻辑是触点先并后串的例子,与其对应的语句表为AOI0.0OI0.2AOM10.0OM0.3AM10.1=Q4.0,图4.16串并联组合逻辑梯形图,图4.16b是先串后并的例子,与其对应的语句表如下AAI0.0AM10.0OAI0.2AM0.3AM10.1=Q4.0,3.风机监控程序某设备有三台风机,当设备处于运行状态时,如果风机至少有两台以上转动,则指示灯常亮;如果仅有一台风机转动,则指示灯以0.5Hz的频率闪烁;如果没有任何风机转动,则指示灯以2Hz的频率闪烁。当设备不运行时,指示灯不亮。实现上述功能的梯形图程序见图4.17。,图4.17风机监控程序,注输入位I0.0,I0.1,I0.2分别为风机1,2,3的反馈输入端。,M9.3为2Hz频率CPU中的时钟信号;M9.7为0.5Hz频率信号。,下面给出实现风机状态检测的语句表程序,从中可看出中间输出指令的用法AAAI0.0AI0.1OAI0.0AI0.2OAI0.1AI0.2=M10.0,AM10.0OANI0.0ANI0.1ANI0.2=M10.1AM10.1AM9.3OANM10.0ANM10.1AM9.7AQ4.0=Q4.1,,,4.3定时器与计数器指令,4.3.1定时器指令定时器是PLC中的重要部件,它用于实现或监控时间序列。定时器是一种由位和字组成的复合单元,定时器的触点由位表示,其定时时间值存储在字存储器中。S7-300/400提供的定时器有,,脉冲定时器SP扩展定时器SE接通延时定时器SD带保持的接通延时定时器SS和断电延时定时器SF。,1.定时器的组成在CPU的存储器中留出了定时器区域,用于存储定时器的定时时间值。每个定时器为2B,称为定时字。在S7-300中,最多允许使用256个定时器。S7中定时时间由时基和定时值两部分组成,定时时间等于时基与定时值的乘积。采用减计时。定时时间到后会引起定时器触点的动作。定时器的第0位到第11位存放二进制格式的定时值,第12、13位存放二进制格式的时基如图4.18所示。表4.11给出了可能出现的组合情况。,图4.18累加器1低字的内容定时值127,时基ls,表4.11时基与定时范围,设置定时时间,用户需给累加器1装入需要的数值,避免格式错误,推荐采用下述直观的句法LW16wxyz其中,w为时基,取值为0,1,2或3,分别表示时基为10ms,l00ms,1s或10s;xyz为定时值,取值范围为1~999。,也可直接使用S5中的时间表示法装入定时数值,例如LS5TaH_bbM_ccS_dddMS其中,a小时,bb分钟,cc秒,ddd毫秒,时基是自动选择的,原则是能满足定时范围要求的最小时基。,2.定时器的启动与运行,S7中的定时器与时间继电器的工作特点相似,对定时器同样要设置定时时间,也要启动定时器使定时器线圈通电。除此之外,定时器还增加了一些功能,如随时复位定时器、随时重置定时时间定时器再启动、查看当前剩余定时时间等。S7中的定时器不仅功能强,而且类型多。图4.19给出了为定时作业如何正确选择定时器的示意图。以下将以LAD方块图为主详细介绍定时器的运行原理及使用方法。,图4.19五种类型定时器总览,,图4.20脉冲定时器指令,3.定时器梯形图方块指令1脉冲定时器,AI0.0LS5T2SSPT5AI0.1RT5AT5=Q4.0,图4.21脉冲定时器时序,图4.22接通延时定时器指令,AI0.0LS5T2SSDT5AI0.1RT5AT5=Q4.0,3延时接通定时器,图4.23延时接通定时器时序,4.定时器线圈指令,表4.12定时器线圈指令,图4.24扩展脉冲定时器线圈指令,AI0.0LS5T2SSET5AI0.1RT5AT5=Q4.0,4.3.2计数器指令*S7中的计数器用于对RLO正跳沿计数。*计数器是由表示当前计数值的字及状态的位组成。*S7中有三种计数器,,加计数器S_CU减计数器S_CD可逆计数器S_CUD,图4.25累加器1低字的内容计数值127,计数器组成在CPU中保留一块存储区作为计数器计数值存储区,每个计数器占用两个字节,计数器字中的第0~11位表示计数值二进制格式,计数范围是0~999。,2.计数器梯形图方块指令,表4.13计数器梯形图方块指令,图4.26可逆计数器梯形图方块应用,AI0.0CUC10AI0.1CDC10AI0.2LMW10SC10AI0.3RC10AC10Q4.0,3.计数器线圈指令,表4.14计数器线圈指令,4.3.3应用举例1.脉冲发生器用定时器构成一个脉冲发生器,使其产生如图4.27所示的脉冲时序,脉冲信号的周期为3s,脉冲宽度为1s,图4.35为梯形图及语句表程序。,图4.27脉冲发生器时序,网络1AI0.0ANT1LS5T2SSDT2网络2AT2LSST1SSDT1AT2=Q4.0,图4.28脉冲发生器梯形图,2.频率监测器频率监测器用于监测脉冲信号的频率,若其低于下限,则指示灯亮,“确认”按键能使指示灯复位。为此,使用了一个扩展脉冲定时器,即每当频率信号有一个上升沿就启动一次定时器。如果超过了定时时间没有启动定时器,则表明两个脉冲之间的时间间隔太长,即频率太低了。图4.29为频率监测器时序。,图4.29频率监测器时序,图4.30频率监测梯形图程序,,在频率监测程序中,输入I0.0用于关闭监测器,I0.1用于确认频率低;输出Q4.0用以控制指示灯。定时器T1的定时时间为2s,即设置脉冲信号M10.0的频率监测下限为0.5Hz。,AM10.0ANI0.0LS5T2SSET1ANT1SQ4.0OI0.1OI0.0RQ4.0,4.4数据处理功能指令,4.4.1装入和传送指令装入L和传送T指令可以在存储区之间或存储区与过程输入、输出之间交换数据。CPU执行这些指令不受逻辑操作结果RLO的影响。L指令将源操作数装入累加器1中,而累加器原有的数据移入累加器2中,累加器2中原有的内容被覆盖。T指令将累加器1中的内容写入目的存储区中,累加器的内容保持不变。,对累加器1的装入和传送指令L+5//将立即数+5装入累加器1中LMW10//将MW10中的值装入累加器1中LIB[DID8]//将由数据双字DID8指出的输入字节装入累加器1中TMW20//将累加器1中的内容传送给存储字MW20TMW[AR1,P10.0]//将累加器1中的内容传送给由地址寄存器1加偏移//量确定的存储字中,2.读取或传送状态字LSTW//将状态字中0~8位装入累加器1中,累加器9~3l位被清0TSTW//将累加器1中的内容传送到状态字中,3.装入时间值或计数值LT1//将定时器T1中二进制格式的时间值直接装入累加器1的低字中LCT1//将定时器T1的时间值和时基以BCD码装入累加器1的低字中LC1//将计数器C1中二进制格式的计数值直接装入累加器1的低字中LCC1//将计数器Cl中的计数值以BCD码格式装入累加器1的低字中,4.地址寄存器装入和传送对于地址寄存器,可以不经过累加器l而直接将操作数装入或传送,或将两个地址寄存器的内容直接交换。下面的例子说明了指令的用法LAR1PI0.0//将输入位I0.0的地址指针装入AR1LAR2P0.0//将二进制数200000000000000000000000000000000装入AR2LAR1PStart//将符号名为Start的存储器的地址指针装入AR1LAR1AR2//将AR2的内容装入AR1LAR1DBD20//将数据双字DBD20的内容装入AR1TAR1AR2//将ARl的内容传送至AR2TAR2//将AR2的内容传送至累加器1TAR1MD20//将ARl的内容传送至存储器双字MD20CAR//交换AR1和AR2的内容,5.梯形图方块传送指令,表4.15梯形图方块传送指令,图4.31使用MOVE方块指令,,,,,AI0.0JNB_0001LMW10TDBW12SET//使RLO为1SAVE//使BR为1CLR_0001ABR=Q4.0,4.4.2转换指令转换指令首先将源数据按照规定的格式读入累加器,然后在累加器中对数据进行类型转换,最后再将转换的结果传送到目的地址。能够实现的转换操作有*BCD码和整数及长整数间的转换BTI,ITB,ITD,BTD,DTB,DTR*实数和长整数间的转换RND,TRUNC,RND,RND-*数的取反、取负等INVI,INVD,NEGI,NEGD,NEGR,1.BCD和整数间的转换,表4.16BCD和整数间的转换,表4.16BCD和整数间的转换,2.实数和长整数间的转换实数和长整数间的转换见表4.17。因为实数的数值范围远大于32位整数,所以有的实数不能成功地转换为32位整数。如果被转换的实数格式非法或超出了32位整数的表示范围,则得不到有效结果,而且状态字中的OV和OS被置1。,表4.17实数和长整数间的转换,3.数的取反、取负,表4.18数的取反、取负,4.4.3比较指令1.比较指令,表4.19比较指令,表4.19比较指令,表4.19比较指令,图4.32整数比较,,,,,AI0.0AI0.1ALMW0LMW2ISQ4.0,2.比较指令应用实例图4.33示出包括两台传送带的系统,在两台传送带之间有一个仓库区。传送带1将包裹运送至临时仓库区。传送带1靠近仓库区一端安装的光电传感器确定已有多少包裹运送至仓库区。传送带2将临时库区中的包裹运送至装货场,在这里货物由卡车运送至顾客。传送带2靠近库区一端安装的光电传感器确定已有多少包裹从库区运送至装货场。含5个指示灯的显示盘表示临时仓库区的占用程度。图4.34给出了启动显示盘上指示灯的梯形逻辑程序。,图4.33装有计数器和比较器的仓库区,图4.34启动显示盘上指示灯的梯形逻辑,图4.34启动显示盘上指示灯的梯形逻辑,与图4.34对应的语句表程序如下AI12.0CUC1AI12.1CDC1ANC1Q12.0AC1Q12.1L50LC1,IQ15.3LC1L100IQ15.4,,,4.4.4移位和循环移位指令移位指令将输入IN中的内容向左或向右逐位移动。移动次数由输入值N提供的数值确定。移位后空出的位填以0或符号位0代表正,1代表负,被移动的最后一位保存在状态字中的CCl里,CC0和OV被复位为0。可使用条件跳转指令对CCl进行判断。循环移位指令与一般移位指令的差别是循环移位指令的空位填以从IN中移出的位。,1.无符号数移位指令,表4.20无符号数移位指令,图4.35输入IN左移5位,2.有符号数移位指令,表4.21有符号数移位指令,图4.36输入IN带符号右移4位,3.循环移位指令,表4.22循环移位指令,图4.37输入IN循环左移3位,图4.38输入IN循环右移3位,4.4.5累加器操作和地址寄存器指令1.累加器操作指令,表4.23累加器操作指令,图4.39CAW、CAD指令执行时累加器1的变化,下面的例子说明了在有条件触发的程序中INC指令是如何工作的。本例以存储字节MB10作为循环次数计数暂存器,用INC指令修正循环次数,循环体中的程序连续执行5次。LOOPLMB10//循环体开始,装载存储字节至累加器1INC1//循环计数器加1TMB10//保存循环次数LB165=I//比较JCERR//如果数据块长度大于50,则跳转至ERR标号处AI0.0BEU//无条件结束当前块ERRCALLFC10//对于块长度大于50的情况,调用FC10做相应的处理,4.显示和空操作指令,表4.26显示和空操作指令,,4.5数据运算指令,4.5.1算术运算指令在STEP7中可以对整数、长整数和实数进行加、减、乘、除算术运算。算术运算指令在累加器l和2中进行,累加器2中的值作为被减数或被除数。算术运算的结果保存在累加器l中,累加器1中原有的值被运算结果覆盖,累加器2中的值保持不变。算术运算指令对状态字的某些位将产生影响,这些位是CCl和CC0,OV,OS。可以用位操作指令或条件跳转指令对状态字中的标志位进行判断操作。,1.整数算术运算,表4.27整数算术运算,图4.40使用整数加法方块指令,下面是与图4.40所示梯形图完全对应的语句表程序AAI0.0JNB_0001LMW0LMW2ITMW10ANOV//若OV为1,则RLO为0,否则RLO为1SAVE//使BR=RLOCLR_0001ABRNOTSQ4.0,2.实数算术运算,表4.28实数算术运算,4.5.2字逻辑运算指令,表4.29字逻辑运算指令,4.5.3数据运算指令应用举例1.运用算术运算指令完成方程式运算运用算术运算指令完成下面的方程式运算,其梯形逻辑图如图4.41所示。MW4=IW0+DBW315/MW0,图4.41算术运算指令梯形逻辑,实现相同运算的语句表程序如下LIW0//将输入字IW0的内容装入累加器1LDBW3//将DBW3的内容装入累加器1,累加器1原内容装入累加器2I//累加器2与累加器1相加,结果存在累加器1中L15//将常数15装入累加器1,累加器l原内容和装入累加器2*I//累加器2与累加器1相乘,结果为长整数放在累加器1中LMW0//将存储双字MD0的内容装入累加器1,累加器1原内容装入累加器2/I//累加器2除累加器1,结果的整数部分存在累加器1中TMW4//将运算结果传送至存储双字MD4完成相同运算功能的梯形图程序和语句表程序各有优缺点梯形图程序直观易读;语句表程序简洁,而且使用中间结果存储器较少。,2.用位逻辑运算指令实现对信号的跳变沿检测对输入位I12.0~I13.7进行跳变沿检测,并将正跳沿的检测结果存入存储位M14.0~M15.7的对应位中1表示有跳变,0表示无跳变,负跳沿的结果存入M16.0~M17.7中。为此,在检测正跳沿时,使用存储位M10.0~M11.7存储对应输入位在前一个扫描周期时的状态;在检测负跳沿时用M12.0~M13.7。相应的语句表程序如下,网络10正跳沿检测LMW10//将输入位的上一个周期状态装入累加器1低字中LIW12//将输入位的当前状态装入累加器1低字中,上一个周期状态被移入累加器2TMW10//保存当前状态,供下一个扫描周期使用XOW//异或运算后,当前状态与以前不同的位在累加器1低字中被置为1LIW12//重新装入当前状态,累加器1原内容移入累加器2AW//与运算后,当前状态为0的位被清0负跳变被屏蔽TMW14//将正跳变检测结果送入MW14,网络11负跳沿检测LMW12//将输入位的上一个周期状态写入累加器1低字中LIW12//将输入位的当前状态装入累加器l低字中,上一个周期状态被移入累加器2TMW12//保存当前状态,供下一个扫描周期使用XOW//异或运算后,当前状态与以前不同的位在累加器1低字中被置为1LIW12//重新装入当前状态,累加器1原内容移入累加器2INVI//将当前状态取反AW//与运算后,当前状态为1的位上条指令中已被取反被清0正跳变被屏蔽TMW16//将负跳变检测结果送入MW16,,4.6控制指令,4.6.1逻辑控制指令逻辑控制指令是指逻辑块内的跳转和循环指令,这些指令中止程序原有的线性逻辑流,跳到另一处执行程序。跳转或循环指令的操作数是地址标号,该地址标号指出程序要跳往何处,标号最多为4个字符,第一个字符必须是字母,其余字符可为字母或数字。,1.无条件跳转指令JU无条件跳转指令JU将无条件中断正常的程序逻辑流,使程序跳转到目标处继续执行,见图4.42。,图4.42使用跳转指令控制程序流,2.条件跳转指令,表4.30条件转移指令,表4.31条件跳转指令与CC0、CC1的关系,图4.43条件跳转指令控制程序流程,3.循环指令使用循环指令LOOP可以多次重复执行特定的程序段,重复执行的次数存在累加器1中,即以累加器1为循环计数器。LOOP指令执行时,将累加器1低字中的值减1,如果不为0,则回到循环体开始处继续循环过程,否则执行LOOP指令后面的指令。循环体是指循环标号和LOOP指令间的程序段。由于循环次数不能是负数,因此程序应保证循环计数器中的数为正整数数值范围0~32767或字型数据数值范围W160000~W16FFFF。图4.44是使用LOOP指令的例子。在本例中,考虑到循环体程序段A中可能用到累加器1,特设置了循环计数暂存器MB10。,图4.44使用LOOP指令,4.梯形图逻辑控制指令梯形逻辑控制指令只有两条,可用于无条件跳转或条件跳转控制。由于无条件跳转时对应STL指令JU,因此不影响状态字;由于在梯形图中目的标号只能在梯形网络的开始处,因此条件跳转指令会影响到状态字。在图4.45和图4.46中给出了梯形跳转指令的用法及其对应的语句表。,图4.45无条件跳转,图4.46条件跳转,表4.32状态位常开/常闭触点,表4.32状态位常开/常闭触点,这些LAD单元可以用在梯形图程序中,影响逻辑运算结果RLO,最终形成以状态位为条件的跳转操作。图4.47给出了使用状态位的一个例子。,图4.47使用状态位指令,相应的语句表程序如下AAI0.0JNB_0001LIW0LIW2-ITMW10ANOV//若OV为1,则RLO为0,否则RLO为1SAVE//使BR=RLOCLR_0001ABRA0SQ4.0,4.6.2程序控制指令程序控制指令是指功能块FB、FC、SFB、SFC调用指令和逻辑块OB、FB、FC结束指令。调用块或结束块可以是有条件的或是无条件的。STEP7中的功能块实质上就是子程序。1.STL程序控制指令,表4.33STL程序控制指令,2.梯形图程序控制指令,表4.34梯形图程序控制指令,4.6.3主控继电器指令主控继电器MCR是一种美国梯形图逻辑主控开关,用来控制信号流电流路径的通断。如图4.48所示,图4.48主控继电器,MCRAAI2.0MCROI1.0OI1.1=Q4.0AI1.2AI1.3=Q4.1MCRMCRD,表4.35STEP7中与主控继电器相关的指令,思考与练习题,S7-300系列PLC如何直接寻址什么是间接寻址如何使用采用间接寻址方式设计一段程序,将10个字节的数据从100MB开始的存储单元转移到从200MB开始的存储单元。试设计一个3h40min的长延时电路程序。编写一段程序计算sin120+cos10的值。4.试设计一个照明灯的控制程序。当按下接在I0.0上的按钮后,接在Q4.0上的照明灯可发光30s,如果在这段时间内又有人按下按钮,则时间间隔从头开始。这样可确保在最后一次按完按钮后,灯光可维持30s照明。,5.试设计一个抢答器电路程序。出题人提出问题,3个答题人按动按钮,仅仅是最早按的人面前的信号灯亮。然后出题人按动复位按钮后,引出下一个问题。6.设计一个对锅炉鼓风机和引风机控制的梯形图程序。控制要求1开机时首先启动引风机,10s后自动启动鼓风机;2停止时立即关断鼓风机,20s后自动关断引风机。,,