在强调软件的重要性时, “软件正在吞噬世界”很流行,但真正吞噬软件的一定会是开源软件。不过,过去许多年保守的工业控制领域对此可谓谨慎有余进取不足。1985年,理查德·斯托曼创立了自由软件基金会FSF(the Free Software Foundation,FSF),目标是推动开源软件的运用。这源自每个人都应该有机会修改、改进或改变软件基础的设想,或许可以算是开源软件的始端。在IT领域攻城略地大放异彩之后,现在开源软件终于被工业自动化行业初识其活力和魅力,突破了若干禁区。
软件开源和开源软件
开源软件(Open Source Software,OSS)意味着每个运用它的人都可以根据自己的意愿修改、改进或利用软件,而不受任何限制,在IT领域被称为“无需得到允许的创新(permissionless innovation)”的最佳手段。
而封闭源码软件(Close Source Software,CSS)是不向公众发布的专有软件。软件是加密的,只有创造代码的原创作者才有合法复制、修改、更新和编辑源代码的权利。对最终用户而言,封闭软件对其应用程序的操作施加了限制www.cechina.cn,防止用户修改、共享、复制或重新发布源代码。
在开源和闭源之外,还有一种被称之为FOSS的自由开源软件,允许用户从更原理的角度存取软件。在自由开源软件体系中,自由软件基金会(FSF)旨在保护用户的自由,开放源码组织(OSI)旨在确保可靠软件的技术价值。
由于开源软件的出现,在过去20年里,计算环境发生了巨大的变化。这种巨大的变化发生在开源软件开发者社群提供软件和代码的背景下,这些软件和代码是他们花费了数百万工时来开发和验证的。开源系统由开发人员、编码人员、用户和测试人员进行同行评审和严格审查。这意味着缺陷和bug更有可能被发现并快速修复。开放源码软件许可还必须遵守开放源码计划的许可和分发条款,这种管制确保了软件应用的合规性。
用户可以从这些库和基础块中组装软件,而不是从头开始编写,曾经代价高昂的软件开发成本降低很多,而需要长期开发的项目曾经望而生畏而今往往可以很快开发出来。显然,开源系统允许更大的标准化和自动化系统的集成,使它们的实现更容易,更实惠。开源软件是最激动人心的技术开发的核心。
这种开源软件大致可以分为三类。
首先是操作系统。Linux和安卓(Android)就属于这一类。目前100%的超级计算机和85%的智能手机中,大多数的边缘计算设备都在运行Linux,全球100万台顶级服务器中的96.3%和90%的云基础设施上,都在运行Linux。随着越来越多的工厂开始用服务器和云连接,并增强其基础设施,Linux将会在工业自动化市场继续发展。
第二类开源软件由应用程序组成,比如数据库和浏览器。在工业领域,这一类的软件往往不像其他类别的软件那样受关注。但是一些开源数据库,比如出自PostgreSQL全球开发组织的PostgreSQL和来自Oracle的MySQL,还是广受欢迎。
开源软件中更受欢迎的一类是可以嵌入到其他软件项目中的代码库。现在软件项目中90%的代码都是有关多线程的处理,软件开发者给软件带来的价值只有10%。因此,具备必要才能的软件开发人员和用户通常会结合开源和商用代码来构建他们的大部分代码。
许多公司和个人更喜欢使用开源软件,而不是专有或商业软件,因为它的多功能性、安全性、进化性、社群氛围和支持、培训和稳定性。使用开源软件的一些优点是成本的节省、定制代码的灵活性,以及可以自由地利用社群而不是依赖单个供应商。开源也有一些缺点,包括:支持不足(比如一些开源的实时操作系统控制工程网版权所有,近年来由于对最新硬件驱动和各种新技术响应不够及时,而逐渐被RT-Linux取代)、测试不足、文档不足、不适当的复杂性和软件漏洞。
工业自动化的软件开源春风
相对于IT行业的开源运动,工业自动化领域的软件开源发展要晚得多。但新的自动化技术决策正在改变这一点。终端用户的需求日益增长,导致软件的应用和程序的复杂性也随之增长;为满足个性化和多样性的技术需求,推动了工业自动化迈向开源。与此同时,自动化与工业互联网日益融合的趋势,体现了OT与IT在更广泛的范围内融合的客观需求。互联网的本质是开放和开源的,决定了工业互联网和物联网一定要开放和开源。据此,多年来推动IT技术迅猛发展的开源模式,正在引入OT领域,突破了OT领域在软件方面的长期保守和封闭局面。概而言之,工业自动化正日益向集成系统发展,开源必将为此发挥巨大的作用。通过提高自动化系统的标准化和集成程度,开源系统将在灵活、协作、成本效益和规范等方面改变制造业。
工业自动化已经行动起来了。七八年前开放自动化的清风乍起。DCS和PLC这些主力控制系统硬件和软件捆绑所带来的弊端由来已久,使得最终用户在长期封闭的开发环境束缚之下,需要寻求一种革命性的出路。用户期望不同供应商的软硬组件构成,具有开放、互操作、内生信息安全以及快速部署和投运为特征。这种新兴控制系统,如果充分利用开源软件的无限生命力和潜能,有可能加速最终用户摆脱对特定供应商的依赖,推动自动化和数字化技术的更快发展。
“应用驱动技术”是开源软件开发的核心,这种社群成员可以使用、修改和共享源代码的模式,注定将成为一种难以抗拒的趋势。自动化行业面对这一趋势,必须要迅速转变“根本不理解任何开源商业模式”这一落后观念。在未来这个更多的企业管理软件源自开源软件的时代,大、中、小型自动化公司以及工业组织都应该考虑如何运用开源软件。这应该是一个组织发展战略的重要组成部分。
德国的A&D咨询公司曾对来自自动化行业的363名参与者进行有关开源软件在自动化领域应用的调查。大约2/3的人认为高性能在未来的应用中至关重要,控制器作为一个开放的通信中心,需要与云连接,并支持任何编程/开发工具。几乎80%的人关注一个事关“无厂商锁定”(“No Vendor Lock-in”)的关键问题。也就是说,在控制平台中需要开放接口,以减少在用户自有的集成开发环境中的集成工作。当涉及开源软件时,观点存在一定的分歧,因为许多人对于开源软件仍然有很多无知。虽然2/3的受访者认为通过社群平台,实现开放且免费的源代码进行信息交换,非常有帮助。但反对者声音也很顽强,大约1/3的人仍然青睐拥有专有技术的PLC解决方案,并不信任控制任务可以由开放社区提供解决方案。
显然,工业控制器系统正在增加工业级开源软件的性能选项,但仍有许多意见并不看好开源的可编程逻辑控制器(PLC)。
这也并不奇怪。传统PLC的力量太强大了,很多人的思维模式已经在其中固化。五十多年前,为工业应用量身定做的PLC一经问世,短短几年就风靡全球,迅速扩散到各种类别的离散制造业。还不断扩展包括I/O、通信、运动控制功能,改善运算速度和可靠性,还循着标准化的道路制定了整个行业普遍接受的国际标准IEC61131,同时应用领域还扩大到运动控制和过程控制。PLC设备结构紧凑,可以安装在机械设备和移动设备的现场,在很大程度上推动了自动化的发展。PLC通常使用专用的电缆、通信协议和编程语言来执行任务。尽管它们是相对封闭的平台,但任务非常具体,并且长盛不衰地为大中小型工业应用提供了多样而有效的控制、数据采集和监控等服务。这难免让人心满意足,认为PLC的秩序已定,不需要任何改变。
但是,技术时局正在发生变化。随着IT技术的迅猛发展,即使是成熟的控制产品现今也面临着开源软件和开源硬件的影响和冲击。显而易见的是,在现有的PLC编程环境下,很难创建符合灵活的制造工艺要求的程序,而开源软件则使程序员更容易更新和配置包括PLC在内的相关的计算设备。
开源的PLC以许多不同的方式呈现了其独特的优势,例如:在开源软件代码的基础上可以进行免费代码合成和代码再共享;可进行更高程度的合作和协同;在有序的许可管理的条件下可对源代码进行存取;终结排他性的供应商软件锁定等。新锐力量,正在进入赛道。这些年来在美国、德国等都涌现了既继承传统PLC的特点又带有开源特色的产品,例如德国菲尼克斯(Phoenix Contact)的新型的可编程逻辑控制器的PLCnext,德国WAGO的Open Automation开放式的软硬件架构,美国OPTO 22的边缘可编程工业控制器EPIC。还有基于树莓派和Arduinos开源硬件的工业级开源PLC(见图2)及其集成开发环境。Arduino是一种源自欧洲的便捷灵活、方便上手的开源电子原型平台,包括各种型号的硬件Arduino板和软件Arduino IDE。
图 基于Arduinos扩展的开源PLC(图源:AutomationDirect.com)
作为开放流程自动化的倡导者和践行者,美国埃克森美孚一直在研究如何从菲尼克斯的PLCnext中获益。受到树莓派和其他开放架构社群的启发,菲尼克斯开发了一款PLC作为开源设备。埃克森美孚从2019年起将它引入位于新泽西州克林顿的试验工厂,用于提供基本的计算和可配置的I/O。除了是一个传统的PLC,PLCnext最大的特点是高度支持Linux的设备。它允许使用传统的IEC61131-3语言,同时也可以用其他的高级编程语言,如C++、C语言和Python。这个开源PLC可以在几乎任何IDE(集成开发环境)中运行,包括Eclipse 4DIAC、Visual Studio、Matlab等。埃克森美孚追求的开放自动化概念是不依赖一家供应商,而是将多家软硬件的供应商按照O-PAS的系列标准构成可互操作、组态可移植、应用程序可移植和可互换的控制系统(见图3)。该试验厂一直在使用PLCnext验证这一概念,但凡由埃克森美孚工程技术人员开发的基于Linux的软件都可以在任何开放的、支持Linux的控制器上运行。
秉承互联网开放和可互操作的整体理念,工业物联网和工业互联网显然也需要建立在开放和可互操作的基础上。最终用户,正在意识到开放软件运动对工业软件技术的影响,更重要的是,已经认识到互联网的基本构建模块的开放性,它具有颠覆性的冲击力。
现在作为互联网的通信协议TCP/IP和网站开发用超文本标记语言HTML,都迸发了初创者没有想象到的力量。前者是美国国防部高级研究计划局DARPA为在核战争中生存而建立的开放协议,后者则是由欧洲核子研究中心创建的互联网开放语言。这些最初使用的目的www.cechina.cn,都是限制在一个局部组织之内。但是,一旦它们变成开源软件,就释放巨大的能量,势不可挡,大大推动了互联网的普及。
同理,工业中物联网的使用越来越多也得益于开源软件。近些年来工业物联网IIoT的流行促进了HTML的最新版本HTML5和TCP/IP的开源版本的运用,还促进了使用MQTT开放消息传递协议。据MQTT的共同发明人Arlen Nipper的说法,在所有工业物联网项目中MQTT的使用已经占有64%的份额。实际上MQTT只是传输层的协议,Sparkplug才是具有语义内容的规范。而在 Eclipse 基金会中Eclipse Tahu项目是该规范的一个实现。野火已经点燃。开源软件在工业自动化应用中的优势,无论制造商的操作技术和管理要求如何,开源软件都是一种增值解决方案,因为它具有定制化、高适应弹性、可扩展性、可访问性、成本效益和质量等优势。
值得一提的是,工业控制对安全要求很高,开源软件恰好可以满足这一点。与其他操作系统相比,开源Linux的一个优点是权限管理和安全性。为了授予定制的存取权限,Linux提供了一种非常细粒度的、可独立调整的权限管理,严格的权限分配以及对用户和组的管理。例如,允许保护配置文件和控制设置,防止未经授权的访问或无意的更改。这样,机器操作员就不能通过所分配的适当权限来对工艺参数进行任何更改。严格的权限管理可以保护操作系统免受网络攻击,在日益网络化的控制系统中,安全问题尤为重要。
许多商用的基于工业PC的控制器使用Windows作为操作系统,其效果是必须定期安装安全刷新。特别是在生产环境中,安全刷新意味着中断,并可能导致不希望的副作用。然而,在基于Linux的内核中,有一些经过特殊加固的“设计安全”内核。操作系统通过简化获得额外的安全性:只保留所设定任务执行必要的代码。可能导致额外攻击载体的不必要软件一开始就没有安装在系统上。还有一个优势是在开源库和自由程序中出现了新的安全漏洞www.cechina.cn,由于开放性,相应的补丁可以很快地从社群中导入。与此相反依赖于制造商的安全补丁,这可能需要很长时间。
国内自动化公司运用开源软件的体会
尽管开源软件的还存在诸如文档弱、没有专门技术支持等弊端,但目前国内有些小型的自动化公司还是非常赞同采用开源软件来构建工业控制器,为此需要做不少工作。
工业控制系统要求还是比较特殊,盲目提高核心处理器性能并不能带来绝对的控制性能的提高。像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运行内核非常不推荐采用开源社群方案CONTROL ENGINEERING China版权所有,这种方案仅仅可以作为参考,但是离产品化的距离实在太大。
人们知道3D打印是开源制造的完美例子,但更复杂的制造商也在使用这个想法。例如位于中国深圳的制造业初创公司Seed Technology只使用开源硬件,因此他们可以轻松访问供应链、工具、流程和材料。
小记:火山前的翻滚
充满希望和活力的开源精灵已经从潘多拉魔盒里出来了,再也没有办法重新回到传统构建专有软件的封闭模式了。当然,也不可能会在一夜之间用开源软件取代所有现有的软件和未来的软件。但是应该相信的是:(1)在现代系统和部署中,将软件扩展到我们所期望的程度的唯一方法是使用开源。(2)在软件行业中走得最远发展最快的人或组织,都掌握了使用和参与开源和开源社群的艺术。原因在于在这个星球上没有一个公司可以建立一个完整的端到端解决方案,并且快速创新。因此整个软件世界,包括工业自动化的软件领域,目标已经确定,趋势必须遵循。从连续多年的调查结果来看,工业自动化作为垂直行业一直排在开源软件需求的前三或前四位,智能建筑行业稳居首位,近两年智能农业对开源软件的需求也在上升。
开源软件的重要推手也使开源运动发展得有声有色。这里每年有数十亿美元收入、接管了近750个大中型开源项目的Linux基金会;有由IBM、惠普、SAP、Intel等非常严肃的大公司倡议成立、而今以极大的热情倡导工业自动化和智能化开源软件开发的ECLIPSE基金会;还有老牌的软件公司微软,近些年来倾注了大量热情支持开源软件的应用和推动。
在工业自动化界也涌现了不少努力投入基于开源软件的开发和应用的公司,例如美国的Inductive Automation公司,其创建的Ignition社群非常活跃和有效;德国菲尼克斯公司的PLCnext,成为富有传统PLC特色的开放自动化的样板;美国OPTO22公司倡导的的边缘可编程工业控制器EPIC,开辟了PLC控制和工业互联网结合的一条发展路径。
对于国内众多跃跃欲试的自动化公司而言,蓬勃发展的开源软件和工业互联网,正在激烈的酝酿和翻滚之中,恰如即将爆发的火山。或许,这是进入赛道的一个最佳切入点。