“软件正在吞噬世界,全部过去特定硬件实现的功能,如今都会经过软件实现”,传统封闭的工业控制系统,其经过特定硬件实现的功能在工业互联网或工业4.0时代都将被软件所取代。前端
我一直在关注当前和将来PLC虚拟化发展状态的演进,虚拟化技术的伟大之处在于,在过去六十年的IT中,没有任何其余进步能提供比虚拟化更多的可量化优点。从历史来看,PLC和PC的祖宗是一家人,他们都是经历继电器时代发展演变而来。既然IT在虚拟化中取得巨大成功,同是一家人的PLC为何不能享受虚拟化的巨大优点?编程
值得再次强调的是,本文所指PLC虚拟化绝非软件版本PLC或安装运行在虚拟机里面的PLC软件。软件PLC或者“SoftPLC”实际上是一种失败品,这些仅仅是控制系统厂家在控制系统和信息系统之间进行整合尝试的失败品,他们看到了信息系统通用平台巨大的好处和成功,可是很惋惜推出的系列“SoftPLC”尝试并未能进入市场。安全
本文所指PLC虚拟化,我认为能够这样定义:PLC虚拟化,是将传统专用的PLC硬件功能解耦,利用软件化的方法和通用的标准模块化硬件仿真或模拟看起来和行为相似于特定PLC硬件的系统。本质上来讲,基于PLC的特殊专用硬件环境,PLC虚拟化最好的途径是PLC供应商主动提供PLC的虚拟化版本,即拥抱现有的虚拟化技术。实质上,有些PLC供应商也会在一些大型的项目中,为了下降客户的控制器成本或维持控制器的高性能要求而给客户部署虚拟化版本的控制器,这些控制器能够运行在商用IT硬件环境上。这是PLC供应商针对自身的控制器进行虚拟化以适配IT虚拟化技术的结果。一般来讲,这些可以虚拟化版本的控制器不会出如今市面上,也不会出如今供应商的产品目录中,甚至都不会有任何产品编号。服务器
回到咱们的第一个疑问,PLC能享受虚拟化的巨大优点吗?答案固然是确定的,之因此咱们看不到,是由于任何事物的诞生和发展必定有其前提条件和土壤,PLC虚拟化亦是如此。网络
科学技术的革新始终在推进时代巨轮轰鸣向前。PLC虚拟化的发展也终将会随着相关软硬件技术、社会价值和商业模式的发展成熟而顺理成章。架构
随着虚拟化PLC的软硬件技术的成熟,好比在技术和工程层面,经过软件可以实现针对PLC系统的处理器、ISA总线、各类专用硬件卡、网络IO等的仿真和模拟实现,这些基础能力构成了PLC虚拟化实现和发展的技术前提。ide
那么,现目前咱们如何针对PLC进行虚拟化运做,业界在经过什么技术在进行PLC虚拟化的技术尝试呢?在旧文《工业控制系统的发展趋势-PLC虚拟化和软件定义》中,咱们描述了目前包括西门子等在内的控制系统供应商在进行的研究项目,他们将PLC执行环境与I/O模块解耦,并将PLC执行环境标准化、模块化、虚拟化的实现。并经过软件定义将PLC的逻辑抽象出来,利用软件定义网络的实现思路,经过一个应用程序实现针对PLC执行逻辑的程序开发和管理,让应用程序定义硬件PLC的功能。也就是将PLC的逻辑控制、程序存储和IO模块分离,利用应用程序实现逻辑控制部分。从技术角度来说,这是针对PLC系统的“硬件重构和软件定义”。硬件重构和软件定义是基于虚拟化技术之上更高级、更抽象的资源和数据自动化。控制系统厂商试图弯道超车,直接进行PLC设备的硬件重构和软件定义,推出具有适应工业互联网或工业4.0时代的新型PLC设备以替代传统PLC设备在新时代浪潮下的适应性问题。在旧文《ALC--软件定义架构的PLC》一文中,我简单介绍了目前业界基于上述研究推出的一系列过渡成品。模块化
那么为何控制系统厂商会直接忽略虚拟化现有PLC设备,而推出新的架构形态的PLC设备呢?虚拟化现有PLC设备很难吗?性能
从技术实现的可行性角度分析,咱们若是须要实现PLC的虚拟化,须要作到如下几点:区块链
1、可以在通用架构上运行虚拟化的PLC CPU;
2、可以解决交换以太网的时效性问题;
3、可以针对PLC的专用硬件虚拟化成标准化的IO卡运行在通用架构上;
4、可以支持如今的商用电源,好比220V;
5、可以支持冗余的商用IO卡/控制器。
也就是咱们须要将PLC架构中专用的部分经过仿真或模拟,将其运行于标准架构之上。首先咱们须要建立虚拟机同样的一个虚拟PLC软件容器,将PLC装进去。这个虚拟PLC软件容器和虚拟机同样,具有特定控制系统供应商的CPU、ISA总线、IO卡等PLC特殊的虚拟硬件设备。
从PLC处理器架构层次的虚拟化上来看,PLC虚拟化首要要解决的就是在经过架构上运行PLC CPU的仿真和模拟。因为西门子S7-400已经被社区普遍研究和逆向,所以本文采用西门子S7-400 PLC进行举例说明。西门子S7-400采用两个英飞凌TriCore处理器用于运行PLC的处理逻辑。而现有的仿真模拟器QEMU就支持对TriCore处理器的仿真和模拟,那么是否是意味着利用QEMU能够运行仿真西门子S7-400呢?若是是西门子官方来作这件事情,我相信只须要西门子研发部门对西门子S7-400的固件进行从新编译,或者对QEMU添加特定的西门子S7-400配置文件支持,便可在QEMU中运行西门子S7-400,我也相信西门子内部会存在这样相似的模拟器。从外部厂商的实现角度上来讲,因为不知道这种架构是否通过西门子的特别修改,所以实现起来会特别困难,可是在技术角度上是能够实现的。若是西门子对西门子S7-400的英飞凌TriCore处理器进行过特别的处理和修改,那么外部厂商在QEMU实现仿真和模拟西门子S7-400的时候,须要在QEMU中构建一个扩展示有QEMU TriCore配置的新配置文件来适配西门子S7-400的特殊修改项。
从PLC ISA架构层次的虚拟化上来看,S7-400在TriCore架构之上运行一种虚拟机。这个虚拟机实现了针对西门子机器代码与处理器机器代码的翻译和转换。在TriCore ISA中,无条件跳转以机器代码字节0x1d开始,而PLC虚拟机内部的相似无条件跳转以机器代码字节0x70 0x0b开始。虚拟机内的机器代码称为MC7,目前MC7尚未在公网上出现或泄露过固件版本,还没有被外部各方彻底进行逆向掌握。所以实现ISA的虚拟化是无比困难的。除非找到一种很好的设计可以解决他们之间的翻译和转换,并经过软件对其进行翻译和转换进行虚拟化或反转。或者经过设计硬件级别的ISA来解决。这个就有点相似于IT虚拟化技术中的二进制翻译技术、半虚拟化技术和硬件辅助虚拟化技术。可是因为PLC设备各个厂家的ISA的标准设计不一,世界上现目前都还不可能出现一种标准化的ISA虚拟化技术可以彻底的虚拟化大部分控制系统厂家的设备。在IT环境中,这些虚拟化技术之因此成功,是由于IT硬件的标准已经趋于统一,具有足够的技术条件来实现虚拟化的翻译和转换。
从PLC 运行程序架构层次的虚拟化上来看,咱们须要将S7-400固件彻底克隆成为QEMU映像,并经过QEMU TriCore处理器和专门的S7-400 QEMU虚拟机配置文件进行虚拟PLC机器的建立和运行。这些虚拟机配置文件的包括S7-400的辅助硬件设备(如以太网和I/O等)。可是因为缺少相应的资料,得到包含完整固件的克隆(包括引导加载程序和完整的RTOS)也很困难。所以,除了CPU和ISA以外,构建西门子-S7-400 PLC虚拟化的还需构建西门子S7-400的辅助硬件设备(如以太网和I/O)的配置文件。
综合来讲,若是咱们须要在现有的虚拟化架构之上构建PLC的虚拟化技术,咱们须要解决的问题有不少,而且针对每一款PLC型号的PLC系统咱们都会构建相对应的虚拟PLC虚拟机和虚拟硬件。总体的仿真或模拟流程以下图所示:
可是在PLC型号众多的现状下,试图采用这种方式貌似是一种吃力不讨好的解决方案。
那么尚未其余的PLC虚拟化解决方案?除了上述技术路线比较陡峭以外,目前业界的另一种方式是经过纯软件的方式实现PLC的软件化模拟,开源OpenPLC就是其中的一个典型表明。OpenPLC的概念也是在实际的产业应用中产生的。1995年,在中国的马鞍山钢铁公司的动力调度中心,面临一个题目,动力调度中心要监控马钢来自发电厂、水厂、煤气厂和动力厂(负责电力输送)的各种能源和动力信号,但这四个数据来源,包括这些能源与动力的输送的管网所涉及的上百个变电所、增压站和泵站的自身的控制系统是不兼容的,有的仍是专用系统,不只没有协议,连开发人都已经没法找到。除了通信不兼容外,连这几个系统的控制结构也截然不同,电厂是相似于DCS的结构,水厂和睦厂是PLC结构,动力厂是SCADA结构,对集成职员理解系统也造成了较大的困难。该项目最后当然没有用OpenPLC解决(当时尚未),但该项目的需求致使了OpenPLC的诞生。
从OpenPLC的论文中,OpenPLC针对过程控制和离散制造业广泛存在的,各种控制要求不一样的系统的互连的题目,做者提出了设计一个新型的开放式控制系统的构想。因为该系统的目的是要尽量地适用各种不一样的应用场合,所以,定名为开放式可编程控制系统,而英文则是Open Programmable Logic Controller,缩写为OpenPLC。该系统从1995年开始构思,到1997年基本明确设计思想,几条主要的设计原则以下:
1、OpenPLC应该是一种以PC技术为基础的系统,尤为是在可以发挥出PC特点的场合(如网络,与外界的链接,优化,专家系统,操纵界面,数据监测,文件记录和打印等),工做由以PC为基础的系统来承担;
2、在底层,须要高可靠和实时控制时,由分散控制系统承担,但它不一样于现场总线,它不是基于仪表的系统,而是基于系统的系统,仪表仍是普通仪表,只是将I/O和控制单元放在了现场,传回中心控制室的是数字信号,而不是模拟的4—20mA信号,要求原来的仪表仍然可用;
3、在I/O点较集中的场合,能够采用相似于DCS或PLC的机柜或机架,内部模块用总线或网络链接,整个系统应该具备较高的可靠性,同时有较好的兼容性和开放性;
4、系统应该具备真正的分布性,前端可集中,也能够延续几百米、几千米甚至几千千米(在地球的另外一端),为此,系统必须具有与TCP/IP兼容的协议和WEB服务器;
5、规模也能够从小至几十点,大至几千点甚至几十万点。系统I/O规模的增长不该该致使系统的大的改变。
OpenPLC是一个开源实现,能够在Linux上模拟PLC,能够在通用的架构上使用。在现有的虚拟化技术中实现OpenPLC很是简单,由于它能够轻松地在Linux和x86架构上进行编译和安装。目前的OpenPLC通过多年的发展日益成熟,已经逐渐的应用在一些领域中。
综上所述,无论基于新型“硬件重构和软件定义”的新型PLC虚拟化仍是基于传统的PLC设备进行虚拟化,亦或者纯软件实现的OpenPLC等虚拟化技术,无不昭示PLC的发展趋势须要在新的架构下面临的蜕变与重生。随着技术的发展,PLC虚拟化的软硬件技术成熟度趋近于产品或技术解决方案的工程化应用,构建PLC虚拟化的条件开始陆续具有,PLC的虚拟化就必定会到来,只不过不必定叫PLC虚拟化,或者那个时候回是一个崭新的概念。
PLC虚拟化技术的实现,可以带来的优点和好处显而易见,在此我无需赘述。而基于PLC虚拟化技术所产生的巨大的社会价值和商业模式,才是工业互联网或工业4.0时代,工业行业取之不竭的源动力。
所谓的巨大社会价值,指的是从用户角度出发,PLC虚拟化的采用使任意组织和我的得以站在巨人的肩膀上开展业务,避免重复造轮,极大提升了软件与服务构建各环节效率,加速了各种应用的架构和落地,而云端按需启用和随意扩展的资源弹性,也可以为企业节省巨大成本。
所谓伟大的商业模式,指的是PLC虚拟化技术出现后,基于PLC虚拟化的产品和服务形态很是适合新时代的工业互联网或工业4.0须要,标准化、模块化、人工智能和软件定义的控制系统核心大脑大幅下降了客户的进入门槛,而技术基础设施架构方面的稳定性、灵活性和便捷性又带来了较高的客户粘性,再加上云计算、大数据中心所能带来的规模效应,这些因素使得基于PLC虚拟化的物联网、工业互联网可以成为一门好的生意,对应着一个极佳的 B 端商业模式。
PLC虚拟化不只仅在业务层面取得成功,也会在根本上改变现有工业控制系统的安全架构和安全治理模式。就像传统信息系统的虚拟化取得的优点同样,PLC虚拟化堆栈在网络安全的优点无与伦比,咱们能够基于SDN网络构建PLC的网络IO,经过对东西网络流量进行精细控制,构建精细化的全流量检测、全功能转发以及“零信任网络”环境的安全网络链路,甚至可构建基于区块链的工业安全区块体系。此外,在PLC的内部和前端,咱们能够从容的放置和定义工控软件防火墙对进出PLC的流量进行安全防御。所以,PLC虚拟化的架构应用在网络安全角度看来,会比如今的工业控制系统健壮。