漫谈软PLC

软PLC架构大多只有一块通用处理器,软PLC的出现主要基于这么一个考虑:通用MCU的价格越来越低性能越来越高。特别是解释型的虚拟机架构在DCS上面得到了多年的运用,所以在前几年大家纷纷推出了自已的软PLC。目前国内大多数小型PLC都是软PLC,使用的MCU主要是日立的H8,西门子的C164系列,然后其它低档的大多是89C51了。在实现上面大多数小PLC都采用编译型,因为小PLC大多采用的是低档低速的MCU,没有足够的资源的成本去采用解释型的运算。相反中大型的软PLC有不少是采用解释型的处理方式,比方说现在商用ISAGRAF、KW、一方梯队等都可以根据用户的需要选取是编译型还是解释型。

通常硬PLC要比编译型的软PLC快10~100倍,而编译型的速度要比解释型的速度快3~10倍。大家大都知道C语言与BASIC的区别,C语言就是编译型的语言,BASIC就是解释型的语言。在软PLC里面也同样存在两种类似的实现方式。

那么用那种方式更好一些呢?

这不能这么简单的说好与坏,如果是DCS或者中大型的PLC采用486以上的CPU那么速度就不是关键了,更重要的是功能和灵活性,那么采用解释型可以很好的解决在线编程和自定义功能块等功能。相反如果在小型PLC里面,成本和性能成为了关键矛盾,如何在低成本的情况下达到最高的性能成为了关键,同时小型PLC大多不需要很复杂的功能,所以真编译应该是最好的选择。国外小型软PLC多采用西门子的C164和日立的H8,特别日立的H8有丰富的位指令,可以比较好的解决软PLC的瓶颈位处理速度慢的问题,而PLC大多数情况下又都是位处理。国内的软PLC除了几家从国外引进技术或贴牌的其它的大多使用89C51,在实现上面编译型和解释型都有,如何区分是编译型还是解释型呢,其实只要看速度就行了,如果单指令速度比较慢的大多是解释型,反之是编译型。

编译型的实现,简单说就是先将PLC的指令和功能块都用C语言或者汇编语言编写成函数库,然后再用C语言写一个框架代码,用户用梯型图编写完程序后,梯型图编译器将生成一个框架文件,将所有指令的函数替代,并调用C编译器,最后生成单片机的二进制文件,下载到控制器,由控制器执行。刚说过其中有一个框架代码,这个框架代码内就实现通信、IO驱动、管理等功能。而逻辑都由函数库的指令组合完成,如果大家有编译原理的基础,一听就会明白,这其实是回避了PLC开发里面最麻烦的一个问题,也就是编译工具。

解释型的实现,简单说就是一个虚拟机架构,厂商定义了一种虚拟机指令,其实这个虚拟机就相当于一个软CPU,它也有它的指令,它的指令比方说是IEC61131-3要求的指令等。虚拟机在运行时从代码中逐一取回指令并通过一个查找表跳转到对应的指令去运行,如果大家对早期的大型机电脑有了解,那么一定会知道,当时的大型机资源很宝贵,一般是很多位程序员合用一台大型机比方说PDP系列,程序员编写完程序后通过终端把自己的程序录进大型机排队运行。因为大型机的厂商不同,各厂商的机器码也不同,所以大家都在大型机上运行一个虚拟机来统一程序员对口的指令。

2.2.3PLC技术的选择和对比:

海维深刚开始控制器研发时,做的是软PLC(PPC31系列中型PLC),采用的是解释型实现,这在中大型的DCS或PLC方面是合适的,但如果要考虑性价比就比较痛苦了,特别是解释型,国内外采用解释型的小型PLC速度一般都相当慢,比方说光洋的好几个系列以及国内大多数新出来的小型PLC。当然并不是说解释型的就不好,只是要达到同样性能情况下需要更高的CPU成本和存储器成本。

后来在经过一段时间后我们又开发编译型的软PLC(PPC22系列中型PLC)这个系列主要的特点是相对于解释型速度要快很多,同时可以很方便的由用户来增加新的功能块,只需要将用户编写的C函数当成一个功能块来调用就可以了。目前国内有些国产PLC和部分进口的PLC是采用这种技术的,PPC22使用的是486的一颗工业SOC芯片成本比较高,主要是用在工程和大型设备上,相反国内许多小型PLC是用89C51做的真编译,如果用的是标准频率12M的51话,你会很显意的看到厂商标称他们的PLC布尔指令执行速度是1us/指令。

当02年海维深准备开始进入设备配套小型PLC时,我们深入的研究了大多数已有的小型PLC厂商的技术结构和实现方式,发现如果不采用硬PLC结构将无法满足在低成本的情况下提供更高的性能,同时要想实在运行态在线编程,更只能采用并行垂直扫描硬PLC结构。比如像三菱的FX2N和他中型的A系列和Q系列都是硬PLC结构,其中A和Q系列都是并行垂直扫描硬PLC,而FX2N也是硬PLC,但不太清楚是并行解题还是串行解题的,同样采用并行垂直扫描硬PLC结构的还有AB的大多数PLC,除了它的一种小型PLC外。西门子的S7300也是硬PLC,但S7200比较像是一种软PLC。在了解完后我们还对各家PLC的编解码格式做了一些分析,基本上大同小异,只是为了防止有知识产权的麻烦而有意错分开编码格式。在与小型PLCV80的开发过程中,我们还开发了同样是硬PLC结构的PPC11中型PLC,两者采用同样的软硬件结构,只是功能和性能有一些区别。

所以我们应该说不同的技术应该用到不同的地方,技术上没法说那一种更好,但从PLC的主流来说硬PLC有着不可替代的优势(远比标称速度上的优势要大很多),现在许多PLC厂商像西门子、横河、AB都有自己的软PLC,但是他们的主流产品还都是硬PLC,这里面的细节说起来可能不是一两天能说完的,简单说来就是可靠性和性价比的区别。日本东芝公司自动化事业部的一位专家介参事长与我有过几次比较深的技术交流,他说到东芝下一代的综合控制器仍然是硬PLC结构。

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系