第三章PLC的编程语言与指令系统第一节PLC的编程语言编程语言——程序表明所采用的方式现代PLC通常采用以下几种编程语言:一、梯形图(LadderDiagram)及其格式特点——简单、直观、易学易懂、应用最为广泛、最受电气技术人员欢迎逻辑电路构成——常开接点、常闭接点组合功能——逻辑运算、算术运算、数据传送、变换与外部输出表达形式——类似于继电器线路图(图3-1)一个接触器的启、停控制线路驱动一个逻辑线圈或功能指令块X0X1Y0Y0SB1SB2KM图3-1继电器线路图与梯形图KMSB1SB2图3-2PLC的I/O端口接线KMX0Y0X1PLCCOMCOMFR输出供电电源~FU~SB1SB2KMX0Y0X1PLCCOMCOMFR输出供电电源X0X0常开接通常闭断开~FU~X0X1Y0Y0SB1SB2KMKMX0X1Y0Y0SB1SB2KMKMX0X1Y0Y0SB1SB2KMKMSB1SB2KMX0Y0X1PLCCOMCOM~FUFR输出供电电源X1X1常开接通常闭断开~X0X1Y0Y0SB1SB2KMKMX0X1Y0Y0SB1SB2KMKMX0X1Y0Y0SB1SB2KMKM继电器线路图与梯形图有两个重要区别:1)继电器线路图为并行工作方式梯形图为串行工作方式2)继电器线路图中常开、常闭接点的数量有限梯形图中各类软器件用于内部编程的常开、常闭接点使用次数不受限制另外:——在梯形图左右两侧的直线称为左右母线相当于继电器线路图中的左右电源线——与左母线相连的控制线路通常是一个由常开、常闭接点组成的逻辑电路——与右母线相连接的是输出线圈、其他各类软器件的逻辑线圈或功能指令块——在梯形图中右母线有时也可以省略。二、指令语句表及其格式(语句表)——是梯形图的一种派生语言——类似于汇编语言但更简单表达——助记符形式的各类指令语句来描述梯形图的逻辑运算、算术运算、数据传送与处理或程序执行中的某些特定功能基本格式——操作码+操作数——与梯形图之间有着严格的一一对应关系——特点是便于用户程序的输入、读出与修改图3-1中的梯形图可以用下述几条语句来描述:序号操作码操作数程序步数指令功能0LDX01从母线开始取用X0的常开触点1ORY01并联Y0常开触点(“或”运算)2ANIX11串联X1的常开触点(“与”运算)3OUTY01Y0线圈输出图3-3——带有功能指令块的FX2系列PLC的梯形图表3-1——对应的指令语言表。步序操作码(助记符)操作数(操作件号)指令功能12345691015...LDANIOROUTANDOUTKLDMOVKD....X0X1Y0Y0M100T0123X31210010....从母线开始取X0常开触点串联X1常闭触点并联Y0常开触点驱动Y0线圈串联M100常开触点连续驱动T0线圈(3步)设定定时器延时值为12.3s从母线开始取X3常开触点16位数据传送(功能号12,为5步指令)十进制常数100为源数据地址编号为10的16位数据寄存器为目标数MOVX0X1Y0Y0图3-3PLC梯形图M100T0Y0K100D100915K123···三、顺序功能图及其格式(SFC)——近年国际电工协会(IEC)大力推广的新编程标准——顺序功能图又称为功能表图或状态转移图原理——它是将一个完整的控制过程分解为若干个阶段(状态)——各阶段有不同的动作或其他各种控制内容——阶段之间有一定的转换条件——一旦条件满足就实现状态的自动转移——上一阶段结束——下一阶段动作开始直至完成整个过程的控制要求特点——特别适用于复杂的顺序控制过程——状态器是实现SFC编程功能的专用编程软器件图3-4——是一个PLC控制机械手动作状态转移图——在自动方式下只要满足一定条件就置初态S2为1——从下降开始直到左移回到原位——自动完成整个控制过程注意:顺序功能图与梯形图和指令语句之间有一一对应关系——能够相互转换S21S20S2M8002自动方式初始状态状态转移开始原始位置条件夹具夹紧Y0下降X1下限位T0K10图3-4机械手自动方式下状态转移图M8041M8044SETY1S22T2上升T0S23T3右移X2上限位12S25夹具放松T1K10图3-4机械手自动方式下状态转移图RSTY1S26Y2上升X1S27Y4右移X4左限位S24Y0下限X3右限位12T1X2四、级式编程语言五、逻辑图编程语言六、高级编程语言第二节PLC的基本指令及其编程应用一、PLC的基本指令系统(参考表3-2、图3-7、图3-8)1、基本指令——LD(取)、LDI(取反)OUT(输出)LD——取用指定元件的常“开”触点;LDI——取用指定元件的常“闭”触点。(起始取指令)OUT——是线圈输出指令——是程序执行的结果——总是出现在一个逻辑行的末表3-2接点取用与线圈输出指令指令助记符指令功能操作数程序步数LD(Load)从公共母线开始取用常开接点(取)X、Y、M、S、T、C1LDI(LoadInverse)从公共母线开始取用常闭接点(取反)X、Y、M、S、T、C1OUT线圈驱动(输出)线圈并联可连续使用Y、M、S、T、C(T、C后紧跟常数)Y、M1S特殊M2T3C3-5X1地址指令数据00000000010000200003000040000700008LDOUTLDIOUTOUTLDOUTX1Y1X2M101T2K20T2Y2图3-7LD、LDI、OUT指令的应用X2T2027Y1M101T2K20Y2写母线相连驱动指令驱动(定时器)指令设定常数,延时设定2s与母线相连驱动指令X1图3-8输出线圈重复使用的程序执行Y3X2Y3Y4Y3输出处理Y3=OFFY4=ON输入处理X1=ONX2=OFF1st2nd2、逻辑运算指令(表3-3、图3-9、图3-10)——AND(与)——ANI(与非)——OR(“或”)——ORI(“或非”)——ANB(块“与”)——ORB(块“或”)AND——串联一个常“开”触点;;ANI——串联一个常“闭”触点。(“与”“与非”是单个触点的串联指令)表3-3逻辑运算指令指令助记符指令功能操作数范围占用程序步数AND串联一个常开接点(与)X、Y、M、S、T、C1ANI串联一个常闭接点(与非)X、Y、M、S、T、C1OR并联一个常开接点(或)X、Y、M、S、T、C1ORI并联一个常闭接点(或非)X、Y、M、S、T、C1ANB(AndBlock)两块电路串联(块与)无1ORB(OrBlock)两块电路并联(块或)无1X1地址指令数据0000000001000020000300004000050000600007LDANDOUTLDANIOUTANDOUTX1X2Y5X3X4Y6X5Y7图3-9AND、ANI指令的应用X4Y5Y6Y7串联常开接点串联常闭接点X2X3X503OR——并联一个常“开”触点;ORI——并联一个常“闭”触点。(“或”“或非”是单个触点的串联指令)ANB、ORB——是块“与”“或”指令——用于程序块的串联或并联连接——该指令无操作数。X1地址指令数据000000000100002000030000400005000060000700008LDORORIOUTLDORANIORIOUTX1X2M105Y1X3M100X4M110M100图3-10OR、ORI指令的应用M105X304Y1M100并联接点并联接点X2M110M100X4X0不推荐程序000000000100002000030000400005000060000700008LDANILDANDLDIANDORBORBOUTX0X1X2X3X4X5←←Y5图3-11ORB指令的应用X4X1Y5X2X3X5推荐程序000000000100002000030000400005000060000700008LDANILDANDORBLDIANDORBOUTX0X1X2X3←X4X5←Y5X0地址指令数据00000000010000200003000040000500006LDORLDIORANBOROUTX0X1X2X3X4Y0图3-12ANB指令的应用X3Y0X2X1X43、内部信息与器件状态处理指令(表3-4、图3-13~图3-18)MPS、MRD、MPP、PLS、PLF、SET、RSTMPS、MRD、MPP——多重输出指令——用于多重输出电路MPS——指令将接点状态储存起来(进栈)MRD或MPP——指令读出——对于同一个接点状态MRD指令可以多次使用读出后栈内容不变——各层内容也不移动MPP——指令只能使用一次——读出后栈内容消失(全零)MPS与MPP——必须成对使用且连续使用应少于11次注意表3-4信息与器件状态处理指令指令助记符指令功能操作数程序步数MPS(Push)进栈无1MRD(Read)读栈无1MPP(Pop)出栈无1PLS(Palse)信号上升沿微分输出(一个扫描周期)Y、M(特殊M除外)2PLF信号下降沿微分输出(一个扫描周期)Y、M(特殊M除外)2SET被操作数元件置位并保持Y、M、SY、M1S、特殊M2RST(Reset)被操作数元件复位并保持或清零Y、M、SD、V、Z、T、CY、M1S、T、C、特殊M2D、V、Z、特殊D3X000X001X002X006X007X010指令数据LDANDMPS(状态入栈)ANDOUTMPP(状态出栈)OUTLDMPSANDOUTMPPANDOUTLDMPSANDOUTMRDANDOUTMRDANDOUTMPPANDOUTX000X001X002Y000Y001X003X004Y002X005Y003X006X007Y004X010Y003X011Y006X012Y007图3-13栈存储器与多重输出指令的应用X003X004X005MPSMPPX011X012MPSMRDMRDMPP...MRDMPSMPP0714123nY0Y1Y2Y3Y4Y5Y6Y7MPSMPPX000X001Y0X002X005X007X010指令数据LDMPS(状态入栈)LDORANBOUTMRD(状态读栈)LDANDLDANDORBANBOUTMPPANDOUTLDORANBOUTX000X001X002Y000X003X004X005X006Y001X007Y002X010X011Y003图3-14一层栈电路Y1X003X004Y3X006Y2X011MPSMRDMPPX000X001Y0X002X004X006指令数据LDMPS(状态入栈)ANDMPSANDOUTMPPANDOUTMPPANDMPSANDOUTMPPANDOUTX000X001X002Y000X003Y001X004X005Y002X006Y003图3-15二层栈电路Y1X003Y3X005Y2MPSMPPMPSMPPMPPMPSX001X002Y0X003指令数据LDMPS(状态入栈)ANDMPSANDMPSANDMPSANDOUTMPPOUTMPPOUTMPPOUTMPPOUTX000X001X002X003X004Y000Y001Y002Y003Y004图3-16四层栈电路Y1X004MPSMPSMPPMPPMPSMPSY2Y3MPPX000Y4MPPPLS与PLF——脉冲输出指令——被操作元件的脉冲输出宽度为一个程序扫描周期PLS(上升沿微分)——在信号的上升沿输出PLF(下降沿微分)——在信号的下降沿输出PLS、PLF——不能应用于输入继电器X、状态器S和特殊型辅助继电器M注意符号格式功能操作元件程序占用步数PLS操作件号信号上升沿微分输出Y、M(特殊M除外)2PLF操作件号信号下降沿微分输出Y、M(特殊M除外)2脉冲指令的用法:1)一组与LD、AND、OR指令相对应的脉冲式操作指令。触点只在操作元件有上升/下降沿时导通一个扫描一个周期2)PLS、PLF指令的软元件指定为辅助继电器(M)指令数据LDPLSLDSETLDPLFLDRSTX000M0M0Y000X001M1M1Y001X000M0M0PLSX001M1Y000RSTY000SETM1PLFX000X001M0M1