第三章PLC程序设计基础第一节、PLC的编程语言第二节、PLC的编程元件第四节、编程注意事项第三节、FX系列基本逻辑指令第三章PLC程序设计基础第一节:PLC的编程语言PLC作为一种工业计算机是通过程序运行来实现控制的。现代的可编程序控制器一般备有多种编程语言,供用户选用。主要有:1.梯形图语言、2.语句表语言、3.逻辑符号图、4.顺序功能图(SFC)5.高级语言等。第三章PLC程序设计基础第一节:PLC的编程语言梯形图语言是一种直观的图形语言,它是在继电器接触控制线路的基础上演变而来的,与原有的继电器逻辑控制技术和电气操作原理基本一致,但简化了符号,而且还加进了许多功能强而又使用灵活的指令,将微机的特点结合进去,使编程更容易,而实现的功能却大大超过传统的控制图,易为电气技术人员接受和掌握。梯形图语言已成为PLC用户的第一编程语言。由于它与语句表语言有一一对应的关系,因此可以在需要时将梯形图转换成语句表键入并检查程序(目前多数编程器不能直接接受梯形图语言)。一、梯形图第三章PLC程序设计基础第一节:PLC的编程语言一、梯形图梯形图语言沿用了继电器接触控制中的触点、线圈、串联、并联等术语,图形的形式与继电器电气原理图相似,只是元件符号有所不同。图给出了几个元件的对应图符。常开触点常闭触点心线圈继电原理图符梯形图图符几个元件的对应图符第三章PLC程序设计基础第一节:PLC的编程语言一、梯形图例如:用梯型图表示启-保-停电路Y0启动X0停止X1负载Y0保持第三章PLC程序设计基础第一节:PLC的编程语言二、语句表语言语句表语言又称指令语言或助记符语言,它与汇编语言类似,指令以助记符的方式给出,易读易写。语句表格式为:序号指令码操作数“序号”(又称步号,地址号)是该语句在程序中的位置;“指令码”是对应功能的指令助记符;“操作数”是存放操作目标的存储器的位地址,即目标对应的继电器地址码。第三章PLC程序设计基础第一节:PLC的编程语言二、语句表语言PLC中最基本的运算是逻辑运算,故一般都有逻辑运算指令,如与、或、非等,这些指令再加上“输入”、“输出”、“结束”等指令就构成了PLC的基本指令。各厂家基本指令所用助记符也不相同,常见的表示方法如下:LD(Load):常开触点与母线连接的指令。LDI(LoadInverse):常闭触点与与线连接的指令。OUT(Out):驱动线圈的输出指令AND(And):常开触点串联连接指令。ANI(AndInverse):常闭触点串联连接指令。OR(Or):常开触点的并联连接指令。ORI(OrInverse):常闭触点的并联连接指令。END(End):结束指令,表示程序结束。第三章PLC程序设计基础第一节:PLC的编程语言二、语句表语言下面说明如何将梯形图转换为助记符例设X0、X1、X2均为常开开关(指外部实际开关),则该梯图(PLC图)可且助记符表示如下:助记符表:LDX0ANIX1ORX2OUTY0ENDX0X1ENDX2Y0第三章PLC程序设计基础第一节:PLC的编程语言三、逻辑符号图这是一种类似于数字逻辑电路的编程语言,有数字电路基础的人很容易掌握。该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的大小圆圈表示“非”运算,信号是自左向右流动的。就像电路图那样,它们被“导线”连接在一起,在与控制元件之间的信息、数据流动有关的高级应用场合,逻辑符号图是很有用的。第三章PLC程序设计基础第一节:PLC的编程语言四、高级语言编程PLC在实际应用中,不仅对硬件而且对软件也提出了标准化要求。现在的大、中型PLC多数地采用Windows作为编程和操作平台,使用符合开放系统互联标准的协议(如MAP)实现通迅联网,采用梯形图与高级语言(如C、BASIC、PASCAL等)相结合的标准化编程语言进行编程,使用户可以象使用普通计算机一样操作PLC。第三章PLC程序设计基础第一节:PLC的编程语言五、梯形图的主要特点1、可编程序控制器梯形图中的某些编程元件沿用了继电器这一名称,如输入继电器、输出继电器、内部辅助继电器等,但是它们不是真实的物理继电器(即硬件继电器),而是在软件中使用的编程元件。2、根据梯形图中各触点的状态和逻辑关系,求出与图中线圈对应的编程元件的ON/OFF状态,称为梯形图的逻辑解算。逻辑运算是按梯形图中从上到下、从左到右的顺序进行的。第三章PLC程序设计基础第一节:PLC的编程语言五、梯形图的主要特点3、梯形图中各编程元件的常开触点和常闭触点均可以无限多次地使用。4.输入继电器的状态唯一取决于对应的外部输入电路的通断,因此在梯形图中不能出现输入继电器的线圈。第三章PLC程序设计基础第二节:PLC的编程元件1.输入继电器X2.输出继电器(Y)3.辅助继电器M4.定时器T5.计数器CY0第三章PLC程序设计基础第三节、FX系列基本逻辑指令FX系列可编程序控制器共有27条基本逻辑指令,此外还有一百多条功能指令。仅用基本逻辑指令便可以编制出开关量控制系统的用户程序。1LDX02OUTY03LDIX14OUTT05K196OUTM1007LDT08OUTY1T0M100Y1K19X0X1T0(一)LD、LD1与OUT指令第三章PLC程序设计基础第三节、FX系列基本逻辑指令(一)LD、LD1与OUT指令LD(Load):常开触点与母线连接的指令。LDI(LoadInverse):常闭触点与与线连接的指令。OUT(Out):驱动线圈的输出指令。LD与LD1指令可以用于X,Y,M,T,C和S,它们还可以与ANB,ORB指令配合,用于分支电路的起点。OUT指令可以用于Y,M,T,C和S,但是不能用于输入继电器。OUT指令可以连续使用若干次,相当于线圈的并联定时器和计数器的OUT指令之后应设置常数K,常数占一个步序,也可以指定数据寄存器的元件号,用它里面的数作为定时器和计数器的设定值。第三章PLC程序设计基础第三节、FX系列基本逻辑指令(二)AND与ANI指令0LDX21ANDX02OUTY33LDY34ANIX35OUTM1016ANDT17OUTY4Y3M101Y4X2X0ANDY3X3ANIT1AND图3.20第三章PLC程序设计基础第三节、FX系列基本逻辑指令(二)AND与ANI指令AND(And):常开触点串联连接指令。ANI(AndInverse):常闭触点串联连接指令。AND和ANI指令可以用于X,Y,M,T,C和S。单个触点与左边的电路串联时,使用AND和ANI指令,串联触点的个数没有限制。在图3.20中,OUTM101指令之后通过T1的触点去驱动Y4,称为连续输出。只要按正确的次序设计电路,可以连续多次使用连续输出。应该指出,图3.20中M101和Y4线圈所在拉工联支路如果改为图3.21中的电路,必须使用后面要讲的MPS和MPP指令。Y3X3T1MPP图3.21不推荐的电路第三章PLC程序设计基础第三节、FX系列基本逻辑指令(二)AND与ANI指令MPSM101Y4第三章PLC程序设计基础第三节、FX系列基本逻辑指令(三)OR与ORI指令OR(Or):常开触点的并联连接指令。ORI(OrInverse):常闭触点的并联连接指令。OR和ORI指令可以用于X,Y,M,T,C和S。OR和ORI用于单个触点与前面电路的并联,并联触点的左端接到LD点上,右端与前一条指令对应的触点的右端相连。第三章PLC程序设计基础第三节、FX系列基本逻辑指令(四)LDP,LDF,ANDF,OPR和ORF指令LDP,ANDP和ORP是用来作上升沿检测的触点指令,仅在指定位元件的上升沿(由OFF→ON变化)时接通一个扫描周期。LDF,ANDF和ORF是用来作下降沿检测的触点指令,仅在指定位元件的下降沿(由ON→OFF变化)时接通一个扫描周期。上述指令可以用于X,Y,M,T,C和S。在X2的上升沿或X3的下降沿,YO仅在一个扫描周期为ON(见图3.23)。图3.23边沿检测触点指令Y0M0X2X3M3T3第三章PLC程序设计基础第三节、FX系列基本逻辑指令(五)ORB指令和ANB指令0LDX01ANDX12LDX23ANDX34ORB5LDX46ANIX57ORB8OUTY6Y6图3.24ORB指令X0X1X2X3X4X5ORBORB第三章PLC程序设计基础第三节、FX系列基本逻辑指令(五)ORB指令和ANB指令ORB(OrBlock):串联电路块的并联连接指令。两个以上的触点串联连接而成的电路块称为“串联电路块”,将串联电路块并联连接时用ORB指令。ORB指令不带元件号,它相当于触点间的一段垂直连线。每个串联电路块的起点都要用LD或LDI指令,电路块的后面用ORB指令。ANB(AndBlock):并联电路块的串联连接指令。ANB指令将并联电路块与前面的电路串联,在使用ANB指令之前,应先完成并联电路块的内部连接。并联电路块中各支路的起始触点使用LD或LDI指令。第三章PLC程序设计基础第三节、FX系列基本逻辑指令(五)ORB指令和ANB指令0LDX01ORX12LDX23ANDX34LDIX45ANIX56ORB7ORX68ANB9ORX710OUTY6Y6X0ANBLDX2X3X1X4X5X6X7ORANB之前的OR指令ORB第三章PLC程序设计基础第三节、FX系列基本逻辑指令(六)栈存储器与多重输出指令MPS(Push),MRD(Read),MPP(Pop)指令分别是进栈、读栈和出栈指令,它们用于多重输出电路。101···1MPDMPPMPSMPP12311X4Y3X5MPSMPPX0Y1Y0Y4Y2MRDMPPMPSX1X2X3图3.26栈存储器与多重输出指令第三章PLC程序设计基础第三节、FX系列基本逻辑指令(六)栈存储器与多重输出指令0LDX41MPS2ANDX53OUTY34MPP5OUTY16LDX07MPS8ANDX19OUTY010MRD11ANDX212OUTY413MPP14ANDX315OUTY2X4Y3MPPX0Y1Y0Y4Y2MRDMPPMPSX1X2X3第三章PLC程序设计基础第三节、FX系列基本逻辑指令(六)栈存储器与多重输出指令X0Y0Y1Y2Y3MPPX4X6MPSMPPMPSMPSMPPX5X3X2X10LDX06MPP12ANDX51MPS7ANDX313OUTY22ANDX18OUTY114MPP3MPS9MPP15ANDX64ANDX210ANDX416OUTY35OUTY011MPS图3.27二层栈第三章PLC程序设计基础第三节、FX系列基本逻辑指令(六)栈存储器与多重输出指令FX系列有11个存储中间运算结果的栈存储器(见图3.26)。使用一次MPS指令,当时的逻辑运算结果压入栈的第一层,栈中原来的数据依次向一层推移。使用MPP指令时,各层的数据向上移动一层,最上层的数据在读出后从栈内消失;MRD用来读出最上层的数据,栈内的数据不会上称或下移。图3.26和图3.27分别给出了使用一层栈和使用多层栈的例子。第三章PLC程序设计基础第三节、FX系列基本逻辑指令(七)主控与主控复位指令MC,MCR0LDX01MCN02SPM1003LDX14OUTY05LDX36OUTY17MCRN0MCN0M100X0M100X1Y0Y1X3MCRN0图3.28主控与主控复位指令第三章PLC程序设计基础第三节、FX系列基本逻辑指令(七)主控与主控复位指令MC,MCRMC指令可用于输出继电器Y和辅助继电器M。在编程时,经常会遇到许多线圈同时受一个或一组触点控制的情况,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,主控指令可以解决这一问题。使用主控指令的触点称为主控触点,它在梯形图中与一般的触点垂直。主控触点是控制一组电路的总开关。图3.28中X0的常开触点接通时,执行从MC到MCR的指令,MC指令的输入触点断开时,积算定时器、计数器、用复位/置位指令驱动的软元件保持其当时的状态。非积算定时器和用OUT5指令驱动的元件