一、前言
PLC技术漫谈是我在2004年左右写的,主要讲PLC的内部原理和应用,另外也对国内外各品牌PLC从技术角度评说,尽管时代久远,还好PLC技术没有什么发展,还可以拿出来给一些初入门的工控人借鉴一下。
大家可能觉得很不愤:“你有什么资格说三道四,咱中国人民从七十年代开始到现在都没有搞出一个像样的PLC,好像你已经掌握了什么核心一样。”
有没有资格是一码事,说不说是另一码事!我说,你听!不对的地方, 死命骂!讲得对的地方请您合一合!如果您不知道对不对的,请不要出声,就当我是对的吧:)
我边上一愤青跳着说:“你正事不干跑论坛来灌水,是不是有什么阴谋?”
是啊!20年了俺老人家每天从早忙到晚,为什么吃饱了没事做,跑到这里来显丑呢?
老毛说:“世上没有无缘无故的爱也没有无缘无故的恨”。我给大家讲这些东西一是想提升国内对PLC技术研究的热度,二是把俺这几年死抱住不放的平台研发战略给大家鼓动鼓动,三是搭着卖点俺们的ECS,省得我不出声大家都认为我们没干活:)
这里声明两点:
第一、这里讲的任何厂商的任何产品的技术都是已公开的专利或者从贵产品的技术手册和测试表现推理出来的,如有误导请各厂商技术专家海K。本人时间有限,记忆力也比较差,仓促之中如果有写错的,请大家指出来。
第二、因为我在矩形科技工作,所以所有的例子都会以矩形的产品为例。
笑话归笑话,下面先讲一讲我想给大家交流的一些东东!(小编注:内容比较多,将会分几章发布,敬请关注)
1)前言
2)PLC的简介和PLC的类型,包括各类型的区别和优缺点,同时瞎猜一猜各厂家的类型;
3)PLC对中国工控行业的意义;
4)产业整合;
5)基本功能的实现和应用;
6)通信功能的实现和应用,以及现场总线技术(Modbus、Profibus、FF、CAN、LonWorks);
7)温控的实现和应用;
8)运动控制的实现和应用;
9)行业应用
10)杂谈
二、PLC的简介和PLC的类型
1、简介
开始想写内幕,但觉得内幕就太正式了,我也不知道我有没有耐心写下去,所以改成了技术漫谈,这样没责任一点。呵呵呵,请大家支持我吧。
今天要和大家谈的是《PLC的简介和PLC的类型》,对于前一项在该论坛内已有N多人说过了,这些历史想必大家也很熟了,我也不多花时间了,简单说来就是1968年美国通用汽车公司想要用新的电器控制装置来代替继电器控制装置以适应生产程序的改变。为此该公司在投标书中提出:
1)编程方便,现场可修改程序;
2)维修方便,采用插件式结构;
3)可靠性高于继电器控制装置;
4)数据可直接输入计算机中;
5)输入电源可为市电;
6)输出电源可为市电,负载电流要求2A以上,可直接驱动电磁阀和接触器等;
7)用户存储器容量大于4KB;
8)体积小于继电器装置;
9)扩展时原系统改变最小;
10)成本与继电器控制装置相比,有一定竞争力。
1969年美国数字设备公司DEC制成了世界第一台可编程序逻辑控制器PLC,从此PLC成为了工业现场最常用的控制装置之一。
DEC公司后来被MODICON公司收购,MODICON公司后来又被施耐德公司收购,所以现在施耐德公司宣称他们是PLC的发明者。
第一代的PLC实现采用的是一种叫2901的bit-slice CPUs ,它的手册大家可以从网上下载。
如果大家对CPU和MCU有一定的了解,一定知道每一种CPU都有其特定的设计应用方向,PLC需要的CPU有什么特点呢?
第一代PLC处理器的基本要求:
1)逻辑执行能力强;
2)有很强的位处理能力,有特殊的指令能方便对存储器进行位的读写和操作;
3)符合原来继电器控制并行处理的习惯(注:大多数CPU都是串行处理的)。
同时有这么一个基本的情况:
1)80%的PLC只需要很小的点数(1到128 I/O);
2)78%的PLC的I/O是数字;
3)80%的PLC应用只需要调用20种基本的指令。
2901是与4004(1971)同一代的古董,其中最有名的就是AMD公司在1969开发的AM2901,它在位处理方面有很多特点,比较适合PLC当时的需求,到现在大多数的硬PLC还在使用类似2901架构的新一代的位处理器。
简单说来当时的PLC由一块位处理器+程序存储器+数据存储器+IO+电源组成,这也是现在大多数PLC的核心。当时为了能让原来使用继电器控制装置的电气工程师能尽快的学会PLC的使用,所以设计了梯形图语言。
2、PLC的技术分类
经过三十多年的发展,现在PLC现在有许多的变种,但实现的方式主要分为硬PLC和软PLC两大类:
硬PLC分为并行垂直扫描和串行横向扫描两类,软PLC分为编译型、解释型(虚拟机)两类。
2.1 硬PLC
硬PLC是PLC的传统形式,直到现在大多数主流厂商的高端产品都是硬PLC,因为现在PLC对通信和数据运算能力的要求越来越高,所以大多数硬PLC都采用双处理器结构,一块通用处理器负责维护、通信、IO访问、功能块运算,另一块位处理器负责执行逻辑指令,这也就是为什么高端的像AB的ControlLogix系列速度能达到0.01us/指令,大家可能觉得这有什么了不起的,不就是100MIPS嘛,现在P4都到4G了。
这是大大不同的,因为指令的粒度不同,运用的范围也不同。PLC的一个功能块其实相当于C语言里面的一个函数,也就是说块头比较大,与CPU的指令不是同一个维度。
刚说了硬PLC架构大多有两块处理器,也有可能一块芯片内带两块的功能,其中一块通用处理器一块位处理器。位处理器负责处理逻辑,通用处理器负责通信、驱动、功能块运算等其它工作。同时硬PLC又分为并行垂直扫描和串行横向扫描两种。目前使用两种处理方式的厂商都有,双方的区别在于,并行垂直扫描的优点是:
1)速度快(理想情况下并行扫描比串行扫描快扫描矩阵的行数倍比方说矩形的V80标称速度是0.2us/指令,但她比同样是0.2us/指令的其它使用串行扫描的PLC理论上可以快7倍);
2)可以支持在线编程;
3)编程软件可以省掉大部分的编译工作。
相反串行扫描的优点是
1)比较符合软件工程师的思维习惯;
2)单网络大小不受并行扫描矩阵大小的限制。
大家如果有兴趣可以拆一两块PLC,比方说三菱的Q系列,施耐德的昆腾等,里面常会有一块标有该厂商的MCU,这一块就是他们的位处理器。同时大家可以去国家专利局下载一下各大PLC厂商的专利,其中在硬PLC方面大家的技术其实是差不多的,只是大家都故意把自己的技术说得更模糊,这样一方面可以保护自己的技术,另一方面可以很方便的通过专利认证。
注:这里说的并行处理,并不是说所有的指令都是并行处理的,主要是省掉了与指令和非指令并且或指令是并行的。
硬PLC的技术我不多说了,我贴一个十年前设计的硬解题处理器架构图,内行的人也许可以看得懂。
硬PLC处理器架构图
2.2 软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采用凌动以上的CPU那么速度就不是关键了,更重要的是功能和灵活性,那么采用解释型可以很好的解决在线编程和自定义功能块等功能。相反如果在小型PLC里面,成本和性能成为了关键矛盾,如何在低成本的情况下达到最高的性能成为了关键,同时小型PLC大多不需要很复杂的功能,所以真编译本来应该是最好的选择,但因为可靠性不好做,所以反而是解释型大行其道。
国外小型软PLC有采用西门子的C164和日立的H8,特别日立的H8有丰富的位指令,可以比较好的解决软PLC的瓶颈位处理速度慢的问题,而PLC大多数情况下又都是位处理。国内的软PLC除了几家从国外仿制技术或贴牌的其它的大多使用SMT32,在实现上面编译型和解释型都有,如何区分是编译型还是解释型呢,其实只要看速度就行了,如果单指令速度比较慢的大多是解释型,反之是编译型。
编译型的实现,简单说就是先将PLC的指令和功能块都用C语言或者汇编语言编写成函数库,然后再用C语言写一个框架代码,用户用梯型图编写完程序后,梯型图编译器将生成一个框架文件,将所有指令的函数替代,并调用C编译器,最后生成单片机的二进制文件,下载到控制器,由控制器执行。刚说过其中有一个框架代码,这个框架代码内就实现通信、IO驱动、管理等功能。而逻辑都由函数库的指令组合完成,如果大家有编译原理的基础,一听就会明白,这其实是回避了PLC开发里面最麻烦的一个问题,也就是编译工具。
解释型的实现,简单说就是一个虚拟机架构,厂商定义了一种虚拟机指令,其实这个虚拟机就相当于一个软CPU,它也有它的指令,它的指令比方说是IEC61131-3要求的指令等。虚拟机在运行时从代码中逐一取回指令并通过一个查找表跳转到对应的指令去运行,如果大家对早期的大型机电脑有了解,那么一定会知道,当时的大型机资源很宝贵,一般是很多位程序员合用一台大型机比方说PDP系列,程序员编写完程序后通过终端把自己的程序录进大型机排队运行。因为大型机的厂商不同,各厂商的机器码也不同,所以大家都在大型机上运行一个虚拟机来统一程序员对口的指令。
2.3 PLC技术的选择和对比
矩形刚开始控制器研发时,做的是软PLC(2001年PPC31系列中型PLC),采用的是解释型实现,这在中大型的DCS或PLC方面是合适的,但如果要考虑性价比就比较痛苦了,特别是解释型,国内外采用解释型的小型PLC速度一般都相当慢,比方说光洋的好几个系列以及国内大多数新出来的小型PLC。当然并不是说解释型的就不好,只是要达到同样性能情况下需要更高的CPU成本和存储器成本。
后来在经过一段时间后我们又开发编译型的软PLC(2003年PPC22系列中型PLC)这个系列主要的特点是相对于解释型速度要快很多,同时可以很方便的由用户来增加新的功能块,只需要将用户编写的C函数当成一个功能块来调用就可以了。目前国内有些国产PLC和部分进口的PLC是采用这种技术的,PPC22使用的是486的一颗工业SOC芯片成本比较高,主要是用在工程和大型设备上,相反国内许多小型PLC是用89C51做的真编译,如果用的是标准频率12M的51话,你会很显意的看到厂商标称他们的PLC布尔指令执行速度是1us/指令。
当04年矩形准备开始进入设备配套小型PLC时,我们深入的研究了大多数已有的小型PLC厂商的技术结构和实现方式,发现如果不采用硬PLC结构将无法满足在低成本的情况下提供更高的性能,同时要想实在运行态在线编程,更只能采用并行垂直扫描硬PLC结构。比如像三菱中型的A系列和Q系列都是硬PLC结构,其中A和Q系列都是并行垂直扫描硬PLC,同样采用并行垂直扫描硬PLC结构的还有AB的大多数PLC,除了它的一种小型PLC外。西门子的S7-300也是硬PLC,但S7200是一种软PLC。在了解完后我们还对各家PLC的编解码格式做了一些分析,基本上大同小异,只是为了防止有知识产权的麻烦而有意错分开编码格式。在与小型PLC V80的开发过程中,我们还开发了同样是硬PLC结构的PPC11中型PLC,两者采用同样的软硬件结构,只是功能和性能有一些区别。
所以我们应该说不同的技术应该用到不同的地方,技术上没法说哪一种更好,但从PLC的主流来说硬PLC有着不可替代的性能优势(远比标称速度上的优势要大很多),现在许多PLC厂商像西门子、三菱、AB都有自己的软PLC,但是他们的主流高端产品还都是硬PLC,这里面的细节说起来可能不是一两天能说完的,简单说来就是可靠性和性价比的区别。日本东芝公司自动化事业部的一位专家介参事长与我有过几次比较深的技术交流,他说到东芝下一代的综合控制器仍然是硬PLC结构,比较特别的是他们将多块处理器模块可以运行在同一架构内,一块处理器模块处理PLC,一块处理DCS,一块处理PC,一块处理运控,四者之间可以共享数据,各编各的程序,相互之间互通又不影响,还是蛮有意思的。注塑机数据采集
三、小结
PLC开发的核心点在于一个稳健的硬件平台+高效的执行架构+成熟的编译器,这些核心技术不太方便讲太多,过两年PLC技术通俗化了后,我们再专门写本书来剖析我们这些年的开发成果以及得失。国内从事PLC研究的同志们也可以给我来信来电,我们交流交流。
晕倒,太久没整理了,写起来有点晕,不知道该讲多深,所以有些乱,请大家见谅,接下来几章我一定讲得通俗易懂一点。
原创文章,作者:老铁外链, 老铁,如若转载,请注明出处:http://boke.6ke.com.cn/?p=49155