陈晨 王力生 贾廷纲 徐志明
摘要:可编程控制器(Programmable Logic Controller, PLC)是为广大工程技术员所熟知并广泛使用的,为了适应广大工程技术员的使用需求和习惯,可编程控制器并不采用微机的编程语言,而是使用了面向过程的,更直观的编程语言,在PLC中,图形化编程语言梯形图极易上手,通俗易懂,与电气控制原理图相一致,所以成为了PLC的主要编程语言。但是,梯形图并不能被可编程控制器识别,不能直接运行。所以,如何提高开发效率,使梯形图直接转化为PLC指令成为了嵌入式PLC的一个研究热点。
关键词:PLC;图形化编程;编译;梯形图
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)21-0156-02
Research on Embedded PLC Graphical Programming
CHEN Chen1, WANG Li-sheng1, JIA Ting-gang2, XU Zhi-ming2
(1.Tongji University, Shanghai 200442,China; 2. Department of Automation, Shanghai Electric Group Company, Shanghai 200002,China)
Abstract: As most of the PLC users are engineers and technicians who are not professional computer programmers , control-oriented and problem-oriented natural language is used in PLC programming. Ladder Diagram is the main PLC programming language which is vivid,simple and correspondent with electrical control schematic diagram. PLC Ladder Diagram cannot be interpreted by the Computer directly,So how to translate the visualized ladder diagram into PLC instruction sequence and enhance the efficiency of system has become a hot debated topic in embedded PLC filed.
Key words: PLC; graphical programming; compiling; ladder diagram
随着嵌入式领域的迅猛发展,PLC(Programmable Logic Controller,可编程逻辑控制器)技术得到了高速发展。PLC 采用可编程序的存储器,用以在其内部存储执行逻辑运算、顺序控制、定时/计数和算术运算等操作指令,并通过数字或模拟的 I/0 接口控制各种类型的机械或生产过程。
PLC 的图形化编程语言是一种面向生产、面向用户的编程语言。当生产流程需要改变时,可以在控制电路不改变或者少改变的情况下,现场改变程序,使用方便、灵活。
1 PLC编程基础
1)PLC的工作原理
PLC主要由 CPU模块、输入模块、输出模块和编程器组成[1]。CPU 模块主要由微处理器(CPU芯片)和存储器组成,主要负责不断地采集输入信号、执行用户程序、刷新系统的输出,存储程序和数据;I/O模块是用来联系外部现场设备和CPU模块的桥梁;编程器用来生成用户程序,并用它编辑、检查、修改用户程序,监视用户程序的执行情况。
2)PLC编程语言
在IEC61131-3中,规定了控制逻辑编程中的语法、语义和显示,并对以往编程语言进行了部分修改后形成目前通用的五种语言[2]。在这五种语言中,有三种图形化语言,二种文本化语言。图形化编程语言包括:梯形图(Ladder Diagram,LD)、功能块图;文本化编程语言包括:指令表(Instruction List,IL)和结构化文本(Structured Text,ST)
梯形图编程语言是根据继电器控制系统原理图发展而来的,是PLC首先采用的编程语言,是PLC最普遍采用的编程语言。
功能块图基本沿用了半导体逻辑电路的逻辑图的表达形式。这种方式易于描述较为复杂的控制功能,表达直观,查错都比较容易,因此它是编程时常用的一种方式,但它必须采用带有显示屏的编程器才能描述。
顺序功能块图也称为功能流程图或状态转移图,顺序功能图主要由“状态”和“转移”等基本元素组成,通过这些基本元素的不同组合,可以对具有并发、选择等复杂结构的系统进行编程。
指令表编程语言是一种与微机的汇编语言中的指令相似的助记符表达式,它是可编程控制器基础的编程语言。所谓指令表编程,是用一个或几个容易记忆的字符,即助记符来代表可编程控制器的某种操作功能。
结构化文本是一种高级的文本语言,可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描述步、动作和转变的行为。
2 PLC程序设计原则
PLC程序的设计方法主要有经验法、翻译法、解析法和流程图法。梯形图的设计原则主要有:
1)梯形图程序起始于左母线,终止于右母线,应该按照自上而下、自左向右的方式绘制,逻辑线圈应该和右母线直接相连,中间不能有任何元件。
2)节点应该画在水平线上,不能画在垂直分支上。
3)有串联电路并联时,应将接点最多的那个串联回路放在梯形图最上面。有并联电路相串联时,应将接点最多的并联回路放在梯形图的最左边。
4)梯形图中一般不宜出现双线圈。
3 PLC梯形图编程技术
3.1 编译原理
编译程序将源程序变为目标程序的过程一般分为如下几个阶段[4]:
1)分析词法: 扫描并识别输入程序的字符串,将字符串变换成单词的字符流。
2)分析语法:分解输入的符号串,分析各个语法单位在语法上是否正确无误。
3)分析语义:分析上一阶段识别出的语法并,进行初步翻译,并产生中间代码。
4)生成中间代码:将源程序编程一种“中间代码”的内部表示形式,用来存储编译程序临时生成的名字和中间结果。
5)优化代码:对中间代码进行优化,使其更为高效易读。
6)生成目标代码: 翻译优化后的代码,并将其转换成机器语言程序或汇编语言程序。
3.2 PLC梯形图编译
3.2.1 梯形图的文法
作为梯形图的有穷字母表∑,每一个梯形图元件即为∑上的一个符号串。∑*为∑上所以符号串的全体,则有:
∑*={常开触点符号,常闭触点符号,输出符号,串联线,并联线?}
在梯形图中,除了左右母线外,其他元件均为非终结符。根据文法形式化的定义,我们把梯形图的文法G规定如图 1所示。
3.2.2 PLC 梯形图的词法分析
梯形图中,每个电路元件符号可以看成是该语言中的一个单词,是组成梯形图语言的基本字,因此梯形图语言词法分析器的目的就是要将梯形图元件识别成一组单词串。当词法分析扫描器从梯形图中扫描一个符号时,将其转换为编译器的内部表示,编译器根据内部表示的约定在编译时将其转变成相应的指令表语言输出。
3.2.3 PLC 梯形图的 LR 语法分析
LR语法分析是自底向上分析方法的一种,当分析的栈顶符号串形成句柄时就采取归约行动。LR 分析法对文法限制最少,分析效率高,报错能力强。一个完整的梯形图句子由梯形图的元件符号及其所控制的地址构成,而完整的梯形图又由多条这种句子按一定顺序排列而成。
4 其他图形化编程技术
LabVIEW(Laboratory Virtual Instrumentation Engineering Workbench,实验室虚拟仪器工程平台)是在图形化编程方面最通用和强大编程环境,率先引入了特别的虚拟仪表的概念,用户可通过人机界面直接控制自行开发之仪器。
Modkit编程语言是基于Web的,打开了网页就可以直接开始编程,不需安装额外软件,它的每个程序模块是一个拼图(或者叫积木)模块,搭在一起形成一个完整程序。它的模块之间不需连接数据线,贴在一起就行。
Modkit使用颜色来区分不同种类的模块,拼图的形状来保证数据类型安全。,插槽也是有形状的,只有形状匹配的积木才能放进相应的插槽。它是专用来对Arduino这款硬件进行编程的。这种针对特定硬件设计的编程语言,最大优势就是效率高。
5 总结
本文在介绍PLC梯形图,设计规则和语句表编程规则的基础上,研究分析了PLC梯形图编程技术,包括梯形图的绘制、存储、识别和编译过程,以及常用的图形化编程工具和PLC梯形图编程中的数据表示方式,最后介绍了其他图形化编程技术。
参考文献:
[1] 赵娇.数控特种编程方法研究及编译功能实现[D].上海: 上海交通大学, 2008.
[2] 董武,王国庆.PLC 快速入门[M].北京:中国电力出版社, 2011:37.
[3] 陈隽.基于PC机的软PLC的研究 [D].武汉: 华中科技大学, 2003.
[4] 吕映芝,张素琴,蒋维杜.编译原理[M].北京:清华大学出版社, 1998:6.
[5] 严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社, 1997:121.