开发者学堂课程【物联网应用开发课程:数字孪生】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1055/detail/15309
数字孪生
内容介绍:
一、概述
二、基本原理
三、接入实践
四、实操演练
一、概述
1、定义
数字孪生是近年来的热门词汇,最早是 Grieves 教授在美国密西根大学的产品全生命周期管理课程上提出的。Gartner 预测到2024年将有超过25%的全新数字孪生将作为全新 IoT 原生业务应用被采用。
阿里云 IoT 对数字孪生的定义是物理世界的数字化呈现,可通过构建孪生体来描述设备、流程、系统、场景等业务模型,对物理世界实体信息进行实时采集、运算分析、监控统计等,助用户更准确地掌握业务模型的动态变化,进而实现对实际生产过程的提效和降本的目的。
2、平台演进
数字孪生在整个平台的演进分以下三个阶段:
1.生活智能设备的简单设备建模,制定了统一的建模规范、描述语言标准、数据协议、上云通道、物模型、数据解析存储等。
2.数字孪生的建模运算,包括复杂场景下多种设备的建模、关联设备节点、数据计算,以及设备和孪生的无缝衔接。
3.垂直行业的应用,包括垂直行业的定制模型、基于算法的智能管控、3d模型的可热化渲染等。
二、基本原理
1、孪生模板
数字孪生体是孪生模板的实例化表示,可以理解为class和对象的关系,其实例化的孪生模板可以采用引用和拷贝两种方式添加。孪生模板是有一组节点组成的DAG图。其中节点由属性组成描述,规则和关系通过有向边来描述。孪生模板进行实例化后,即可得到最终的孪生实例。如下:
左边的孪生模板由floor model跟room model组成,将其实例化之后,变成孪生体,孪生体由三个节点组成,分别是弗洛伊节点,以及它的两个折节点room 1和room 2。构建完孪生体之后的第二步是创建数据映射。
2、数据映射
数据孪生体与物理设备之间是解耦关系,可以使用数据映射功能将物理设备的原始数据映射到孪生体的业务模型中,数据映射主要由三部分组成:
- 数据源
孪生节点的数据源包括Topic,包含自定义Topic数据源和物模型上报的Topic两类。
- 交换文件
使用JavaScript语言编辑脚本,解析处理设备从第一步Topic上报的数据来最终输出JSON格式的文件。
- 输出映射
使用规定的JSON数据格式将设备Topic数据或脚本处理后的数据,映射到指定孪生节点的物模型属性上。
以下为相关示意图:
原始设备的数据上报通过Alink协议或者资金Topic通过脚本转换。输出JSON格式,再通过输出文件的映射,映射到指定孪生节点的指定属性上。
3.规则联动
为了避免规则的死循环,在管控态创建孪生规则时,进行严格的检查,避免出现环路,降低整个系统运行的风险,同时为了提升运行规则的效率,把运行规则的表达式翻译成自己的代码执行,并借助MapReduce的并行运算思路来提升孪生体多条规则并发的执行效率。
三、接入实践
1、整体流程
整体的接入流程分为四部分:
- 创建孪生实力
包括创建孪生实力、构建孪生节点、抽象模板等。
- 配置节点规则
包括自身和父子规则,选择出入参及编写表达式。
- 配置数据映射
包括选择数据源,编写转换脚本,配置映射规则。
- 孪生实例的运行
采集设备属性,触发数据映射以及触发节点的联动。
2、业务场景
以对飞天园区建模为例,园区中有一些传感器以及一些虚拟空间,对这些传感器以及空间节点进行建模,这些空间节点有一些衍生属性和告警,但这些空间都不是物理设备,如何来描述业务场景,以及如何根据传感器计算出些空间的业务属性,通过数字孪生建模来解决。
- 构建孪生体
首先构建飞行员区的主节点,从右向左依次添加它的温度传感器、湿度传感器、房间节点以及楼层节点;第二步物模型的定义,最右边的温度传感器包括摄氏温度跟华氏温度,湿度传感器包括湿度属性,房间节点包括舒适度属性,弗洛伊节点包括了舒适度告警;第三步定义孪生规则,从最右面看,温度传感器1节点有自身规则,即将华氏温度转示成摄氏温度,房间1节点有父子规则,通过计算温度传感器和湿度传感器的属性得出房间的舒适度,左面的楼层1节点有父子规则,当房间节点的舒适度低于阈值时来出发告警;最后一步孪生规则的触发,设备上报温度和湿度来映射到湿度传感器跟温度传感器的节点,来触发一系列的规则以及节点联动。
(2)创建数据映射和脚本
定义一个数据映射mapping A,它的数据来自于物模型的属性上报,具体的test设备可在脚本里进行简单的定义
return payload(Srcuid:"json")
直接return到设备上报的原始数据。
最后定义输出文件,输出文件将设备上报的原始数据来映射到孪生体里面的具体节点的具体属性。
(3)启动设备模拟器进行调试
设备模拟器分别上报温度跟湿度,可以发现它可以映射到孪生节点的温度传感器节点以及湿度传感器节点,同时触发规则的联动,同时还可以通过数字孪生运行日志来观察整个孪生体的运行状态以及运行结果。
(4)配置流转规则
创建云产品流转规则的目的地是MQP,由此,孪生节点的属性变化都可以通知到服务端以做更复杂的业务逻辑。
四、实操演练
1、创建孪生体
首先进入到物联网平台的设备管理--数字孪生界面,点击创建孪生体,点击查看,点击编辑,以对飞天园区建模为例:
根节点飞天园区下面有子节点楼层1,楼层1又有两个子节点,分别是房间1和房间2,房间1下有两个子节点,分别是温度传感器1和湿度传感器1,房间2有两个子节点,分别是温度传感器2和湿度传感器2。为了快速建模,这里使用到了前面孪生模板的概念,即选中房间,右键另存为模板,如果还有房间3,其结构余房间1、2相同,就可以把标准间的模板拖到楼层下,此时会出现一个弹窗:
选择引用或拷贝,若为引用,则模板进行编辑之后,引用该模板的孪生实例也进行相应的变化,若为拷贝,则模板进行编辑之后,相关的已经导入的模板不受影响,因此,应点击拷贝。点击节点,点击命名room 3,即完成了快速建模。
(1)温度传感器1
它有两个属性,分别是摄氏温度跟华氏温度,这两个属性都是double类型可读写的。该节点具有孪生规则,该孪生规则属于自身规则,叫华氏温度转换成摄氏温度,自身规则是指输入来自于本节点的属性,输出是本节点的另一属性。输入华氏温度,定义一个参数名称,属性来源是温度传感器1的节点,即其华氏温度,通过表达式计算把华氏温度输出到当前节点的摄氏温度,其中包括了一些算子、语法等,可以点击查看相关文档。
(2)湿度传感器1
它具有属性湿度,也是double类型,可读写,该节点较为简单,没有孪生规则。
room 2与room 1的定义基本上是一致的,都是摄氏温度、华氏温度,有其转换规则,包括湿度传感器。
(3)房间节点
房间节点的属性叫舒适度,同样是double类型,房间节点有个规则称为为父子规则——舒适度的计算,该计算规则有两个入参,分别是房间1当前的温度传感器1节点的摄氏温度以及湿度传感器1节点的湿度,根据这两个参数依照表达式计算房间的舒适度=(温度+湿度)/100,输出值是房间1定义的舒适度的属性,换言之,房间1的属性是由两个子节点的属性运算而来的。对房间2也是类似的定义。
(4)楼层1的定义
楼层1具有舒适度高警的属性,关于舒适度告警,定义了枚举类型,“0”代表正常,“1”代表异常,也是可读写的。
舒适度告警的属性也是来自于父子规则,该规则也有两个入参,分别是房间1的舒适度和房间2的舒适度,表达式相较于之前的稍复杂,用到了关于参数的条件表达式:
condition((comfort1+comfort2) < 0.8,0,1),即当房间1的舒适度1+房间2的舒适度2小于0.8为true时,取0,否则取1。输出属性即为以floor1定义的舒适度告警。
在整个规则联动触发告警之后,通过服务端流转可以监听到告警,业务侧再做一些行为,这样就完成了整个孪生体的定义。
2.创建数据映射
数据映射解决的是如何将设备的数据映射到孪生体当中的问题。
首先,添加数据映射,并命名为MappingA,采用自定义Topic,Topic选择孪生的测试产品DTTest,并选择匹配。该配置的意味着定义了一个数据映射,其数据的来源是自定义Topic,取之前已经创建的产品下的全部设备,即该产品下的全部设备数据上报时采用该自定义的Topic进行上报,就回进入该数据映射来映射到孪生体。
接下来选择脚本文件,脚本文件:return payload ("json")
该脚本文件中仅有一行代码,代表将设备上报的数据不采用任何脚本的附处理,直接透传给下流程。
最后输出映射,当设备上报temp1属性时,会映射到孪生节点fTemperature的属性WZ5jmRBOzq8aNsSqnJsqhaee00,则孪生节点对应的是孪生图里温度传感器1的节点,温度传感器1的节点下该属性。同理,设备上报temp1属性时,会映射到room 2的温度传感器节点的温度属性。
该步骤其实是完成的对设备上报的数据进行脚本处理,再映射到数字孪生体中的过程,即完成了数据解析的过程。
- 运行设备模拟器
通过设备上报触发设备映射,再把数据映射到数据孪生体中。指定数字映射定义的topic,上报四个属性,这四个属性又会通过数据映射映射到孪生体节点中。
回到数度孪生界面,点击查看
可以看到刚才上报的是华氏温度,上报的temp1映射到了传感器1节点的华氏温度,华氏温度通过计算得出了对应的摄氏温度。
那同理,湿度也通过上报进行映射,计算得到了房间1的舒适度,同理,房间2也计算出了舒适度,紧接着计算出了楼层1舒适度的告警。这样就完成了从孪生模型定义、数据映射定义到设备模拟上报来触发规则联动。
如果后续再有一些复杂的业务场景,如要监测楼层1的告警来做一些业务逻辑,比如打开空调,此时就可以通过云产品流转接收孪生体的消息。
首先回到规则引擎,点击云产品流转,创建解析器“孪生流转”,再回到数据源的定义,选择孪生体内属性变更,监测所有节点的变更。
创建数据目的“孪生目的地”,目的地选择 AMQP 订阅消费组,选择默认消费组,即可在服务端进行 AMQP 订阅就可以实时地监测每个数据孪生节点的数据变化,同时又可以通过数据孪生的日志进行过滤,如更新孪生数据以及数据映射运行时的一些执行详情,就可以完成整个孪生体的创建、流转及后期运行状态的查看。