可编程控制器(PLC)的编程语言

  • A+
所属分类:PLC

由于PLC强大的功能和优良的性能,以及应用成本的不断下降和使用的方便性,促使PLC的应用领域不断扩展,市场潜力巨大,于是,全世界许多公司纷纷推出自己的PLC产品。出于垄断或市场保护的目的,各家公司的PLC产品各有差别,互不兼容。当形形色色的PLC涌入市场时,国际电工委员会与有关PLC制造商多次协商,于1993年制定了IEC1131标准以引导PLC健康地发展。
IEC1131标准共分为5个部分:IEC1131-1为一般信息,即对通用逻辑编程作了一般性介绍并讨论了逻辑编程的基本概念、术语和定义;IEC1131-2为装配和测试需要,从机械和电气两部分介绍了逻辑编程对硬件设备的要求和测试需要;IEC1131-3为编程语言的标准,它吸取了多种编程语言的长处,并制定了5种标准语言;IEC1131-4为用户指导,提供了有关选择、安装、维护的信息资料和用户指导手册;IEC1131-5为通信规范,规定了逻辑控制设备与其他装置的通信联系规范。IEC1131标准后更名为IEC61131标准。
在IEC61131-3中,规定了控制逻辑编程中的语法、语义和显示,并对以往编程语言进行了部分修改后形成目前通用的5种语言。在这5种语言中,有3种是图形化语言,2种是文本化语言。图形化编程语言包括:梯形图(LD-Ladder Diagram)、功能块图(FBD - Function Block Diagram)、顺序功能图(SFC - Sequential Function Chart)。文本化编程语言包括:指令表(IL-Instruction List)和结构化文本 (ST-Strutured Text)。IEC61131-3的编程语言是IEC工作组对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际编程语言标准,它不但适用于PLC系统,而且还适用于更广泛的工业控制领域;IEC61131-3 的编程工具提供对现场总线系统的支持,并对现场总线装置的软件设计产生了很大影响。IEC并不要求每种产品都运行这5种语言,可以只运行其中的一种或几种,但均必须符合标准。在实际组态时,可以在同一项目中运用多种编程语言,相互嵌套,以供用户选择最简单的方式生成控制策略。
正是由于IEC61131-3标准的公布,许多PLC制造厂先后推出符合这一标准的PLC产品。美国罗克韦尔(Rockwell)公司许多PLC产品都带符合IEC61131-3标准中结构文本的软件选项。法国施耐德(Schneider)公司的Modicon TSX Quantum PLC产品可采用符合IEC61131-3标准的Concept软件包,它在支持Modicon 984梯形图的同时,也遵循IEC61131-3标准的5种编程语言。德国西门子(Siemens)公司的SIMATIC S7-200、S7-300、S7-400、C7-620均采用SIMATIC软件包,其中梯形图和功能块图部分符合IEC61131-3标准。
1、 继电器梯形图(LD)
继电器梯形图编程语言是PLC首先采用的编程语言,也是PLC最普遍采用的编程语言。梯形图编程语言是从继电器控制系统原理图的基础上演变而来的。PLC的梯形图与继电器控制系统梯形图的基本思想是一致的,只是在使用符号和表达方式上有一定区别。图1所示是典型的继电器梯形图示例。左右两条垂直的线称作母线。母线之间是触点的逻辑连接和线圈的输出。

图1 PLC继电器梯形图
PLC的设计初衷是为工厂车间电气技术人员而使用的,为了符合继电器控制电路的思维习惯,作为首先在PLC中使用的编程语言,梯形图保留了继电器电路图的风格和习惯,并引入“能流”的概念。图1中,把左边的母线假想为电源正极或“火线”,而把右边的母线假想为电源负极或“零线”。如果有“能流”从左至右流向线圈,则线圈被激励。如没有“能流”,则线圈未被激励。 “能流” 是梯形图的一个关键概念,它仅是概念上的“能流”,是为了和继电接触器控制系统相比较,对梯形图有一个形象深入的认识,其实“能流”在梯形图中是不存在的。
“能流”可以通过动作(ON)的常开接点和未动作(OFF)的常闭接点自左向右流。“能流”在任何时候都不会通过接点自右向左流。图1中,当I0.0动作而I0.1、T40未动作时,线圈M0.0才能接通(被激励)。
继电器梯形图实质上就是PLC内部的一段控制程序,所以常把它称作为程序。又由于它是以电路逻辑图的形式出现的,所以,有时又称它为内部继电器电路图。
有的PLC的梯形图有两根母线,但大部分PLC现在只保留左边的母线了。在梯形图中,基本符号有触点(包括常开和常闭)、线圈和功能盒。触点代表逻辑“输入”条件,如按钮、位置开关、内部条件等;线圈通常代表逻辑“输出”结果,可以通过输出端子和外部电路驱动被控对象,如电磁阀、接触器、指示灯等;功能盒也是一种输出,它代表实现某些特定功能的指今,如定时器、计数器和各种功能指令等。
2、功能块图(FBD)
功能块图是IEC61131-3的标准编程语言,采用类似于数字逻辑门电路的图形符号,逻辑直观,使用方便,但一些低档的PLC并不支持FBD编程语言。S7—200的PLC专门提供了FBD编程语言,利用FBD可以查看到像普通逻辑门图形的逻辑盒指令。它没有梯形图编程器中的触点和线圈,但有与之等价的指令,这些指令是作为盒指令出现的,程序逻辑由这些盒指令之间的连接决定。也就是说,一个指令(例如AND盒)的输出可以用来允许另一条指令(例如定时器),这样可以建立所需要的控制逻辑。这样的连接思想可以解决范围广泛的逻辑问题。

图2 PLC功能块图
3、顺序功能图(SFC)
顺序功能图,亦称功能流程图或状态转移图,是一种图形化的功能性说明语言,专用于描述工业顺序控制程序,也是IEC61131-3的标准编程语言。使用它可以对具有并发、选择等复杂结构的系统进行编程,一些高档的PLC提供了用于SFC编程的指令,但一些低档的PLC并不支持SFC编程语言。顺序功能图示例如图3所示。
顺序功能图主要由“状态”和“转移”等基本元素组成。通过这些基本元素的不同组合,可以表达各种各样的复杂顺序控制逻辑,控制规律的表达简洁明了。
状态有时也称步,是系统一个相对稳定的阶段,在这个阶段内系统的参量保持不变。系统的参量一旦发生变化,则认为系统转移到了一个新的状态。状态包括初始状态和工作状态,一个系统至少要有一个初始状态,初始状态用双线矩形框表示,工作状态用矩形框表示,工作状态一般都有相对应的动作。每个状态都有一个编号,通常用PLC内部的状态元件来保存状态。
当系统的参量发生变化到了一个新的状态,则认为系统状态发生了转移。转移由连接两个状态之间的有向线段和垂直于此线段的短横线段组成,短横线段表示发生转移的条件。

图3 PLC顺序功能图
4、指令语句表(IL)
指令表编程语言类似于计算机中的助记符汇编语言,它是可编程控制器最基础的编程语言。所谓指令表编程,是用一个或几个容易记忆的字符来代表可编程控制器的某种操作功能,具体指令的说明将在后面的相关内容中作详细的介绍。指令表示例如图4所示。

图4 PLC指令语句表
5、结构化文本语言(ST)
结构化文本(ST)是一种高级的文本语言,可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描述步、动作和转变的行为。
结构化文本语言表面上与PASCAL语言很相似,但它是一个专门为工业控制应用开发的编程语言,具有很强的编程能力用于对变量赋值、回调功能和功能块、创建表达式、编写条件语句和迭代程序等。结构化文本非常适合应用在有复杂的算术计算的应用中。
结构化文本程序格式自由,可以在关键词与标识符之间任何地方插入制表符、换行字符和注释。对于熟悉计算机高级语言开发的人员来说,结构化语言更是易学易用。此外,结构化文本语言还易读易理解,特别是用有实际意义的标识符、批注来注释时,更是这样。
下面程序是一个用结构化文本程序实现功能块的例子。该实例描述的是如何用功能块控制箱体中的流体,箱体可以通过阀门被注满和倒空,箱体的重量由一个称重单元监视。功能块通过比较两个输入值FullWeight和EmptyWeight以确定箱体是满的还是空的。
该功能块提供了一个“Command”输入,该输入有四种状态,1.给箱体加水;2.保持不变;3.起动“Stirrer”;4. 清空箱体。实现该功能块算法的结构化文本程序如下:
(*箱体状态*)
TYPE_T_STATE: (FULL,NOT_FULL,EMPTIED);END_TYPE;
(*阀门状态*)
TYPE_T_VALVE: (OPEN,SHUT);END_TYPE;
FUNCTION_BLOCK TankControl
VAR_IN (**)
Command:SINT;
Weight :REAL;
FullWeight,EmptyWeight : REAL;
END_VAR
VAR_OUT (**)
FillValve :T_VALVE:=SHUT;
EmptyValve :T_VALVE:=SHUT;
StirSpeed :REAL:=0.0;
END_VAR
VAR
State :=T_STATE :=EMPTYIED;
END_VAR

  • 营销微信
  • 报单询价扫一扫
  • weinxin
  • 技术微信
  • 技术问题扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: