1.4 PLC的编程语言
PLC的编程语言与一般计算机语言相比,具有明显的特点,它既不同于高级语言,也不同于一般的汇编语言;它既要满足易于编写,又要满足易于调试的要求。目前,还没有一种对各厂家产品都能兼容的编程语言,如三菱公司的产品有它自己的编程语言,OMRON公司的产品也有它自己的语言。但不管什么型号的PLC,其编程语言都具有以下特点。
图形式指令结构:程序由图形方式表达,指令由不同的图形符号组成,易于理解和记忆。系统的软件开发者已把工业控制中所需的独立运算功能编制成象征性图形,用户根据自己的需要把这些图形进行组合,并填入适当的参数。在逻辑运算部分,几乎所有的厂家都采用类似于继电器控制电路的梯形图,很容易被用户接受。如西门子公司还采用控制系统流程图来表示,它沿用二进制逻辑元件图形符号来表达控制关系,很直观易懂。较复杂的算术运算、定时计数等,一般也参照梯形图或逻辑元件图给予表示。
明确的变量常数:图形符相当于操作码,规定了运算功能,操作数由用户填入,如K400,T120等。PLC中的变量和常数以及其取值范围有明确规定,由产品型号决定,可查阅产品目录手册。
简化的程序结构:PLC的程序结构通常很简单,为块式结构,不同块完成不同的功能,使程序的调试者对整个程序的控制功能和控制顺序有清晰的概念。
简化应用软件生成过程:使用汇编语言和高级语言编写程序,要完成编辑、编译和连接三个过程;而使用编程语言,只需要编辑一个过程,其余由系统软件自动完成,整个编辑过程都在人机对话下进行的,不要求用户有高深的软件设计能力。
强化调试手段:无论是汇编程序,还是高级语言程序调试,都是令编辑人员头疼的事,而PLC的程序调试提供了完备的条件,使用编程器,利用PLC和编程器上的按键、显示和内部编辑、调试、监控等,并在软件支持下,诊断和调试操作都很简单。
总之,PLC的编程语言是面向用户的,对使用者不要求具备高深的知识、不需要长时间的专门训练。
1. 梯形图程序设计语言
梯形图 (Ladder Diagram) 程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。采用梯形图程序设计语言,这种程序设计语言采用因果关系来描述事件发生的条件和结果,每个梯级是一个因果关系。在梯级中,描述事件发生的条件表示在左面,事件发生的结果表示在右面。梯形图程序设计语言是最常用的一种程序设计语言,它来源于继电器逻辑控制系统的描述。在工业过程控制领域,电气技术人员对继电器逻辑控制技术较为熟悉。因此,由这种逻辑控制技术发展而来的梯形图受到欢迎,并得到广泛的应用。梯形图程序设计语言的特点如下。
与电气操作原理图相对应,具有直观性和对应性。
与原有继电器逻辑控制技术相一致,易于掌握和学习。
与布尔助记符程序设计语言有一一对应关系,便于相互转换和程序检查。
梯形图中的继电器不是“硬”继电器,是PLC存储器的一个存储单元。当写入该单元的逻辑状态为“1”时,则表示相应继电器的线圈接通,其动合触点闭合,动断触点断开;当写入该单元的逻辑状态为“0”时,则表示相应继电器的线圈断开,其动断触点闭合,动开触点断开。
梯形图按从左到右、自上而下的顺序排列。每一逻辑行(或称梯级)起始于左母线,然后是触点的串、并联连接,最后是线圈与右母线相连。
梯形图中每个梯级流过的不是物理电流,而是“概念电流”,从左流向右,其两端没有电源。这个“概念电流”只是用来形象地描述用户程序执行中满足线圈接通的条件。
输入继电器用于接收外部输入信号,而不能由PLC内部其他继电器的触点来驱动。因此,梯形图中只出现输入继电器的触点,而不出现其线圈。输出继电器输出程序执行结果给外部输出设备。当梯形图中的输出继电器线圈接通时,就有信号输出,但不是直接驱动输出设备,而要通过输出接口的继电器、晶体管或晶闸管才能实现。
梯形图编程示意图如图1-17所示。
图1-17 梯形图编程示意图
2. 布尔助记符程序设计语言
布尔助记符 (Boolean Mnemonic) 程序设计语言是用布尔助记符来描述程序的一种程序设计语言。布尔助记符程序设计语言与计算机中的汇编语言非常相似,采用布尔助记符来表示操作功能。布尔助记符程序设计语言具有下列特点。
采用助记符来表示操作功能,具有容易记忆,便于掌握的特点。
在编程器的键盘上采用助记符表示,具有便于操作的特点,可在无计算机的场合进行编程设计。
与梯形图有一一对应关系,其特点与梯形图语言基本类同。
如图1-17所示的梯形图程序,变换成布尔助记符编程如表1-13所示。
表1-13 布尔助记符编程
3. 功能模块图程序设计语言
功能模块图 (Function Block) 程序设计语言是采用功能模块来表示模块所具有的功能,不同的功能模块有不同的功能。它有若干个输入端和输出端,通过软连接的方式,分别连接到所需的其他端子,完成所需的控制运算或控制功能。功能模块可以分为不同的类型,在同一种类型中,也可能因功能参数的不同而使功能或应用范围有所差别,例如,输入端的数量、输入信号的类型等的不同,使它的使用范围也不同。由于采用软连接的方式进行功能模块之间及功能模块与外部端子的连接,因此控制方案的更改、信号连接的替换等操作可以很方便实现。功能模块图程序设计语言的特点如下。
以功能模块为单位,从控制功能入手,使控制方案的分析和理解变得容易。
功能模块是用图形化的方法描述功能,它的直观性大大方便了设计人员的编程和组态,有较好的易操作性。
对控制规模较大、控制关系较复杂的系统,由于控制功能的关系可以较清楚地表达出来,因此,编程和组态时间可以缩短,调试时间也能减少。
由于每种功能模块需要占用一定的程序内存,对功能模块的执行需要一定的执行时间,因此,这种设计语言在大中型PLC和集散控制系统的编程和组态中才被采用。
如图1-17所示的梯形图程序,变换成功能模块图编程如图1-18所示。
图1-18 功能模块图编程示意图
4. 功能表图程序设计语言
功能表图 (Sequential Function Chart,SFC) 程序设计语言是用功能表图来描述程序的一种程序设计语言。它是近年来发展起来的一种程序设计语言。采用功能表图的描述,控制系统被分为若干个子系统,从功能入手,使系统的操作具有明确的含义,便于设计人员和操作人员设计思想的沟通,便于程序的分工设计和检查调试。功能表图程序设计语言的特点如下。
以功能为主线,条理清楚,便于对程序操作的理解和沟通。
对大型的程序,可分工设计,采用较为灵活的程序结构,可节省程序设计、调试时间。
常用于系统规模较大、程序关系较复杂的场合。
只有在活动步的命令和操作被执行后,才对活动步后的转换进行扫描,因此整个程序的扫描时间较其他程序编制的程序扫描时间要短得多。
功能表图来源于佩特利 (Petri) 网,由于它具有图形表达方式,能比较简单清楚地描述并发系统和复杂系统的所有现象,并能对系统中存在的像死锁、不安全等反常现象进行分析和建模,在模型的基础上可以直接编程,因此得到了广泛的应用。近几年推出的可编程控制器和小型离散控制系统中也已提供了采用功能表图描述语言进行编程的软件。顺序功能图体现了一种编程思想,在程序的编制中有很重要的意义。顺序功能图编程如图1-19所示。
图1-19 顺序功能图编程
5. 结构化语句描述程序设计语言
结构化语句 (Structured Text) 描述程序设计语言是用结构化的描述语句来描述程序的一种程序设计语言。它是一种类似于高级语言的程序设计语言。在大中型的PLC系统中,常采用结构化语句描述程序设计语言来描述控制系统中各个变量的关系。它也被用于集散控制系统的编程和组态。
结构化语句描述程序设计语言,采用计算机的描述语句来描述系统中各种变量之间的运算关系,完成所需的功能或操作。大多数制造厂商采用的语句描述程序设计语言与Basic语言、Pascal语言或C语言等高级语言相类似,但为了应用方便,在语句的表达方法及语句的种类等方面都进行了简化。结构化程序设计语言具有下列特点。
采用高级语言进行编程,可以完成较复杂的控制运算。
需要有一定的计算机高级程序设计语言的知识和编程技巧,对编程人员的技能要求较高,普通电气人员难以完成。
直观性和易操作性等较差。
常被用于采用功能模块等其他语言较难实现的一些控制功能的实施。