第4章PLC的基本逻辑指令及编程4.1基本逻辑指令4.1.1LD、LDI、OUT指令4.1.2AND、ANI指令4.1.3OR、ORI指令4.1.4ORB指令4.1.5ANB指令4.1.6MPS/MRD/MPP指令4.1.7MC/MCR指令4.1.8SET/RST指令4.1.9PLS/PLF指令4.1.10NOP指令4.1.11END指令4.1.1LD、LDI、OUT指令LD(读取):用于常开接点接到母线上的逻辑运算起始。LDI(读取反):用于常闭接点接到母线上的逻辑运算起始。指令格式:LD元件号;LDI元件号其操作元件包括X、Y、M、S、T、C。程序步为1另外,与后续的ANB指令组合,在分支点处也可使用。OUT(输出):输出驱动各种驱动线圈指令格式:OUT元件号其操作元件包括Y、M、S、T、C4.1.1LD、LDI、OUT指令Y、M:程序步为1特M:程序步为2T:程序步为3C:16bit,程序步为332bit,程序步为5对输入继电器不能使用,并行输出可多次使用OUTLD、LDI、OUT指令的使用说明X0Y0LDOUTX1M0LDIT0K10Y1T0母线步序指令数据1234OUTLDIOUTOUTK10LDOUT78Y0X1M0T0T0Y1驱动定时器设定常数SP0LDX03步4.1.2AND、ANI指令AND,与指令,用于单个常开接点的串联ANI,与非指令,用于单个常闭接点的串联AND与ANI这两条指令可以多次重复使用指令格式:AND元件号;ANI元件号其操作元件包括X、Y、M、S、T、C程序步为1AND、ANI指令的使用说明X1Y0ANDX2M0ANIY1(a)(b)步序指令数据01234LDANDOUTLDANIOUTANDOUT67X0X1Y0X2M0T0Y15Y0串联常开触点纵接输出串联常闭触点串联常开触点X0Y0T0AND母线4.1.3OR、ORI指令OR,或指令,用于单个常开接点的并联ORI,或非指令,用于单个常闭接点的并联(1)OR、ORI指令用于单个触点的并联连接指令(2)两个以上接点串联连接电路块并联连接时,要用后述的ORB指令(3)OR、ORI是从该指令的当前步开始,对前面的LD、LDI指令并联连接的,并联的次数无限制说明:指令格式:OR元件号;ORI元件号其操作元件包括X、Y、M、S、T、C程序步为1OR、ORI指令的使用说明X3Y2X4Y3X16步序指令数据01234LDORORIOUTLDIANDANIOR78X3X4X1Y2Y2X16X7M10并联常开触点56OUT9Y3M0OR并联常开触点并联常闭触点X7Y2X1M0M10ORORIOR母线OR4.1.4ORB指令两个或两个以上的接点串联连接的电路叫串联电路块。对串联电路块并联连接时,有:(1)分支开始用LD、LDI指令,分支终点用ORB指令。(2)ORB指令为无目标元件,它不表示触点。(3)可以看成电路块之间的一段连接线。指令格式:ORB无操作元件程序步为1ORB指令的使用X3Y4X6步序指令数据01234LDANDLDANDORBOUTANDOUT78X3X5X6X7Y4X11Y5串联电路块并联连接56M2LDX5X7Y5M2X11串联电路块ORB母线ORB指令相当一段连线一种是在要并联的每个串联电路块后加ORB指令,分散使用ORB指令时,并联电路的个数没有限制。另一种是集中使用ORB指令(如下图所示),集中使用ORB指令时,这种电路块并联的个数不能超过8个(即重复使用LD、LDI指令的次数限制在8次以下)。ORB指令的使用方法X0X2推荐01234LDANILDANDORBORBOUT78X0X156ANDX1X3X4X5LDIX2X3X4X5Y5不推荐01234LDANILDANDORBOUT78X0X156ANDLDIX2X3X4X5Y5ORBY5步序指令数据步序指令数据分散使用ORB集中使用ORB串联电路块1串联电路块2先集中做块再集中连接ORBORB做一块连一块两个或两个以上接点并联的电路称为并联电路块,分支电路并联电路块与前面电路串联连接时,应使用ANB指令。指令格式:ANB无操作元件程序步为14.1.5ANB指令分支的起点用LD、LDI指令,并联电路块结束后,使用ANB指令与前面电路串联。ANB指令简称与块指令X0X101234LDORLDIORANBX0X156OUTX2X3X4ORX2X3X4Y0Y0步序指令数据ANB指令的使用说明并联块串接是单个元件并联用OR指令4.1.6MPS/MRD/MPP指令MPS(Push)为进栈指令,就是将运算中间结果存入栈存储器。使用一次MPS指令,该时刻的运算结果就压入栈存储器第一级,再使用一次MPS指令时,当时的运算结果压入栈的第一级,先压入的数据依次向栈的下一级推移。MPP(POP)为出栈指令,使用出栈MPP指令就是将存入栈存储器的各数据依次上移,最上级数据读出后就从栈内消失。MRD(READ)读栈指令,读出存入栈存储器的最上级的最新数据,栈内的数据不发生上、下移。4.1.6MPS/MRD/MPP指令MPS、MRD、MPP这组指令都是没有操作元件号,可将触点先存储,因此用于多重输出电路。MRDMPSMPP123…n指令功能图解MPS/MRD/MPP指令的使用X001234LDANDMPSANDOUT56OUTMPPY078910LDMPSANDOUT111213MPPANDOUTX0X1X2Y0Y1X3X4Y2X5Y31415161718LDMPSANDOUTMRD1920OUTAND21222324MRDANDOUTMPP2526ANDOUTX6X7Y4X10Y5X11X12Y6Y7Y1X1X2X3X4Y2X5Y3MPPX6X7MPSY4X10Y5MRDX11Y6X12Y7MRD步序指令数据MPSMPPMPS母线MPP小结LD、LDI用于接点接到主母线(或分支)的逻辑运算起始OUT输出驱动各种驱动线圈(不能驱动X)AND、ANI用于单个接点的串联OR、ORI用于单个接点的并联ORB对串联电路块并联连接(无操作元件)ANB指令用于并联电路块与前面电路串联MPS/MRD/MPP指令用于保存、恢复、读出接点的状态4.1.6MPS/MRD/MPP指令例:一层栈X0(a)01234LDMPSLDORANB56MRDOUTY078910LDANDLDAND11ORBX0X1X2Y0X3X41213141516ANBOUTMPPANDOUT1718ORLD1920ANBOUTY1X7X10X11(b)Y1X1X2MPSY3X5X6Y2Y3X3X4Y2X5X6X7X10X11MRDMPP步序指令数据4.1.6MPS/MRD/MPP指令例:二层栈X001234LDMPSANDMPSAND56MPPOUTY078ANDOUTX0X1X2Y0X3Y1910111213MPPANDMPSANDOUT1415ANDMPP16OUTX4X5X6Y3X1X2MPSY2X3Y1Y2Y3X5X6X4MPPMPSMPPMPSMPP步序指令数据第一层栈第二层栈MPS、MRD、MPP指令在使用中应注意:4.1.6MPS/MRD/MPP指令(1)MPS、MRD、MPP指令用于多重输出电路(2)MPS与MPP必须配对使用(3)MPS与MPP连续使用必须少于11次MC为主控指令,用于公共串联接点的连接。4.1.7MC/MCR指令MCR叫主控复位指令,即MC的复位指令。遇到多个线圈同时受一个或一组接点控制的情况。如果在每个线圈的控制电路中都串入同样的接点,则将多占用存储单元,应用主控指令可以解决这一问题。使用主控指令的接点称为主控接点,是与母线相连的常开接点,是控制一组电路的总开关。MC、MCR指令的使用X0(a)01456LDMCSPLDOUT78OUTLD1011LDOUTX0X1X2N0(b)X1Y2M100MCRN0M100Y0Y1X3MCR为2步指令MC为3步指令M100N0MCN0Y0Y1X2N0MCRY2X3步序指令数据MC指令是3程序步,MCR指令是2程序步,两条指令的操作目标元件是Y、M,不允许使用特殊辅助继电器M。当X0接通时,执行MC与MCR之间的指令;当输入条件断开时,不执行MC与MCR之间的指令。非积算定时器和用OUT指令驱动的元件复位,积算定时器、计数器、用SET/RST指令驱动的元件保持当前的状态。MC、MCR指令的使用使用MC指令后,母线移到主控接点的后面,与主控接点相连的接点必须用LD或LDI指令。MCR使母线回到原来的位置。在MC指令区内使用MC指令称为嵌套,嵌套级N的编号(0-7)顺次增大,返回时用MCR指令,从大的嵌套级开始解除MC、MCR指令的使用4.1.7LDP(LDF)/ANDP(ANDF)/ORP(ORF)指令•*目标元素:X,Y,M,S,T,C•*LDP、ANDP、ORP是进行上升沿检测的触点指令,仅在指•定位软元件上升沿时(由OFF→ON变化时)接通一个扫描周期。•*LDF、ANDF、ORF是进行下降沿检测的触点指令,仅在指定位软元件下降沿时(由ON→OFF变化时)接通一个扫描周期。•*在梯形图中的位置与LD、AND、OR相同,编程规则也相同。LDP、ANDP、ORP指令的用法LDF、ANDF、ORF指令4.1.8置位与复位指令(SET、RST)•SET—置位指令.目标元素:Y,M,S•RST—复位指令.目标元素:Y,M,S,T,C,D,Z,V图3.28SET和RST指令的用法(a)梯形图及指令表;(b)时序图*在一个梯形图中,SET、RST编程次序可以任意,但当两条指令的执行条件同时有效时,后编程的指令优先执行(X11在X10后扫描)。(b)(a)Y0SETX0Y0RSTX1M0SETX2M0RSTX3S0SETX4S0RSTX5D0RSTX6(c)SET、RST指令的使用012345678911121415LDSETLDRSTLDSETLDRSTLDSETLDRSTLDRSTX0Y0X1Y0X2M0X3M0X4S0X5S0X6D0步序指令数据X0X1Y0•如把X11和X10支路位置换一下:4.1.9PLS/PLF指令PLS指令在输入信号上升沿产生脉冲输出,PLF在输入信号下降沿产生脉冲输出,它们的目标元件是Y和M,但特殊辅助继电器不能作目标元件。使用PLS指令,元件Y、M仅在驱动输入接通后的一个扫描周期内动作(置1),即PLS指令使M0产生一个扫描周期脉冲,而使用PLF指令,元件Y、M仅在驱动输入断开后的一个扫描周期内动作;PLF指令使元件M1产生一个扫描周期脉冲。013689LDPLSLDSETPLFLDRSTX0M0M0M1(b)(a)M0PLSX0M0X145LDY0X1M1Y02步指令2步指令M1Y0SETM1PLFY0RST(c)X0X1M0M1Y0扫描周期扫描周期步序指令数据PLS、PLF指令的使用(c)X0X1M0M1Y0扫描周期扫描周期PLS、PLF指令的使用4.1.10取反指令(INV)•无目标元素(不带软元件的独立指令)•说明:•①在能输入AND、ANI、ANDP、ANDF指令的相同位置处编写INV指令;•②不能像指令表中LD、LDI、LDP、LDF一样与母线相连;LD、LDI、OR、ORI指令步的位置不能使用INV;•③INV指令是将INV电路之前的运算结果取反;•④在含有ORB、ANB指令的电路中,INV是将执行INV之前的运算结果取反。图3.37INV(a)梯形图及指令表;(b)时序图NOP指令是一条无动作、无目标的程序步指令。可编程序控制器的编程器一般都有指令的插入和删除功能,在程序中一般很少使用NOP指令。执行完清除用户存储器的操作后,用户存储器的内容全部变为空操作指令。4.1.11NOP指令END是一条无目标元件的程序步指令。PLC反复进行输入处理、程序运算、输出处理,END以后的程序不再执行,直接进行输出处理。在程序调试过程中,按段插入END指令,可以顺序扩大对各程序段动作的检查。采用END指令将程序划分为若干段,在确认处于前面