




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章S7-200PLC的指令系统1第5章S7-200PLC的指令系统
学习目标:
熟练掌握梯形图和语句表的编程方法,掌握基本指令和功能指令中的常用指令,了解和会用其他指令。通过对本章的学习,做到可以根据需要编制出结构较复杂的控制程序。2第5章S7-200PLC的指令系统
教学内容:
5.1S7-200PLC编程基础
5.2S7-200PLC的基本指令及编程方法
5.3S7-200PLC的功能指令及编程方法35.2S7-200PLC的基本指令及编程方法
S7-200PLC的基本指令多属于逻辑指令,用于开关量的逻辑控制,本节着重介绍梯形图指令和语句表指令,并讨论基本指令的功能及编程方法。
编程时,应注意各操作数的数据类型及数值范围。对每个操作指令来说,只能对某些指定数据类型进行操作。即便允许使用某种操作数据类型,也不是所有此类数据类型的单元都可以访问和使用。否则CPU对非法操作数将生成编译错误代码。有关S7-200CPU模块操作数的范围如表5-5所示。返回操作数的数据类型,如:位操作指令只能对位变量处理,bit型。操作数的数值范围,如:累加器,只能访问有权访问的字或字节单元45.2.1基本逻辑指令基本逻辑指令,在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。
S7-200PLC使用一个逻辑堆栈来分析控制逻辑。用语句表编程时,对位存储单元数据的存取、逻辑运算都是在堆栈中进行的。所以选择语句表编程时,进行位运算要考虑主机内部存储结构。
用梯形图和功能框图时,程序员不必考虑主机的这一逻辑,这两种编程工具自动地插入必要的指令来处理各种堆栈逻辑操作。(LAD编程的方便之处)返回梯形图中的并联连接-对应-语句表中的或逻辑运算梯形图中的串联连接-对应-语句表中的与逻辑运算梯形图中的线圈输出-对应-语句表中的=号55.2.1基本逻辑指令逻辑堆栈结构:由九个堆栈存储器位串联组成。堆栈存取特点:后进先出。进栈时,数据由堆栈顶部压入,堆栈中原来所存的数据被串行下移一格。如果原来STACK8中存有数据,则这数据被推出堆栈而自动丢失。出栈时,数据从栈顶部被取出,所有数据串行上移一格,STACK8中随机地装入一个数值。表5-6S7-200的主机逻辑堆栈结构堆栈结构名称说明S0STACK0第一个堆栈
S1STACK1第二个堆栈S2STACK2第三个堆栈S3STACK3第四个堆栈S4STACK4第五个堆栈S5STACK5第六个堆栈S6STACK6第七个堆栈S7STACK7第八个堆栈S8STACK8第九个堆栈栈顶堆叠栈顶是数据进出堆栈的必由之路。65.2.1基本逻辑指令栈顶的累加器作用:栈顶STACK0在此逻辑堆栈的位运算中兼有累加器的作用,存放第一操作数。对于简单逻辑指令,通常是进栈操作和一些最简单的位运算,这些运算是栈顶与第二个堆栈的内容进行与、或、非等逻辑运算。对于复杂逻辑指令,可以在堆栈中的其他数据位直接进行运算,结果经栈顶弹出。基本逻辑指令包括:标准触点指令、正负跳变指令、置位和复位指令等,主要是与位相关的输入输出及触点的简单连接。71.标准触点指令1.标准触点指令1)LDbit:装入常开触点(LoaD)2)LDNbit:装入常闭触点(LoaDNot)3)Abit:与常开触点(And)4)ANbit:与常闭触点(AndNot)。5)Obit:或常闭触点(Or)6)ONbit:或常闭触点(OrNot)7)NOT:触点取非(Not)8)=bit:输出指令标准触点指令,在逻辑堆栈中对存储器位(bit)进行操作85.2.1基本逻辑指令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//标准触点LAD和STL例梯形图中的并联连接-对应-语句表中的或逻辑运算梯形图中的串联连接-对应-语句表中的与逻辑运算梯形图中的线圈输出-对应-语句表中的=号95.2.1基本逻辑指令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//图5-10
标准触点FBD例在功能图中,常闭触点的装入或串并联,用指令模块的对应输入端加圆圈来表示105.2.1基本逻辑指令LD、LDN、A、AN、O、ON指令的执行对逻辑堆栈的影响:指令LDI0.1(假设I0.1=1)执行情况如表所示。如果是LDN指令,则将操作数取反后再装入栈顶,其他操作相同。
名称执行前执行后说明STACK0S01将新值I0.1=1装入堆栈
STACK1S1S0由S0下移一个单元得到
STACK2S2S1由S1下移一个单元得到STACK3S3S2由S2下移一个单元得到STACK4S4S3由S3下移一个单元得到STACK5S5S4由S4下移一个单元得到STACK6S6S5由S5下移一个单元得到STACK7S7S6由S6下移一个单元得到STACK8S8S7由S7下移一个单元得到原值S0串行下移一个单元,其余以此类推。
原S8自动丢失。
115.2.1基本逻辑指令指令AI0.2(假设I0.2=0)执行情况如表5-8所示。如果是AN指令,则将操作数取反后再和栈顶值相与,结果放回栈顶。即:1*1=1→S0
名称执行前执行后说明STACK010执行前栈顶值为1。执行是用栈顶值和指令操作数(I0.2的值为0)进行与运算,结果放回栈顶。即:S0*I0.2=1*0=0→S0STACK1S1S1STACK2S2S2STACK3S3S3STACK4S4S4STACK5S5S5STACK6S6S6STACK7S7S7STACK8S8S8除S0值外,其他各值不变.125.2.1基本逻辑指令1.标准触点指令
由于堆栈存储单元数的限制,所以梯形图中,最多一次串联或并联的触点数有一定限制;语句表中,A、O、AN、ON指令最多可以连用有限次;功能框图中,AND和OR指令模块中输入的个数也有限制
标准触点指令中如果有操作数,则为BOOL型,操作数的编址范围可以是:I、Q、M、SM、T、C、S、V、L。
返回135.2.1基本逻辑指令程序执行的时序图如图5-11所示。
图5-11
时序图
由于取非指令NOT缘故,Q0.0与Q0.3反相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//145.2.1基本逻辑指令(2)负跳变指令:ED
负跳变触点检测到脉冲的每一次负跳变后,产生一个扫描周期宽度的微分脉冲。
指令格式:ED(无操作数)图5-12
正、负跳变触点指令编程一个扫描周期长度
正跳变触点检测到脉冲的每一次正跳变后,产生一个扫描周期宽度的微分脉冲。
指令格式:EU(无操作数)
(1)正跳变指令:EU
2.正负跳变指令:用于检测脉冲的正或负跳变(上升或下降沿),并产生一个扫描周期宽度脉冲,触发内部继电器线圈。155.2.1基本逻辑指令3.置位和复位指令
置位即置1,复位即置0。置位和复位指令可以将位存储区的某一位开始的一个或多个(最多可达255个)同类存储器位置1或置0。这两条指令在使用时需指明三点:操作性质、开始位和位的数量。各操作数类型及范围如表5-9所示。
表5-9
置位和复位指令操作数类型及范围
操作数范围
类型
位bitI,Q,M,SM,T,C,V,S,LBOOL型
数量NVB,IB,QB,MB,SMB,LB,SB,AC,*VD,*AC,*LD,常数BYTE型(最大255)165.2.1基本逻辑指令(1)置位指令:S
将位存储区的指定位(bit)开始的N个同类存储器位置位。指令格式:Sbit,N;例:SQ0.0,1(2)复位指令:R
将位存储区的指定位(bit)开始的N个同类存储器位复位。指令格式:Rbit,N;例:RQ0.2,
3
返回175.2.1基本逻辑指令
在语句表(STL)中,当栈顶值为1时,才能执行置位指令S或复位指令R。置位后即使栈顶值变为0,仍保持置位;复位后即使栈顶值变为0,仍保持复位。可见这两条指令均有“记忆”功能。置位和复位指令应用编程序举例:电动机启动、停止控制。
图5-13置位、复位指令185.2.2立即操作指令立即指令允许对输入和输出点进行快速和直接存取。当用立即指令读取输入点的状态时,相应的输入映像寄存器中的值并未发生更新;用立即指令访问输出点时,访问的同时,相应的输出寄存器的内容也被刷新。只有输入继电器I和输出继电器Q可以使用立即指令。
返回(1)LDI、LDNI、AI、ANI、OI和ONI立即触点指令(2)=I,立即输出指令(3)SI,立即置位指令(4)RI,立即复位指令在每个标准触点指令的后面加“I”19指令名称指令格式示例说明立即触点指令LDIbitLDI、LDNI、AI、ANI、OI和ONIbit只能是I类型LDII0.2指令执行时,立即读取物理输入点的值,但是不刷新对应映像寄存器的值。立即输出指令=Ibitbit只能是Q类型(访问输出点)=IQ0.2把栈顶值立即复制到指令所指定的物理输出点,同时,相应的输出映像寄存器的内容也被刷新立即置位指令SIbit,Nbit只能是Q类型(访问输出点)SIQ0.0, 2从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也被刷新立即复位指令RIbit,Nbit只能是Q类型(访问输出点)RIQ0.0,1从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即复位,同时,相应的输出映像寄存器的内容也被刷新。表5-10立即置位和立即复位指令的操作数类型及范围操作数范围
类型
位bitQBOOL型
数量NVB,IB,QB,MB,SMB,LB,SB,AC,*VD,*AC,*LD,常数
BYTE型(最大128)205.2.2立即操作指令应用举例:
LDI0.0//装入常开触点
=Q0.0//输出触点,非立即
=IQ0.1//立即输出触点
SIQ0.2,1//从Q0.2开始的1个触点被立即置1
LDII0.0//立即输入触点指令
=Q0.3//输出触点,非立即图5-14
立即指令程序215.2.2立即操作指令Q0.3在上一周期n立即指令执行时置1Q0.1I0.0Q0.0Q0.3Q0.2输出刷新输入扫描程序执行输出刷新输入扫描程序执行输出刷新输入扫描程序执行输出刷新输入扫描程序执行扫描周期n+1扫描周期n+3扫描周期n+2扫描周期nI0.0在上一扫描周期n某时跳变Q0.0在本周期n+1输出刷新时置1Q0.1与Q0.2在本周期n+1立即指令执行时置1LDI0.0=Q0.0=IQ0.1SIQ0.2,1LDII0.0=Q0.3立即指令时序图一般输入、输出指令,只有等到输入扫描、输出刷新时才得到执行。立即操作指令,是该程序语句执行的那一刻立即得到执行。225.2.3
复杂逻辑指令
基本逻辑指令涉及可编程元件的触点和线圈的简单连接,不能表达在梯形图中触点的复杂连接结构。复杂逻辑指令主要用来描述对触点进行的复杂连接,同时,它们对逻辑堆栈也可以实现非常复杂的操作。简单连接复杂连接235.2.3
复杂逻辑指令
1.
栈装载与指令ALD
2.
栈装载或指令
OLD3.
逻辑推入栈指令LPS
4.
逻辑弹出栈指令LPP
5.
逻辑读栈指令LRD6.
装入堆栈指令LDSN返回这些指令中除
LDS
外,其余指令都无操作数245.2.3
复杂逻辑指令1.栈装载与指令(与块)
ALD在梯形图中,用于将并联电路块进行串联连接。在语句表中,执行ALD指令:将堆栈中的第一级和第二级的值进行逻辑“与”操作,结果置于栈顶(堆栈第一级),并将堆栈中的第三级至第九级的值依次上弹一级。255.2.3
复杂逻辑指令2.栈装载或指令
OLD在梯形图中,用于将串联电路块进行并联连接。在语句表中,执行OLD指令:将堆栈中的第一级和第二级的值进行逻辑“或”操作,结果置于栈顶(堆栈第一级),并将堆栈中其余各级的内容依次上弹一级。
265.2.3
复杂逻辑指令
栈装载与指令ALD和栈装载或指令OLD
的操作过程如图5-16所示,图中“x”表示不确定值。
图5-16
栈装载与指令和栈装载或指令的操作过程
27图5-17LPS、LRD、LPP、LDS指令的操作过程这里n=3LPS与LPP必须配对使用LPS(亦称:分支或主控指令):用于复制栈顶的值并将这个值推入栈顶,原堆栈中各级栈值依次下压一级。在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。
LPP(亦称:分支结束或主控复位指令):将栈顶值弹出,原堆栈中各级栈值依次上弹一级,堆栈第二级的值成为新的栈顶值。在梯形图中的分支结构中,用于将LPS指令生成的一条新母线进行恢复。LRD:把堆栈中第二级的值复制到栈顶。堆栈没有推入栈或弹出栈操作。在梯形图中的分支结构中,当左侧为主控逻辑块时,开始第二个和后边更多的从逻辑块。应注意,LPS后第一个和最后一个从逻辑块不用本指令。LDS:复制栈中的第n级的值到栈顶。原栈中各级栈值依次下压一级,栈底值丢失。285.2.3
复杂逻辑指令应用举例:
LDI0.0//装入常开触点OI2.2//或常开触点LDI0.1//被串的块开始LDI2.0//被并路开始AI2.1//与常开触点OLD//栈装载或,并路结束ALD//栈装载与,串路结束=Q5.0//输出触点LDI0.0//装入常开触点LPS//逻辑推入栈,主控触点AI0.5//与常开触点=Q7.0//输出触点LRD//逻辑读栈,新母线LDI2.1//装入常开触点OI1.3//或常开触点ALD//栈装载与=Q6.0//输出触点LPP//逻辑弹出栈,母线复原LDI3.1//装入常开出触点OI2.0//或常开触点ALD//栈装载与=Q1.3//输出触点图5-18
复杂逻辑指令的应用
返回LPS后第一和最后一个从逻辑块不用LRD指令295.2.4取非触点指令和空操作指令
1.取非触点指令
NOT用来改变能流的状态。能流到达取非触点时,能流就停止;能流未到达取非触点时,能流就通过。在语句表中,取非触点指令对堆栈的栈顶作取反操作,改变栈顶值。栈顶值由0变为1,或者由1变为0。取非触点指令无操作数。
图5-19
取非触点指令编程
返回305.2.4取非触点指令和空操作指令2.空操作指令
NOP,空操做指令。使能输入有效时,执行空操作指令。空操做指令不影响用户程序的执行,操作数N是标号,是一个0~225的常数。LDI0.0//使能输入NOP30//空操作指令,标号为30
图5-20
空操作指令编程
315.2.5定时器和计数器指令
1.定时器指令
系统提供3种定时指令:TON(通电延时)、TONR(有记忆通电延时)和TOF(断电延时)。S7-200定时器的分辨率(时间增量/时间单位/分辨率)有3个等级:1ms、10ms和100ms,分辨率等级和定时器号关系如表5-11所示。返回325.2.5定时器和计数器指令表5-11
定时器号和分辨率定时器类型分辩率/ms计时范围/s定时器号TONTOF132.767T32,T9610327.67T33~T36,T97~T1001003276.7T37~T63,T101~T255TONR132.767T0,T6410327.67T1~T4,T65~T681003276.7T5~T31,T69~T95定时时间的计算:T=PT☓S‑‑‑(T为实际定时时间,PT为预设值,S为分辨率等级)例如:TON指令用定时器T33,预设值为125,则实际定时时间
T=125☓10=1250ms335.2.5定时器和计数器指令定时器指令操作数有3个:编号、预设值和使能输入。1)编号:用定时器的名称和它的常数编号(最大255)来表示,即:Txxx,如:T4。含义:T4编号,还包含两方面的变量信息:定时器位和定时器当前值。定时器位:定时器位与时间继电器的输出相似,当定时器的当前值达到预设值PT时,该位被置为“1”。定时器当前值:存储定时器当前所累计的时间,它用16位有符号整数来表示,故最大计数值为32767。2)预设值PT:数据类型为INT型。寻址范围可以是VW、IW、QW、MW、SW、
SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。3)使能输入(只对LAD和FBD):BOOL型,可以是I、Q、M、SM、T、C、V、
S、L和能流。可以用复位指令来对3种定时器复位,复位指令的执行结果是:使定时器位变为OFF:定时器当前值变为0。345.2.5定时器和计数器指令(1)接通延时定时器指令:TON该指令用于单一间隔定时。上电周期或首次扫描,定时器位OFF,定时器当前值为0,载入预设值。使能输入接通时,定时器位为OFF,当前值从0开始计数时间,当前值达到预设值时,定时器位为ON,当前值连续计数到32767。使能输入断开,定时器自动复位,即定时器位OFF,当前值为0。填“计定时器号”,如:T35填“预设值”,如:100指令格式:TONTxxx,PT例:TONT35,4返回IN44T35当前值T35定时器位最大值355.2.5定时器和计数器指令(2)有记忆接通延时定时器指令该指令用于对许多间隔的累计定时。上电周期或首次扫描,定时器位OFF,当前值保持。使能输入接通时,定时器位为OFF,当前值从0开始累计计数时间。使能输入断开,定时器位和当前值保持最后状态。使能输入再次接通时,当前值从上次的保持值继续计数,当累计当前值达到预设值时,定时器位ON,当前值连续计数到32767。
填“计定时器号”,如:T2填“预设值”,如:10TONR定时器只能用复位指令进行复位操作,使当前值清零。指令格式:TONRTxxx,PT
例:TONRT2,10IN410T2当前值T2位最大值365.2.5定时器和计数器指令(3)断开延时定时器指令该指令用于断开后的单一间隔定时。上电周期或首次扫描,定时器当前值为0,定时器位OFF,载入预置值PT。使能输入接通时,当前值为0,定时器位为ON。当使能输入由接通到断开时,定时器开始计数,当前值达到预设值时,定时器位OFF,当前值等于预设值,停止计数。TOF复位后,如果使能输入再有从ON到OFF的负跳变,则可实现再次启动。填“计定时器号”,如:T36填“预设值”,如:3指令格式:TOFTxxx,PT例:TOFT36,3IN3T36当前值T36位最大值375.2.5定时器和计数器指令LDI0.0//使能输入
TONT35,+4//通电延时定时器,延时时间为40ms
LDI0.0//使能输入
TONRT2.+10//有记忆通电延时定时器,
//延时时间为100ms
LDI0.0//使能输入
TOFT36,+3//断电延时定时器,延时时间为30ms
(4)应用举例:图5-21
定时器特性
T35为通电延时定时器T2为有记忆通电延时定时器T36为断电延时定时器385.2.5定时器和计数器指令
上述梯形图程序中输入输出执行时序关系如图5-22所示。
图5-22
定时器时序
返回
使能输入接通时,定时器位为ON,当前值为0,预启动。TONT35,+4TONRT2.+10TOFT36,+3使能输入395.2.5定时器和计数器指令(5)应用定时器指令应注意的几个问题
①
不能把一个定时器号同时用作断开延时定时器(TOF)和接通延时定时器(TON)。②使用复位(R)指令对定时器复位后,定时器位为“0”,定时器当前值为“0”。③有记忆接通延时定时器(TONR)只能通过复位指令进行复位。④对于断开延时定时器(TOF),需要输入端有一个负跳变(由on到off)的输入信号启动计时。405.2.5定时器和计数器指令1)1ms分辨率定时器
1ms分辨率定时器启动后,定时器对1ms的时间间隔(时基信号)进行计时。定时器当前值每隔1ms刷新一次,在一个扫描周期中要刷新多次,而不和扫描周期同步。
2)10ms分辨率定时器10ms分辨率定时器启动后,定时器对10ms的时间间隔进行计时。程序执行时,在每次扫描周期开始对10ms定时器刷新,在一个扫描周期内定时器当前值保持不变。
3)100ms分辨率定时器
100ms分辨率定时器启动后,定时器对100ms的时间间隔进行计时。只有在定时器指令执行时,100ms定时器的当前值才被刷新。
⑤不同精度的定时器,它们当前值的刷新周期是不同的,具体情况如下:415.2.5定时器和计数器指令
举例说明:在图5-23a中,T32定时器1ms更新一次。当定时器当前值100在图示A处刷新,Q0.0可以接通一个扫描周期,若在其他位置刷新,Q0.0则用永远不会接通。而在A处刷新的概率是很小的。若改为图5-23b,就可保证当定时器当前值达到设定值时,Q0.0会接通一个扫描周期。图5-23a同样不适合10ms分辨率定时器。
图5-231ms定时器编程425.2.5定时器和计数器指令在子程序和中断程序中不易使用100ms定时器。子程序和中断程序不是每个扫描周期都执行的,那么在子程序和中断程序中的100ms定时器的当前值就不能及时刷新,造成时基脉冲丢失,致使计时失准;在主程序中,不能重复使用同一个100ms的定时器号,否则该定时器指令在一个扫描周期中多次被执行,定时器的当前值在一个扫描周期中多次被刷新。这样,定时器就会多计了时基脉冲,也造成计时失准。因而,100ms定时器只能用于每个扫描周期内同一定时器指令执行一次,且仅执行一次的场合。100ms定时器的编程例子如图5-24a所示。
a)b)图5-24100ms定时器的应用
返回
与图5-23a相比较,该定时器确保在此处刷新当前值。435.2.5定时器和计数器指令2.计数器指令
计数器用来累计输入脉冲的次数。计数器也是由集成电路构成,是应用非常广泛的编程元件,经常用来对产品进行计数。计数器与定时器的结构和使用基本相似,编程时输入它的预设值PV(计数的次数),计数器累计它的脉冲输入端电位上升沿(正跳变)个数,当计数器达到预设值PV时,发出中断请求信号,以便PLC作出相应的处理。计数器指令有3种:增计数CTU、增减计数CTUD和减计数CTD。指令操作数有4方面:编号、预设值、脉冲输入和复位输入。445.2.5定时器和计数器指令1)编号:用计数器名称和它的常数编号(最大255)来表示,即Cxxx,如:C6。C6不仅仅是计数器的编号,它还包含两方面的变量信息:计数器位和计数器当前值。计数器位:表示计数器是否发生动作的状态,当计数器的当前值达到预设值PV时,该位被置为“1”。计数器当前值:存储计数器当前所累计的脉冲个数,它用16位符号整数(INT)来表示,故最大计数值为32767。2)预设值PV:数据类型为INT型。寻址范围可以是VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。3)脉冲输入:BOOL型,可以是I、Q、M、SM、T、C、V、S、L和能流。
4)复位输入:与脉冲输入同类型和范围。455.2.5定时器和计数器指令(1)增计数器指令:CTU首次扫描,定时器位OFF,当前值为0。在增计数器的计数输入端(CU)脉冲输入的每个上升沿,计数器加1,当前值增加1个单位,当前值达到预设值时,计数器位ON,当前值继续计数到32767停止计数。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值为0。
格式:CTUCxxx,PV
例:CTUC20,3填“计数器器号”,如:C30填“预设值”,如:3脉冲输入复位输入465.2.5定时器和计数器指令应用举例:LDI0.0//计数脉冲信号输入端LDI0.1//复位信号输入端CTUC20,+3//增计数,计数设定值为3个脉冲
LDC20//装入计数器触点=Q0.0//输出触点图5-25
增计数程序及时序
复位与计数脉冲同时有效时,优先执行复位。475.2.5定时器和计数器指令(2)增减计数器指令该指令有两个脉冲输入端:CU输入端用于递增计数,CD输入端用于递减计数。首次扫描,定时器位OFF,当前值为0。CU输入的每个上升沿,计数器当前值增加1个单位,CD输入的每个上升沿,都使计数器当前值减小1个单位,当前值达到预设值时,计数器位ON。增减计数器计数到32767(最大值)后,下一个CU输入的上升沿将使当前值跳变为最小值(–32768);反之,当前值达到最小值(–32768)时,下一个CD输入的上升沿将使当前值跳变为最大值(32767)。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值为0。
格式:CTUDx,PV例:CTUDC30,5返回485.2.5定时器和计数器指令
LDI0.0//增计数输入端
LDI0.1//减计数输入端
LDI0.2//复位端
CTUDC30,+5//增减计数,设定脉冲数为5
LDC30//装入计数器触点
=Q0.0//输出触点应用举例:图5-26增减计数程序及时序
当前值大于(或小于)设定值后,仍然随计数脉冲而变化,而计数器位保持。495.2.5定时器和计数器指令(3)减计数器指令:CTD
首次扫描,定时器位OFF,当前值为预设值PV。计数器检测到CD输入的每个上升沿时,计数器当前值减小1个单位,当前值减到0时,计数器位ON。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值复位为预设值,而不是0。
指令格式:CTDCxxx,PV例:CTDC40,4505.2.5定时器和计数器指令应用举例:
LDI0.0//减计数脉冲输入端
LDI0.1//复位输入端
CTDC40,+4//减计数器,设定计数脉冲
//数为4
LDC40//装入计数器触点
=Q0.0//输出触点图5-27
减计数程序及时序
当前值减到0后,计数脉冲对当前值和位都不起作用。0442233441515.2.5定时器和计数器指令(4)应用举例:用计数器和定时器配合增加延时时间,如图5-28所示。通过分析可知以下程序中实际延时时间为100ms×30000×10=30000s。
图5-28计数器应用例LDI0.0//启动通电延时ANM0.0//重新启动延时TONT50,+30000//延时时间设定为3000sLDT50//延时时间到=M0.0//关定时器,产生一脉冲LDM0.0//每隔3000s输入一脉冲LDNI0.0//复位输入CTUC20,+10//增计数,累计脉冲总数525.2.5定时器和计数器指令(5)应用计数器指令应注意的问题:①可以用复位指令来对3种计数器复位,复位指令的执行结果是:使计数器位变为OFF;计数器当前值变为0(CTD变为预设值PV)。②在一个程序中,同一个计数器编号只能使用一次。③脉冲输入和复位输入同时有效时,优先执行复位操作。535.2.6顺序控制继电器指令S7-200CPU含有256个顺序控制继电器(SCR)用于顺序控制。S7-200包含顺序控制指令,可以模仿控制进程的步骤,对程序逻辑分段;可以将程序分成单个流程的顺序步骤,也可同时激活多个流程;可以使单个流程有条件地分成多支单个流程,也可以使多个流程有条件地重新汇集成单个流程。从而对一个复杂的工程可以十分方便地编制控制程序。
系统提供3个顺序控制指令:顺序控制开始指令(LSCR)、顺序控制转移指令(SCRT)和顺序控制结束指令(SCRE)。
返回545.2.6顺序控制继电器指令1.顺序继电器指令(1)段开始指令:LSCR
(2)段结束指令:SCRE(3)段转移指令:SCRT
定义一个顺序控制继电器段的开始。操作数为顺序控制继电器位Sx.y,Sx.y作为本段的段标志位。当Sx.y位为1时,允许该SCR段工作。该指令用来实现本段与另一段之间的切换。操作数为顺序控制继电器位Sx.y,Sx.y是下一个SCR段的标志位。当使能输入有效时,一方面对Sx.y置位,以便让下一个SCR段开始工作,另一方面同时对本SCR段的标志位复位,以便本段停止工作。一个SCR段必须用该指令来结束。返回555.2.6顺序控制继电器指令2.使用顺序继电器指令的限制
只能使用顺序控制继电器位作为段标志位。一个顺序控制继电器位Sx.y在程序中只能使用一次。在一个SCR段中不能出现跳入、跳出或段内跳转等程序结构。即在段中不能使用JMP和LBL指令。同样,在一个SCR段中不允许出现循环程序结构和条件结束,即禁止使用FOR、NEXT和END指令。指令格式:LSCRbit(段开始指令,bit
为本段标志位)
SCRTbit(段转移指令,bit
为下段标志位)
SCRE(段结束指令,无操作数)565.2.6顺序控制继电器指令3.顺序结构
4.程序实例
根据舞台灯光效果的要求,控制红、绿、黄三色灯。要求:红灯先亮,2s后绿灯亮,再过3s后黄灯亮。待红、绿、黄灯全亮3min后,全部熄灭。程序如图5-29所示。说明:每一个SCR程序段中均包含三个要素:1)输出对象:在这一步序中应完成的动作;2)转移条件:满足转移条件后,实现SCR段的转移;3)转移目标:转移到下一个步序。一个SCR段必须用该指令来结束。575.2.6顺序控制继电器指令LDI0.1ANQ0.0ANQ0.1ANQ0.2//在初始状态下起动,置SS0.1,1//S0.1=1LSCRS0.1//S0.1=1,激活第一SCR程序段,
//进入第一步序LDSM0.0SQ0.0,1//红灯亮,并保持TONT37,+20//启动2s定时器LDT37//2s后程序转移到第二SCR段,SCRTS0.2//(S0.2=1,S0.1=0)SCRE//第一SCR段结束LSCRS0.2//S0.2=1,激活第二SCR程序段,
//进入第二步序LDSM0.0SQ1.1//绿灯亮,并保持TONT38,+30//启动3s定时器LDI0.1585.2.6顺序控制继电器指令LDT38//3s后程序转移到第三SCR段,SCRTS0.3//(S0.3=1,S0.2=0)SCRE//第二SCR段结束LSCRS0.3//S0.3=1,激活第三SCR程序段,
//进入第三步序LDSM0.0SQ0.2,1//黄灯亮,并保持TONT39,+1800//启动3min定时器LDT39//3min后程序转移到第四SCR段,SCRTS0.4//(S0.4=1,S0.3=0)SCRE//第三SCR段结束LSCRS0.4//S0.4=1,激活第四SCR程序段,
//进入第四步序LDSM0.0RS0.1,4RQ0.0,3//红、绿、黄灯全灭SCRE//第四SCR段结束
图5-29SCR指令编程返回595.2.7移位寄存器指令
移位指令都是对无符号数进行的处理,执行时只考虑要移位的存储单元的每一位数字状态,而不管数据的值的大小。本类指令在一个数字量输出点对应多个相对固定状态的情况下有广泛的应用。
返回605.2.7移位寄存器指令1.左移和右移
左移和右移根据所移位的数的长度分别又可分为字节型、字型、双字型。移位特点:移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。移位时,移出位进入SM1.1,另一端自动补0。SM1.1始终存放最后一次被移出的位。移位次数与移位数据的长度有关,如果所需移位次数大于移位数据的位数,则超出的次数无效。如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。移位次数N为字节型数据。615.2.7移位寄存器指令(1)字节左移和字节右移指令:SLB,SRB使能输入有效时,把字节输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元(在语句表中,IN与OUT使用同一个单元)。最大实际可移位次数为8。指令格式:
SLBOUT,
N(字节左移)
SRBOUT,
N(字节右移)例:
SLBMB0,
2SRBLB0,
3625.2.7移位寄存器指令以第一条指令为例,指令执行情况如表5-12所示
移位次数地址单元内容位SM1.1说明0MB010110101X移位前(SM1.1不确定)1MB0011010101数左移,移出位1进入SM1.1,右端补02MB0110101000数左移,移出位0进入SM1.1,右端补0表5-12
左移指令SLB执行结果
(2)字左移和字右移指令:SLW,SRW指令模块与字节移位比较,只有名称变为SHL
W和SHR
W。最大实际可移位次数为16。指令格式:
SLWOUT,
N(字左移)
SRWOUT,
N(字右移)例:
SLWMW0,
2SRWLW0,3
返回635.2.7移位寄存器指令以第二条指令为例,指令执行情况如表5-13所示。
表5-13
右移指令SRW执行结果
移位次数地址单元内容位SM1.1说明0LW01011010100110011X移位前(SM1.1不确定)
1LW001011010100110011右移,
1进入SM1.1,左端补02LW000101101010011001右移,1进入SM1.1,左端补03LW000010110101001100右移,0进入SM1.1,左端补0645.2.7移位寄存器指令指令格式:SLDOUT,N(双字左移)
SRDOUT,N(双字右移)例:SLDMD0,2SRDLD0,
3(3)双字左移和双字右移指令:SLD,SRD指令模块与字节移位比较,只有名称变为SHL
DW和SHR
DW,其他部分完全相同。最大实际可移位次数为32。
655.2.7移位寄存器指令2.循环左移、循环右移
循环移位特点:
移位数据存储单元的移出端与另一端相连,同时又与SM1.1(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存储单元。移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的模,用小于数据长度的结果作为实际循环移位的次数。如字左移时,若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4,故指令实际循环移位4次。如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。移位次数N为字节型数据。返回665.2.7移位寄存器指令(1)字节循环左移和字节循环右移指令:RLB,RRB
使能输入有效时,把字节型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的字节存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以8为底的模所得的结果。
指令格式:
RLBOUT,
N(字节循环左移)
RRBOUT,
N(字节循环右移)例:
RLBMB0,
2RRBLB0,3
675.2.7移位寄存器指令(2)字循环左移和字循环右移指令:RLW,RRW
指令模块与字节循环移位只有名称变为ROL
W和ROR
W,其他部分完全相同。使能输入有效时,把字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的字存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以16为底的模所得的结果。指令格式:
RLWOUT,
N(字循环左移)
RRWOUT,
N(字循环右移)例:
RLWMD0,
2RRWLD0,3
685.2.7移位寄存器指令(3)双字循环左移和双字循环右移指令:RLD,RRD
指令模块与字节循环移位只有名称变为ROL
DW和ROR
DW,其他部分完全相同。使能输入有效时,把双字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的双字存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以32为底的模所得的结果。指令格式:RLDOUT,N(双字循环左移)
RRDOUT,N(双字循环右移)例:RLDMD0,2RRDLD0,
3返回695.2.7移位寄存器指令以指令RRWLW0,3为例,指令执行情况如表5-14所示。
表5-14
指令RRW执行结果
移位次数地址单元内容位SM1.1说明0LW01011010100110011X移位前(SM1.1不确定)
1LW011011010100110011右端1移入SM1.1和LW0左端2LW011101101010011001右端1移入SM1.1和LW0左端3LW001110110101001100右端0移入SM1.1和LW0左端705.2.7移位寄存器指令3.寄存器移位
SHRB,寄存器移位指令。该指令在梯形图中有3个数据输入端:DATA为数值输入,将该位的值移入移位寄存器;S
BIT为移位寄存器的最低位端;N指定移位寄存器的长度。每次使能输入有效时,整个移位寄存器移动1位。
移位特点:移位寄存器长度在指令中指定,没有字节型、字型、双字型之分。可指定的最大长度为64位,可正也可负。移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。
715.2.7移位寄存器指令移位时,移出位进入SM1.1,另一端自动补以DATA移入位的值。正向移位时长度N为正值,移位是从最低字节的最低位S
BIT移入,从最高字节的最高位MSB.b移出;反向移位时,长度N为负值,移位是从最高字节的最高位移入,从最低字节的最低位S
BIT移出。最高位的计算方法:(N的绝对值–1+(S
BIT的位号))/8,相除结果中,余数即是最高位的位号,商与S
BIT的字节号之和即是最高位的字节号。例如,如果S
BIT是V22.5,N是8,那么MSB.b是V23.4。具体计算如下:MSB.b→V22+(8-1+5)÷8=V22+12÷8=V22+1(余数为4)→V23.4返回725.2.7移位寄存器指令指令格式:SHRBDATA,S
BIT,N例:SHRBI0.5,V20.0,5以本条指令为例,指令执行情况如表5-15所示。
表5-15
指令SHRB执行结果
脉冲数I0.5值
VB20内容
位SM1.1说明0110110101X移位前。移位时,从V20.0移入,从V20.4移出
111010101111移入SM1.1,I0.5的脉冲前值进入右端211011011100移入SM1.1,I0.5的脉冲前值进入右端301010111011移入SM1.1,I0.5的脉冲前值进入右端735.2.8比较操作指令
比较指令是一种比较判断,用于比较两个符号数或无符号数。在梯形图中以带参数和运算符号的触点的形式编程,当这两数比较式的结果为真时,该触点闭合。在功能框图中以指令模块的形式编程,当比较式结果为真时,输出接通。在语句表中使用LD指令进行编程时,当比较式为真时,主机将栈顶置1。使用A/O指令进行编程时,当比较式为真时,则在栈顶执行A/O操作,并将结果放入栈顶。比较指令的类型有:字节比较、整数比较、双字整数比较和实数比较。比较运算符有:=、>=、<=、>、<和<>(<>表示不等于)。
返回745.2.8比较操作指令1.字节比较
字节比较用于比较两个字节型整数值IN1和IN2的大小,字节比较是无符号的。比较式可以是LDB、AB或OB后直接加比较运算符构成。如:LDB=、AB<>、OB>=等。整数IN1和IN2的寻址范围:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常数。指令格式例:LDB=VB10,VB12AB<>MB0,MB1OB<=AC1,
116755.2.8比较操作指令2.整数比较
整数比较用于比较两个一字长整数值IN1和IN2的大小,整数比较是有符号的(整数范围为16#8000和16#7FFF之间)。比较式可以是LDW、AW或OW后直接加比较运算符构成。如:LDW=、AW<>、OW>=等。整数IN1和IN2的寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。指令格式例:LDW=VW10,VW12AW<>MW0,MW4OW<=AC2,
1160765.2.8比较操作指令3.双字整数比较双字整数比较用于比较两个双字长整数值IN1和IN2的大小,双字整数比较是有符号的(双字整数范围为16#80000000和16#7FFFFFFF之间)。比较式可以是LDD、AD或OD后直接加比较运算符构成。如:LDD=、AD<>、OD>=等。双字整数IN1和IN2的寻址范围:VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD和常数。指令格式例:LDD=VD10,VD14AD<>MD0,
MD8OD<=AC0,
1160000返回775.2.8比较操作指令4.实数比较
实数比较用于比较两个双字长实数值IN1和IN2的大小,实数比较是有符号的(负实数范围为-1.175495E-38和-3.402823E+38,正实数范围为+1.175495E-38和+3.402823E+38)。比较式可以是LDR、AR或OR后直接加比较运算符构成。如:LDR=、AR<>、OR>=等。整数IN1和IN2的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常数。指令格式例:LDR=VD10,VD18AR<>MD0,MD12OR<=AC1,
1160.478785.2.8比较操作指令5.应用举例
一自动仓库存放某种货物,最多6000箱,需对所存的货物进出计数。货物多于1000箱,灯L1亮;货物多于5000箱,灯L2亮。其中,L1和L2分别受Q0.0和Q0.1控制,数值1000和5000分别存储在VW20和VW30字存储单元中。本控制系统的程序如图5-30所示。程序执行时序如图5-31所示。
795.2.8比较操作指令LDI0.0//增计数出入端LDI0.1//减计数出入端LDI0.2//复位出入端CTUDC30,+10000//增减计数,设定脉冲数为10000
LDW>=C30,VW20//比较计数器,当前值是否大于等
//于VW20中的值“1000”=
Q0.0//输出触点
LDW>=C30,VW30//比较计数器,当前值是否大于等
//于VW30中的值“5000”=
Q0.1//输出触点图5-30
程序举例
返回80时序图:图5-31
时序图
815.3S7-200PLC的功能指令及编程方法
PLC实际上就是工业控制计算机。它具有计算机控制系统的功能,例如算术逻辑运算、程序流控制、通信等等极为强大的功能。这些功能通常是通过功能指令的形式来实现的。功能指令(FunctionInstruction)又称为应用指令,它是指令系统中应用于复杂控制的指令。功能指令包括:数据处理指令、算术逻辑运算指令、表功能指令、转换指令、中断指令、高速处理指令等等。这些功能指令实际上是厂商为满足各种客户的特殊需要而开发的通用子程序。
返回825.3.1数学运算指令
1.加法运算指令
加法指令是对有符号数进行相加操作。包括:整数加法、双整数加法和实数加法。加法指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负)。使能流输出ENO断开的出错条件:0006(间接寻址);SM1.1(溢出);SM4.3(运行时间)。(1)整数加法指令:+I
使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相加,产生一个16位整数结果OUT。
返回835.3.1数学运算指令在LAD和FBD中,以指令模块形式编程,执行结果:IN1+IN2→OUT。在STL中,通常将IN2与OUT共用一个地址单元,执行结果:IN1+OUT→OUT。指令格式:+IIN1,OUT程序实例:
LDI0.1//使能输入端MOVWVW0,VW4//VW0→VW4+IVW2,VW4//VW2+VW4→VW4LAD中IN2和OUT可用同一单元。图5-33
整数加法例b
845.3.1数学运算指令(2)双整数加法指令:+D(3)实数加法指令:+R
使能输入有效时,将两个双字长(32位)的符号整数IN1和IN2相加,产生一个32位整数结果OUT。指令格式:+DIN1,OUT
使能输入有效时,将两个双字长(32位)的实数IN1和IN2相加,产生一个32位实数结果OUT。
指令格式:+RIN1,OUT855.3.1数学运算指令2.减法运算指令
减法指令是对有符号数进行相减操作。包括:整数减法、双整数减法和实数减法。这三种减法指令与所对应的加法指令除运算法则不同之外,其他方面基本相同。减法指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负)。使能流输出ENO断开的出错条件:0006(间接寻址);SM1.1(溢出);SM4.3(运行时间)。
整数减法
双整数减法
实数减法
865.3.1数学运算指令程序实例:
指令格式:-IIN2,OUT//整数减法,OUT-IN2→OUT-DIN2,OUT//双整数减法
-RIN2,OUT//实数减法
LDI0.0//使能输入端-IVW2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖北省百强县中考数学联考试卷(4月份)
- 客户洞察面试题及答案
- 广告设计师考试综合设计能力试题及答案
- 端口测试面试题及答案
- 2024年纺织设计师考试的道德与试题及答案
- 保险从业考试题库及答案
- 2024助理广告师考试备考真经试题及答案
- 2024年助理广告师考试的挑战与机遇试题及答案
- 2024年设计师客户需求分析题及答案
- 助理广告师考试情感与品牌联结试题及答案
- 机泵基础知识
- 第22课 世界多极化与经济全球化 说课稿-2023-2024学年高中历史统编版(2019)必修中外历史纲要下
- 四渡赤水(课件)
- 《安装施工管理》课件
- 刺杀操培训课件
- 《高等光学》课程教学大纲
- 2024年山东省济南市中考英语试题卷(含答案解析)
- 2025年中考语文古诗文默写背诵与强化训练23八年级下册第三单元课外诗词默写背诵
- 酒店餐饮部经理聘用书
- 2024年社区警务规范考试题库
- 行业数字化转型推进方案
评论
0/150
提交评论