文章

彭瑜:开源软件在工业自动化领域的应用与发展

2022-07-20彭瑜

2024阅
自动化领域如何面对开源软件蓬勃发展的形势?

     1985年,理查德·斯托曼(Richard Stallman)创立了自由软件基金会(the Free Software Foundation,FSF),目标是推动开源软件的运用。这源自每个人都应该有机会修改、改进或改变软件基础的设想,或许可以算是开源软件的始端。

 软件开源和开源软件

    我们通常使用的数字设备里面的程序都是由基本代码构成的软件。按照开放与否这种基本代码可以分为两类:开放源码和封闭源码。凡是可以被任何人共享和修改维护的称之为开放源码;凡是只能为代码开发者独享和修改维护的就是封闭源码。

图1

图1 开源软件的特征:开放,自由,共享

    开源软件(Open Source Software,OSS)意味着每个运用它的人都可以根据自己的意愿修改、改进或利用软件,而不受任何限制。因此,可以在现有开源软件的基础上针对自己的特定应用对其定制化。开源软件是协同的产物,依赖所在社群的程序编制者和同行使用、更改、评审和彼此共享源代码。开发人员共享见解、想法和代码,共同或单独创建更多创新的软件解决方案。这个可伸缩且灵活的软件开发方式确保任何拥有源代码的人都可以修改、增强和重新分发它,以获得更好的可重用性和可存取性。开源软件遵循对等生产和大规模协同的基本原则,为最终用户创造更可持续的软件。

    封闭源码软件(Close Source Software,CSS)是不向公众发布的专有软件。软件是加密的,只有创造代码的原创作者才有合法复制、修改、更新和编辑源代码的权利。对最终用户而言,封闭软件对其应用程序的操作施加了限制,防止用户修改、共享、复制或重新发布源代码。在开源和闭源之外,还有一种被称之为FOSS的自由开源软件,允许用户从更原理的角度存取软件。在自由开源软件体系中,自由软件基金会(FSF)旨在保护用户的自由,开放源码组织(OSI)旨在确保可靠软件的技术价值。

    由于开源软件的出现,在过去20年里,计算环境发生了巨大的变化。这种巨大的变化发生在开源软件开发者社群提供软件和代码的背景下,这些软件和代码是他们花费了数百万工时来开发和验证的。用户可以从这些库和基础块中组装软件,而不是从头开始编写,以前觉得代价高昂的软件开发成本现在花费少多了,以前需要长期开发的项目现在可以很快开发出来。

    这种开源软件大致可以分为三类。首先是操作系统,Linux和安卓(Android)就属于这一类。目前100%的超级计算机和85%的智能手机中,大多数的边缘计算设备都在运行Linux,全球100万台顶级服务器中的96.3%和90%的云基础设施上,都在运行Linux。这显然意味着,随着越来越多的工厂开始用服务器和云连接,并增强其基础设施,Linux将会在工业自动化市场继续发展。第二类开源软件由应用程序组成,比如数据库和浏览器。在工业领域,这一类的软件往往不像其他类别的软件那样受欢迎。但是一些开源数据库,比如出自PostgreSQL全球开发组织的PostgreSQL和来自Oracle的MySQL还是广受欢迎。开源软件中更受欢迎的一类是可以嵌入到其他软件项目中的代码库。现在软件项目中90%的代码都是有关多线程的处理,软件开发者给软件带来的价值只有10%。因此,具备必要才能的软件开发人员和用户通常会结合开源和商用代码来构建他们的大部分代码。

    许多公司和个人更喜欢使用开源软件,而不是专有或商业软件,因为它的多功能性、安全性、进化性、社群氛围和支持、培训和稳定性。使用开源软件的一些优点是成本的节省、定制代码的灵活性,以及可以自由地利用社群而不是依赖单个供应商。开源也有一些缺点,包括:支持不足、测试不足、文档不足、不适当的复杂性和软件漏洞。

 工业自动化开源的背景及进展

   相对于IT行业的开源运动,工业自动化领域的软件开源发展要晚得多。为了弄清开放软件运动是如何影响工业软件技术的,我们先看一下当前驱动许多新的自动化技术决策的大趋势,主要有:
       (1)终端用户的需求日益增长,导致软件的应用和程序的复杂性也随之增长;为满足个性化和多样性的技术需求以及提供稳定可靠的工业技术的快速实现之间求得平衡,迫使和推动工业自动化迈向开源的未来。
       (2)工业自动化与工业互联网日益融合或结合的趋势,体现了OT与IT在更广泛的范围内融合的客观需求;把多年来推动IT技术迅猛发展的开源模式引入OT领域,以期突破OT领域在软件方面的长期保守和封闭局面。
       (3)工业自动化领域从七八年前吹起了开放自动化的清风,一方面瞄准了DCS和PLC这些主力控制系统硬件和软件捆绑所带来的弊端,另一方面也是最终用户在长期封闭的开发环境束缚之下,寻求一种革命性的出路;追求采用不同供应商的软硬组件构成具有开放、互操作、内生信息安全以及快速部署和投运为特征的新兴控制系统的目标,也必须借鉴和充分利用开源软件的无限生命力和潜能,从而使广大的最终用户摆脱对特定供应商的依赖,掌握自身发展的节奏。

    简而言之,“应用驱动技术”是开源软件开发的核心,这种社群成员可以使用、修改和共享源代码的模式,注定将成为一种难以抗拒的趋势。自动化行业面对这一趋势必须首先澄清并迅速转变的是“根本不理解任何开源商业模式”这一主要问题。有识之士认为,在未来这个更多的企业管理软件源自开源软件的时代,大中小型自动化公司以及工业组织或工业联盟应该考虑如何跟上形势运用开源软件。这是公司和组织发展战略的一个重要组成部分。

    德国的A&D咨询公司曾对来自自动化行业的363名参与者进行有关开源软件在自动化领域应用的调查。大约2/3的人认为高性能在未来的应用中至关重要,控制器作为一个开放的通信中心,需要与云连接,并支持任何编程/开发工具。几乎80%的人关注一个事关“无厂商锁定”(“No Vendor Lock-in”)的关键问题,即在控制平台中开放接口,以减少在他们自有的集成开发环境中的集成工作。当涉及开源软件时,参与调查的人士存在一定的分歧,因为许多人对于开源软件仍然有很多无知。虽然2/3的受访者认为通过社群平台和开放且免费的源代码进行信息交换非常有帮助,但大约1/3的人仍然青睐拥有专有技术并经过验证的PLC解决方案,顽强地认为对于控制任务,开放社区解决方案往往不受信任。

    综上所述可以认为,工业控制器系统正在增加工业级开源软件的性能选项,但仍然有许多意见并不看好开源的可编程逻辑控制器(PLC)。那么我们就先从这里谈起。五十多年前,为工业应用量身定做的PLC一经问世,短短几年就风靡全球,迅速扩散到各种类别的离散制造业。还不断扩展包括I/O、通信、运动控制功能,改善运算速度和可靠性,还循着标准化的道路制定了整个行业普遍接受的国际标准IEC61131,同时应用领域还扩大到运动控制和过程控制。PLC设备结构紧凑,可以安装在机械设备和移动设备的现场,在很大程度上推动了自动化的发展,甚至被誉为第三次工业革命的标志之一。PLC通常使用专用的电缆、通信协议和编程语言来执行任务。尽管它们是相对封闭的平台,但它们的任务非常具体,并且长盛不衰地为大中小型工业应用提供了多样而有效的控制、数据采集和监控等服务。可是,随着IT技术的迅猛发展,即使是如此成熟的控制产品现今也面临着开源软件和开源硬件的影响和冲击。开源的PLC以许多不同的方式呈现了其独特的优势,例如:在开源软件代码的基础上可以进行免费代码合成和代码再共享;可进行更高程度的合作和协同;在有序的许可管理的条件下可对源代码进行存取;终结排他性的供应商软件锁定;等等。于是这些年来在美国、德国等都涌现了既继承传统PLC的特点又带有开源特色的产品,例如德国菲尼克斯(Phoenix Contact)的可编程逻辑控制器的PLCnext和美国OPTO 22的边缘可编程工业控制器EPIC。还有基于树莓派和Arduinos开源硬件的工业级开源PLC(见图2)及其集成开发环境。Arduino是一种源自欧洲的便捷灵活、方便上手的开源电子原型平台,包括各种型号的硬件Arduino板和软件Arduino IDE。

图2

图2 基于Arduinos扩展的开源PLC

    作为开放流程自动化的倡导者和践行者,埃克森美孚一直在研究如何从PLCnext中获益。受到树莓派和其他开放架构社群的启发,菲尼克斯开发了这款PLC作为开源设备。埃克森美孚从2019年起将它引入位于新泽西州克林顿的试验工厂,用于提供基本的计算和可配置的I/O。除了是一个传统的PLC,PLCnext也是一个支持Linux的设备,这表明它允许使用传统的IEC61131-3语言以及编程语言,如C++、C语言和Python。这个开源PLC可以在Eclipse 4DIAC、Visual Studio、Matlab等几乎任何IDE(集成开发环境)编译器上运行。埃克森美孚追求的开放自动化概念是不依赖一家供应商,而是将多家软硬件的供应商按照O-PAS的系列标准构成可互操作、组态可移植、应用程序可移植和可互换的控制系统(见图3)。该试验厂一直在使用PLCnext验证这一概念,但凡由埃克森美孚工程技术人员开发的基于Linux的软件都可以在任何开放的、支持Linux的控制器上运行。

图3

图3 埃克森美孚开放流程自动化测试实验室由多供应商的硬软组件构成的控制系统

    秉承互联网开放和可互操作的整体理念,工业物联网和工业互联网显然也需要建立在开放和可互操作的基础上。最终用户需要意识到开放软件运动对工业软件技术的影响,重要的是要认识到互联网的基本构建模块的开放性。譬如现在作为互联网的通信协议TCP/IP和网站开发用超文本标记语言HTML,前者曾是美国国防部高级研究计划局DARPA为在核战争中生存而建立的开放协议,后者则是由欧洲核子研究中心创建的互联网开放语言。一旦它们变成开源软件,就大大推动了互联网的普及。同理,工业中互联网的使用越来越多也得益于开源软件。近些年来工业物联网IIoT的流行促进了HTML的最新版本HTML5和TCP/IP的开源版本的运用,还促进了使用MQTT开放消息传递协议。据MQTT的共同发明人Arlen Nipper的说法,在所有工业物联网项目中MQTT的使用已经占有64%的份额。MQTT协议的开源版本在Eclipse上叫做mosquitto。

 开源软件在工业自动化应用中的优势

    显而易见的是,制造业自动化领域许多参与者的崛起,以及工厂越来越多地采用工业物联网和自动化解决方案,为开源软件的应用提供了合适的环境。无论制造商的操作技术和管理要求如何,开源软件都是一种增值解决方案,因为它具有定制化、高适应弹性、可扩展性、可访问性、成本效益和质量等优势。

    01 定制化

    软件开发人员通过使用开源代码为本身特定应用软件的创建提供核心代码,在此基础上再建立特定的特性,并允许用户访问它并根据需要进行更改。与将用户锁定的封闭系统不同,开源允许他们调整和修改代码以满足特定的需求或应用。这中附加编码方式可对定制化不加限制,从而使社群(即用户的集合)能够在软件集成阶段添加有益的特性,例如用于用户测试的特性或为机器找到最佳解决方案的特性。定制在数据和流程可视化方面也很有价值,用户可以开发最能描述其操作的仪表板和视觉效果。如果采用合适的传感器为特定机器提供实时状态监测数据,就可以定制采集和处理特定参数数据或计算特定值的软件代码。

    02 适应弹性 

    由于可快速对源代码进行修改,开源软件对变化的适应性表现得很有弹性。快速添加或删除功能以及适应网络环境或特定应用的能力,可能使新开发的程序不稳定,但通过接触不同的环境和应用,开源代码也可以变得更强,得以应对网络安全威胁。由于有如此多的编码人员或程序员进行测试和增强,实现开源代码的风险(例如在网络安全方面)并不一定比封闭代码来得高。在采用开源软件开发自己的定制软件时,实现者可以借鉴适用于其他闭源软件的相同规则,不过实现者必须了解代码的源代码,并避免使用不知名的源代码,因为这些源代码可能会带着不良的意图修改代码。总的来说,开源代码具有弹性、适应性和敏捷性,能够适应给定的新环境。

    03 可伸缩性 

    开放源码的附加组件和定制功能也允许代码具有高度的可伸缩性。这种可伸缩的实现在两个维度上进行,即采用时间轴和基于应用的实现。为了保证用户愿意接受,并满足操作和应用的要求,这两者都不可或缺。关于采用时间轴,可伸缩性允许修改软件和代码以满足用户的期望。开源代码能够实现用户测试和反馈的特性。最终的解决方案将包括多次迭代,以满足用户的需求和实现运行预期。另一方面,基于不同的应用,代码程序也可以根据控制目的或要求加以变化和伸缩。例如控制不同的机器,或同一类型的机器但运用环境或场景不尽相同,或者为特定用途添加/删除某些功能特性等等。如果有三台相同的机器(A、B和C),它们处于不同的环境中:A在零下2度的环境下工作,B在室温下,C处于不停的洗冲中。那么状态监控软件要为每个场景定义可接受的参数,避免错误触发的误报警。为此可以调整基本代码,以满足不同应用的特定功能。

    04 可访问性 

    一般来说,在线上可以找到性价比高的开源代码。还有一些额外的资源,比如免费的编码教程,也不需要任何许可。此外,当程序员更新开源代码时,他们必须让新版本共享,以便再次可用,并确保代码是可访问的和最新的。

    05 成本效益和质量 

    使用社群开源代码大大降低了独自构建应用程序的开发、集成和测试诸阶段的成本。同时还减少了实施的时间,有利满足项目的进度或产品上市的时间。本质上说,开源软件应该是受信任的源代码,是由众多编码人员和用户创建的高质量、可靠的代码。

    06 开源的安全和权限管理系统 

    与其他操作系统相比,开源Linux的一个优点是权限管理和安全性。为了授予定制的存取权限,Linux提供了一种非常细粒度的、可独立调整的权限管理,严格的权限分配以及对用户和组的管理。例如,允许保护配置文件和控制设置,防止未经授权的访问或无意的更改。这样,机器操作员就不能通过所分配的适当权限来对工艺参数进行任何更改。严格的权限管理可以保护操作系统免受网络攻击,在日益网络化的控制系统中,安全问题尤为重要。许多商用的基于工业PC的控制器使用Windows作为操作系统,其效果是必须定期安装安全刷新。特别是在生产环境中,安全刷新意味着中断,并可能导致不希望的副作用。然而,在基于Linux的内核中,有一些经过特殊加固的“设计安全”内核。操作系统通过简化获得额外的安全性:只保留所设定任务执行必要的代码。可能导致额外攻击载体的不必要软件一开始就没有安装在系统上。还有一个优势是在开源库和自由程序中出现了新的安全漏洞,由于开放性,相应的补丁可以很快地从社群中导入。与此相反依赖于制造商的安全补丁,这可能需要很长时间。

 运用开源软件必须注意的问题

    集成商和最终用户从相关的开源网站借用免费代码用于他们的项目,为了确保它运行良好,使用安全,首先需要对它进行审慎的审查。审查应该从对许可证的评估开始,要确定这是否是一个在商业上友好的开源软件许可证,能否合法使用。还要确定是否允许修改代码。开源不一定意味着必须修改它,但一定能看到和运用代码。

    除了检查许可证,还要考虑安全性。最好从使用活跃用户社群支持和维护的开源应用程序和库开始。用户越多越好,因为更多的眼睛寻找漏洞并提出修复方案,不仅会持续改进软件,而且有助于让社群领先于恶意行为者。每个社群都有自己的特点,如果想要加入的社群中有熟悉的人更好,可以了解更多的情况。还要搞清谁是代码的发布者。一般来讲愿意把自己的名字与所做的工作公开的人不太可能做任何恶意的事情。

    任何好的审查过程还必须包括性能测试。从开源社群获得一些代码时,接下去的工作就是确保这些代码可以为我所用,并且始终应该对所部署或修改的任何内容进行严格的测试。

    审查开源软件的另一个重要方面是考虑其在产品生命周期内的成本和收益。与自行开发的软件相比,在整个产品生命周期内操作和维护开源软件的能力变得更重要,也更具有挑战性。

    出于这个原因,应该开发自己的内部标准和指导方针,以审查任何考虑纳入其产品的开源代码。在软件评估阶段,从多个角度检查软件,比如它在该领域的记录、产品质量、与类似软件的比较、提供长期维护的能力以及许可证的结构等。

    在使用开放源码时,仍然必须遵守许可条件,并在必要时澄清许可条件。所以每个开源软件的使用者必须让自己的程序基于开放源代码。还要考虑封闭的源代码是否可以供自己使用,这些程序是否可以商业发行等问题。

    原则上,在公司内部使用各种开源许可证,如GPL(GNU General Public License)或BSD(Berkeley Software Distribution)时,它们之间的差别很小。但是,如果开源软件被进一步开发并发布,就应该注意许可条件。这里开源程序区分了“有版权Copyleft”和“无版权Non-Copyleft”的许可类型。如果制造商使用基于copyleft许可的开放源代码,就像众所周知的GPL一样,那么修改后的代码也必须按照原始许可再次发布给社群。这是为了防止用户或制造商分发修改了使用条款的修改后的源代码。因此,在其解决方案中使用带有copyleft许可证的开源软件的自动化解决方案提供商必须仔细检查除了许可文本之外,是否必须提供编辑过的源代码。例如,某些copyleft许可要求开放源码软件的每个编辑版本都不受限制地发布。但是也有中度的copyleft变体,只在特定条件下才要求发布源代码。它与包括BSD许可的软件的非copyleft许可证类型不同,不要求发布修订后的代码。因此,用户可以根据自己的需求进一步使用BSD许可开发软件,并获得专有许可。作为一种选择这样就可以开发商业产品,源代码不需要公开。总之,开源软件使用的合规性是一个必须严肃遵守的文问题。

 国内自动化公司运用开源软件的体会 

    尽管开源软件的还存在诸如文档弱、没有专门技术支持等弊端,目前国内有些小型的自动化公司还是非常赞同采用开源软件来构建工业控制器,为此需要做不少工作。当然不得不承认工业控制系统要求还是比较特殊,盲目提高核心处理器性能并不能带来绝对的控制性能的提高,由于像PLC这样的工业控制系统基本都是采取循环扫描方式工作,并且对于实时性的要求相对较高,因此选用开源软件时需要进行详细的评估与测试,特别对于基础的实时操作系统更是如此。对比下来,不开放源代码的商业实时操作系统(如:VxWorks,QNX等等)具有完善的文档与团队对工业控制系统采用的实时操作系统进行技术保证,但其费用需要采用者进行详细评估才能做出。对于基础实时操作系统,一些小型自动化公司更倾向于商用开源的解决方案,例如研发PLC时可以考虑采用:uCOSIII、KEIL RTX5、embOS、ThreadX等等,这些RTOS应用非常成熟,并且均已经开放源代码,提供商业技术支持,而且后续无版权费或在部分指定芯片上无版权费。

    Linux操作系统应用在工业控制器产品上,则需要加入实时补丁,目前主流的实时补丁有Preempt-RT、Xenomai。其中Xenomai实时补丁综合评测下来实时性较高,在对实时性要求较高的运控控制系统中得到大量的应用与验证,并且采用微内核模式的架构,实时应用执行效率更高。Preempt-RT与Xenomai补丁均为开源社群项目,其实时性在具体平台上的表现不尽相同,因此需要进行大量的测试与验证,用户需要评估公司团队是否具备测试与优化的能力。

    由上所述可知,在工业控制器中采用开源软件来进行基础系统构建,同样也是一把双刃剑。上海翌控科技公司在此方面积累了不少宝贵经验,他们认为最佳模式是基础实时操作系统采用商业开源软件,或者聘请专业工程师或者与第三方专业公司合作解决基础实时操作系统问题。对于像IEC61131-3 PLC运行时系统此类非常专业的基础系统,虽然开源社群也有类似的开源软件平台,但是其成熟度远远落后市面专业公司的产品,如果公司项目无法投入巨量的资金来基于此开源社群产品进行优化,则非常难以满足市场客户的要求。因此,以开发工业控制器为己任的OEM公司与专业控制软件公司合作则是最佳解决方案。

    翌控科技公司在构建NXTOS工业控制器系统平台时也基于以上的分析与判断,采用商业专用软件(LogicLab IEC61131-3软件平台)、商业开源软件、开源免费软件相互结合方式来实现最终产品。例如:NXTOS基于x86平台选用了Linux操作系统,并支持Xenomai/Preemp-RT补丁,因此翌控科技在此平台优化与测试上花费大量精力,最终在极端严苛负载情况下进行实时性测试,其最差抖动对于Xenomai依然可以达到小于13us,而对于Preempt-RT小于27us。NXTOS在嵌入式MCU平台上平均做到10us以内的最差抖动(部分平台1-2us)。因此在较低抖动的情况下可以大幅增加处理器的利用效率,即使采用Cortex-M处理器也可以实现EtherCAT 1ms的运行周期。对于工业控制系统来说,该公司的结论是:商业专用软件、商业开源、开源免费结合使用。另外PLC运行内核非常不推荐采用开源社群方案,这种方案仅仅可以作为参考,但是离产品化的距离实在太大。

 结束语 

    充满希望和活力的开源精灵已经从潘多拉魔盒里出来了,没有办法再回到过去构建软件的专利模式。当然,也不可能会在一夜之间用开源软件取代所有现有的软件和未来的软件。但整个软件世界,包括工业自动化的软件领域,目标已经确定,正在朝着这个方向前进。过去的一些年在强调软件的重要性时,我们都听说过“软件正在吞噬世界”这句话,但真正吞噬世界的或许将是开源软件。

    开源软件的重要推手也使开源运动发展得有声有色。这里有每年有数十亿美元收入、接管了近750个大中型开源项目的Linux基金会,以极大的热情倡导工业自动化和智能化开源软件开发的ECLIPSE基金会,还有老牌的软件公司微软近些年来倾注了大量力气支持开源软件的应用和推动。在工业自动化界也涌现了不少努力投入基于开源软件的开发和应用的公司,例如美国的Inductive Automation公司,其创建的Ignition社群非常活跃和有效;德国菲尼克斯公司的PLCnext成为富有传统PLC特色的开放自动化的样板;美国OPTO22公司倡导的的边缘可编程工业控制器EPIC,开辟了PLC控制和工业互联网结合的发展路径。

    国内众多的自动化公司和研究单位面对开源软件蓬勃发展的形势将如何选择和行动,人们翘首以待。

作者简介

彭瑜,教授级高工,上海工业自动化仪表研究院技术顾问,PLCopen中国组织名誉主席。

   注:本文来源于微信公众号“工控百家谈”,e-works数字化企业网经授权转载。

工控

责任编辑:杨培
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (0)
请您登录/注册后再评论