1、1第第7 7章章 可编程序控制器的编程语言可编程序控制器的编程语言7.4 7.4 可编程序控制器常用指令:可编程序控制器常用指令:PLC常用指令包括基本指令、定时计数指令、数据传送指令、数据比较指令、逻辑运算指令、子程序中断指令和特殊指令、网络指令等。一、基本指令:一、基本指令:LD、OUT、AND、OR、NOT和END(01)这6条指令几乎是任何程序都不可缺少的,只要不超过PLC的内存容量,这些指令的使用次数不受限制。其功能如下。END指令是作为特殊功能指令来对待的,其代码号为01。指令助记符功 能LD,每条逻辑线或逻辑块开始OUT表示输出一位。AND对两个输入进行逻辑“与”。OR对两个输入
2、进行逻辑“或”。NOT取“反”,常用于构成常闭输入,可以和LD、OUT、AND和OR一起使用。END(01)表示程序结束。AND LD表示两个程序块串联,OR LD表示两个程序块并联。2基本指令编程举例基本指令编程举例:(P227P227)3二、连锁二、连锁ILIL(0202)与连锁清除)与连锁清除ILCILC(0303)指令:)指令:如果梯形图中出现具有分支的多路输出程序,且分如果梯形图中出现具有分支的多路输出程序,且分支电路后的每个输出支路至少有一个串联触点时,可用支电路后的每个输出支路至少有一个串联触点时,可用分支开始指令分支开始指令ILIL编程,分支结束时使用编程,分支结束时使用ILC
3、ILC指令。指令。当当ILIL的输入条件为的输入条件为ONON时,时,ILIL和和ILCILC之间的程序正常之间的程序正常执行就象没有执行就象没有ILIL和和ILCILC一样;当一样;当ILIL的输入条件为的输入条件为OFFOFF时,时,ILIL和和ILCILC之间的程序不执行。之间的程序不执行。在分支处,形成一个新的逻辑母线,从这个新的逻辑在分支处,形成一个新的逻辑母线,从这个新的逻辑母线开始的指令都要用母线开始的指令都要用LDLD或或LD NOTLD NOT指令。指令。4例题1指令指令操作数操作数LD00002IL(02)LD NOT00003AND00004OUT05000LD00005
4、OUT05001ILC(03)0500005001ILC(03)IL(02)000020000300004000055例题2(P228)6 分支指令还可以多个联用,如图是两个IL指令联用的编程举列。当第一个IL条件是OFF时,输出00100,00101和00102都是OFF,并用计数器CNT010保持它的当前计数值。当第一个IL条件是ON,并用第二个IL条件变为OFF时,输出00100的状态与位00000和00001状态相匹配,而输出00101和00102变为OFF,并且计数器CNT010保持它的当前值。当两个IL条件同时是ON,程序的执行与没有它们是一样的。例题3(P228)7三、暂存继电器
5、三、暂存继电器TRTR:暂存继电器暂存继电器TRTR用来暂时存放当前指令执行的结果,常用来暂时存放当前指令执行的结果,常用于处理梯形图的分支情况。用于处理梯形图的分支情况。TR不是独立的编程指令,而是一个编程元件暂存继电器,必须和LD或OUT等基本指令一起使用。TR和IL/ILC指令比较:在同一梯形图中,即可以用TR编程,也可以用IL/ILC编程,但用TR处理分支程序比使用IL/ILC指令时 语句表要烦琐一些。浪费存储空间。用暂存继电器TR时,第二条支路起,每条支路用一次LD指令,再用AND指令连接分支触点。01000010010000000001000020TR0100200003指令数据L
6、D00000OUTTR0AND00001OUT01000LDTR0AND00002OUT01001LDTR0AND NOT00003OUT010028四、跳转四、跳转JMPJMP(0404)和跳转结束)和跳转结束JMEJME(0505):跳转跳转/跳转结束指令,用于控制程序的跳转。当跳转结束指令,用于控制程序的跳转。当JMPJMP的执行条件为的执行条件为OFFOFF时,时,跳过跳过JMPJMP和和JMEJME之间的程序,去执行之间的程序,去执行JMEJME之后的程序;当之后的程序;当JMPJMP的执行条的执行条件为件为ONON时,时,JMPJMP和和JMEJME之间的程序被执行。之间的程序被执
7、行。举例(P230)010000100101002JMP(04)00JME(05)0000000000020000300004地址指令数据00000LD0000000001JMP(04)0000002LD0000200003OUT0100000004LD0000300005OUT0100100006LD0000400007OUT0100200008JME(05)009 例题:地址指令数据00000LD0000000001JMP(04)0000002LD0000100003OUT0100000004AND0000200005OUT0110000006JME(05)0000007LD0000300
8、008OUT01004010000110001004JMP(04)00JME(05)000000000002000010000310 多于一个的JMP可以与同一个JME一起使用。在执行程序检查时,这会引起一个JMP-JME ERR出错信息产生,但是程序却正常执行。当第一个JMP00条件00000是OFF时,输出00100,00101和00102及计数器都保持它们的状态。当第一个JMP00条件00000是ON并且第二个JMP00条件00003是OFF时,输出00100的ON/OFF状态取决于00001和00002的状态,而输出00101和00102及计数器仍保持它们的状态。当两个JMP00在同一
9、时间其条件都是ON时,程序的执行与没有JMP一样。例题(P230)11五、锁存继电器五、锁存继电器KEEPKEEP(1111):S为置位(置1)输入端、R为复位(置0)输入端。当S端输入为ON时,继电器N被置为ON且保持;当R端输入为ON时,继电器N被置为OFF且保持;当S、R端同时为ON时,继电器N被置为OFF,因为复位端R的优先权较高。梯形图符号:梯形图符号:KEEPN置位输入:S复位输入:R在用KEEP指令编程时,要按照S端、R端、KEEP继电器号的顺序来编程。指令操作数LD00002LD00003KEEP(11)200000000200003KEEP200000000200003200
10、0012 KEEP KEEP指令的应用:报警器(指令的应用:报警器(P232P232)KEEPHR0000100000001000020000300004000HR报警条件报警解除报警铃灯地址指令操作数00000LD0000100001OR0000200002OR0000300003LD0000400004KEEP(11)HR00000005LDHR00000006OUT01000137.5 7.5 可编程序控制器功能指令:可编程序控制器功能指令:一、微分指令一、微分指令DIFUDIFU(1313)和)和DIFDDIFD(1414)前沿DIFU,当执行条件由OFF变为ON时,使指定的继电器接通
11、一个扫描周期。后沿DIFD,当执行条件由ON变为OFF时,使指定的继电器接通一个扫描周期。利用DIFU、DIFD指令可以产生脉冲信号,应用广泛。DIFU(13)22500DIFD(14)2250100000一个扫描周期一个扫描周期一个扫描周期一个扫描周期一个扫描周期000002250022501举例:举例:141 1、定时器指令定时器指令 TIMTIM:当输入条件为ON时,定时器开始计时,定时时间到,其输出为ON且保持;当输入条件变为OFF时,输出变为OFF,并停止定时,其当前值PV恢复为设定值SV,定时器无掉电保持功能。梯形图符号:梯形图符号:TIM N SVTIM是以0.1s为单位计时的,
12、定时时间=计时单位设定值 例题:TIM 000#00500100000000000TIM指令数据LD00000TIM 000#0050LDTIM 000OUT0100000000TIM 00001000s5二、定时器和计数器指令二、定时器和计数器指令15TIM 000#2000001TIM 000010012000020000END(01)0000220000LD00001OR20000AND NOT00002OUT20000LD20000TIM000#0020LDTIM 000OUT01001END16LD00001OR20000AND NOT00002AND NOTTIM 000OUT20
13、000LD20000TIM000#0030LD20000OUT01001ENDTIM 000#300000120000010012000020000END(01)0000220000TIM 000延时关断的启保停控制,按下启动按钮00001后立即启动设备01001,3s 后自动关断。17LD00000OR20000AND NOT00001OUT20000LD20000AND NOTTIM 001TIM000#0030LDTIM 000TIM001#0030OUT01001ENDTIM 000#003000000TIM 000TIM 000010012000020000END(01)000012
14、0000TIM 001#0030TIM 001TIM 001182 2、高速定时器指令、高速定时器指令TIMHTIMH(1515):TIMH以0.01s为单位进行计时,设定值范围为0.0099.99s,精度为0.01s。TIMH 000#015000202TIMH 001#00060020300000TIM 00000202TIM 001地址指令数据00000LD0000000001TIMH(15)000#015000002LDTIM 00000003OUT0020200004LD0020200005TIMH(15)001#000600006AND NOTTIM 00100007OUT0020
15、319练一练:地址指令数据00000LD0000000001TIM 001#900000002LDTIM 00100003TIM002#900000004LDTIM00200005OUT01001TIM 002#900001001001TIM002TIMTIM 001#90000000000000TIM 001900.0s900.0sTIM 002010011800.0s定时器延时时间超过999.9s的解决办法:简单的例子如图所示,两个900.0s(15min)定时器结合成为一个30min功能定时器。图中,01001在00000变成ON的30min后接通。20例:P23601001TIM 00
16、1#00202000020000TIM 001000002000020000TIM 001地址指令操作数00000LD2000000001AND NOTTIM 00100002OR0000000003OUT2000000004LD2000000005TIM001#002000006LD2000000007AND NOTTIM 00100008OUT010011.5s1.5s000000100101001在00000变为ON后保持2.0sON的状态,与00000保持ON时间长短无关。213 3、计数器指令计数器指令CNTCNT:计数器有单向递减计数器CNT和双向可逆计数器CNTR两种。其操作数都
17、由计数器编号和设定值SV两部分组成。CNT是一个预置递减计数器,梯形符号如图所示。CNT的计数范围为00009999。当计数输入信号CP发生一次OFFON变化时,计数器的当前计数值PV减1,当PV值减为0时,计数器输出变为ON状态,并一直保持到复位输入端Rt变为ON。SV为设定值。PV为当前值。梯形图符号:梯形图符号:CNT NSVCPRt例题:例题:CNT000#0020010050000400001000CNTCPR指令数据LD00004LD00001CNT000#0020LDCNT000OUT0100500004000010100520个复位224 4、可逆计数器指令、可逆计数器指令CN
18、TR CNTR:CNTR的梯形图符号如图所示。它有加、减两个计数方法,由递增输入II和递减输入DI控制。当II和DI中的一个发生一次OFFON变化时,CNTR产生一次加1或减1计数,当II和DI同时为ON时,不进行计数操作,PV值保持不变。其中PV为当前值,SV为设定值。CNTR的复位输入与CNT的操作相同。当PV值为0000时,若发生减1操作,则PV值将变为SV,同时计数器输出为ON。当PV值为SV时,若发生加1操作,则PV值将变为0,同时计数器输出为ON。SV的设定范围为00009999。梯形图符号:梯形图符号:CNTR NSVIIRtDIII-递增输入;DI-递减输入;Rt 复位;SV-
19、设定值。0,1,2,3,4,5(SV)23例题:例题:指令数据LD00004LD00005LD00002CNTR(12)006#0005LDCNT 006OUT01001ENDII(00004)DI(00005)CNT 00645540121000004CNT 006CNTR(12)006#0005IIRDI000050000201001END(01)当PV值为0000时,若发生减1操作,则PV值将变为SV(5),同时计数器输出为ON。当PV值为SV(5)时,若发生加1操作,则PV值将变为0,同时计数器输出为ON。0,1,2,3,4,5(SV)24例题:(例题:(P237P237)CNTR(1
20、2)006#5000CNTR(12)007#00050020700208000000000100002CNT 006CNT 007000030000400005IIIIDIDIRiRi地址指令数据00000LD0000000001LD0000100002LD0000200003CNTR(12)006#500000004LDCNT 00600005OUT0020700006LD0000300007LD0000400008LD0000500009CNTR(12)007#000500010LD NOTCNT 00700011OUT00208II(00000)DI(00001)CNT 00649995
21、000500049990121025 计数值超过9999的计数器编程:图中00000用于控制CNT001计数器操作。当00000为ON时,计数器001对00001从OFF变为ON次数减值计数。CNT001由自己的计数输出复位,即一旦计数器从当前值计到零就马上重新起动计数,计数器002对计数器001计数输出由OFF变为ON的次数进行计数。00002位作为整个扩展计数器的复位信号,当00002断(OFF)时,计数器001和002马上复位。计数器CNT002的计数输出也用作CNT001复位控制。CNT001的设定值是100,CNT002设定值是200,当00001中由OFFON变化次数达到20000
22、(100200)次时,CNT002计数输出ON,使00203接通。根据需要,可以将任意多个计数器级联使用以达到任何计数值。CNT 001#0100CNT 002#020000203000000000100002CNT 001CNT 002CNT 00100002CNT 002CPCPRR地址指令操作数00000LD0000000001AND0000100002LD NOT0000200003ORCNT 00100004ORCNT 00200005CNT001#010000006LDCNT 00100007LD NOT0000200008CNT 002#020000009LDCNT 002000
23、10OUT00203例题:(例题:(P238P238)26 用计数器扩展定时范围的另一种方法:计数器与定时器结合。在图中,CNT002计数器对TIM001定时器从设定值到零的动作次数进行计数。TIM001定时结束输出用作TIM001复位信号,这样,TIM001可不断地定时,并发定时结束输出信号。CNT002对TIM001定时结束标志接通次数进行计数。每次当TIM001定时输出变为ON,并由其将TIM001复位时,CNT002动作一次。CNT002计数结束输出也对TIM001复位,00001作为整个扩展定时器复位信号。所以00001将CNT002复位后,扩展定时器才能再次起动。因为图中TIM00
24、1定时器的设定值为5.0s,CNT002设定值为100,当定时满5s100次时,CNT002计数结束输出接通(ON),即,500s(8分20秒)定时结束。这一结果使00201接通。地址指令数据00000LD0000000001AND NOTTIM 00100002AND NOT CNT 00200003TIM001#005000004LDTIM 00100005LD0000100006CNT002#010000007LDCNT 00200008OUT00201TIM 001#0050CNT 002#01000020100000TIM 001TIM 00100001CNT 002CPRCNT 0
25、02例题:(例题:(P239P239)27在图中,CNT001对1s时钟脉冲位(25502)从OFF变ON次数进行计数。这里00000又用作计数器运行时的定时控制。因为图中CNT001的设定值是700,在定时满1s700次(或11分40秒),计数器CNT001的结束输出接通ON。这样也使得00202接通。例题:(例题:(P239P239)地址指令数据00000LD0000000001AND2550200002LD NOT 0000100003CNT001#070000004LDCNT 00100005OUT00202CNT 001#0700002020000000001CNT 001CPR25
26、502287.6 7.6 数据处理指令:数据处理指令:1 1、移位寄存器指令、移位寄存器指令SFTSFT(1010):SFT的梯形图符号如图所示。B和E是某一个继电器区的两个通道号,且BE。SFT的移位操作是在从B开始、到E结束的所有连续的通道上进行的。当移位脉冲P产生一次OFFON的变化时,SFT指令将由连续通道以高位在前、低位在后的顺序依次排列成的二进制位序列左移一位,E通道的最高位将移失,中间各通道的最高位移入前一通道的最低位,B通道的最高位移入到上一通道的最低位,其最低位移入的是输入端I的状态。当复位输入Rt为ON时,将使B至E的所有通道置0。B和E如指定同一字,则生成16位移位寄存器
27、。SFT(10)BE梯形图符号梯形图符号:数据输入:I I移位脉冲输入:P复位输入:R R高位 E E 通道 低位高位 B B 通道 低位移失I I29举例:举例:P241P241本例采用1s时钟脉冲位(25502),所以IR010和IR012间的三字移位寄存器每秒移入00005执行条件状态一次。SFT(10)010012IPR000052550200006地址指令操作数00000LD0000500001LD2550200002LD0000600003SFT(10)01001230举例:举例:SFT(10)220220010050000025502000012531522003I ICPR R
28、I I2550200000000012200022002220032200422001010051234567831移位寄存器应用实例:移位寄存器应用实例:P242P242传感器00001推杆00500旋转编码器00000传感器00002滑道 一条传送线,产品有合格品和次品两种,产品经传感器检测,次品由推杆推下传送线,合格品通过传送线。完成这一动作,首先由传感器(00001)检测并存入移位寄存器:合格品传感器输出状态(00001)为OFF;次品传感器输出状态(00001)为ON。传送线的速度和旋转编码器的转速同步,当次品到达推杆位置时移位寄存器HR0003变为ON,00500接通,驱动推杆将次
29、品推下传送线。传感器00001与推杆之间距离的变化,可通过调整移位寄存器的输出位(HR0003HR0005)来调整。传感器00002,当检测到次品被推下传送线后,将HR0003和推杆00500复位。当传送线移动时,带动旋转编码器转动,旋转编码器就发出ON和OFF脉冲。00001SFTHR00HR010050000500HR00030000000003HR000300002I ICPCPR R指令数据LD00001LD00000LD00003SFT(10)HR00HR01LDHR003OUT00500LD00002OUT NOT00500OUT NOTHR 00332 SFT(10)200200
30、END(01)0000000004010012000200001移失I I.01120015200122000020002200通道:00004作为移位脉冲信号,每ON一次,00000的数据移进200通道一次。000040000000001200021234复位33 上电之初,P_Firs_Cy.复位,200通道所有位为“0”,01001为OFF,SFT的“I”端为“1”;按下00004一次,20000为1,01001为ON,SFT的“I”端还是“1”;再按下0004一次,20000还是1,01001还是ON.SFT(10)200200END(01)20001P_Firs_Cy10.01200
31、0000004IPRI I10002000020001按00004一次1I I0000200.0020001上电之初1I I11200.00200.01按二次0I I012000020001按三次0I I002000020001按四次1I I102000020001按五次134举例:举例:信号灯依次点亮1s的梯形图:移失I I.0120015200042000020002200通道:2550200000200041234复位5SFT(10)200 200END(01)0000020000200012000220003200042000020001200022000325502200040100
32、001001010020100301004PR35 传送指令(MOV/MOV):求反传送指令(MVN/MVN):当执行条件为ON时,将源数据传送到目标通道中。当执行条件为ON时,将源数据按位求反传送到目标通道中。当执行条件为ON时,CPU每扫描一次程序,就执行一次MOV、MVN指令;如果希望执行条件每ON一次只进行一次传送,应使用指令的微分形式。HR00 1HR01 0HR02 1HR03 0 HR04 1HR05 0HR06 1HR07 0HR08 1HR09 0HR10 1HR11 0HR12 1HR13 0HR14 1HE15 01000 11001 01002 11003 01004
33、11005 01006 11007 01008 11009 01010 11011 01012 11013 01014 11015 00500 00501 10502 00503 10504 00505 10506 00507 10508 00509 10510 00511 10512 00513 10514 00515 1CH10HR0CH05MOV10HR0MVNHR00500001举例举例1 1:2 2、数据传送指令:数据传送指令:MOV(21)SDMVN(22)SD36【功能】:【功能】:当执行条件为ON时,将S中数据传送到D通道中。【梯形图符号梯形图符号】:MOV(21)SDREND
34、(01)200012000001001MOV(21)#1200SFT(10)20020000004P_OffPIP_First_Cy.I I01002000020001按下00004一次1I I10002000020001上电之初0I I102000020001按二次0I I012000020001按三次037 请编制满足如下要求的控制程序:01000、01001、01002所接三个信号灯A、B、C依次逐个发光1s,不断循环。(25502为1s 时钟脉冲)REND(01)200022000001000MOV(21)#0001200SFT(10)200200P_OffPIP_First_Cy.2
35、0001010012000201002P_1sABCI I10002000020001上电之初020002A灯亮I I01002000020001第1s020002B灯亮I I1002000020001第2sC灯亮200021I I0102000020001第3s0A灯亮20001138举例举例2 2:使用MOV指令修改定时器设定值时,必须使用4位BCD码(00009999)作为通道的内容,否则MOV指令不能执行。MOV(21)#0100HR00MOV(21)#0050HR00TIM000 HR00010050050000501005010050000500005010050000501005
36、0000501TIM000 把HR0通道的内容作为定时器TIM000的设定值,而HR00的内容在程序运行期间根据00500或00501的状态,用MOV指令为TIM000传送不同的设定值:当00500为ON时,01005工作,TIM000的设定值为10s,10s后,输出继电器01005停止;当00501为ON时,01005工作,TIM000的设定值为5s,5s后,输出继电器01005停止;如果00500和00501同时为ON,TIM000不动作。39CMP(20)C1C2梯形图符号:梯形图符号:CMP为比较指令,其功能是将一个通道的内容(或常数)C1与另一个通道的内容(或常数)C2进行比较。C1
37、和C2中至少要有一个是通道内容,不能都是常数。比较后,如果C1C2,则专用内部辅助继电器25505为ON;(见P171-SR(专用继电器)区域)。比较后,如果C1=C2,则专用内部辅助继电器25506为ON;比较后,如果C1 C2,则专用内部辅助继电器25507为ON;3 3、数据比较指令:、数据比较指令:40TIM 000#0010CPCNT 001#0006CPR CMP(20)CNT001#0003END(01)00001000022000020000TIM 00020000TIM 000CNT 001P_ONP_LT01001采用计数器、定时器及CMP指令的周期性矩形波输出程序。41采
38、用计数器和时钟脉冲及CMP指令的周期性矩形波输出程序:CNT 002#0060CPR CMP(20)CNT002#0030END(01)00004CNT 002P_ONP_LT01001P_First_cy42只用一个常开按钮,采用计数器与CMP指令的启保停控制程序:CNT 000#0002CPR CMP(20)CNT000#0002END(01)00001CNT 000P_ONP_LT01001通电,CMP中CNT0的#2=#2,P_LT为OFF,1001为OFF;第1次按0004,CNT由21,CMP中CNT0的1#2,P_LT为ON,001为ON;第2次按0004,CNT由10,CNT复
39、位2,CMP中CNT0的2=#2,P_LT为OFF,1001为OFF。43举例:举例:TIM000TIM000#0030#0030CMPCMP(2020)TIM000TIM000#0020#00200100001001010020100300000255052550625507TIM000 当0000为ON时,TIM000开始定时,同时将TIM000中数据C1与#00200数据C2比较,若C1C2,则01000工作;若C1=C2,则01001工作;若C1 C2,则01002工作。3s时间到,01003工作。44 补充:编程规则:补充:编程规则:一、基本编程规则:一、基本编程规则:梯形图从左侧母
40、线(起始母线)开始,线圈或梯形图从左侧母线(起始母线)开始,线圈或指令作为输出结束,输出右边只能画右母线(结束母指令作为输出结束,输出右边只能画右母线(结束母线),右母线常常略画。线),右母线常常略画。:线圈或指令不能直接与左侧母线连接(除极少线圈或指令不能直接与左侧母线连接(除极少数没有执行条件的指令如数没有执行条件的指令如ENDEND)。如果必需时,用特殊)。如果必需时,用特殊辅助继电器辅助继电器1813018130(常(常ONON继电器)的触点连接。继电器)的触点连接。END:程序结束时一定要安排程序结束时一定要安排ENDEND指令,否则程序不被执行。指令,否则程序不被执行。指令1813
41、045:用用OUTOUT指令指令 输出时,同一编号的继电器线圈在同一程序输出时,同一编号的继电器线圈在同一程序中使用两次以上,称为双线圈输出,双线圈输出容易引起误动作中使用两次以上,称为双线圈输出,双线圈输出容易引起误动作或逻辑混乱,因此一般要避免出现这种情况。或逻辑混乱,因此一般要避免出现这种情况。0100001000000000000501000000000000546二、基本编程方法:二、基本编程方法:1 1、多个输出可以并联:、多个输出可以并联:DIFU(13)20000DIFD(14)HR000000052、单个触点被并联,放在下边。单个触点被并联,放在下边。a不正确0X1X2XY0
42、b正确0X1X2XY0473、单个、单个触点被串联,放在右边。触点被串联,放在右边。a不正确0X1X2XY0b正确0X1X2XY0Y01X2X3X4X5XY01X2X3X4X5X练一练:484 4、单个输出被并联,放在上边。、单个输出被并联,放在上边。如果有不止一条输出指令按同一执行条件执行,那么如果有不止一条输出指令按同一执行条件执行,那么从指令行上最后一个条件之后对这些指令连续编写。从指令行上最后一个条件之后对这些指令连续编写。HR000100500000040000300001000020000HRHR0001005000000300001000020000HR0000449思考题:思考题:50谢谢!