浅谈PLC的编程思想及其未来发展(1)
原创 2017-09-29 HwLib(慧兰博) HwLib慧兰博
1
引言
PLC诞生到现在已经好几十年了,从最初的作为继电器替代产品到现在可以作为一个工厂或一个工艺装置的智能控制平台,其硬件和软件在几十年间得到了飞速发展。但是关于PLC的编程理论至今几乎没有任何进展,无论是市场上的书籍还是学校的教材,其内容无非也就是介绍一些指令啊、软件使用或者工程案例之类的,很少有深入的探讨。老师在教授学生时仍然是几十年前的眼光和套路,从如何将继电器回路转换为梯形图来引导学生入门。
之所以如此局面,我个人看法是迄今为止,绝大多数的自控工程师是学电气出身。虽然在大学时期接触了一些VB、C之类的编程语言,但是并没有对现代编程思想有过接触,或者虽然听说了一些名词但其实并不知道其内在含义,也缺乏现代软件工程实践。很多自控工程师转行到了软件工程后,由于这两个行业的待遇悬殊,这部分群体通常不会再回头到自控的路子上去,因此也不会对PLC编程理论进行总结和提升。而由软件工程师转行到自控行业的非常之少,而且他们普遍缺乏电气知识和实践,只能按照要求编写控制逻辑或功能模块,无法在全局上把握整个控制系统。种种原因导致虽然PLC的功能愈来愈强大但是其编程理论至今没有形成自己的体系。
2
PLC中的编程语言
IEC 61131-3对PLC的编程语言进行了统一规定。该标准包含了5种编程语言,分别是梯形图(LD)、功能块图(FBD)、结构文本(ST)、语句表(IL)和顺序功能图(SFC)。目前各主流厂商的PLC编程软件均对该标准提供了不同程度的支持,但在实现细节上却又各有差异。
以TIA PORTAL为例,目前及计划支持的编程语言包括LAD、FBD、SCL、STL、GRAPH、CFC等(分别对应于IEC 61131-3中的LD、FBD、ST、IL、SFC,IEC 61131-3中没有CFC的相关规定)。各编程语言的特点参见下表。
表一 PLC各编程语言比较表
注:
1、STL:类似于汇编的一种语言,S7-1200不支持;在现在PLC性能已非常强大的情况下,资源的节约和运行速度已不是十分重要,更重要的是开发效率,个人认为已趋于淘汰;
2、SCL:类似于PASCAL的一种语言,适合于编写算法;
3、CFC:适合过程控制(目前还未推出),IEC 61131-3中没有对应的标准;
4、LAD/FBD:属于万金油语言,啥都能干,但是啥都不擅长
上面所列的各编程语言没有孰优孰劣之分,他们都有各自的特点,有各自擅长的应用场景。对于编程语言的选择,我个人的看法是没有最好的,只有最适合自己的。比如我曾经在现场见过从头到尾只使用STL的,也见过从头到尾只使用SCL的,总之就是哪个顺手用哪个。当然如果你对各种编程语言都很熟悉,那选用合适的工具做合适的事是再好不过了。
3
PLC程序算不算软件
下面是维基百科中对软件的定义:
Computer software, or simply software, is a part of a computer system that consists of data or computer instructions, in contrast to the physical hardware from which the system is built. In computer science and software engineering, computer software is all information processed by computer systems, programs and data. Computer software includes computer programs, libraries and related non-executable data, such as online documentation or digital media. Computer hardware and software require each other and neither can be realistically used on its own.
软件是一系列按照特定顺序组织的计算机数据和指令的集合,对应于已建立的计算机硬件。在计算机科学和软件工程中,计算机软件是由计算机系统、程序和数据处理的所有信息。计算机软件包括计算机程序、库和相关的非执行数据,如在线文档或数字媒体。计算机硬件和软件的相互要求,两者都不能单独使用。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。
按照上面的说法,那么PLC程序肯定也属于软件的范畴,它属于一种应用软件,编写PLC程序的过程也是属于软件开发。既然如此,软件工程中的一些方法、概念和理论同样也适用于PLC编程。
图一 PLC的硬件和软件
顺便提一下,PLC是有操作系统的。PLC的操作系统属于实时操作系统,比如OS-9或VxWorks等。而我们常见的Windows、OS X、Linux(目前也有从Linux演化的实时操作系统)等都不是实时操作系统。国内这方面资料比较少,有兴趣的话可以看看国外的相关文献。
注:
1、实时操作系统(RTOS):分为软实时和硬实时;指当事件或数据产生时,能够接受并以足够快的速度予以处理,其处理结果的最迟完成时间使可以预知的。提供及时响应和高可靠性是其主要特点。
未完待续
HwLib(慧兰博)公众号
专注于SIMATIC TIA高端编程应用