前言
进入正文之前,我们先对ignition来作一个初步的介绍。
以下是ignition的官方网站:https://inductiveautomation.com/ 。
从官方的描述来看,ignition非常强大,可以有很多种的开发用途。先上一波官方图,在官网中下图介绍了ignition的用途:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W18AVHZv-1664266106874)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fa8033639acb46b9a5e9d7dadc3625cf~tplv-k3u1fbpfcp-watermark.image?)]
简单的来说,ignition主要用于工业软件行业的软件开发,也可用于企业软件的开发,下面是对其用途的简单介绍:
SCADA:监控和数据采集(supervisory control and data acquisition),也就是数据链路监控和采集,在相关行业的开发中,很多数据是通过各种传感器和设备获取,ignition就可以用来进行数据采集和监控。
IIoT:工业物联网(Industrial Internet of Things),顾名思义,ignition可以用于工业物联网开发。
MES:制造执行系统(Manufacturing Execution System),在工业生产流水线中,可以使用ignition开发制造执行系统控制流水线的运转与生产。
HMI:人机界面(Human Machine Interface),ignition也可用于工业软件中开发常用的人机交互界面。
Alarming:报警系统的开发。如在SCADA中,传感器监控设备状态,并将数据传送到ignition,就可以使用ignition开发一整套报警系统,对监控的异常数据进行报警。
Reporting:报表的开发。如在SCADA中,传感器监控设备状态,并将数据传送到ignition,就可以基于该数据开发Reporting,可以实现对数据的实时查看、筛选和过滤。
Edge Computing:边缘计算。参考云计算,不同的是,边缘计算在近处,云计算在远处。
Enterprise:对企开发。
Mobile:这个不用多说了吧,Mobile开发,但不局限于此。
一个ignition项目就可以实现以上所有的开发用途,用官方的话来说就是ignition功能强大,适用于多种开发和足以应对不同的开发需求。
以下是ignition的用户手册,对于ignition的介绍和概念在其中都有详细的介绍:https://docs.inductiveautomation.com/display/DOC81/Welcome 。
下面一段话和图片来自ignition用户手册中对ignition的介绍,原文是纯英文的,这里简单翻译了一下:
Inductive Automation®的Ignition SCADA将无限许可模式、基于Web的即时部署以及用于监控和数据采集 (SCADA) 的行业领先工具集结合在一个开放且可扩展的通用平台上。 Ignition是新的SCADA,因为它解决了旧SCADA的所有主要痛点。Ignition 使您的企业能够轻松控制您的流程,并且无限制地跟踪、显示和分析您的所有数据。Ignition从头开始设计并且易于上手,同时它灵活且兼具拓展性。Ignition是高拓展性的,因此只需要一次此成本的获得服务器许可证,您就可以无缝连接所有数据和轻松设计任何类型的工业应用程序,并且任何人都可以通过web服务器的网关对其进行部署和开发,ignition是一个通用的自动化平台。
Ignition 有一个核心,专注于您需要的一切,而不是您不需要的一切。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3dmbxWSU-1664266106875)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/82cc35b2a40d47fa88793de843316065~tplv-k3u1fbpfcp-watermark.image?)]
主题开始
以上为了引进ignition,所以对ignition进行了简单介绍,那么下面咱们直接进入主题。
通过以上的介绍,相信大家对ignition有了初步的了解。那么ignition有哪些基本概念呢?
ignition主要基本概念如下:GateWay网关、Projects项目、Moudules模块、Architecture架构。
下面让我们来初步了解一下ignition的这些基本概念。这些概念官方的用户手册中都有详细介绍,具体的详细信息大家可以查阅官方具体的用户手册。下图是ignition用户手册中对ignition的大体介绍:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G9InqVLm-1664266106875)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8ef031762c1e4118a5d0ec30450bfb42~tplv-k3u1fbpfcp-watermark.image?)]
GateWay网关
在ignition中,ignition在单机上只能有一个网关(可以替换网关,但是只能有一个,可以通过web连接和访问多个网关)。ignition的网关就是ignition“基于服务器”简单许可“基于Web的部署”“网络启动的Designer和Client”“可拓展的模块化的架构”“跨平台”等特点的体现。网关的作用非常强大,他是整个项目的部署中心、配置中心,所有项目的各种连接和配置几乎都是在网关中完成。用我的话来说:ignition的网关就相当于Java中SpringCloud的配置中心、注册中心、Sentinel和Feign、Tomcat、Idea、Git等的缝合结合体(ignition的网关作用很大,这个需要切实体会)。我们所有的数据库驱动和连接、数据采集的设备连接、项目管理、模块管理、项目冗余、项目信息和数据展示、服务器配置等都在网关上配置。网关可以进行备份与恢复,所有的配置和项目都部署在网关之上,即对客户需要的项目等,我们只需要将我们开发项目所在的网关备份成一个.gwbk的网关文件交付给客户进行恢复即可完成部署(基于Web的部署和跨平台等特点的体现)。
如图为网关中的一些配置,其余关于网关的详细信请查看用户手册中的Gateway:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNtlJOoD-1664266106876)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/58610fdda5b94809a664c4beab41ba76~tplv-k3u1fbpfcp-watermark.image?)]
Projects项目
项目即我们正式开发的项目,在网关中可以管理项目、配置项目所需的数据库和Tag Provider(数据点位:可以来自传感器设备,传感器器将传过来的数据通过一个PLC处理转发到ignition中形成一个树状结构的Tag Provider存储。数据点还可以来自数据库、内存、组件的值等,统称为点位)。在项目中我们进行实际的软件开发:软件页面开发、流程逻辑、软件功能、根据需求开发等。实际开发中使用各种组件进行开发,例如Table、Button、Audio、Video等(相当于前端开发)。ignition中内置python库,还封装了很多开发中所需要使用的函数,可以使用Python进行脚本编写,控制项目业务的逻辑和进行功能性的编写,通过Webdev模块还能与其他语言开发的后台进行交互,例如Java。但是在ignition的项目中不支持直接使用Java代码进行开发(虽然ignition底层是基于Java的)。
一个ignition网关可以有很多个项目,项目之间支持继承关系、支持单个项目的导入和导出、还可以建立项目模板,方便进行快速开发。如图为项目开发的界面,其余关于网关的详细信请查看用户手册中的Projects、Perspective(perspective和vision区别不大,一个用于BS开发、一个用于CS开发)和Components:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZyHvX6rU-1664266106876)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e2408c6f28cb47efa7aff94ca99ffb84~tplv-k3u1fbpfcp-watermark.image?)]
Modules模块
模块就是ignition封装的不同功能模块,ignition几乎将所有ignition提供的功能封装为了一个模块,ignition将其定义为“模块化架构”,模块化架构即这些功能相互独立,可以使用,可以不使用(模块可以理解为Java中的各种库和依赖,只不过封装程度更高而且使用和表现方式不同)。
ignition在模块化架构中将ignition的开发由下至上分为:操作系统层、ignition平台层、HMI/SCADA 模块层、第三方模块层、用户应用层。简单的说,操作系统层即可以开发中可以访问和使用计算机操作系统的资源、ignition平台层即ignition平台提供了日常开发中对ignition平台资源的访问和使用、HMI/SCADA 模块层即各种模块提供的使用资源、第三方模块层即第三方模块提供的资源、用户应用层即开发者在开发自己的应用时也可以使用应用层的资源,即组件属性、数据点位、项目属性等。
ignition在平台上提供了很多的模块,各种模块可以在ignition官方网站上门进行下载。下图为ignition网关中模块管理页面显示的已经安装了的模块:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5LvR2CN-1664266106876)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4ca4d2c7ca04f7ea0d9cc8a2f426a0e~tplv-k3u1fbpfcp-watermark.image?)]
初步一眼看上去还是挺多的,所以ignition在用户手册中将模块做了一个分类,即:核心模块、附加模块、第三方模块和用户自建的模块。可以在用户手册的Ignition Modules中进入到模块的相关详细信息查看。
核心模块包括:Vision和Perspective模块、OPC UA模块、Tag Historian模块、SQL Bridge模块(Transaction Groups事务组)、Reporting模块、Alarming Notification模块、WebDev模块、SFC(Sequential Function Charts)顺序功能图模块、EAM(Enterprise Administration Modules)企业管理模块、SMS Notification短信通知模块。以下对核心模块做一个简单的介绍和讲解。
Vision和Perspective模块:拖拉各种组件进行软件的窗口和页面开发,主要区别是Vision是用于CS架构模式的界面开发、Perspective用于BS架构模式的界面开发。实际用法区别不是很大,但是ignition官方为了更好的适配二种开发模式,所以Vison和Perspective还是有一些区别,后面单独做一个详细的讲解。
OPC UA模块:OPC UA在ignition中体现为OPC UA Serve,是一个服务器。之前说过,数据起初通过传感器采集,那么采集的数据怎么传送到ignition呢?这个OPC UA的作用就体现出来了,传感器采集的数据起初传到PLC(Programmable Logic Controller)可编程逻辑控制器上进行初步处理后,OPC UA作为服务器接收PLC传过来的数据,并形成一个树状结构的Tag Provider存储和转发该数据在ignition中使用。
Tag Historian模块:ignition获得了OPC UA服务器的数据,在实际使用中,需要查看过去一段时间的数据形成数据走向趋势进行数据分析等。ignition就提供了Tag Historian模块来满足这一需求,通过设置数据点的History Enabled属性为true,就可以将数据点的数据进行存储和转发,最后存储到数据库中,在使用时可以使用各种组件从数据库中获取历史数据进行展示形成图表(数据点在ignition中称之为Tag)。
SQL Bridge模块(Transaction Groups事务组):OPC UA中说过,数据传到OPC UA服务器中,但是我们需要对数据进行管理和处理等,这个时候就需要使用数据库了。SQL Bridge模块在OPC数据和 SQL数据库架起了桥梁,基于SQL的获得高效的Tag historian和事务管理。能够轻松记录数据、存储数据和双向同步数据。使用ignition提供的事务组,我们的数据可以从OPC流向数据库、从数据库流向OPC。在开发中也可以使用SQL语句从数据中获得我们需要的任何数据。因为数据库和远程PLC之间的连接可能不可靠,通过使用ignition的存储转发系统,可以防止数据丢失,确保历史数据正确的存储到数据库中。
Reporting模块:顾名思义,形成各种报表(XY图表、条形图、饼图和交叉表等)对数据进行展示。可以用来进行数据分析、监控、寻踪、管理等。Reporting中可以设置定时任务以固定的频率或者时间生成Reporting。Reporting可以设置保存路径,可以保存为PDF、HTMl、XML、EXCEL、JPEG、CSV、PNG等格式文件。
Alarming Notification模块:配置发送警报通知的方式(短信、邮件、语音播报或者VOIP电话)、原因和时间的逻辑,管理用户组设置的警报通知。在数据点中可以设置警报,如数据低于或高于某个数据线时触发警报系统,根据我们自己设置的警报优先级和警报内容等通过Alarming Notification模块进行报警。
SMS Notification(Short Message Service Notification)短信通知模块:SMS模块与报警模块相似,SMS模块使用短信向相关人员发送警报信息。通过配置可以设置短信发送的警报内容和对象。
WebDev模块:这个模块可以直接对ignition GateWay中的web服务器和Vison Client进行网络编程。即WebDev模块提供了对ignition中的项目进行网络编程的入口。
SFC(Sequential Function Charts)顺序函数图模块:使用SFC模块可以精简逻辑系统的创建、组织和可视化。在SFC中通过可视化逻辑编程在单个位置定义一系列脚本,然后按顺序调用这些脚本函数,实现对我们对编写的函数的执行逻辑的的控制。可以实现多个进程的并行运行、简化复杂步骤和进行流程控制。可以用工厂中流水线产品的生产逻辑和顺序来理解。
EAM(Enterprise Administration Modules)企业管理模块:我们对软件的开发最终需要交付给我们的客户或者自己的公司来对软件进行管理,EAM就实现了相关的功能来实现企业管理。EAM可以实现对网关的版本控制、项目同步、代理监控和故障恢复等在大型企业中非常重要的功能。
SECS/GEM(SEMI Equipment Communications Standard/Generic Equipment Model)SEMI设备通信标准/通用设备模型模块:使ignition项目和第三方应用程序能够与半导体工厂设备进行通信。
附加模块包括:Voice Notification语言通知模块、OPC COM模块、OPC COM Tunneler模块、Web Browser模块、Twilio Alarm Notification模块、Serial模块、SECS/GEM(SEMI Equipment Communications Standard/Generic Equipment Model)SEMI设备通信标准/通用设备模型模块。
第三方模块包括:MES模块(Manufacturing Execution Systems制造和执行系统)、MQTT模块(Message Queuing Telemetry Transport消息队列遥测传输)等。第三方模块由第三方企业、组织或个人提供,ignition基于模块化架构可以添加很多的第三方模块,但在使用时需要预防模块冲突等。第三方模块可以在官网进行下载。
Architecture架构
ignition有很多种架构,那么这么多的架构方式怎么区分呢?ignition的架构方式的区别即ignition服务器部署搭建的区别。ignition有如下架构方式:标准架构、横向扩展架构、轮辐式架构、边缘架构、工业物联网架构、企业架构、冗余架构、基于云的架构和AWS Outposts架构。官方给出了这些架构的定义,但是官方也表示“许多只是示例,可以修改或扩展这些示例架构以适应许多不同的要求”。对于这些 架构方式,了解学习即可,对于系统的架构需要结合实际场景和需求进行分析和设计。
标准架构:即只部署单个的ignition服务器,采用行业较一般且通用的架构方式作为标准架构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGloPnlc-1664266106877)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2ae487dfd1fd4d828be3a715b28270fa~tplv-k3u1fbpfcp-watermark.image?)]
横向扩展架构:即前后端分离式的架构,一部分网关作为前端服务器,一部分网关作为后端服务器,前后端网关通过网关网络负载均衡后连接。横向扩展架构中,至少有一个网关服务器作为后端网关处理所有PLC和设备通信。前端网关不做大量的数据处理,负责托管Client。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCTmjb1N-1664266106877)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/484de5dee0bf4c54aa6800f578fce3a9~tplv-k3u1fbpfcp-watermark.image?)]
轮辐式架构:轮辐式架构指的是一个ignition网关作为中央节点(Hub),多个ignition网关作为辐射节点(Spoke)和中央节点通信和转发数据。辐射节点统一由中央节点安装和配置,可以根据需求修改辐射节点的各项配置。轮辐式架构,根据其名字来理解,将轮辐式架构当作一个车轮,就是一个中央节点(Hub)作为车轮的中心圆点,多个辐射节点(Spoke)作为车轮的辐条,辐射节点所连接的各类设备(如PLC)作为车轮的轮辋(Rim)而组成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oxilHcjp-1664266106877)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/579777455b1d4c6d8839d3025a77e093~tplv-k3u1fbpfcp-watermark.image?)]
物联网架构:即IIoT架构,IIoT架构通常涉及使用MQTT协议与大量设备进行通信。MQTT是一种轻量级且安全的协议,它利用了独特的发布/订阅传输方法。物联网架构和标准架构相似,不同的是物联网架构是一个ignition网关作为中央节点代理和推送数据到订阅的工业和业务线应用程序,数据来自于和安装了MQTT传输模块的PLC设备、安装了ignition Edge MQTT的现场设备、启用MQTT的Edge网关和基于MQTT规范的现场设备之间的通信。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDonoeVp-1664266106878)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/071248207aee4600b8cb3be52b57b292~tplv-k3u1fbpfcp-watermark.image?)]
企业架构:企业架构即使用企业管理模块的ignition网关架构。企业架构包含了多个服务器,同时还有监控和管理多个网关服务器的机制。EAM模块指定一个网关服务器作为Controller控制器,其他的网关服务器作为Agent代理服务器,在控制器网关上开发后,可以通过网关网络Gateway Network自动将更新推送到其他代理保持多个网关上的项目同步。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-joxBJ6QX-1664266106879)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4f11d4797dc448a1ae4004d1b14bfd35~tplv-k3u1fbpfcp-watermark.image?)]
冗余架构:即使用了副本冗余机制的架构模式。每种架构模式都可以使用副本冗余对需要进行备份的网关建立从节点服务器进行主从同步备份,当主节点服务器发生故障宕机之后,从节点服务器会接管主节点并继续执行,所有的Client和设备连接将被重定向到从节点,保持正常运行和使用。下图为标准架构的副本冗余示意图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Gl1ntVE-1664266106879)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ff48303c266e4834ac85ad0d3e85901f~tplv-k3u1fbpfcp-watermark.image?)]
基于云的架构:在ignition中,所有的服务器都可以托管在云端,这就是基于云的架构。将服务器部署在阿里云、腾讯云等云服务器上,Client通过Internet连接到ignition云服务器,云服务器通过Round Robin Poll、Cell Tower、Satellite 或 Secure VPN连接现场设备获取数据。下图为基于云服务器的标准架构,ignition网关服务器和数据库服务器都部署在云服务器上。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hGkBNNc-1664266106879)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b2509bf1eb847b089ab3df69d547c46~tplv-k3u1fbpfcp-watermark.image?)]
边缘架构:边缘架构即使用了Ignition的Edge版本的架构模式。Ignition Edge系统是轻量级的ignition,可以非常灵活并填补任何系统架构中的空白。例如上面介绍的物联网架构中,对于那些可以连接的设备来说,就是采用边缘架构的模式,将边缘设备同物联网架构的服务器进行连接和通信。
AWS Outposts架构和:即使用Amazon Web Services (AWS) Outposts的架构模式。
小结
全文开头简单介绍了ignition,随后分别简单介绍了ignition的GateWay网关、Projects项目、Moudules模块和Architecture架构。网关中介绍了网关的作用和其重要性、简单介绍了ignition中的项目、模块中简单的介绍了核心模块的概念和列出了附加模块和部分第三方模块、架构中展示了不同的系统架构模式并做出了简单的介绍。
文毕,ignition中,用户手册及其官网都是纯英文的。文中部分来自直接翻译的ignition用户手册,大部分来自个人理解,如果文中有不足或者理解错误的地方,欢迎指出与交流,非常乐意在私信或者评论区与大家沟通和交流。
原文链接:
[https://juejin.cn/post/7147965041151574046]