1、可编程序控制器(PLC)第3章,http:/ 可编程序控制器的基本指令及程序设计,一、基本指令 二、程序控制指令 三、PLC 编程规则 四、典型环节程序示例 五、PLC程序的简单设计法,http:/ 功能块图(FBD)和顺序流程图几种编程语言,其中LAD和STL是最基本的也是最常用的 编程语言。本章以这两种语言为例介绍其应用。1. 装入触点指令及驱动指令LD(LOAD):装入触点指令。用于网络块逻辑运算开始的常开触点与母线的连接。LDN( LOAD NOT):取反指令。用于网络块逻辑运算开始的常闭触点与母线的连接。 (OUT):线圈的驱动指令图31 为上面三条指令的用法 注意事项:,3,LD、
2、LDN指令不只是用于网络块逻辑计算开始时与母线相连的常开和常闭触点,在分支电路块的开始也使用LD、LDN指令,与后面要讲的LD、OLD指令配合完成块电路的编程。 指令不能用于输入继电器。指令可连续使用任意次。在同一线圈中不要使用双线圈输出。 LD、LDN操作数为I、Q、M、SM、T、C、V、S的操作数为Q、M、S、V,http:/ 触点串联指令,A (And):与指令。用于单个常开触点的串联连接。 AN(And Not):与反指令。用于单个常闭触点的串联连接。,注意事项:A、AN是单个触点串联连接指令,可连续使用,编程时只受到打印宽度和屏幕显示的限制。例中可以反复使用=指令,但次序必须正确。A
3、、AN指令的操作数为:I、Q、M、SM、T、C、V、S和L。,使用举例,LD M0.0 LPS A M0.1 = Q0.0 LPP = Q0.1,http:/ 连续输出,I0.2,Q0.0,M0.3,T5,Q0.3,M0.4,Q0.1,LD I0.0A M0.0= Q0.0 LD M0.1 AN I0.2= M0.3 A T5= Q0.3AN M0.4= Q0.1,BACK,(a)梯形图,(b)语句表,M0.0,http:/ . 触点并联指令,O(or),或指令。用于单个常开触点的并联连接,ON(or not),或反指令。用于单个常闭触点的并联连接,使用举例,单个触点的O、ON指令可连续使用
4、O、ON指令的操作数为:I、Q、M、SM、T、C、V、S、和L,注意事项:,http:/ M0.0 O M0.1 ON M0.2 A I0.0 O I0.1 = Q0.0,BACK,(a)梯形图,(b)语句表,网络1 触点的并联电路举例,http:/ 串联电路块的并联连接指令,OLD(or load),或块指令:用于串联电路块的并联连接 两个以上触点串联形成的支路叫串联电路块,使用举例,在电路块的开始也要使用LD、LDN指令每完成一次块电路的并联时要写上OLD指令OLD指令无操作数,注意事项,http:/ I0.0 A M0.0 LD I0.1 AN M0.1 OLD LDN I0.2 A M
5、0.2 OLD A M0.3 = Q0.0,BACK,(a)梯形图,(b)语句表,网络1 OLD指令使用举例,http:/ 并联电路块的串联连接指令,使用举例,ALD(And Load),与块指令 。 用于并联电路块的串联连接两条以上支路并联形成的电路叫并联电路块,注意事项,在块电路开始时要使用LD和LDN指令在每完成一次块电路的串联连接后要写上ALD指令ALD指令无操作数,http:/ ALD指令使用举例,I0.0,I0.1,M0.0,M0.2,M0.1,M0.3,Q0.0,LD I0.0O I0.1 LD M0.0 A M0.1 LD M0.2 AN M0.3 OLD ALD = Q0.0
6、,(a)梯形图,(b)语句表,http:/ 置位、复位指令,表1 置位复位指令的功能表,使用说明,使用举例,http:/ 置位,网络2 复位,I0.0,Q0.0,LD I0.0 S Q0.0,2 LD I0.1 R Q0.1, 2,BACK,I0.0,I0.1,(a)梯形图,(b)语句表,(c)时序图,Q0.0,Q0.1,http:/ S/R指令可以互换次序使用,但由于PLC采用扫描工作方式,所以写在后面的指令具有优先权 如果对记数器和定时器复位,则记数器和定时器的当前值被清零 N的常数范围为1-255,N也可为:VB、IB、QB、MB、SMB、SB、LB、AC、常数、*VD、*AC、*LD。
7、一般情况下使用常数 S/R指令的操作数为:I、Q、M、SM、T、C、V、S、和L,BACK,注意事项:,http:/ RS触发指令,SR(set dominant bistable),置位优先触发指令。当置位信号和复位信号都为真时,输出为真,RS(reset dominant bistable),复位优先触发指令。当置位信号和复位信号都为真时,输出为假,R,S1,SR,OUT,bit,R1,S,RS,OUT,bit,http:/ 立即指令(Immediately),使用举例,立即指令是为了提高PLC对输入输出的响应速度而设置,不受PLC循环工作方式的影响,允许对输入和输出点进行快速直接存取。对
8、I 操作,相应的输入映像寄存器的值并未更新;当用立即指令访问输出点时,对Q操作,新值同时写到PLC的物理输出点和相应的输出映像寄存器。,http:/ 立即指令举例,LD I0.0 = Q0.0 =I Q0.1 SI Q0.2,1 LDI I0.0 = Q0.3,BACK,(a)梯形图,(b)语句表,扫描周期n,n+1,n+2,n+3,Q0.0映像寄存器,Q0.1映像寄存器,Q0.2映像寄存器,Q0.3映像寄存器,Q0.0物理触点,Q0.1物理触点,Q0.2物理触点,Q0.3物理触点,(c)时序图,输入采样,输出刷新,I0.0,注意:用立即输出指令访问输出点时,在输入采样时刻,对Q进行操作,新值
9、既写物理输出点,也写输出映像寄存器,t,t,http:/ 边沿脉冲指令,使用举例,http:/ 边沿脉冲指令举例,网络2,网络3,网络4,I0.0,M0.0,I0.1,M0.1,M0.1,M0.0,LD I0.0 EU = M0.0 LD M0.0 S Q0.0,1 LD I0.1 ED = M0.1 LD M0.1 R Q0.0,1,I0.0,BACK,(a)梯形图,(b)语句表,(c)时序图,http:/ 逻辑堆栈操作指令,LPS(logic push) 逻辑入栈指令,LRD(logic read) 逻辑读栈指令,LPP(logic pop) 逻辑出栈指令,LDS(load stack)
10、装入堆栈指令,使用举例1,使用举例2,使用举例3,s7-PLC 使用9层堆栈来处理所有的逻辑操作,逻辑堆栈指令主要完成对触点进行的复杂连接。,注意事项,分支电路开始指令。其作用是把栈顶值复制后压入堆栈,开始第二个以后的从逻辑块的编程,其作用是读取最近LPS压入堆栈的内容,而本身不进行PUSH和POP工作,分支电路结束指令。其作用把堆栈弹出一级,堆栈内容依次上移,复制堆栈中的n个值到栈顶,而栈底丢失。,STL: LDS n (n 为08的整数),http:/ 机数据。当所有触点呈简单的串联、并联关系 时,可用前面介绍的逻辑指令。当所有触 点呈比较复杂的连接关系时就要用到堆栈 操作。因此,逻辑堆栈
11、指令主要用来完成 对触点进行复杂的连接。,PLC的堆栈是一组存取数据的临时存储单元,是由堆栈位存储器组成的串联堆栈。逻辑堆栈的操作原则是“先进后出”、“后进先出”。进栈时,数据,http:/ 形成的电路块称为并 联电路块。并联电路 块与前面电路串联时 要使用ALD指令,由两以上触点串 形成的支路称为串联 电路块。两个或两个 以上的串联电路块并 联时要使用OLD指令,http:/ I0.0 A I0.1 LD I1.0 A I1.1 LD I2.0 A I2.1 OLD = Q6.0,两个或两个以上 的串联电路块并 联时要使用栈装载或(OLD)指令,NETWORK2,LD I3.1 O I3.3
12、 LD I3.2 O I3.4 ALD = Q6.1,并联电路块与前面电路串联时要使用栈装载与(ALD)指令,栈装载与、栈装载或指令举例,http:/ 丢失,S0被 覆盖,用于生成一条 新母线,其左 侧为原来的主 逻辑块,右侧 为新的从逻辑 块,LPS开始 右侧的第1个 从逻辑块编程 。也叫分支电 路开始指令,当新母线左侧 为主逻辑块时 LRD开始右侧 的第2个以后 的从逻辑块编 程。,http:/ 编程中使 用较少。,逻辑出栈(LPP),将栈顶的值弹出,堆栈中原来各级的数据依次向上一级推移,栈顶值从栈内丢失,原堆栈2级的值成为新的栈顶值。,代表不 确定值,装载堆栈(LDS 3),将栈内底n级
13、的值复制到栈顶,堆栈中原来各级的数据依次向下一层推移,栈底值被推出丢失。,这是第3级 被装载哦! (LDS3),S0 丢失,S8 丢失,用于将LPS指令生成一条新 的母线复位。因此也叫分支电路结束指令 。,http:/ 由于受堆栈空间的限制(9级),故LPS、LPP指令连续使用时应少于9次; LPS和LPP必须成对使用,它们之间可以使用LRD指令; LPS、LRD和LPP指令无操作数。,入栈(LPS)、读栈(LRD)、出栈(LPP)指令举例,( ),网络1,I0.0,Q1.0,I0.1,I0.2,NETWORK1,LD I0.0 LPS LD I0.1 O I0.2 ALD = Q1.0LRD
14、 LD I0.3 O I0.4 ALD = Q1.1 LPPA I0.5 = Q1.2,( ),I0.5,Q1.2,在梯形图分支结构中,LPS开始 右侧的第1个从逻辑块编程,并联电路块与前面电路串联时要使用ALD指令,在梯形图分支结构中,LRD开始 第2个以后的从逻辑块编程,LPP复位新母线,与PLS成对出 现,梯形图,指令表,http:/ LPS、LRD、LPP指令使用举例1,M1.2,Q0.3,M1.1,Q0.2,M1.0,M0.5,M0.4,Q0.1,M0.3,M0.2,M0.1,Q0.0,M0.0,I0.0,LD I0.0 LPS LD M0.0 O M0.1 ALD = Q0.0 L
15、RD LD M0.2 A M0.3 LDN M0.4,A M0.5 OLD ALD = Q0.1 LPP A M1.0 = Q0.2 LD M1.1 ON M1.2 ALD = Q0.3,(a)梯形图,(b)语句表,BACK,http:/ LPS、LRD、LPP指令使用举例2,Q0.0,Q0.1,Q0.2,Q0.3,M0.3,M0.6,M0.5,M0.4,M0.2,M0.1,M0.0,LD M0.0 LPS A M0.1 LPS AN M0.2 = Q0.0 LPP A M0.3 = Q0.1,(a)梯形图,(b)语句表,BACK,LPP A M0.4 LPS A M0.5 = Q0.2 LP
16、P AN M0.6 = Q0.3,http:/ LPS、LRD、LPP指令使用举例3,LD M0.0 LPS A M0.1 LPS A M0.2 LPS A M0.3 = Q0.0,LPP = Q0.1 LPP = Q0.2 LPP = Q0.3,(a)梯形图,(b)语句表,BACK,http:/ 定时器,1)种类定时器可分为2)分辨率与定时时间的计算单位时间的时间增量称为定时器的分辨率。定时器定时时间T的计算:T=PTST:实际定时时间 PT:定时时间 S:分辨率PT数据类型为INT型,操作数可为:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、VD、 AC、LD和常数 3
17、)定时器的编号定时器的编号用定时器的名称和它的常数编号(最大为255)。即TXXX,如T40定时器的编号包含两方面的信息:定时器位和定时器当前值。定时器位:当定时器的当前值达到设定值PT时,定时器的触点动作。定时器当前值:存储定时器当前所累计的时间,它用16位符号的整数来表示,最大计数值为32767使能输入:BOOL型,可以是I、Q、M、SM、T、C、V、S、L,http:/ 定时器指令,1) 定时器的种类定时器是对PLC内部的时钟脉冲进行计数。S7-200 PLC为用户提供了三种类型的定时器:通电延时定时器(TON)、 有记忆的通电延时定时器(TONR)和失电延时定时器(TOF)。) 定时器
18、的分辨率、编号和定时时间的计算,分辨率:单位时间的时间增量 定时器时间的计算:TPT*S,实际定 时时间,设定值,分辨率,例:TON指令使用T97的 定时器,设定值为100, 则时间时间为T=100*10ms=1000ms,http:/ 定时器的指令格式,http:/ T X X X ,PT,梯形图,指令表,工作过程和用途,1)首次扫描时,定时器位为OFF,当前值为0 2)当IN接通时,定时器位即被置为ON,当前值为0 3)当输入端由接通到断开时,定时器开始计时 4)当前值设定值时,定时器状态位为OFF,当前值等于预设值,并停止计时 5)可用R指令对定时器复位,定时器位为OFF,当前值为0 6
19、)定时器复位后,如输入端IN从ON转到OOF时,定时器可再次启动 7)用于关掉或故障事件后的时间延时,定时器中各参数的意义,T XXX,PT,IN,T,定时器标志,使能输入端,设定值,梯形图,http:/ 定时器指令的有效操作数,定时器指令的操作数有3个,即编号、预设值和导通条件(使能输入)。(1)定时器编号(TXXX)决定了定时器的分辨率,同时还包含定时器状态 位和定时器当前值。定时器状态位:当定时器当前值达到预设值PT时,该位被置为1,即ON。定时器当前值:存储定时器当前所累计的时间用16位符号整数来表示。最 大计数值为32767。通过定时器号既可以读去定时器的当前值,也可以用来读取定时器
20、的状态 位。(2)预设值PT:数据类型为INT型,即字(16),与分辨率的乘积就是定 时时间。(3)使能输入(导通条件):BOOL型,寻址范围见后表。,http:/ 定时器应用举例,T33,IN,PT,TON,网络1,300,( ),Q0.0,T33,I0.2,NETWORK1LD I0.2 TON T33,300 NETWORK2LD T33 = Q0.0,网络2,Q0.0,梯形图,指令表,时序图,通电(接通)延时定时器(TON),http:/ ),Q0.0,T33,I0.2,NETWORK1LD I0.2 TON T33,300 NETWORK2LD T33 = Q0.0,网络2,梯形图,
21、指令表,T33分辨 率为10ms,http:/ ),Q0.0,T3,I0.0,NETWORK1LD I0.0 TONR T3,100 NETWORK2R T3,1NETWORK3LD T3 = Q0.0,网络2,Q0.0,I0.0,T3当前值,梯形图,指令表,时序图,( ),I0.1,T3 R 1,网络3,t2,t1+t2=1s,I0.1,分辨率(时基):10ms 设定时间值=100*10ms=1000ms=1s,有记忆通电(接通)延时定时器(TONR),断电(断开)延时定时器(TOF)以及不同分辨率定时器的刷新方式 自己总结,http:/ ms定时器的使用,http:/ ms定时器的使用,h
22、ttp:/ ms定时器的使用,http:/ 计数器,1.几种基本概念 (1)种类S7200系列PLC的计数器有3种:增计数器CTU,增减计数器CTUD,减计数器CTD。 (2)编号计数器的编号用计数器名称和数字组成,如C6。计数器的编号包含两方面的信息:计数器的位和计数器当前值。计数器位:表示计数器是否发生动作的状态。计数器当前值:用来存储计数器当前所累计的脉冲数,用16位符号整数表示,最大值为32767。,http:/ 2)当CU端在每一个上升沿接通时,计数器计数1次,当前值增加1个单位 3)当前值达到设定值PV时,计数器置位为ON,当前值持续计数至32767 4)当复位输入端R接通时,计数
23、器复位OFF,当前值为0,1)有两个输入端,CU用于递增计数,CU用于递减计数 2)首次扫描时,计数器位为OFF,当前值为0 3)当CU在上升沿接通时,计数器当前值增加1个单位;当CD在上升沿接通时,计数器当前值减少1个单位 4)当前值达到设定值PV时,计数器被置位为ON 5)当复位输入端R接通时,计数器复位为OFF,当前值为0,1)首次扫描时,计数器位为OFF,当前值等于预设值 2)当CD端在每一个上升沿接通时,计数器减小1个单位,当前值递减至0时,停止计数,该计数器置位为ON 3)当复位端LD接通时,计数器复位为OFF,并把预设值PV装入计数器,即当前值为预设值而不是0,PLC计数器的设定
24、值和定时器的设定值不仅可以用程序设定,也可以通过PLC内部的模拟电位器或PLC外接的拨码开关方便、直观地随时修改。,http:/ (1)增计数器CTU (Count Up),CU:脉冲输入端,R:复位信号端,PV:预设定端,首次扫描,计数器位为OFF,当前值为0。在计数脉冲输入端CU的每个上升沿,计数器计数一次,当前值增加一个单位。当前值达到设定值时,计数器位ON,当前值可继续计数到32767 后停止计数。复位输入端有效,计数器自动复位,计数器位为OFF,当前值为0。,STL指令格式: CTU CXXX, PV 例 CTU C20, 3,http:/ 计数器应用举例,C4,CU,R,CTU,网
25、络1,4,( ),Q0.0,C4,I2.4,NETWORK1LD I2.4 LD I2.5 CTU C4,4 NETWORK2LD C4 = Q0.0,网络2,加计数器,PV,I2.5,梯形图,指令表,时序图,http:/ I0.0 /计数脉冲信号输入 LD I0.1 /复位脉冲信号输入 CTU C20,+3 /增计数,设定计数值 LD C20 /计数值为3时输出 Q0.0,(c)时序图,举例,http:/ (Count Up/Down),CU:脉冲递增计数输入端,CD:脉冲递减计数输入端,R:复位信号端,PV:预设定端,首次扫描时,计数器位为OFF,当前值为0。CU输入的每个上升沿计数器当前
26、值增加一个单位,CD输入的每个上升沿,计数器当前值减少一个单位,当前值达到设定值时,计数器位置位为ON。,32768,32767,0,CU,CD,STL指令格式: CTUD CXXX, PV 例 CTUD C30, 5,http:/ (Count Down),CD:脉冲递减输入端,LD:复位输入端,PV:预设定端,首次扫描,计数器位为OFF,当前值等于预设值PV。计数器检测到CD输入端的上升沿时,计数器当前值减少一个单位,当前值减为0时,计数器位为ON。复位输入端有效时,计数器位为OFF,当前值为PV。,STL指令格式: CTD CXXX, PV 例 CTD C40, 4,http:/ I0.
27、0 /减计数脉冲信号输入 LD I0.1 /复位脉冲信号输入 CTD C40,+4 /减计数,设定计数值 LD C40 /计数值为0时输出 Q0.0,注意:以上三种计数器如果将计数器位作为复位输入信号,则可实现循环计数。,http:/ 比较触点指令,) 比较指令 比较指令是将两个操作输入(IN1、IN2)按指定的比较关系进行比较,比较 关系成立时则比较触点闭合。在梯形图中,比较指令是以动合触点的形式编程的,在动合触点中间注明比较参数和比较运算符。当两个数的比较结果为真时,该动合触点闭合,即接通或截断能流。在语句表中,比较指令与基本逻辑指令LD、A、O进行组合后编程,当比较结果为真时,将栈顶值置
28、为1。,) 指令格式,IN2,比较触点接起始母线,IN1,IN2,LD IN,比较触点的与,IN1,X X,IN2,LD IN,比较触点的或,梯形图,指令表,功能,http:/ 数据要匹配 哦,(3) IN1与IN2 的寻址范围:,I、Q V、M SM、S T、C L、常数,注意:不同数据类型 的比较在LAD和STL 中的表现方式是不同 的使用是查表确定,字符串比较指令只有和两种,注意:对于LAD的=, 在STL为=; 对于LAD的整数比较,数据类型为I,而STL为W;,http:/ 应用举例,某轧钢厂的成品库可存放钢卷1000个,因为不断有钢卷入库、出库,需 要对库存的钢卷进行统计。当库存低
29、于下限100时,指示灯HL1亮;当库存大 于900时,指示灯HL2亮;当达到库存上限1000时报警器HA响,停止入库。,C0,CU,CD,网络1 库存统计,1000,M0.0,网络2 库存情况提示和报警,PV,M0.1,梯形图,CTUD,I1.2,R,( ),C0, I 100,Q1.0,( ),( ),C0= I 1000,C0 I 900,Q1.1,Q1.2,SM0.0,PLC在RUN方 式时SM0.0总为1,通过计数器 编号可访问 计数器的当 前值,/ HL1,库存低于100,/ HL2,库存高于900,/ HA,库存高于上限1000,加1,减1,复位,整数比较,http:/ M0.0
30、LD M0.1 CTUD C0,1000 NETWORK2LD SM0.0 LPS AW C0,100 = Q1.0 LRD AW C0,900 Q1.1 LPP AW C0,1000 Q1.2,指令表,增/减计数器 设定值1000,入栈,分支 线路开始指令,读栈,分支线 路第2个以后 的从逻辑块编程,出栈,分支 线路结束指令,钢卷数低于下限 100时,指示灯 HL1亮,钢卷数大于900 时,指示灯HL2 亮,钢卷数大于上限 1000时,报警器 HA响,整数比较,http:/ C30,+30= Q0.0 LD I0.0AR VB1,VB2 = Q0.2,http:/ NOT 及NOP指令,1)
31、.取反指令NOT将复杂逻辑结果取反,为用户使用反逻辑提供方便。该指令无操作数,其LAD和STL形式如下。STL形式:NOTLAD形式:| NOT |2).空操作指令NOP (No Operation)该指令用在跳转指令结束处,或在调试程序中使用。其对用户程序的执行无影响,其LAD和STL形式如下。STL形式:NOP N N的范围:0255 LAD形式:,http:/ 程序控制指令, 结束、停止、看门狗复位指令,梯形图,指令表,操作数,功能,( END ),( END ),( WDR ),( STOP ),END,MEND,STOP,WDR,无,无,无,无,有条件结束主程序,无条件结束主程序,暂
32、停程序执行,警戒时钟刷新,(1)有条件结束指令END:执行条件成立(左侧逻辑值为1)是结束主程 序,返回到主程序的第一条指令执行。在梯形图中该指令不能连接在左侧母线上、END只能用在主程序中,不能用在子程序和中断程序中。(2)无条件结束指令MEND:无条件结束主程序,返回到主程序的第一条指令执行。在梯形图中该指令直接连接在左侧母线上。(3)在允许输入有效时立即终止程序的执行,CPU的工作方式由运行(RUN)模式进入停止(STOP)模式。在中断程序中执行STOP指令,该中断 立即终止,并忽略全部等待执行的中断,继续执行主程序的剩余部分,并在主程序结束时完成从运行模式到停止模式的转换。,http:
33、/ STOP、END、WDR使用举例,SM5.0,(STOP),I0.3,网络2,I0.5,(END),网络3,M0.4,(WDR),LD SM5.0 / 检查I/O错误 O SM4.3 / 运行时检查编程 O I0.3 / 外部切换开关 STOP / 条件满足,由RUN切换到/ STOP方式 LD I0.5 / 外部停止控制 END LD M0.4 / 用触点重新触发 WDR / 看门狗定时器,图 结束、停止及看门狗指令举例,SM4.3,http:/ 跳转及标号指令(1)跳转及标号指令概念跳转指令使程序跳转到指定标号n处的程序分支执行。标号指令标记跳转 目的地的位置n。(2)跳转及标号指令,n,JMP n,LBL n,当输入端有效时,把程序的执行跳转到指定的标号处,指定跳转的目标标号,操作数0244,功 能,梯形图,指令表,(JMP),n,LBL,(3)指令举例 手动与自动电路的转换,LD I0.0 JMP 3LBL 3LDN I0.0 JMP 4LBL 4,/若I0.0为ON,跳转到LBL3处 /执行“自动程序”,