鉴于最近有较多的朋友谈及虚拟PLC,包括对于PLC未来发展的一些讨论,感觉有必要写写这个话题,与大家分享。首先要说的是请大家留言,提出质疑,以便修订并对此话题展开。
人们似乎都特别喜欢做二元判断,就像小时候看电影就喜欢标记这个是好人,那个是坏人。关于控制技术的世界也总是有着非此即彼的争论。有些认为虚拟PLC将代替PLC,也有人认为自己代表未来-其实,产品技术都有它的历史渊源,以及在特定场景里的适应性,即,边界。
话题1:硬件意义的PLC早已不存在
虚拟PLC的推动者都会赋予它无所不能的力量,以试图颠覆传统,以显示其所代表的必然正义。但,不要把问题想复杂了,技术只是服务于应用,解决问题,而不是为了和谁去竞争。
PLC这个词如果按照“可编程逻辑控制器”这个严格的定义来说,它应该早已不存在了。其实大部分目前被称为PLC都已经不能称之为传统意义的“Logic Controller”。比如SIEMENS的S7-1200/1500、B&R的X20系统及APC控制,RA的ControLogix、Schneider的M系列、Omron的NJ系列、Beckhoff更是很早就称为PC-Control,以及汇川的新款PLC都是已经在基于SoftPLC或软PLC的架构来实现。把硬PLC的这些能力移植到一个软件操作系统上,通过软件来实现。就拿我所在的贝加莱来说,在上世纪80年代,黑色系列PLC就已经有OS9,这是一种“严格优先级”的多任务操作系统—后来贝加莱到90年代使用了定性分时多任务的pSOS+的操作系统。还有早期的GE在DCS里,Rockwell AB在1771的运动控制里也用过OS9操作系统的。所以,那时候就有这种把逻辑任务运行在PLC上的。

99年毕业设计的时候,挺幸运的,我们居然做的是一个企业项目,当时为宜昌化工集团做DAS数据采集系统,我们8个同学分为硬件小组和软件小组,我在硬件组。我觉得这是我上过的最重要的课程(设计),就是它能让你对计算机内部的运行过程特别了解,甚至这是到电路引脚级的运行过程,包括使用Protel设计硬件电路-那会还是DOS版的。所谓的硬件意义的PLC就是这种直接外部电路输入,读取到内部的寄存器后,直接在加法器进行运算,然后输送给DO以物理意义的电平直接输出到晶体管继电器的。这才是真正意义的硬PLC—它的目的是替代继电器回路的,这只有在我刚毕业那会见过这个玩意,但没干过这个活。
02年在一家台湾公司工作也是负责FAMA-就是工厂与机器自动化。当时,一家轮胎企业需要对130多台硫化机联网进而实现数据采集—就是个SCADA。我负责业务,同事Eric负责技术。当时使用的是一个真的叫SoftPLC的PLC,因为这家公司就是叫SoftPLC,平台叫SoftPLC,产品也叫SoftPLC。当时我们用的一台PLC就是Intel Pentium MMX 266 MHz处理器的,并且内部运行JVM(Java虚拟主机-Java Virtual Machine),众所周知,Java编程干这种联网就是非常擅长的。
04年进入贝加莱,那会不是叫PLC的,叫PCC-可编程计算机控制器(Programmable Computer Controller)-后来为了降低解释成本,就统一跟大家一样叫PLC吧。它实际上内部架构是像计算机一样,内部PCI总线连接CPU、RAM、Cache这些—就是妥妥一个PC的架构。但只不过,它并未运行Windows这种非实时操作系统,而是用自己裁剪的Runtime来作为底层操作系统。那时候叫2003/2005系列,其中2003采用的是MC68K的处理器,而2005系列采用的是Intel X86的处理器。它内嵌Web Server, VNC Server,FTP Server,可以实现远程诊断与维护—就这么说吧,这个放在今天都能打的产品,在2013年就已经退市了。
所以,硬件意义的PLC实际上很早就已经不存在了—但是,要千万记得,控制器无论它何种发展,基本的功能它是不会少的—因为,这就是技术的传承。下一个阶段的产品它必须在上一代基础上继承并扩展。
对了,还有一个概念,已经其实没有意义了,就是“指令执行时间”,当我刚到贝加莱的时候,我发现这个PLC居然是没有提及这个“单步指令执行时间”—这个毫无意义,因为,CPU处理逻辑任务根本就不重要。而更为重要的则是整个控制任务的周期—比如你虽然单步指令很快,但PLC扫描一圈的时间却要1mS,这对于逻辑当然没有问题,但对于运动控制就是问题,包括像极高速和高精度的电力采样,以及同步类问题,这就会出现问题。因此,要“确保”周期的可靠,那就让操作系统在多个任务里,按照其不同的任务等级要求,给它严格保障时间的确定性。像运动控制,就给100μS的确定性周期,HMI给50mS的任务周期,以充分发挥CPU的资源。

图1-PLC的循环扫描 vs PCC的多任务方式
我还记得这是20年前,我们介绍PCC时用于和硬PLC进行比较的一张图,难得我居然还能找到20多年前的一个图。采用将不同任务分成不同周期进行分时处理-由操作系统为每个任务进行CPU/内存的资源调度。这是相对于传统的单循环扫描—即,在一个大周期里包含了多个不同的任务。那时候PLC就可以做浮点运算(当时的MC68K主CPU还有协处理器用于浮点运算)、将PLC的中断改为多任务各自用时间槽执行任务。
那时候,我记得有一款CPU是CP382,里面有Intel Pentium III 500MHz处理器,可以达到100微秒的任务等级。

图2- 2005系列的PLC的架构
图2我们可以看到,其实,它的处理器采用Pentium III 500MHz+64MB的DRAM+L2 Cache,包括SRAM用于数据存储,aPCI插槽用于通信卡的集成(Profibus/Profinet,CANopen,DeviceNet,Ethernet/IP,POWERLINK等)-板上集成了RS232、USB、TCP/IP的以太网。这个PLC其实早在2013年底就已经生命周期结束,已经淘汰了12年了。
因此,软PLC这个概念其实它都已经有了超过20年的实际运行历史,不仅是贝加莱的这个PLC,也包括其他主流厂商的PLC。因此某种意义来说,纯的硬件意义的PLC它已经的确是30-40年前的概念了。但这完全不影响现在大量的机器仍然在使用硬件的PLC。因此,我始终说的是,每个人都有自己的角色,以及适用场景。追求先进不是自动化行业的特色,而是追求经济性—能否解决问题,每个人都有自己的定位,它适合干什么,它为了干什么而设计?
话题2-高级语言编程也是很早以前的事了
几年前,因为很多IT圈的朋友,总是想着进入工业界,他们就经常说,你们那些PLC的梯形图编程都是面向过程的,只能写逻辑,没有办法写算法。包括总线还都是ModBus/CAN,Profibus这些。我很奇怪,为什么他们居然还停留在80/90年代的概念里。后来他们也告诉我说他们为了研究工业,还看了大学的教材—我明白了。因为他们如果看大学的教材的话,那基本上和产业实际有着至少20年的差距。
因为有了操作系统,很多事就可以干了,比如你想有个解释器—像BASIC这种解释运行的,而C是需要编译器—有了操作系统。而这个时候,PLC已经不再是算力有问题了,
这跟企业的历史业务发展也有关系,比如贝加莱早期它的很多客户都是塑料机械行业,印刷、包装机械这种行业。塑料机械里非常多的算法控制需求,比如它的熔胶、螺杆挤出的过程、进入模具后的塑化、保压、冷却的整个循环里有非常多的温度、压力闭环。还有一个问题是,塑料机械要求的温度控制响应速度要比流程工业的更高速度响应。刚开始我一直以为是生产节拍的要求快,直到有一天同事跟我说,这个塑料啊,它处于流体状态如果你不快点对它进行加工,它就冷却了。前面进入模具后,你后面的熔融体未进入,它冷却了你都注射不进去或者它的粘度发生变化,就难以那么轻松拿捏,成为你想成为的制品。
这种复杂的工艺过程,它不是逻辑,如图3,我们可以看到一个温度控制里,它包括温度轨迹生成、前馈、卡尔曼滤波、PID控制器等等。
拿一个注塑机为例:它的温度控制包括了非常多的环节持续的温度控制:
1)进料-料斗的冷却水,它用于防止过早熔融架桥现象。
2)机筒加热分区-后段塑料颗粒开始融化、然后温度持续升高建立熔体压力、接近熔体温度保证均匀的塑化、喷嘴的温度防止冷料堵塞。
3)螺杆温度:芯温对于PET/PC材料会防止降解;
熔体实际温度:
4)热流道系统温度:分流板、热嘴-每个浇口独立PID,16-32区、阀针浇口加热-高速成型防止拉丝
5)模温:定模/动模温度,这些温度分别会影响光泽和结晶度、包括冷却速率与翘曲出现。
不仅是温度,包括熔体注射压力、保压、背压压力、锁模压力、熔胶计量压力、顶出/抽芯压力等多个压力闭环控制。
这么多的闭环控制,传统的PLC那些IEC61131-3的梯形图、SFC它没法写,ST算是半高级的,但毕竟还是和C/C++相比没有那么资源丰富,更为灵活。
话题3:为什么会有专用控制器?
为什么会有CNC、机器人控制器这些,因为,在PLC干不了算法的年代。前面说你写注塑机的控制都没法干,那像CNC这种插补运算、机器人的齐次变换(Transformer),就更是没办法用PLC,只能用专用的计算机来设计系统,主要还是为了软件能力。我看过ABB、Fanuc、KUKA等几家工业机器人的控制系统软硬件架构,基本上都是Windows+VxWorks的PC硬件上实现。其实,贝加莱的PLC能干这些,只不过,这些传统的方案它本身也经历了很多年—替换也没有那么容易。并且等我们想做CNC的时候,发现软件的障碍还是挺大的-就是你能给客户更为开放的软件能力,但基操不能绕过。而这些基本的样条插补、圆弧插补,包括磨齿这类高级的专家库则是像Fanuc/SIEMENS/Mitsubshi的CNC系统擅长的。在一些非造型的(车铣刨磨)的“分离类”CNC才会有一些应用机会,像折弯、激光切割类还能做,传统的造型类的就很难突破。
这种专用系统,都是由于行业工艺的需求而产生,而传统PLC无法满足,因此,这些在80-90年代就产生的专用控制器解决了这些问题。像传统上印刷行业有像EltroMat的专用的套色系统、纺织有像乌斯特的匀整系统、燃气轮机有点火控制、岸桥有防摇、起重设备都有专用的防倾翻系统等等,都是因为传统意义的PLC是写不了算法的。
这同样是所有做虚拟PLC的遇到的问题—你可以说你能干AI,但控制那些数十年积累的工艺软件你没有—就只能干那些别人同样起点干的事情。
专用控制器基本上分为三种情况:
1).传统PLC不能做的,像CNC、机器人、印刷套色、匀整系统等,但这些目前已经被软PLC较多的替代。
2).由于量大而自行定制,简化掉不必要的硬件,并将软件集成,像注塑机控制器、电梯控制器、空压机、中央空调、电脑刺绣机、喷气织机、变流器等。这些基本上年机器量在10万台这个量级的,基本上采用专用控制器,开板子模具也是合算的-但从控制难度来说都不是通用控制器干不了。
3).特殊需求的:像沥青摊铺、农业机械、工程机械类抗震、工况苛刻的,需要额外保护的,都采用高抗震、宽温的控制器来做。
有些PLC换个壳子的做法,其实还都属于软PLC这类。
但直到今天,为什么一些专用系统它仍然存在,因为从算力硬件意义上,甚至包括价格上,通用系统完全可以替代他们,但大家为什么还在用专用系统。因为那些工艺Know-How都无法轻易移植—那才是这个机器的核心生命力。
话题4:软件编程的演进
用高级语言编程,就是为了工艺控制算法的设计。而虚拟PLC则可以更多的使用AIGC编程,包括采用机器学习、深度学习来进行一些数据的聚类、学习处理。包括卷积神经网络CNN这些用于图形图像识别、缺陷分析的用途。AI的更擅长处理这些。

图4-开发语言的演进
编程语言的演进,还有原因在于开放性-即,更为开放世界的资源,算法、函数、库,这都是为了降低复杂编程的成本。另一方面就是越来越多的任务集成,使得机器和产线的软件也变得更为复杂,如何快速的“搭建”应用软件系统—这就是越来越偏向于模块、轻量化、复用这些编程方法—像低代码编程就是“高内聚、低耦合”的模块来“配置”应用软件。
而到了AIGC编程就是直接用“语音交互”方式来提供需求给机器—AI智能体会去开发各种程序给你。包括你PDF里的一个公式也可以给你转化为一个代码供你调用。这就是要最终实现“软件的快速构造”,最终的终极目标,我猜就是你告诉需求,软件自动生成自动下载到不同的PLC。这就是为什么我后来发现MTP就成为了一个关键,如果所有自动化对象它统一的遵循MTP,那上位的程序可以统一接口的发给大家去执行。
话题5:PLC行业的真正竞争并非产品
大家总是在讨论PLC是云PLC、虚拟PLC、软PLC、PC-Based谁优谁劣。但是,这种比较在更大意义是“口水之争”,并没有实际意义。因为,真正的自动化公司,它的未来一定是在行业Know-How的实力上。因为,如果比较硬件能力,我说富士康可以帮你们把PLC/PC这些硬件给你做的妥妥的,还便宜,应该问题不大吧?如果说做软件操作系统、AI,自动化行业跟纯软件的这些公司比也是有差距的。
所以,自动化行业真正意义的能力在行业,就是说你真的懂得这个领域的知识,并且,在你的系统里通过“APP”形式封装为易用的模块来快速搭建机器和产线。
所以,以前我对这种整天扯产品是什么PLC概念孰优孰劣不是很感兴趣—不过,现在这个趋势越来越明显,软件更为重要了,尤其是到了AI时代,大家又开始吹自己的AI硬件了。我觉得还是得收敛聚焦一下,因为如果比AI算力、软件,自动化你还是干不过原生的AI企业啊!你比较这些就是拿你的弱项在跟人家普通的操作在比。
我记得前年M博士带我们去看光刻机,ASML 90纳米工艺的,我发现它用的是VME总线—这个久远的总线应该现在大家都没有听过了。我读书的90年代倒是课本里提及过。包括我看日本东京电子的划片机,那界面就是熟悉的DOS界面,你要这么说,现在的PLC都这么牛了,他们怎么不去换成新的?因为,它不敢,很多工艺架构的验证都是在原有基础上的,你换了就得重新验证。基于DOS那种单线程,包括硬件软件架构全部更换,这个是很可怕的事。
所以,自动化行业谁在炫耀锄头,那就不是个能种好地的主。
话题6:PLC和DCS到底什么区别?
还有一个就是经常会有人问DCS和PLC什么区别,这其实是两个世界。一般来说,DCS它其实工程组态和运行(Runtime)都是在Windows/Linux平台的。虽然因为风险隔离可能采用了不同的物理服务器实体,但其实在软件意义他们是相同的平台。但PLC的开发主机和运行主机是分离的—你在Windows的电脑上开发了PLC程序你得物理意义下载到PLC实体,它独立运行在现场,有自己的系统引导、资源调度的操作系统,而且是这种“周期性”的操作系统和运行机制。
表1-PLC和DCS主要区别

PLC主要用于离散机器,为啥叫PLC,不就是因为PLC是逻辑,逻辑对应的是离散数学。在数学意义上而言,PLC的主要采样和运行参数都是离散值。比如逻辑、速度、位置、扭矩、时间,这些都是离散值。而DCS,就像我是化工测量仪表专业,我们入学老师就讲“四大参数”:温度、压力、液位、流量—这是典型流程工业的核心参数,你发现没,它都是“连续值”。
从我个人的观点就是这两者是区分PLC和DCS的关键。至于流程工业会用PLC,对于小型的装置来说,PLC也够。你说流程工业是不同于单机的—比如,在流程工业不大用机器这个词,但“装置”它就是一个机器,只不过,像一个炼化厂,它就是“Machine is Factory”,机器即工厂。它集成了离散处理和流程控制。
话题7:究竟虚拟PLC和SoftPLC、PLC这些有啥区别?
虽然网上是有些关于各种PLC的对比,但我还是比较反对那种缺乏“系统”的分析,以及仅仅数据类的比较。我们需要全面的去看待。
仔细想想,无论是SoftPLC还是虚拟PLC或者你称为云PLC、AI PLC,反正你随便叫都可以。但是,这都能解释--其实你想“软件运行在哪里是不是都可以?”,比如PLC的任务它运行在一个嵌入式的实体上,还是一个PC上,或者一个服务器上,还是一个云端服务器上—这重要吗?
包括早在10年前,我们有位同事在PLC上用AI算法写了个倒立摆,让那个自己学习参数去。还在瓦楞纸送纸上用遗传算法写参数学习。我当时的认知里,难道PLC也能干AI吗?后来这位同事说“那AI不就是一段程序吗?你用C写还是也用Python都可以写啊!”,只要它推理要求实时性不高,像我们这种ATOM的处理器的PLC它也可以处理。不行用个PC,PC不够加个AI加速器,实在不行OPC UA发给云端—你看,其实,有的是办法。

图5-虚拟PLC的结构
你要是质疑它行不行-比如“确定性”能否保障?如果你能保障确定性,并且你的网络确保数据满足10的-9次方的丢包率要求,达到100微秒甚至更低的刷新。其实,你在哪里跑都没关系,你就是把服务器部署在月亮上,你只要能做到这些我们说的,你就可以用。
做不到怎么办?那现场有各种应用,你就干个SCADA也行啊!这就叫“护城河”—退而求其次的事我也能干。
总结就是:软PLC是为了解决传统硬PLC在算法设计方面的能力欠缺,虚拟PLC则是来自于对数据和AI的需求。
PLC、虚拟PLC和SoftPLC的区别可以用一张表来表述。这个表我让KIMI帮我对比一下,我自己再添油加醋列出来的。
表2-各个PLC的差异

虚拟PLC的核心意义在于“解耦”,这是一个典型的End User的需求。因为,在终端用户的视角,它希望一个与硬件独立、操作系统独立的控制系统,这样,它不受任何厂商的私有硬件或软件“绑定”。基本上,在End User视角来说都是这样的。其实,大厂也不一定愿意去支持这种,这会使得其在系统中缺乏“独特的垄断”,在欧洲。奥迪汽车的EC4P(Edge-Cloud 4 Production)要求大厂也必须遵循这种“软硬件解耦”,大厂不得不去开发,否则就会损失奥迪这样的大客户。
当然,自动化里的技术都是来自于客户需求+横向的技术支撑。
实际上,像各个领域的大型终端用户,随着智能集成的越来与高的要求—这将会是一个较为“明确”的需求,即,他们可以承受在软件授权、工程服务方面支付费用。但不愿意被某种私有技术绑定—理想的,就是我这里随便大街上买个电脑或者服务器就能干这个活,然后网络也别各家公司各自有一个网络,就一个网络,我们公司只需要维护一个网络就好。
AI任务通常需要“全局”,即,将各个单元的数据采集,并进行历史数据分析,在机器学习、深度学习方法来训练一些模型,算法,来解决全局的优化问题。这使得虚拟PLC本身对于“控制”的关注不是其重点。在实现上它会采用像这种虚拟机、容器化技术来实现应用的搭建。
但是,要实现这种跨平台和垂直方向的这种应用跨越—OPC UA FX就成为了必然的一个需求。
虚拟PLC它的成熟度还较低,包括在功能安全、信息安全的集成、稳定性可靠性。据IoT Analysi认为它需要在2030年才能真正较多的成为一个成熟产品应用于工业,并能够占据约20%左右的“新增”市场。
话题8:为什么都在争“虚拟PLC”?
越来越多的厂商在争所谓的“虚拟PLC”的领先地位—这很显然,传统的优势企业在这方面的声音反倒小一些。倒是那些在过去的历史里不是那么主流的厂商目前在虚拟PLC上特别的喊声大。这就像造车新势力进入这个领域后,就会整天用“遥遥领先”这种词来制造气氛。
第二种就是制造焦虑,传统的PLC如何封闭、写算法不方便,其实,这些都是来自跨界过来的,他们看到了这些传统方案的一些所谓的“劣势”,但他们又不了解这些设计是在过去的约束条件下设计的。比如,为了低功耗,以及可靠选择了RISC架构的CPU,为了解决确定性,在原有的以太网上做了裁切…每一个设计,其实他都是作为一种“经济性”的选择。
但是,这种纯粹讲所谓技术的领先在自动化行业它其实意义并不大。因为,工业领域的创新它并不追求技术领先性,而是追求可靠与经济。
另外,自动化企业的核心竞争力,并不是来自于这种产品级的能力。而是来自于它在与用户的需求结合过程中产生的Know-How,并通过封装,嵌入在这些开发环境中,让客户“软件复用”。比如它做了很多卷材的收放卷张力控制,自动化厂商会把这些已经经过大量验证的张力控制给封装好,让用户配置一些诸如卷取方式、卷径、材料、摩擦力等参数,然后就快速搭建一个材料放卷单元应用。然后又把温度控制针对像注塑、挤出等场景的应用—这些一个个封装的工艺Know-How才是自动化行业企业的竞争力本质。

图7-自动化行业未来的服务竞争力
以前你卖个PLC硬件,你就比较Datasheet就可以-看谁天下武功唯快不破,不过,现在你说你快,也不重要—谁不快呢?你说你稳定—谁不稳定呢?你说你存储大-我把云给你拿来存储够用不?你说AI-你跟英伟达签了全球独家供应的协议了?
现在的客户,它越来越复杂的工艺、更快的交付需求,他们需要你自动化厂商能够提供的就像Palantir那样的前沿部署工程师,解决特定问题。
因为,随着硬件和软件的快速发展,现在搭建一个控制器要比30年前更为方便。就像今天很多企业都可以来造车一样。上游有芯片厂商如Intel、NXP、ARM等,FPGA的XILINX、ALTERA等、功率器件有英飞凌、三菱等,都给你做好“方案模块”—手机里的联发科MTK就这么干的吗?在软件上像CodeSys、Infoteam、KW-Software能够给你提供软件架构,适应下面不同的CPU。在OPC UA开发有Unified Automation等公司为你提供OPC UA开发的SDK,你要开发TSN也有像TTTech这样的为你提供相应的开发方案。你想做个伺服驱动器,现在的功率参考电路都能获得。
所以,自动化行业的竞争,你硬件、软件都开始“快速”采购搭建的情况下,你想你一个自动化公司究竟的竞争力在哪里?要拼硬件—这谁都有可能去做的比你更好,或者,任何一个厂商都可以去快速的干这件事。那你凭什么在自动化行业生存呢?
一定是工程能力—快速的把握用户需求,并借助于已有的模块为用户快速搭建应用系统,让机器快速的卖到现场,并且稳定可靠,不出问题。出了问题自动呈现、分析,并提供快速的解决问题的路径,以及人员的服务。
我得再说一次,自动化它终究是个解决问题的行业-它不能解决问题,追求虚拟PLC,你就是搞了个元宇宙PLC、太空PLC、大语言模型PLC,它也不一定能活下去—不过,这个世界总是很大,总有你的用武之地。至于谁主沉浮,还看天下英雄,谁能为世界谋取福利的英雄格局。
来源:微信号 说东道西
楼主最近还看过


客服
小程序
公众号