导读
了解开源运动推进工业自动化发展比较有说服力的办法,莫过于认识那些通过运用开源软件和开放标准而风生水起,在工业领域获得巨大进步、引领趋向,并为广大用户所接受和拥戴的 公司 ,以及为推动开源软件在工业应用倾注全力的基金会组织。当然还应该了解围绕工业自动化技术栈,有哪些相关的主流开源项目。
文章来源
本文作者彭瑜,毕业于清华大学热能工程系,教授级高级工程师,PLCopen中国组织名誉主席,中国自动化学会仪表和装置专委会名誉常务委员,国务院特殊津贴获得者;长期从事工业生产过程自控系统的设计、现场总线和工业通信在控制系统的应用研究工作。由「工控百家谈」原创首发,数字化企业经授权发布。
1
成功运用开源软件的
工业自动化公司
01 得益于开源的SCADA软件公司
成立于2005年的Inductive Automation公司主打工业软件中的SCADA软件系统,被誉为世上成长最快的SCADA公司。公司开发和管理的Ignition社群在美国和在全世界工控界赫赫有名。通用的工业自动化平台Ignition(图1)只需一个服务器许可证的低成本,就可以无缝连接所有数据,轻松设计任何类型的工业应用,并立即将不受限制的工业和移动客户端部署到任何需要的人员和任何地方。
平台提供SCADA、IIoT、MES、HMI、报警、报表生成、边缘计算、移动通信和企业应用等功能,Ignition平台服务器可以通过多种通信方式(如MQTT服务器和MQTT传输模块、具备MQTT通信功能的设备以及边缘网关等)与PLC、RTU远程终端单元、边缘计算装置、业务应用程序LOB(ERP、大数据、客户关系管理CRM等)通信,还可通过专用网络与基于网络工程设计终端、由网络推动的客户端、图形显示HMI以及移动终端等通信(见图2的SCADA系统)。
图1 Inductive Automation公司的Ignition平台的图标
提起开源软件对Inductive Automation的重要性,公司的创建人毫不隐讳地表白:“我们之所以存在,是因为我们可以在开放标准的基础上进行开发。它帮助我们以最快的速度取得了今天的成就。”公司还十分重视引导最终用户认识开放软件运动对工业软件技术的影响。譬如在2018年Inductive Automation的Ignition社群大会上就请了IBM在英国和爱尔兰的首席技术官、MQTT的共同发明人Andy Stanford-Clark、Cirrus Link总裁兼首席技术官、MQTT联合发明人Arlen Nipper、Eclipse基金会执行董事Mike Milinkovich,以及Inductive Automation公司软件工程联合总监Colby Clegg专门讨论这个问题。
图2 基于Ignition平台的SCADA系统
自2019年之后,为实现“让整合集成变得简单、有趣还负担得起”的目标,并继续本着“梦想家和实干家”服务的努力,Inductive Automation推出建立在四个支柱之上的新SCADA,专注于减少不同行业解决方案所带来的阻碍和冲突,构建领先的解决方案的平台。这四个支柱分别是:新技术模式、新授权模式、新业务模式和新道德模式。新技术模式构建在利用开源,符合物联网和工业标准,以及开放接口,并且可以在几乎任何操作系统的环境下可靠运行。新授权模式是一种零麻烦的授权模式,随Ignition服务器出售的授权是一种对客户端或数据标签不加限制的授权,而且价格合理。新业务模式平衡了开发(新的创新)、质量保证、市场营销、销售、支持、财务、培训和专门用于交付新用户体验的其他20个功能,形成了一个运作良好的管道。
新道德模式的核心是热爱公司所从事的事业和创立的软件,热爱Ignition社群,持续地为用户群服务,不以牺牲用户群的利益而牟利,更不会因为成功而将公司出售。建立在这四个支柱基础上的Ignition是世界上第一个真正的通用工业应用平台,可以连接整个企业的所有数据,快速开发任何类型的工业自动化系统,并不加限制地扩展系统。通用工业应用平台的特性有:不加限制的许可证模式,以服务器为中心的互联网部署,模块化的组态,跨平台的兼容性,强大的可视化性能,采用开放标准化的技术(如SQL、OPC UA、MQTT、Python),为在IT和OT间建立沟通的桥梁可与大型数据库和PLC连接,在一个通用的集成开发环境IDE中构建HMI、SCADA、MES、IIo T、报警、报表生成等应用,实现快速开发和部署。
02 PLCnext成为开放自动化的样板
受到树莓派和其他开放架构社群的启发,德国的菲尼克斯在2017年11月正式推出了PLCnext,一种实时控制和非实时任务一体化执行的PLC系统架构。作为在工业自动化领域引领趋势的开源控制系统,很快就被倡导开放流程自动化OPA的埃克森美孚的工程师们慧眼识珠,将它引入了实验基地,用于提供基本的计算和可配置的I/O。
除了具有传统PLC的本色,PLCnext也是一个支持Linux的设备,它允许使用传统的IEC61131-3语言以及诸如C++、C语言和Python等编程语言,还可以在Eclipse 4DIAC(基于IEC61499的开源开发平台)、Visual Studio、Matlab等几乎任何IDE(集成开发环境)编译器上运行。这恰恰符合埃克森美孚追求的开放自动化的概念,有助于实现不依赖一家供应商,而是将多家软硬件的供应商按照O-PAS的系列标准构建开放型控制系统的目标,为确保可互操作、组态可移植、应用程序可移植和可互换打下基础。
开放架构的控制系统PLCnext(见图3)为OT与IT融合给出了一种解决方案。通过建立四大开放平台,即开放式实时操作系统、开放式编程环境、开放式通信接口和开放式用户界面,将传统且稳定的PLC与现代的软件工程的灵活性与开放性结合起来,以满足智能制造的日常要求。在一个系统中实现传统PLC的实时控制的同时,引入基于互联网的非实时任务或其它非实时处理任务,依赖全局数据空间中间件GDS,为不同的实时数据处理方式和非实时数据的处理方式提供了数据交换的途径。
图3 PLCnext的系统架构 (图源:Phoenix Contact 网站)
PLCnext的系统架构是一个执行于Linux操作系统(带有OSADL实时修补程序)的开放的固件平台。在实时Linux操作系统的大环境下,所有PLCnext控制器都包含一个可供传统PLC的IEC61131-3运行环境。各种以固件形式出现的部件构建其核心的功能性,这些核心部件包括系统部件、服务部件、I/O部件以及中间件。中间件起着将PLCnext固件平台与操作系统隔离的作用。用一个公用类的集合为用户提供调用系统的功能性(例如文件操作、套接字服务或线程服务)的可能性。包含在中间件中的全局数据空间GDS是PLCnext技术中一个特殊的部件,通过所谓的“数据端口”保证单个部件实时数据交换的一致性。
»系统部件
PLCnext技术所有的基本功能性都由系统部件实现。系统部件包括:系统管理程序和PLC管理程序(由这两个部件启动所有的其它部件,并监控系统的稳定性);用户管理程序建立在标准Linux的用户管理的基础上,由它提供PLCnext技术内不同任务执行的保证。每个PLCnext的技术过程都以实现用户定义的任务启动,这样每个部件仅取得所要求的存取权;eCLR—菲尼克斯IEC61131-3的程序Runtime;执行和同步管理程序ESM使PLCnext技术能以实时的方式执行IEC61131-3、C++和Matlab SimuLink的程序,其独特的性能使程序员可以用上述编程语言的组合创建应用程序而无需进行任何折衷。
» 服务部件
服务部件提供附加的功能性,以及存取ESM、GDS和其它所有的系统部件。服务部件包括:OPC UA Server,Proficloud网关、基于Web的管理、PC Worx Engineer HMI(HTML5 web虚拟化)、跟踪控制器(用LTTng进行跟踪)。
»I/O 部件
(现场总线管理程序)现场总线管理程序将PLCnext技术与已实现的现场总线栈连接。所有接口都以一般的方法尽可能快速实现现场总线协议。已发布的版本有以下现场总线协议:Profinet RT控制器、Profinet RT设备、Axioline Master(本地总线)。
用PLCnext技术最简单的方法是在ESM的实时环境下创建用户程序。用户程序可以是用PC Worx Engineer编制IEC61131-3的程序、C++的程序,或Matlab Simulink模型,或者这些编程方法的任意组合。采用GDS中存储的数据端口,编程人员无需在意不同任务和程序间的数据交换,PLCnext已完整地对此进行了技术管理。
换另外一种表述就是,PLCnext用获得专利的任务调度方法构造了执行和同步管理ESM(见图4),再在全局数据空间GDS的支持下,保证了用IEC61131-3编写的实时控制程序任务与用其它高级计算机编程语言编写的非实时处理的程序任务之间可以同步地进行数据交换,解决了在同一个运行时环境下执行实时和非实时任务的难题。例如在图5中,任务1是一个扫描时间为1毫秒的实时控制程序1。任务2由三个程序组成,程序2为用Simulink写的,程序4用C++编写,程序5是一段用IEC61131-3标准写的;执行周期为500ms。任务3的程序3用C++所写,执行周期为3ms。在ESM的调度下先执行任务1,接着执行任务2的程序2,之后执行任务3的程序3,再转为执行任务2的程序4和程序5。
图4 PLCnext系统中的执行和同步管理ESM (图源:Phoenix Contact 网站)
图5 PLCnext系统执行实时控制任务与非实时处理任务的进程示意 (图源:Phoenix Contact 网站)
这就是PLCnext区别于其它需要构造两个不同的运行时环境才能在一个控制系统中同时进行实时任务与非实时任务执行的重要区别。这也是PLCnext以其独特的技术方式让工程技术人员在享受传统的工控编程语言的可靠稳定的同时,也能自由地采用IT领域中灵活有效的编程语言满足市场和用户不断提出的新的要求。因为PLCnext技术有一个基本特性,就是允许用户可以选择使用所偏爱或首选的编程工具来实现任务,这一自由一直被传递到整个系统。例如,如果缺少函数、协议或编程语言,用户可以自己集成或合并这些内容,而不必通过作为控制器提供商Phoenix Contact。
如果不是所有内容都必须被运行时环境封装,用户也可以直接使用知名的、广泛使用的操作系统。例如,对于高级语言程序员来说,实现MQTT协议栈很简单。PLCnext的早期采用者社群的其他用户已经实现了使用OpenCV库进行图像和视频分析以及物体识别的应用。诸如此类的例子还有:PLCnext技术与来自谷歌的数字助手Alexa相结合;连接到Redis数据库或集成Java运行时,以便能够在Java中编程;为运用基于web的自动化应用而实现了Node.js。总之,用户可通过PLCnext技术实现进一步的想法,所有感兴趣的团体和个人都可以加入PLCnext社群,并与社群参与者讨论他们的项目。
随着PLCnext AppStore的创建,新的商业模式正在为集成商、最终用户,甚至为希望基于PLCnext技术营销其组件的第三方供应商所接受。通过PLCnext AppStore,功能甚至完整的应用程序都可以购买、授权并下载到控制器上。此外,系统更新和其他内容也将通过这个渠道提供,这使得终端用户下载它们就像获取和安装手机应用程序一样容易。
实际上PLCnext技术超越了程序员、用户和制造商几十年来建立的思维模式。过去很长的一段时间,用户只能被硬件和软件强制捆绑的系统、内部运行时环境和许多专有特性被绑定到某个特定的公司,PLCnext技术冲破了这个壁垒,迈入了开放自动化的领域,让每一个用户都可以扩展和定制以满足其个人需求的解决方案。这种新的自由水平一开始肯定是不熟悉的。然而,一旦用户接受了这个原则,并熟悉了这个系统,就可以从工业4.0时代的无限可能性中受益。
03 边缘可编程工业控制器得心应手运用开源软件
如今,在美国德克萨斯州南部的油区,水力压裂和水平钻井并不是唯一能带来利润的技术。开源软件已经稳步渗透到工业自动化领域,并为系统集成公司提供了机会。例如netDNA服务公司依靠开源软件实现拖车式移动抽油机的自动化,抽油机可以通过移动设备直接控制水泵,实施远程管理压裂用水,还可以自动监测流量和水位。它们使用的开源技术内置在OPTO 22开发的边缘可编程工业控制器groov EPIC中。其中一个控制器安装在移动抽油机上,为监控抽油机的柴油发电机组的控制器(配有Modbus/TCP接口)增添了通信、可视化和安全性等功能。groov EPIC控制器和I/O模块不仅可以监测排放水平、吸力和流量,还可以向发电机组控制器发送信号,以便进行大功率水泵的启停。
它还可以从发电机组控制器中提取泵的转速和相关的远程数据。每个控制器运用完全可独立运行的SignalFire网关通过Modbus/TCP接收来自无线传感器的数据。groov EPIC控制器使用两种内置的开放技术将数据发布到数据中心的服务器:来自OpenJS基金会的Node-RED编程工具和来自Cirrus Link的MQTT Sparkplug发布-订阅通信协议。由于控制器通过每辆拖车上的无线互联网协议设备连接到蜂窝广域网,现场的技术人员还可以通过平板电脑连接到网络,进行远程操作。上面描述的不过是边缘可编程工业控制器的一种SCADA应用场景。
OPTO 22对于开源软件的工业应用持积极态度,其立场用他们在一篇访谈中的话来说就是:“我们是巨大的支持者,我们欣然接受。无论是SCADA、过程控制还是离散应用,开源软件提供的解决方案类型,对我们来讲具有很大的灵活性。”在groov EPIC中,使用带有RTR扩展、sqlite(一种开源数据库)、Jedi网络服务器、Node Red、MQTT和Sparkplug B的Linux操作系统。所有这些都是开源的,并内置在EPIC中,让客户有机会利用SCADA、物联网或传统自动化应用实现新的功能。
OPTO 22的边缘可编程工业控制器groov的软件架构(见图6)分为云端和边缘两层,上层有OT数据中心内装SQL Server、OPC UA、MariaDB数据库;在云端可以根据需要选择亚马逊的AWS、Google云、IBM的Bluemix或微软的Azure。而在边缘控制器内装有CodeSys,PAC Control,Node-RED可编程视觉设备的开发工具,美国Inductive Automation公司的基于互联网的工业自动化软件Ignition以及Ignition edge,OPC UA,MQTT/Sparkplug,OPTO 22自行开发的groov view和groov manager,还有ssh(密码网络协议,专对不安全网络进行安全操作服务)。将这么多外购或开源软件集成在一个集成开发环境中能顺利运行,得益于Linux的开放环境,也得益于多核的硬件架构。
图6 OPTO 22 的EPICgroov的软件架构 (图源:OPTO 22网站)
2
工业自动化开源的重要推手
“软件正在吞噬世界”这句话来自马克·安德森(Mark Andreessen)几年前的一篇博客文章,他指出:基本上所有的投资都流向了软件,软件正在颠覆传统行业,在某种程度上看整个数字化转型正在发生在人们能想到的几乎每个垂直行业,这是“软件正在吞噬世界”的反映。但是如果再看看软件行业,那些在软件之旅中走得最远的人或组织,他们都掌握了使用和参与开源和开源社群的艺术。原因在于,即使像微软那样巨大的公司,也没有可能建立一个完整的端到端解决方案并且快速创新,只有开源才可能解决问题。因而这些年来频频创建了大大小小的开源项目及其社群,而支撑这些项目的往往是一些著名的开源基金会,如Linux、Eclipse、Apache、Mozilla等。
这些基金会绝大多数都集中在美国加州,除了Eclipse注册在特拉华州。多年以来Eclipse基金会发现,70%的付费会员和70%参与该基金会项目的提交者都在欧洲。所以随着时间的推移,这个基金会基本上变成了一个欧洲组织。与此同时,欧盟和欧洲各国政府有许多不同的策略,考虑到数字主权、公民隐私、道德AI等等,因此欧洲将不可避免地创建一个杰出的开源基金会,并获得国际影响力和声誉。这就是Eclipse基金会这个国际非营利组织将法定注册地从美国转移到比利时的理由。以下着重叙述几个工业自动化开源软件的重要推手,如Linux基金会,ECLIPSE基金会。
01 Linux基金会
对IT软件的方向有着巨大的影响。 它资金充足,每年有数十亿美元的收入,发展非常迅速,为开源软件项目的开发人员提供巨大的资源。它为开发人员在编码、管理和扩展开放技术项目诸方面提供了一个中立的、可信的中心。据说Linux基金会已经接管了近200个大型开源项目,这些项目拥有惊人的发展资源,还为750个开源项目社群服务。有太多的影响力和资源流向了这些项目,从本质上说,Linux基金会正在这个领域挑选赢家和输家。不过对自动化行业来说,这个组织是由IT管理的,所以他们为这些软件开发人员和团队提供了很多功能。他们想在顶层的基础上安置一个重型的计算层NFD(network function virtualization,网络功能虚拟化),并将这些功能保留在软件中。
图7 Linux基金会为750个开源项目服务 (图源:Linux基金会2021年年度报告)
Linux基金会强调中立和中立治理的重要性,采取开放的治理模式,鼓励其他组织在“为项目社群做决定的是参与项目并为此作出贡献的人”(“do-ocracy”)方针下参与和贡献。在2021年年度报告中基金会继续履行承诺,推出新的和推进现有的包容性、种族正义和多样性项目,为弱势群体和边缘化群体带来积极的变革。建设多元包容的社区,让来自不同社会阶层、不同文化、不同国家和不同肤色的独特想法和贡献,都能为社区呈现;通过让来自不同背景的个人注入了新的和创新的想法,来推进一个包容和欢迎所有人的生态系统。
Linux基金会还支持开放硬件多样性联盟,这是一个RISC-V孵化项目,其使命是将开放硬件社群聚集在一起。
Linux被认为是现代控制系统和物联网设备最常见的操作系统。运用开放操作系统,用户可以使用经典的IEC61131-3库以及集成开源包,或直接使用C/c++编程来实现控制任务。由于开放源码的概念,现在几乎任何任务或功能都可以使用现成的个性化程序和源代码。通过Linux社群,程序、库和源代码不断得到进一步的开发,并以新的变体形式在免费访问的存储库中(例如在平台GitHub上)提供。开源社群帮助解决问题,但也希望有更多的人参与解决问题。这也是自动化工程师越来越多地进行反思的主要原因之一。
与来自制造商的专有和封闭软件相比,通过免费获取源代码,开源程序通常能接触到更多的开发人员。因此,开源程序的质量和运行时稳定性通常高于商业软件。而正是这些因素在工业应用中具有决定性的重要性。对于开发者和公司来说,积极参与到社群中都是值得的。如果在工作中感觉有帮助,应该将发现的问题、扩展报告和反馈发到正在使用的开源项目的存储库中,使更多的人受益;同时也让这些组件变得更加安全,定期更新并提供更高的质量。
Linux基金会正在致力于贡献、赞助和管理支持工业物联网和边缘计算等技术的几十个项目。例如EdgeX Foundry是一个中立的、开源的项目,为物联网边缘计算和可互操作组件的生态系统提供一个通用的开放框架,希望能在统一市场并加速企业和工业物联网发挥作用。该项目围绕简化和标准化工业物联网边缘计算的共同目标,同时允许生态系统增加显著的价值。EdgeX Foundry利用了云原生原则,包括微服务和平台独立性,但其架构是为了满足物联网优势的特定需求,其中包括适应IP的连接协议,也有可用于非基于IP的连接协议,为广泛分布的计算节点提供安全性和系统管理,并可延伸到受高度约束的设备。EdgeX Foundry已经经历了快速的改进,从最初的2.5GB内存减少到128MB内存,适合嵌入传感器和控制设备。
02 Eclipse基金会
是一个总部设在比利时的国际非盈利协会,由300多名成员支持,坚持基金会独特的工作组治理模式、开放创新过程和社群建设活动。基金会最初的项目是由IBM在2001年11月创建,之后为了促进和支持开源软件协同和创新,于2004年1月正式组建。如今它是Eclipse IDE、Jakarta EE和350多个开源项目的总部,项目涵盖广泛的技术领域(如物联网、汽车、地理空间、系统工程等)的运行时、工具和框架。
它为全球的个人和组织社群提供了一个成熟的、可伸缩的、对业务友好的开放源码软件协同和创新环境。基金会董事会的成员包括博世、IBM、SAP和甲骨文这样的公司,这表明这些非常严肃的公司和行业领袖已经意识到他们需要拥抱开源,并将开源作为商业战略的关键推动者。在Eclipse基金会的众多的项目中有多个与工业制造数字化相关的开源项目,例如基于IEC61499的分布式控制系统的开发平台4diac,基于JVM项目中实现OPC UA客户端和/或服务器端功能所需的所有工具Milo,提供工业4.0解决方案的下一代自动化的开源平台BaSyx,为MQTT提供客户端无缝集成框架的软件规范Sparkplug,以及工业4.0资产管理壳开发平台软件AAS等。
Eclipse基金会是为Eclipse开放源码项目和Eclipse社区服务而建立的。作为一个独立的非盈利公司,基金会和Eclipse治理模型确保没有一个实体能够控制Eclipse社区的策略、策略或操作。Eclipse基金会与其研究和工业合作伙伴一起,正在推动创建一个专注于开放工业自动化的工作组,目标是将工业级的开源软件引入车间,通过提供可靠的开源技术,满足工业和中小型企业向数字工厂发展的需求。工作组为创新公司提供了一个机会:分担开发可靠的开源软件的工作和成本;根据他们的需求积极塑造软件开发,以避免供应商锁定的专有解决方案,并加快上市时间。
这建立在基金会认定“封闭和专有系统限制工业自动化发展”的共识。自从上个世纪计算机首次进入车间以来,工业自动化中使用的基本概念和计算范式并没有太大变化。大多数创新都局限于特定的供应商专有生态系统。随着互联网和随之而来的数字经济的出现,供应链和市场确实发生了变化。但是,工业自动化并不能充分发挥其潜力。在封闭和专有的环境中使用的过时的计算概念限制了新的生产能力和业务模型,只有在开放和高度互连的系统中才可能成为现实。显然只有那些最先克服这些障碍的企业将获得竞争优势,而这来源于易于理解、网络化和适应性强的开源开发流程带来的灵活性。
基金会的开放工业自动化工作组(Open industrial automation Working Group)提供了一个与供应商无关的治理结构,允许组织在新技术开发上自由协作。其核心原则有助于确保开发一个可靠的、开放的平台,这个平台可以自由使用、调整和重新发布,并且与用户的需求和战略目标同步。工作组还明确关注代码——这些代码是开源的,能够解决实际问题,并且能够在生产环境中可靠地运行。除了为开源工业自动化软件提供治理和基础设施外,工作组还支持开放环境中的现有标准和互操作性,其特色是:
1)兼容性:生态系统将有能力扩展,以支持现有的和即将公之于众的标准和技术,如新的通信标准或数据格式。工作组欢迎希望使其标准或产品与我们的生态系统兼容的组织。
2)集成:工作组提供的技术在Eclipse公共许可证2.0下授权,并将形成一个提供基础技术和解决方案的开放平台。商业或开源产品可以构建在该平台之上。
3)标准化:工作组致力于标准化所提供技术的核心要素。一个重要的例子是Eclipse BaSyx项目资产管理壳(Asset Administration Shell),它目前在德国的行业协会中是标准化的,可以为工作组中的互操作性提供一个支柱。
4)实践:工作组将收集参考解决方案并提供实施下一代生产环境的教育材料。
03 微软的贡献
微软已经成为开源软件扩散的一个重要因素。过去微软不是开源的粉丝,在十几二十年前甚至认为开源是洪水猛兽,是“共产主义”(微软当时的CEO Steve Ballmer曾在一份声明如是说),但现在一直在推广它。Linux已放在微软Azure上,并加入了开放发明网络(Open Invention Network),该组织帮助保护Linux免受专利诉讼。此外,微软不仅为开源网站贡献了2000多个项目,如net core、TypeScript、VS code、PowerShell等,还收购了GitHub,一个流行的开源代码共享与协作的数字蜂巢。
3
工业自动化开源软件技术栈的
主流开源项目简述
开源软件已经成为工业自动化软件和企业IT软件值得信赖的技术来源。特别是涉及实现工业4.0和智能制造至关重要的软件需求(譬如数据聚合、安全、设备管理、事件管理和数据分析,以及数字孪生管理等), 如何在实现解决方案的过程中能取得快速成效,关注和参与开源项目十分必要。
一般来讲,开源软件技术栈包含基础软件、可嵌入到其他软件项目中的代码库和各类应用软件。
开源基础软件主要是指开源的操作系统。Linux首当其冲,因为现代的控制系统和大多数的边缘计算设备都选择Linux用作开源操作系统。RT-Linux要求在Linux基础上进行实时扩充或实时修补。目前主流的实时扩充和实时修补有Preempt-RT、Xenomai,OSADL(开源自动化开发实验室)的the Realtime-Preempt Kernel Patch、等等。
有许多开放源码项目提供了特别适合工业4.0应用程序的技术。Eclipse物联网工作组有28个项目,目标是通用物联网的解决方案,其中一些适用于工业4.0。还有一些开源社区如Apache软件基金会和Linux基金会等,也有与工业4.0相关的技术。
以下列举可用于工业4.0和智能制造解决方案的潜在开源技术供读者参考(见图8)。
图8 有关工业4.0和智能制造的开源项目 (图源:Eclipse物联网工作组)
(1) 开放标准
工业4.0的开放标准允许解决方案具有互操作性、模块化和不依赖供应商等特点。不同的开放源码项目支持下列相关标准:
OPC UA ——Eclipse Milo是OPC UA的完整实现,它用Java编写,提供了客户端和服务器的标准实现。open62541(open62541.org)是一个OPC UA的C堆栈实现,是Mozilla Public License(MPL)下的OPC UA。OPC基金会还为非成员提供了基于GPL许可的OPC UA的Java实现。
MQTT/Sparkplug ——Eclipse Paho和Eclipse mosquito提供MQTT消息传递原型的客户端和代理实现。mosquito使用C语言实现MQTT服务器,Paho使用多种语言实现MQTT客户端,包括C、c++、Java、JavaScript、Python等。Sparkplug是一个开源软件规范,它为MQTT客户端提供框架,以便在MQTT基础结构中无缝地集成来自其应用程序、传感器、设备和网关的数据。实际上MQTT只是传输层的协议,Sparkplug才是具有语义内容的规范。Eclipse Tahu项目是该规范的一个实现。Sparkplug为网络网关或支持本机MQTT的终端设备和MQTT应用程序如何在MQTT基础设施中进行双向通信提供了开放和免费的规范。MQTT/Sparkplug B在工业中应用的优势主要表现在:
1)互操作性:Sparkplug B规范通过定义标准的客户端角色和数据接口,解决了围绕工业应用的MQTT实现可能出现的不一致性问题。来自不同供应商的MQTT客户端可以识别、解释和使用发布的数据,而不需要知道原始客户端的详细信息。即使是原来拥有的自动化网络和设备也可以利用Sparkplug。
2)统一命名空间:通过跨企业的统一名称空间(定义所有业务数据的公共数据源),在此级别上满足了数字转换的互操作性关键需求。MQTT设备及其应用程序共同组成一个数据端点MQTT代理;而由PLC>SCADA>MES>ERP的多层结构中,每个层次的操作数据都有自己特定的模式和数据结构。由此可见,企业客户可以通过代理使用字段中的数据,使用Sparkplug提供通用的交换格式和统一的上下文语境。其结果是数据可以返回网络发布,供其他客户端检测、解释和处理(见图9)。
3)增强数据完整性:Sparkplug还提高了数据完整性和一致性,并与可靠性相结合。通过执行最后请求和遗嘱机制,当相关数据没有刷新时所有订阅者都会得到通知,而数据的再次出现证明会知道数据何时再次刷新。对于那些在受监管行业中需要历史数据进行审计或进行根因分析的应用,在面临网络或客户端不稳定时,存储转发历史数据可执行防止关键数据丢失的保护。
4)减少管理:Sparkplug增强的状态管理和互操作性的结合,通过减少集成每个节点和设备所需的管理开销,为网络可伸缩性提供了额外贡献。按传统方法集成工业数据需要在应用程序间进行耗时的标签/变量变换。但借助Sparkplug的数据生成证明机制,使这一过程加速了几个数量级。订阅者(特别是主应用程序)可使用数据生成证明中发布的信息,在瞬间映射出可供使用的主题。每个客户端在连接到网络或更新其主题结构时都需要数据生成证明,因此可以自动发现标签层次结构。
图9 采用Sparkplug统一的命名空间可实现在一个组织内来自不同领域或范畴的数据共享互操作性 图源:OPTO 22网站
PPMP ——生产性能管理协议(PPMP)是一种用于获取生产设施性能分析所需数据的有效载荷规范。Eclipse Unide是一个开源项目,它遵行PPMP规范,并为PPMP提供SDK软件开发工具包
oneM2M ——oneM2M是一个服务层标准,定义了可被应用程序、网关和设备共享的通用业务功能。oneM2M中的行业域启用工作项(industry domain enablement work item)定义了使用oneM2M资源结构来满足行业需求的方法。oneM2M还定义了与OSGi、DDS、OPC UA和Modbus等标准的互操作,从而可以将工业数据统一地聚合并提供给应用程序。Eclipse OM2M提供了oneM2M IN(基础架构节点-平台)、MN(中间节点-网关)、ASN(应用服务节点-设备)和IPE(跨工作代理实体)的实现,可用于异构协议的互连。
物联网网关 ——Eclipse Kura提供了一个可移植的Java/OSGi边缘计算框架——用于构建可部署到工业4.0解决方案中的物联网网关。Kura支持多种现场总线协议,如OPC UA, Siemens S7和Modbus,简化了与PLC和传感器交互所需的步骤。用于蓝牙2.1、BLE、GPS、串行通信和GPIO/SPI/I2C交互的Java API,为传感器和终端设备集成能力完备了一套开箱即用的特性。Eclipse Kura还具有一个名为Wires的模块化和可视化数据流程编的工具。通过简单地从面板中选择组件并将它们连接在一起,Wires允许在边缘定义数据收集和处理管道。EclipseKura分发通过易用的Web UI、防火墙和网络管理功能,与完整的SQL数据库集成,并运用内置的先进物联网云平台的支持进行同步的多云连接。
(2) PLC开发
Eclipse 4diac是一个开源项目,促进了IEC61499在分布式工业过程测量和控制系统(IPMCS)中的进一步开发,并分发来自原始贡献者的研究结果。从一开始,它就提供了编写和执行分布式IPMCS所需的开发工具和运行时,还将OPC UA和MQTT集成到控制系统中,方便系统的连接。4diac已成为基于IEC61499的研究和开发的主要来源之一。它已成功应用于多个工业系统,包括制造系统、物流、电力和能源应用、机器人和楼宇自动化。
(3) 信息安全
»签名代码
Eclipse Kura支持将签名代码远程部署到物联网网关。这确保了完整性,并确保在工厂层进行代码部署的来源无误。
»设备认证
Eclipse Leshan是LWM2M设备管理协议的实现。LWM2M支持设备认证和授权。
»存取控制
Eclipse Keti提供了一个存取控制服务,可以保护静止的(REST-ful)API,以便只有授权方才能操纵敏感信息或数据。
(4) 设备管理
»设备管理和配置
OMA LWM2M——轻量级M2M(LWM2M)是来自OMA的设备管理协议。Eclipse Leshan是LWM2M的Java实现,Eclipse Wakaama是C实现。
Eclipse Kapua是物联网设备和智能传感器的模块化集成平台,专注于提供边缘物联网节点的综合管理,包括它们的连接、配置和应用程序的继续完善(application cle)。Kapua设备管理提供了反省(introspect)设备配置、更新设备应用程序和固件、远程控制设备的能力。
»软件更新
Eclipse hawkBit提供后端框架,用于向受约束的边缘设备进行滚动软件更新,以及连接到基于IP的网络基础设施的更强大的控制器和的网关。
(5) 事件管理和数据分析
»事件管理
Eclipse Hono提供远程服务接口,用于将大量物联网设备连接到后端,并以统一的方式与它们交互,而无需考虑设备通信协议。Hono提供可伸缩且安全的传感器数据采集,并将数据转换为可集成到企业IT系统的一致性事件。
Eclipse Kapua提供了一个模块化的物联网平台,用于管理和集成物联网数据和事件。Kapua通过消息路由服务和REST API实现了更容易的IT集成。这提供了一组一致性的API来支持OT和IT集成。
EclipseVest.x提供了一个事件处理框架,用于处理大量并发事件,这是物联网系统的典型特征。Vest.x构建在Java虚拟机上,但支持许多语言,如JavaScript、Groovy、Ruby、Ceylon、Scala和Java。
Apache Spark是一个快速、通用的数据处理框架,对物联网系统具有高度的可扩展性。在Spark上运行的应用程序可以用Java、Scala、Python和R编写。
»数据存储
Apache Hadoop通过使用由普通硬件构建的计算机集群,实现了对大量数据的分布式和可伸缩存储。
Apache HDF是Hadoop家族中的一个组件,它支持任何形式的数据(包括结构化和非结构化数据)的高度可伸缩存储。它是高度冗余和高度可伸缩的。它非常适合大规模批量存储。
Apache Kudu是Hadoop家族中的另一个存储组件,为快速分析和存储快速数据进行了优化。这使得它非常适合在OT或IT环境中存储和分析物联网数据。它本质上是柱状的,具有固有的分布式和可伸缩性,可以很好地处理关系数据库模式,包括频繁的更新。
Apache HBase是一个构建在HDFS上的组件,具有额外的NoSQL存储能力。和HDFS一样,它可以存储结构化和非结构化数据,适合高速读写。
»数据管理
Eclipse Kapua提供了一个微服务来存储和管理来自工业4.0应用程序的数据。Kapua提供了一致的API,允许跨应用程序轻松进行数据分析,并集成到现有的企业IT系统。Kapua默认的数据存储为ElasticSearch,也可以使用其他的NoSQL和SQL数据存储。
(6) 数字孪生
Eclipse Ditto是一个创建和管理数字孪生的框架。Ditto公开显现一个统一的基于资源的API,可以用于与设备交互,而设备是从不同设备类型的复杂性以及它们如何连接中抽象出来的。这有助于将设备组织成不同的功能性方面,并且可以根据正式的设备元模型(基于Eclipse Vorto)选择性地实施数据类型分类和数据验证。
Eclipse Kura提供了REST和Java中的开放API,以及一个基于MQTT的通信层,可以利用该层与现场设备和资产进行交互。Kura驱动程序提供了一个硬件抽象层,降低了设备交互的复杂性,简化了与网关连接的设备的通信。Kura为与网关连接的每个设备显现MQTT和REST API,允许执行按需的读写操作和远程读写操作,并为这些设备提供数字孪生接口。
(7) 工业4.0解决方案开发平台
Eclipse BaSyx项目是德国研究项目BaSys 4.0的开源成果,为加速工业4.0解决方案的开发而设置的下一代自动化开源平台,提供通用工业4.0组件和一个可扩展的软件开发工具包(SDK)。Eclipse BaSyx平台着重于解决各种挑战,诸如可变生产、实现个性化商产品生产、利用大数据分析、连接异构设备和系统,以及使停机时间最小化和其他相关成本最小化等。Eclipse BaSyx实现了工业4.0生产架构中以下的几个核心技术:
1)实现制造机械装置/车间和IT之间的跨网络和跨协议的点对点通信,即虚拟自动化总线的实现。现今车间中常见的典型工业通信基础设施不具有所需的灵活性、互操作性和抽象性。只有采用虚拟自动化总线和标准接口才可能在支持OPC UA的同时,也支持现场中大量存在的现场总线和工业以太网。
2)资产管理壳是(AAS)目前德国工业标准化的一个概念。这些资产可以是物理资产,也可以是非物理的资产(如软件、技术文档)。其核心思想是,生产过程中的每一项资产,如机器、生产线、工人或产品,都有一个管理壳,它包含和/或指向该资产的所有可用数字信息,以及一个资产。AAS被组织成子模型,这些子模型包含资产特定方面的接口和状态、实时数据以及服务。子模型的一些例子包括资产的几何属性,由子资产组成的资产的拓扑结构(例如生产线),描述资产实现的物理过程的公式和/或仿真模型或信息模型,用户文档等。总之资产管理壳是生产资产的数字表征,即它们的数字孪生。BaSyx提供一个分布式资产管理壳的开源实现。这表示由AAS提供的信息可以驻留在网络的不同位置;例如,不同的子模型可能有不同的位置,或者多个AAS的大量历史数据可能被放在一个专用服务器上。
3)控制组件实现设备统一的服务接口。它们将生产服务的实现从生产过程中分离出来,并均可通过运行时环境实现。
图10 Eclipse BaSyx平台(蓝色背景所标区域)在生产系统的位置(图源:EclipseBaSyx网站)
4
结束语
开源软件及其社群为工业企业的数字化转型提供了开放创新和开放合作的强有力手段。在这个意义上讲,企业只有掌握了开源的艺术,才可能在数字化转型的过程中更有活力和效率,才可能是持续的。数字化基本上意味着企业的生产、管理、经营和服务等所有环节都应该有统筹而且相互关联的数字化表达和运行,因而企业必定成为一个以软件为中心的组织,开源几乎是达到这一目的关键手段。数字化转型需要由开源驱动,而开源驱动保证了企业能实施开放创新和开放协同合作。
在评估开源技术有两个主要选择。首先,访问相关的网站如SourceForge.net,从中获取工具包并查看相关开源技术的的评级;其次,在采用和集成开源技术时与供应商合作。如果选择第二种方法,应该查看供应商,以评估他们对所使用的开源技术的支持。关注人们在使用特定的开源软件时遇到的问题和取得的成功,例如在论坛和博客上有很多关于用户如何选择以及他们是如何做的帖子,这是一个不错的信息来源。另外,登录开源社群的网站,并参与其中,找出哪些开源工具包是最成功的,并得到持续的支持。在社群的论坛上寻找最后一次活动,或者最后一次构建的时间,这样就可以了解这个组织的寿命以及他们对软件包的支持。
往期文章推荐阅读