以上讲的面向对象都是针对计算机的。PLC怎么样?能不能设想PLC也用面向对象的方法编程?能不能也使用OOA、OOD?有这个可能。而且有的已在使用。
从历史看,计算机的昨天,也就是PLC的今天。在过去的几十年中,计算机编程语言的进化,从地址(机器语言)到名字(汇编语言),到表达式(第一代高级语言,如Fortran),到控制(第二代高级语言,如Cobol),到过程和函数(第二代和早期第三代高级语言,如Pascal),到模块和数据(晚期第三代高级语言,如Modula),最后到对象(基于对象和面向对象的语言)。难道计算机今天已做到的事情,PLC明天就做不到吗?
再看看DCS。它的硬件组成比PLC要复杂得多。但软件编程,却不比PLC复杂。为什么?因为DCS厂商在提供硬件的同时,也提供相应的软件包。在此基础上编程,多数只是选定对象或组件,再填写参数,连线也就完成了编程。DCS能做到的,PLC为什么不能?
组态软件也一样。从本书第7章的介绍知,用它编程,比用其它语言编程要简单得多。原因是它用了高水平的面向对象方法。只要选用好它提供的对象,就完成了编程。面向对象最大的优点是程序能够重用。程序可重用,就可把编程当成产业,建立专门“生产软件的工厂”生产软件。用户像买商品一样买去、重用。当今的组态软件不正是这样吗?
最后谈谈嵌入式系统。沈阳鹭岛公司开发的LEODO人机界面,它的编程,也是面向对象的。只是它先在计算机上开发,编译后再下载给LEODO。
所以,PLC也应是这样。PLC厂商在提供硬件的同时,也应尽可能的提供相应软件。这软件也应是面向对象的,可重用的。事实上,PLC的这种局面也已出现。以OMRON公司为例,在推出新的硬件模块的同时,有的也推出可进行面向对象编程的软件。用户用其作再开发,即可成为自己很好的应用。如在它新推出的回路控制模块的同时,也推出这个回路控制模块的编程软件,这在本书第4章的介绍中,读者已经看到用它编写模拟量控制程序多么简单。
其实,现也有PLC厂商的编程工具软件,也已引入对象概念。也有特性、方法之类东西。不过不太普遍而已。
这里也有个观念问题。人们一般舍得花钱买硬件,但舍不得花钱买软件,这观念不更新,软件业就无法发展。特别对PLC这样,先前多是只提供硬件,而不提供软件的行业,更是如此。
然而,如果PLC硬件厂商如提供硬件一样,也能提供可重用的PLC程序(软件)。用户重用厂商提供的程序(软件),只要做些设定,做些软件模块间的连接,填填参数,就可成为自己的程序,那该有多好。
计算机编程已经出现了这个趋势,这也是面向对象编程发展的结果。计算机软件将组件化。所需要的组件可定购。软件,像定购硬件一样也可定购。软件可安排在“软件工厂”用“白领工人”“生产”。用户只要配备软件系统专家,主要是做OOA,OOD工作。按OOD的要求去订购软件。最后按OOP的原则,组装所购软件,再组成为自己的程序。美国大的工业公司原来编程人员很多,因为,所有软件都要自己开发。而今,有了面向对象的组件化软件,或可订购通用的软件,就不必什么软件都自己编了。现在这些公司不少在裁减编程人员,与这个软件的发展趋势是不无关系的。
自然,要实现这个目标,要做的工作很多,要走的路也很远。但对PLC而言,可以这样设想:
(1)引入面向对象的有关概念。在PLC程序的需求分析、算法设计及编写代码编程中,引入面向对象的有关概念,也使用类、对象、封装、继承、多态等有关方法进行处理。其实,现在有的PLC编程软件已引入对象这样概念了。
(2)根据对象的含义定义数据。是否可把PLC的输入、输出点,如0.00,10.00这样数据也都看成是对象?这些点的集合就是“输入、输出点”的类。这个类有其特性,如处于ON或OFF状态。还有处理它的方法,如使其变为ON或OFF(在一定的条件下,用OUT或OUTNOT的指令作用于它)。
这些输入点还可分为普通输入点、高速计数输入点。高速计数输入点还可分为若干不同类型,以用于不同的模式的高速计数。
如果像计算机编程,做好变量定义后,不要再作很多繁琐的设定,PLC就能为之自动进行软设定,并能即时设定即时起作用。
有的方法可否也能按多态性方法处理?如把高速计数方法用于某可进行高速计数的输入点,则自动将其作高速处理。如把普通的输入用于某可进行高速计数的输入点,则自动按普通输入点处理,等等。(https://www.xing528.com)
(3)硬件软件一体化。PLC高功能模块越来越多,功能也越来越强。但最好在推出这些硬件模块的同时,也推出使用它的软件。它的设定、使用程序,能在可视化的编程界面上用面向对象的方法完成。而PLC只是在建立工程时,把这些特殊模块的使用程序组织进来就是了。
(4)改进PLC编程语言。现在虽说PLC有5种语言。但实际上像本书一样,多数只用梯形图语言,或助记符语言。用梯形图语言、助记符语言进行面向对象编程比较难。较便于面向对象编程的图形符号语言是功能块图语言,文字符号语言是结构化文本语言。这两种语言应大力推广,使其普及。听说OMRON CX-Programmer已增加有这种功能块图语言。
DCS用的多为功能块图。只要选选功能块,填填参数,接接连线,就可完成一组程序的设计。而这些功能块由DCS厂商提供,用户也可开发。可不受限制的重用,是很方便的。
计算机面向对象编程用多是文本语言,如VC、DELPHI等等都是文本语言。但有MFC库、API函数、种种控件,再加上建立过程的种种导向模板,所以,虽说是文本语言,但要写代码量也少了很多。显然,PLC要推广面向对象的文本语言,也必须这么作。
当然,如同自然语言的演变只能是渐进的、漫长的一样,PLC编程语言进步也不能一蹴而成。只能一步步向面向对象编程语言推进。
(5)优化PLC编程软件。编程语言变化了,概念变了,当然编程的工具软件也得变。现有的PLC厂商的编程软件虽都不断地在进步,每年都有新版本推出,但总的看能与微软的WORD、VB、VC界面相当的PLC编程软件是不多的。多数只能与“写字板”相当。有不少也只是“记事本”水平。这样的编程软件状态怎么能支持面向对象编程?
(6)建立开放的机制。编程软件应是开放的。允许其它方或用户也可开发像DLL、ACTIVEX那样,被嵌入PLC程序中使用。
以上设想是在本书第1版中提出的。只过了2年,令作者惊喜的是,国内生产PLC的和利时公司LM小型PLC编程,不少地方与上述设想“巧合”,也使我们看到了PLC面向对象编程的亮点。特别要提到的它有如下这么4点:
(1)LM型PLC机编程已引入了面向对象的有关概念,并可以按照对象的理念声明变量。它没有常规PLC那么多的内部器件,如定时器、计数器,而代之以变量。这些变量按需要声明,使用多少,就声明多少。变量名还可以按照其功用命名,比起器件编号更便于辨认。变量还可以分为全局的与局部的、掉电保持的与不保持的、与内部器件关联的与不关联的,都可以用变量声明选定。同时,变量的类型还很多,计算机有的,包括结构、枚举、数组、指针,它都有。这些不仅可以为编程提供方便。也使PLC内存得到充分的利用。同时,还可以做到程序代码与程序数据紧密结合,确保程序的安全。
至于它有的输入、输出点已经可以分为普通输入点、高速计数输入点,并可以调用功能块实现普通输入、高速计数输入或普通输出、脉冲链输出或可调脉宽输出。这样,就不要再做很多烦琐的设定,就能“即调用即起作用”。
(2)LM型PLC编程实现了硬件、软件一体化。它没有庞大的系统设定区,也没有复杂的PLC设置窗口。它的设定主要用软件功能块。有一种硬件功能,就有与其对应的软件功能块。调用这些功能块就相当于传统PLC的设定。如串行接口通信参数的设定,可以调用串行接口参数设定功能块。如果要回到系统默认设定,可以调用恢复系统默认参数的功能块,非常方便。
(3)LM型PLC编程软件完全合乎国际的自动化编程软件的标准。它可以使用6种编程语言。不仅可以用梯形图语言,或助记符语言,还可以使用较便于面向对象编程的功能块语言及结构化文本语言,这在现有的PLC中是不多见的。
(4)LM型PLC编程已经建立开放的机制。其指令系统由基本指令、函数及功能块组合而成。后两者是由库文件提供,可根据需要加载到程序中,用多少就加载多少。PLC的程序内存也因此得到更有效地利用。种种功能丰富的库文件由和利时公司来提供,而用户自己也可以生成。因而在某种意义上讲,它的指令系统是无限大的。只要PLC的内存允许,要什么指令就可以生成什么指令,要多少指令就有多少指令。
这几年,OMRON公司在这些方面的进步也是明显的。它现在也可使用功能块编程。OMRON公司提供有系统功能块,用户也可设计自身的功能块。在它推出新硬件的同时,也都推有软件。这些也都为推进面向对象编程提供新的支持。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
