物联网技术的最大挑战是无法快速地构建各种物联网应用系统。虽然物联网系统中采用了许多的IT新 技术,例如容器,微服务,消息系统。部分实现了敏捷化,少代码。但是最终没有摆脱定制化编程困境,目前仍然停留在一个团队为某个业主定制开发某个项目的初级阶段。研发的成本非常高,调试和维护时间长。而且对团队的技术栈要求有比较高的水平。某些IoT平台采用了类似自动化领域的组态方式,尝试让用户来配置IoT 系统。但是仅仅停留在灯光,水泵控制,modbus PLC数据采集等少数应用场景。无法满足诸多专业领域的应用,比如数字制造,智慧城市。就技术而言,物联网并不是一个新鲜东西,大量自动化控制系统都是典型的物联网应用系统。本博文讨论如何借鉴自动化控制领域的设计思想,来构建一个开放型物联网系统。
目前的IoT 平台存在的问题
系统不够开放
开放性系统的一个重要的特征是能够由用户,或者第三方开发人员来设计,扩展系统的能力。就这一点而言,目前的IoT 是不够开放的。平台提供了少量的应用模板,幻想用户通过某些配置来构建具体的应用系统,不过事实证明,开发者哪怕再努力,也无法开发满足所有应用系统需要的程序。成功的IoT要为用户提供强大的设计工具,而不是提供面向应用的模板。俗话说,授人以鱼不如授人以渔,就是这个道理
基于数据流的设计,而不是基于模型设计方法
许多IoT 平台是基于数据流设计(data flow Design),例如 将PLC 采集到的现场数据传输到平台上的数据库中,并实现可视化。这些低层数据量非常巨大,采取平面化的处理方式非常复杂。而且难以提供一种结构清晰的应用系统构建工具。
”自顶向下“是系统设计的主要方法,也称之为”分层设计“方法。系统构建工具也应该体现这样的设计理念,数据分层化,结构化后会变成“更有价值的”数据。面向对象程序设计方法为数据建模提供了有效的工具。
值得提出的是,目前许多讨论物联网模型还停留在物理设备和网络的架构,或者是基础软件的架构上。真正意义上的模型应该是建立所有事物的数字模型。
基于模型设计
一个基于模型设计的IoT 平台应该能够通过构建模型来实现任何物联网应用,不需要使用程序设计语言编写任何的程序。
模型是对某种“真实”事物的简化表示。基于模型的设计就是以模型为中心的设计方法。
物联网中的数据是具有复杂的关系,比如公司拥有车间,车间拥有生产线,生产线拥有设备,设备中有电机和传感器。不同的人员和软件在不同的时刻关心和处理的数据也是不同的。一个物联网系统中事物的关系是非常复杂的,多样的。因此,表现事物的数据也存在复杂的关系,数据的关系称为数据的上下文(Context),有人称数据的上下文关系为“数据的脉络”。非常的贴切。如果数据脱离了上下文关系(context),那它仅仅是数据而已。数据上下文对于数据而言,就好比如鱼得水。
物联网应用系统建模就是要构建一个数据关系的模型。
物联网模型
物联网是“事物”的网络。这里的事物包罗万象,包括了任何能够数字化描述的事物,包括机器,人,动物,软件等等。这些事物是又相互关系的。搞清楚事物的相互关系,就能够当一个事件发生时,根据数据的上下文关系(也称为数据的脉络),触发数据的变化。如果事物是节点的话,物联网本质上是多个节点的网络。事物是有在数学上可以使用图来表示。
例如能源管理系统中:
电表,空调,开关等设备与供应商,维护人员
电能和使用部门
位置和相关数据
权限和安全要求
相关和互连的服务/设备网络
物联网的模型应该是一张图。物联网系统使用图的形式存储数据更加灵活和有效。其中节点是事物的数字化描述。节点之间存在大量固有的关系。
使用基于模型的设计方法,所有的事物都被抽象成为资产,整个物联网系统成为基于资产的系统(Asset Centric system)
图数据库
在IoT 系统中应用所谓“图数据库”,例如neo4j 。而不是传统的关系数据库。图数据库的工程师戏称关系数据库没有关系。只是说,使用传统关系数据看来存储,查询复杂关系数据效率非常的低。
何为图数据库?
图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示,存储和增删改查(CRUD)数据。图形数据库将数据之间的关系视为与数据本身同等重要。
图数据库使用图模型来操作数据。 其中一种图模型是属性图模型,其中数据被组织为节点、关系和属性(存储在节点或关系上的数据)。
Neo4J
Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。为了编写本文,作者特意下载了Neo Desktop 版本,安装在windows 下。
图数据库的优点
底层直接以图的形式存储节点和关系,高效的查询关联数据。
使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。
图数据库在物联网平台中的应用
GE 公司的Predix平台使用图数据库作为资产数据库
OSISoft 的AF Framework 中看到图数据库的影子。
时间序列数据库
图数据库不适合大量实时数据的存储。而时间序列数据库(TSDB)有了用武之地。时间序列数据库是存储与时间序列相关数据的数据库。物联网系统中的动态数据大多数是与时间序列相关。
数据点的顺序是数据的本机特征。此顺序可用于将数据传送到流处理引擎,该引擎可将有序数据视为数据流。由于 TSDB 的一个主要目标是快速,因此利用快速流处理引擎通常是理想的选择。
举一个简单的例子,在捕获了许多钻井平台指标的油井中,一组数据点可能带有标签“Oil Pressure Rig #1”,相关的动态值将是压力测量值和时间戳。此示例时间序列数据可用于跟踪油压趋势,当与其他指标一起分析时,可以预测维护需求以及弃井决策。这些记录以允许基于时间的快速读取和写入的格式写入存储介质。
influxdb 时间序列数据库
influxdb是目前比较流行的时间序列数据库。它与其它的开源软件构成了著名的TICK 物联网技术栈。
也可以使用Grafana 配合,grafana用于时间序列数据库的可视化。
使用这些数据栈能够快速地构建物联网,大数据可视化应用系统,但是对于一个完整的物联网系统,还需要控制和专业的HMI。目前的许多IoT 项目还仅仅停留在数据的可视化展示,手机遥控,车间安灯,看板系统的初级阶段,投资一个数据大屏,做一些手机App遥控灯光,电机。这样的系统使用TICK 技术栈大约化几周时间就能够完成。但是它们并不能够为客户带来多少价值,失去了广泛采用的意愿。以至于被人们产生了许多的误会,被OT领域的专业人士看来是瞎胡闹,华而不实。
使用InfluxDB 时间序列数据库存在前面提到的问题,数据缺乏上下文关系。因此将图数据库与时间序列数据库相结合是一个好的方案。
基于模型设计的物联网
根据上面的分析,这里提出一个基于模型设计的物联网软件架构。
系统的主要构成
IoT Hub service
用于现场设备的数据接收与发送,支持MQTT,modbusTCP,HTTP,websocket 等协议。将数据写入时间序列数据库中。
Configuration
用于系统的组态配置,建立系统模型。
web server
系统的HMI 接口。
runtime
用于事件和通知的处理。
message bus 消息软总线
例如MQTT ,rabbitMQ等消息系统。
时间序列数据库(influxDB)
存储时序数据,仅使用一个Datapoint 作为tag。加快了数据的存器和查询速度。
图数据库(neo4j)
存放数据模型和静态数据。涉及到实时数据或者历史数据通过datapoint 访问influxDB 数据库获取。
其它应用程序
数据分析,MES 工业软件,数字化孪生等工业软件。
关于工业物联网
物联网对于工业领域并不是一个新鲜事。大多数工业控制系统本质上就是现代意义上的物联网。只是自动控制系统对实时性,确定性和安全性有更高的要求。自动控制行业本身也具有行业自身的传统。工业领域也正积极地导入IT 新科技。实现开发自动化系统,工业物联网,和工业软件。
工业自动化领域更加倾向基于模型的设计方法。值得一提的是,在自动化行业一个重要的协议OPC UA 中同样也采用了基于图的方式来构建模型。OPC UA 的基本建模概念是nodes和references。它采纳了面向对象程序设计思想。使用下列几种Node 类型构建对象:
使用这些node和reference 可以将对象转换成为一个图:
虽然OPC UA 主要面向设备和软件之间的接口协议。但是在工业物联网系统中完全可以借鉴OPC UA 信息模型。使用前面提到的图数据库来存储和处理OPC UA 信息模型。这是一个非常有意义的课题。内部采用OPC UA 信息模型有助于OPC UA 的融合。
另一方面数字化制造的相关标准(比如TAS-95)中也采用了基于对象模型,OPC UA 也做了大量的工作。它们本质上也是基于图的模型。在设计软件时可以借鉴这些成果。
结束语
本文讨论了基于模型设计的物联网系统中的相关技术,并且提出了在工业软件内部采用OPC UA 的信息模型。促进物联网系统与OT技术的深度融合。另一方面,我们对利用OPC UA 信息模型构建工业物联网和工业软件充满兴趣。在OT行业的软件和标准的介绍中,大多数介绍的是软件的使用,很少涉及软件内部的实现方法。对工业软件的实现方法更需要加强研究。毕竟,自主可控不能停留在标准上,我们需要 拿出你的代码!
我们会及时与大家分享我们的心得。
物联网技术的最大挑战是无法快速地构建各种物联网应用系统。虽然物联网系统中采用了许多的IT新 技术,例如容器,微服务,消息系统。部分实现了敏捷化,少代码。但是最终没有摆脱定制化编程困境,目前仍然停留在一个团队为某个业主定制开发某个项目的初级阶段。研发的成本非常高,调试和维护时间长。而且对团队的技术栈要求有比较高的水平。某些IoT平台采用了类似自动化领域的组态方式,尝试让用户来配置IoT 系统。但是仅仅停留在灯光,水泵控制,modbus PLC数据采集等少数应用场景。无法满足诸多专业领域的应用,比如数字制造,智慧城市。就技术而言,物联网并不是一个新鲜东西,大量自动化控制系统都是典型的物联网应用系统。本博文讨论如何借鉴自动化控制领域的设计思想,来构建一个开放型物联网系统。
目前的IoT 平台存在的问题
系统不够开放
开放性系统的一个重要的特征是能够由用户,或者第三方开发人员来设计,扩展系统的能力。就这一点而言,目前的IoT 是不够开放的。平台提供了少量的应用模板,幻想用户通过某些配置来构建具体的应用系统,不过事实证明,开发者哪怕再努力,也无法开发满足所有应用系统需要的程序。成功的IoT要为用户提供强大的设计工具,而不是提供面向应用的模板。俗话说,授人以鱼不如授人以渔,就是这个道理
基于数据流的设计,而不是基于模型设计方法
许多IoT 平台是基于数据流设计(data flow Design),例如 将PLC 采集到的现场数据传输到平台上的数据库中,并实现可视化。这些低层数据量非常巨大,采取平面化的处理方式非常复杂。而且难以提供一种结构清晰的应用系统构建工具。
”自顶向下“是系统设计的主要方法,也称之为”分层设计“方法。系统构建工具也应该体现这样的设计理念,数据分层化,结构化后会变成“更有价值的”数据。面向对象程序设计方法为数据建模提供了有效的工具。
值得提出的是,目前许多讨论物联网模型还停留在物理设备和网络的架构,或者是基础软件的架构上。真正意义上的模型应该是建立所有事物的数字模型。
基于模型设计
一个基于模型设计的IoT 平台应该能够通过构建模型来实现任何物联网应用,不需要使用程序设计语言编写任何的程序。
模型是对某种“真实”事物的简化表示。基于模型的设计就是以模型为中心的设计方法。
物联网中的数据是具有复杂的关系,比如公司拥有车间,车间拥有生产线,生产线拥有设备,设备中有电机和传感器。不同的人员和软件在不同的时刻关心和处理的数据也是不同的。一个物联网系统中事物的关系是非常复杂的,多样的。因此,表现事物的数据也存在复杂的关系,数据的关系称为数据的上下文(Context),有人称数据的上下文关系为“数据的脉络”。非常的贴切。如果数据脱离了上下文关系(context),那它仅仅是数据而已。数据上下文对于数据而言,就好比如鱼得水。
物联网应用系统建模就是要构建一个数据关系的模型。
物联网模型
物联网是“事物”的网络。这里的事物包罗万象,包括了任何能够数字化描述的事物,包括机器,人,动物,软件等等。这些事物是又相互关系的。搞清楚事物的相互关系,就能够当一个事件发生时,根据数据的上下文关系(也称为数据的脉络),触发数据的变化。如果事物是节点的话,物联网本质上是多个节点的网络。事物是有在数学上可以使用图来表示。
例如能源管理系统中:
电表,空调,开关等设备与供应商,维护人员
电能和使用部门
位置和相关数据
权限和安全要求
相关和互连的服务/设备网络
物联网的模型应该是一张图。物联网系统使用图的形式存储数据更加灵活和有效。其中节点是事物的数字化描述。节点之间存在大量固有的关系。
使用基于模型的设计方法,所有的事物都被抽象成为资产,整个物联网系统成为基于资产的系统(Asset Centric system)
图数据库
在IoT 系统中应用所谓“图数据库”,例如neo4j 。而不是传统的关系数据库。图数据库的工程师戏称关系数据库没有关系。只是说,使用传统关系数据看来存储,查询复杂关系数据效率非常的低。
何为图数据库?
图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示,存储和增删改查(CRUD)数据。图形数据库将数据之间的关系视为与数据本身同等重要。
图数据库使用图模型来操作数据。 其中一种图模型是属性图模型,其中数据被组织为节点、关系和属性(存储在节点或关系上的数据)。
Neo4J
Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。为了编写本文,作者特意下载了Neo Desktop 版本,安装在windows 下。
图数据库的优点
底层直接以图的形式存储节点和关系,高效的查询关联数据。
使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。
图数据库在物联网平台中的应用
GE 公司的Predix平台使用图数据库作为资产数据库
OSISoft 的AF Framework 中看到图数据库的影子。
时间序列数据库
图数据库不适合大量实时数据的存储。而时间序列数据库(TSDB)有了用武之地。时间序列数据库是存储与时间序列相关数据的数据库。物联网系统中的动态数据大多数是与时间序列相关。
数据点的顺序是数据的本机特征。此顺序可用于将数据传送到流处理引擎,该引擎可将有序数据视为数据流。由于 TSDB 的一个主要目标是快速,因此利用快速流处理引擎通常是理想的选择。
举一个简单的例子,在捕获了许多钻井平台指标的油井中,一组数据点可能带有标签“Oil Pressure Rig #1”,相关的动态值将是压力测量值和时间戳。此示例时间序列数据可用于跟踪油压趋势,当与其他指标一起分析时,可以预测维护需求以及弃井决策。这些记录以允许基于时间的快速读取和写入的格式写入存储介质。
influxdb 时间序列数据库
influxdb是目前比较流行的时间序列数据库。它与其它的开源软件构成了著名的TICK 物联网技术栈。
也可以使用Grafana 配合,grafana用于时间序列数据库的可视化。
使用这些数据栈能够快速地构建物联网,大数据可视化应用系统,但是对于一个完整的物联网系统,还需要控制和专业的HMI。目前的许多IoT 项目还仅仅停留在数据的可视化展示,手机遥控,车间安灯,看板系统的初级阶段,投资一个数据大屏,做一些手机App遥控灯光,电机。这样的系统使用TICK 技术栈大约化几周时间就能够完成。但是它们并不能够为客户带来多少价值,失去了广泛采用的意愿。以至于被人们产生了许多的误会,被OT领域的专业人士看来是瞎胡闹,华而不实。
使用InfluxDB 时间序列数据库存在前面提到的问题,数据缺乏上下文关系。因此将图数据库与时间序列数据库相结合是一个好的方案。
基于模型设计的物联网
根据上面的分析,这里提出一个基于模型设计的物联网软件架构。
系统的主要构成
IoT Hub service
用于现场设备的数据接收与发送,支持MQTT,modbusTCP,HTTP,websocket 等协议。将数据写入时间序列数据库中。
Configuration
用于系统的组态配置,建立系统模型。
web server
系统的HMI 接口。
runtime
用于事件和通知的处理。
message bus 消息软总线
例如MQTT ,rabbitMQ等消息系统。
时间序列数据库(influxDB)
存储时序数据,仅使用一个Datapoint 作为tag。加快了数据的存器和查询速度。
图数据库(neo4j)
存放数据模型和静态数据。涉及到实时数据或者历史数据通过datapoint 访问influxDB 数据库获取。
其它应用程序
数据分析,MES 工业软件,数字化孪生等工业软件。
关于工业物联网
物联网对于工业领域并不是一个新鲜事。大多数工业控制系统本质上就是现代意义上的物联网。只是自动控制系统对实时性,确定性和安全性有更高的要求。自动控制行业本身也具有行业自身的传统。工业领域也正积极地导入IT 新科技。实现开发自动化系统,工业物联网,和工业软件。
工业自动化领域更加倾向基于模型的设计方法。值得一提的是,在自动化行业一个重要的协议OPC UA 中同样也采用了基于图的方式来构建模型。OPC UA 的基本建模概念是nodes和references。它采纳了面向对象程序设计思想。使用下列几种Node 类型构建对象:
使用这些node和reference 可以将对象转换成为一个图:
虽然OPC UA 主要面向设备和软件之间的接口协议。但是在工业物联网系统中完全可以借鉴OPC UA 信息模型。使用前面提到的图数据库来存储和处理OPC UA 信息模型。这是一个非常有意义的课题。内部采用OPC UA 信息模型有助于OPC UA 的融合。
另一方面数字化制造的相关标准(比如TAS-95)中也采用了基于对象模型,OPC UA 也做了大量的工作。它们本质上也是基于图的模型。在设计软件时可以借鉴这些成果。
结束语
本文讨论了基于模型设计的物联网系统中的相关技术,并且提出了在工业软件内部采用OPC UA 的信息模型。促进物联网系统与OT技术的深度融合。另一方面,我们对利用OPC UA 信息模型构建工业物联网和工业软件充满兴趣。在OT行业的软件和标准的介绍中,大多数介绍的是软件的使用,很少涉及软件内部的实现方法。对工业软件的实现方法更需要加强研究。毕竟,自主可控不能停留在标准上,我们需要 拿出你的代码!
我们会及时与大家分享我们的心得。
举报