文章

容器化推动工业自动化软件质的飞跃

2020-03-16彭瑜

899阅
在工业自动化领域的软件开发过程中,推广和采用云计算容器化技术,将是一个不可逆转的趋向,它必将在推动下一代的开放式DCS/PLC系统的软件实现中起着难以替代的作用;在制造系统向分布式、扁平化发展的过程中,容器化及其编排技术,对工业自动化领域的软件开发、管理和维护具有重要的应用价值;在智能制造和工业互联网、工业物联网的发展中,广泛使用Docker和Kubernetes将是让“百万APPs”落地生根的利器。
        自Docker在2013年成为普遍采用的容器化技术以来,这一云计算技术成了数字化业务转型的一种关键手段。诸如优良的移植性、系统资源的高效共享以及具有广泛的支持等特性,使它受欢迎的程度不断在增长。在2017年3月发表的Forrester研究公司的报告中就指出,66%的机构都有采用容器技术加速了开发效率的经验和体会,75%的公司在应用部署的速度上取得了中等程度乃至显著的提高。这些正面的影响在SolarWinds新近发布的“2018IT趋势报告”中也给出了如下积极的印证:有44%的被调查者将容器技术列为最重要的首选技术,38%认为容器技术将是今后5年内最重要的优先技术。这些统计数字证实,对容器技术的兴趣和采用必将与日俱增。
        要成功地部署容器,必须了解影响这一技术的方方面面,特别是编排对管理容器技术的生命周期有很大帮助,容器化技术采用的越多,容器的编排将变得越来越重要。这是由于IT管理人员广泛采用流水线的管理方式,并要求对节点集群运行容器软件来实施调度、服务发现和监控检查,容器编排正是针对这些日常必须关注的焦点问题的解决方案。
     工业自动化软件为什么要容器化?
        自从工业4.0将信息物理融合系统(CPS)的概念引入工业生产系统,我们就经常看到图1所示这张图。 工业生产多层递阶系统的扁平化趋势

图1 工业生产多层递阶系统的扁平化趋势

        图示左面揭示了生产系统的多层递阶逻辑结构,右面则反映了随着工业4.0和智能制造的发展,这些不同功能的软件之间的通信关系以及数据流动的关系,不再遵循多级递阶的方式而扁平化,可快速协同直接交换数据。于是构成基于CPS的工业生产自动化系统。
        信息物理融合系统(CPS)在第四次工业革命中起着巨大的作用,而包含在CPS中的物理部件毫无例外地内嵌着控制、监控和协调的软件。与传统自动化系统相比,运行于实际的物理部件中的软件更为复杂,而这些部件之间的相互连接也随之大大增加。
        当控制软件的重要性和复杂性增加的时候,其升级的频率也必然增加。大规模客制化要求制造厂商在生产过程中按照客户的专门要求进行改变(例如在数控机床中加入更新更好的路径规划算法)。现在已经有可能运用监控和机器学习工具来预测软件升级变化带来的加工过程的改善。但是如果每一次软件升级都要完全停机,无疑在软件升级的同时造成了相当大的损失。这就提出了一个无法绕开的问题:在软件升级时应尽可能地局部停机,甚至完全不停机。
生产系统通常服从如图1所示的多级递阶结构。系统的底层直接与硬件通信,并将相关的数据向上层发送报告。
        传统的递阶系统不仅用做各层部件的逻辑结构,实际上也同样表现为多层递阶的部署。所有层级的部件通常都按制造厂预置的IT结构部署,网络的基础架构里实施的数据流动也按金字塔的定义进行。
        随着出现大量的云计算和信息物理融合系统,这种严格的多层递阶系统已经软化。各个组成部分可以仍然按金字塔的层级分类,但他们的部署变得更灵活,例如部署在云上。这些组成部分之间的互动和相互作用也变得不那么紧密了,以至于数据可以根据要求来进行流动和传送。
        然而,实时的组成部件通常没有纳入这类方式,它们依然由专用的平台来开发。一方面希望将这些部件转移至云基架构的同时,依旧保持传统控制系统因安全需求所必须具备的可靠性;另一方面既要创建为高级应用场合增加灵活性和易于部署的环境,又要填平与传统的大量实时控制软件之间的鸿沟。这就提出了在实时控制中如何满足上述要求的需求。
       对于运行在云上的各类应用软件,只要将庞大的应用软件拆分为更小的服务,且各自独立运行,就可以获得灵活性。在没有显著过载的前提下,运用容器化的操作系统可以将这些服务相互隔离开来。对于非实时的应用软件,容器化已经成熟地进入广泛运用的状态。那么对于实时的应用软件如何运用基于容器化的结构呢?
        其实在云端运行工业应用软件已经有几种架构存在。早在2013年Gievhchi等人提出了一种PLC软件的云基架构的多租赁支持(multi-tenancysupport)方案,其在水平方向是
可扩可缩的。他们将实时软件分为软实时、严格实时(firmreal-time)和硬实时,所谓的实时是指不使整个系统失效的最大时限。显然云基系统是绝不能满足硬实时要求的。在一个有30个用户租赁的系统中,这一架构产生的往返时间低于1000ms的占99.72%。该架构以及其他的几种架构还是侧重于仿真运行传统的软件,结论是目前在云端运行工业软件的工作具有几百毫秒的时延。上述的工作只不过表明这一方法的可行性,但远没有解决实际的问题。
    容器化的发展简史
        在1990年,当像SunMicrosystems这样的公司在建立超大规模的UNIX服务器时,人们就开始开发容器技术了。从运行和管理的角度看,容器技术易于在大型计算机内将应
用软件划分成若干个小的模块,而不是让一个大的应用软件全部捆绑在一起运行。原始的容器概念就是在许多应用软件之间运用划分的方法,使管理大型的服务器更简单方便。容器技术的缺点是实现起来必须具有UNIX系统管理的高度技巧,这对当时的大公司SunMicrosystems、Oracle、SAP等来说并不是问题,但却限制了将容器技术应用于相对小的公司。当容器技术逐渐变成可在Linux中应用以后,情况就大相径庭了,其应用变得非常普及。这归功于一个风险投资推动的软件工具,大大简化了容器技术在Linux中创建、部署和运行的过程,这个软件就是Docker。2013年Docker正式宣布为开源软件社群,此后的5年时间内容器软件受到云计算和企业计算两方面的青睐。更令人高兴的是,前两年许多工业自动化产品已经将Docker配备到系统集成的软件工具中,使得最终用户能够方便地将自己的应用程序集成到他们的产品中。
电信行业正在进行全数字化,其中一个重要的工作就是把所有的模拟信号处理转移到网络前沿的边缘设备,所有从无线基站通过中心局交换机来完成的其它服务将完全由软件来完成。这一结果将带来高度灵活的基础设施,在增加新的服务时不必改动硬件。多年来电信网络的运营商一直在设想开发具有实时要求的大规模的软件定义的基础设施,其关键技术支撑就是容器化。
非常值得强调的一点是,可以缩小容器的规模使其运用到很小的系统中。Docker运行时软件已经可装到像树莓派这样的具有ARM核的单板计算机终端中,用来支持工业IoT的应用和服务,这给工业自动化带来许多新的可能性。
    Docker和Kubernetes
        开源软件领域正在大量汇集到一个单一的容器管理和部署的工具上,即所谓的容器编排工具Kubernetes(简称K8)。Kubernetes原来是Google内部的用于开源容器管理部署的工具软件,在Google的SaaS产品用容器化技术实现时获得成功,而且可靠性很高。Docker和K8作为管理和构建容器的技术,目前在企业软件领域是最热门的开源产品,这一强有力的工具组合对于在异构的环境中(如工业自动化)部署分布式的各种应用也极有价值。相信在工厂运营或工程经验的基础上也可以讨论该技术在工业界的潜在适用性,以支持未来的自动化专家与IT专家合作开发种种应用。
        如图2所示,在开发一个应用软件的过程中,先进行APP的代码开发,然后运用容器化技术将APP置于Docker的环境中,并由K8编排进行部署和运行管理。

工业APP运用Docker和K8进行容器化

图2 工业APP运用Docker和K8进行容器化

        “容器图像”作为创建一个容器的基础,是Docker或其他容器开发工具所使用的一种分发文件的软件手段。在使用容器图像时,软件的分发和部署是用户驱动的和应用驱动的,而不是软件提供者驱动的,这样可在很大程度上减少最终用户的集成负担,使他们把更多的注意力集中在软件的应用上。与采用容器技术相反,如果采用软件打包管理程序,由软件的提供者(而不是由使用者)驱动进行软件分发,则最终用户或系统集成商需要承担责任,确保相关的正确版本汇编,并要正确设置所有运行时的组态参数。通过打包管理程序交付软件实际是为将要集成的软件提供模块化的单元;而容器图像则是从最终用户的角度提供单一的、但全集成的应用软件。正如前面说过的,联网的设备都是由嵌入式系统构成的,特别是对于那些高价值的设备和服务,将来都要进行远程监控、管理、升级和提供服务;而它们的软件栈将需要以高度自动化的水平来提供服务。
        因而,未来的嵌入式系统包括工业自动化中的嵌入式系统,肯定需要Docker和容器化的编排工具K8来支持。图3表示了Docker运行管理平台需要用像K8或Swarm这样的APP调度和部署工具来运行管理众多的节点集群。

 Docker企业版管理平台及其运行节点集群

图3 Docker企业版管理平台及其运行节点集群

    容器及其编排对工业自动化的价值
        容器技术为工业自动化的最终用户和它们的供应商在设计、配置自动化系统时提供了几个重要的价值:
        1)将注意力集中于应用,而不是集中于系统。这有效地将应用开发与执行计算、存贮和联网控制的系统脱钩,使得应用开发者和系统支持专家能够将他们的工作解耦,而且受到的干扰很小,其价值超越了系统的寿命。
        2)为分布式系统创建和管理容器图像的存贮库提供了一个很好的解决方案,可以不必顾及不同的硬件、处理器架构、操作系统和支持软件的相关依存性所带来的复杂性。
        3)容器图像文件的分层特性使得供应商和最终用户能够有效地进行容器创建,并且可以通过迭代来加强存贮库。处于容器特性底层的往往在许多应用中会长期用到,而处于容器特性上层的往往是某些特殊的应用,需要经常变更或再开发。
        4)在一个应用可部署到生产环境之前,开发者可以自行创建容器的开发和部署环境,大大方便开发工作的开展并加强其测试工作的效率。
        容器的编排同样也很重要:
        1)编排提供了对系统管理的能力,如大大简化了对系统伸缩的控制。
        2)编排提供一种陈述式的分布式系统的组态,这种组态就是分布式系统所预设的状态。运行编排程序是为了实现和维护这一预设状态,使分布式系统达到很高的应用可用性;当分布式系统受到部分干扰和破坏时,编排程序可使系统自动恢复到预设状态,即具有“自恢复”的特性。
        3)较之命令性组态工具,陈述式系统组态不容易出错,因为命令式组态工具执行纠正动作时,必须要求先查找执行表在哪里出错。
        4)陈述式系统组态与控制系统的组合,使得系统只需细微的改变即能实现回滚(roll-back)功能,但软件打包管理程序、嵌入式系统技术和现有的DCS产品不可能用简易的方法实现这一功能。5)围绕容器构建编排程序,可以让我们把主要的精力集中到最终用户所关注的应用性能上。因为每个容器就是一个应用程序,因此没有必要从许多不同的应用程序中专门安排信号或运行记录去侧重于一个特定应用的诊断。
        6)着重于应用而不是着重于控制系统本身,也在许多其它方面带来一些边际的利益,例如容易正确地创建、部署和维护应用,同时使得应用运行时的问题与控制系统自身的问题相互分离。
    容器化在工业自动化中的应用
        容器化技术已经对工业自动化产生了一定的影响。据不完全统计,在2019年的汉诺威工业博览会上有750家厂商、超过2000种产品用到了容器化计算技术。下面给出3个有关工业自动化运用容器化的案例。
        (1)由埃克森美孚倡导的开放式流程自动化OPA,是针对现有的DCS和PLC系统不能适应未来的OT/IT深度融合的要求而提出的标准化活动。活动聚焦于如何运用最新的分布式云计算技术和虚拟化技术,重新定义已经日趋陈旧、20多年没有变动的架构,重新定义DCS和PLC,以及与优化运营密切相关的先进控制和MES。
        图4表示如何将容器技术运用于OPAF的架构,构成一个分布式控制节点(DCN)。根据实际的需要,可以在一个DCN容器中容纳所需要的各种APP,如监控和管理DCN的APP、现场总线和工业以太网的APP、现有的过程控制算法APP、新开发的过程控制算法APP等等。

 运用容器技术构成分布式控制节点(DCN)

图4 运用容器技术构成分布式控制节点(DCN)

        (2)容器化技术用于实时控制目前尚未见到有产品问世,但是有些大学和研究机构已经做了不少有关架构的研发实验工作。例如德国斯图加特大学的软件技术研究所就“实时控制应用的基于容器的架构设计和实现”做了有益的探索。他们将实时任务模块化,设计了实现容器化的架构。在分析基于容器化的实时控制应用软件的机会和挑战之后,提出了一个具有可重用、可移植特性的参考架构。该架构组合了容器与容器之间以及容器与硬件之间的通信解决方案。由于Linux支持容器化,而PREEMPT_RT补丁增强了Linux的实时应用,考虑到引入补丁会影响锁定和硬件中断,需要有针对性的解决方法。方案是在Linux主核中集成另一个专用的实时核Cobalt,PREEMPT_RT补丁与Cobalt核组合后,由Cobalt调度的实时任务可以由定期的Linux任务来创建。这样Cobalt的应用软件也可在容器中运行了。
        图5是该架构的的功能视角。图中给出一个应用程序的示例,包括3个模块M1、M2和M3。每个模块是一个可执行的、以容器图像形式出现的软件,模块间用它们的元数据进行组合。在元数据中包括输入和输出定义(图中用小的方块表示),以及有关被传输或接收的消息的类型信息。输入和输出以兼容的类型连接,公共硬件接口被用做一种元模型,为各种不同的硬件提供一般的输入和输出。

 实时控制容器化的实现架构(功能视角)

图5 实时控制容器化的实现架构(功能视角)

        图6则是以系统视角来描述该架构。在整个架构中Linux核有两个补丁,即PREEMPT_RT补丁与Cobalt核补丁。这使得在同一时间内可在这两个核中运行不同的模块,由它们的判据决定哪些模块在PREEMPT_RT补丁运行,哪些模块在Cobalt核运行。也有可能仅运用这两个核中的一个。在两个核中都要安装驱动,使得模块可以运行在相应的核上。所有的模块均分布在Docker容器中,并由Docker的后台程序(daemon)管理。模块间的互动通过映射在容器中的设备文件驱动。

实时控制容器化的实现架构(系统视角)

图6 实时控制容器化的实现架构(系统视角)

         针对用一个容器编排的原型执行基准测试程序,测试了不同传输方法的消息往返传输的时间。结果表示在最坏的情况下往返时间在50-150微秒之间,这说明完全可以实现将周期间隔为500微秒的应用程序,拆分为几个相互有关联的模块在容器的环境下正常运行。
        (3)德国SICK公司以生产传感器闻名。它们新近推出的TDC(TelematicDataCollection)网关就是运用Docker容器技术的典范(见图7)。可以运用在智能制造、工业物联网作为边缘网关采集来自各种传感器、PLC的数据,支持I/OLink和其他现场总线(见图8)。

 实时控制容器化的实现架构(系统视角)

图7 SICK的TDC边缘网关

 SICK的TDC边缘网关的应用

图8 SICK的TDC边缘网关的应用

     结语
        综上所述,我们可以得出这样的结论:在工业自动化领域的软件开发过程中,推广和采用云计算容器化技术,将是一个不可逆转的趋向,它必将在推动下一代的开放式DCS/PLC系统的软件实现中起着难以替代的作用;在制造系统向分布式、扁平化发展的过程中,容器化及其编排技术,对工业自动化领域的软件开发、管理和维护具有重要的应用价值;在智能制造和工业互联网、工业物联网的发展中,广泛使用Docker和Kubernetes将是让“百万APPs”落地生根的利器。
责任编辑:杨培
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (1)
  • teamczyx7-15
    浏览器自动填表软件 www.teamczyx.com
以上网友发言只代表个人观点,不代表本网站观点或立场。
请您登录/注册后再评论