对于物联网或者数字孪生项目来说,单纯的静态场景展示是无法满足需求的,它需要系统可以提供一种方式将后台数据与模型数据关联,当后台数据推送更新时,模型数据能自动同步。接下来,我们将向您介绍如何在系统中实现这一需求。
编辑器地址:3D可视化组态 - 乐吾乐Le5le
数据集
数据集是若干数据点的集合,每一个数据点都包括数据点号、名称、数据类型、值、模拟规则等属性,其中数据点号是区分数据点的唯一标识,在数据集中不可重复。数据点可以与场景中操作对象的动态数据关联,当数据点的值发生改变时,所有与之关联的动态数据的值也会发生改变。
需要注意的是,即使在同一项目中,不同场景的数据集数据也都是互相独立、互不影响的,也就是说如果项目中有多个场景,您可能需要对每个场景都单独设置数据集。不过我们也提供了多种方法快速复用数据集,以减少创建的重复操作。
由于项目文件中会保存场景的数据集数据,因此我们建议每个场景的数据集中应只保留该场景用到的数据点,以免造成数据冗余。
数据点
点击工具栏 - 数据集按钮,就可以打开数据集设置弹窗。切换到数据集设置页,会显示当前场景的数据集表格。点击新增数据点按钮,可以在弹窗中设置数据点的信息。
- 数据点号:唯一标识,同一数据集中不可重复,必填。
- 显示名称:数据点的名称,可以重复,如果未设置则显示数据点的点号。
- 数据类型:数据点的值类型,包括字符串、数值(整数/浮点数)、布尔值(true/false)。
- 值:数据点的初始值。
- 模拟规则:在模拟数据时,随机生成数据点的值时遵循的规则。
- 开启模拟:模拟数据时,如果此数据点开启模拟,则会按照模拟规则随机生成数据。
- 描述:此数据点的描述备注。
设置完毕后,点击确认按钮,数据集表格中便会新增一条数据点。在表格的操作列中,点击编辑按钮,可以修改对应数据点的信息,点击删除按钮,可以删除数据点。注意,编辑数据点无法修改数据点号,如果您需要修改数据点号,可以删除后重新添加。
保存数据集
如果您需要在其他场景或者项目中复用数据集,或者以某个数据集为模板,在其基础上进行修改或扩展,那么您可以使用我们提供的保存数据集的方法。
一种是保存为模板。点击保存为模板按钮,在弹窗中输入模板名称及描述,点击确认按钮,就可以把当前数据集作为模板上传到云端。
第二种是保存为JSON文件。点击下载为JSON按钮,我们会创建一个下载任务,把当前数据集数据保存到JSON文件中下载到您的电脑中。
第三种是保存为EXCEL文件。与第二种类似,不过下载的是XLSX文件。
导入数据集
有了数据集模板后,我们就可以进行导入操作。我们也同样提供了三种导入数据集的方法。
第一种是使用云端模板。点击选择模板单选框,后面会出现选择模板下拉框,点击下拉框后系统会从云端读取已保存的模板列表,读取完毕后您就可以点击下拉选项来导入该模板数据。
第二种是使用在线数据。点击在线数据单选框,后面会出现一个输入框,用来输入接口地址。按下回车或者点击输入框后的图标,系统会向该地址发送HTTP请求,该地址需要返回符合数据集数据格式的数据。解析成功后会自动导入返回的数据。
接口返回的数据格式如下:
[{"device": "设备1","label": "整数0-100","id": "data-001","type": "integer","mock": "0-100"
}, ...]
Copy
第三种是导入文件。点击选择文件单选框,后面会出现选择文件按钮,点击后您可以选择本地的数据集文件(JSON或者XLSX)并上传,解析成功后便会导入文件中的数据。
请注意,新的数据集会覆盖当前场景的数据集,所以请谨慎操作。
关联动态数据
设置好了数据集,我们就可以关联动态数据了。
关闭数据集弹窗,点击操作对象,打开右侧数据面板,点击您要关联的动态数据后面的关联按钮,即可打开关联数据点弹窗。
在弹窗中,我们会显示当前数据集表格,并且每个数据点行首会有单选按钮。点击数据点所在行,可以选择所关联的数据点。点击当前关联的数据点标签,可以快速将表格定位到该数据点所在行,点击标签后的关闭按钮可解除关联关系。
确定关联的数据点后,点击确认按钮,即完成数据点与动态数据的关联操作。
另外需要注意的是,系统记录关联关系时保存的是数据点号,并且在数据集中执行删除数据点或者重新导入数据集的操作不会解除这种关联关系。例如数据集中有数据点的数据点号为A,并且动态数据B与点号A建立了关联关系。然后我们删除这个数据点,系统并不会取消B与点号A的关联关系。但是由于数据点不存在,因此即使后端推送的数据中包含此数据点号以及值,关联的动态数据也不会发生改变。
如果动态数据的关联按钮背景色为蓝色,表示已关联数据点号,并且数据集中有对应的数据点。如果背景色为红色,表示已关联数据点号,但是数据集中不存在对应的数据点。没有背景色表示未关联数据点号。
总的来说,数据集的作用是创建若干个数据点,每个数据点都有唯一的数据点号,用来与动态数据创建关联关系。一个数据点号可以关联多个动态数据,但是一个动态数据只能关联一个数据点号。删除数据点/数据集虽然不会解除关联关系,但是后端推送数据时与该数据点关联的动态数据也不会更新。
数据订阅
创建了数据集,以及与动态数据建立关联关系后,我们就可以通过改变数据点的值的方式,实现模型数据与实时数据同步了。您需要提供后端接口,然后通过前端轮询或者后端主动推送的方式,向前端发送符合规范的数据,前端接收到数据后,根据数据点号首先会查找数据集中对应的数据点并更新其值,然后会查找与数据点号相关联的动态数据并更新其值。
管理数据订阅
点击工具栏 - 数据集按钮,在弹窗中切换到数据订阅设置页,就可以看到当前场景的数据订阅列表。
点击右侧新建数据订阅按钮,可以在弹窗中设置数据订阅信息。
- 名称:数据订阅的名称。
- 类型:请求方式,支持HTTP/MQTT/WebSocket三种方式。HTTP模式下系统会按照配置的轮询间隔定时向后端地址发送请求,MQTT和WebSocket则会等待后端推送数据。
- 地址:后端接口地址。
- 方法:HTTP模式下请求的方法。有Get和Post两种。
- 参数项:HTTP模式下请求时携带的参数。
- 主题:MQTT模式下订阅的消息主题。
- 客户端ID:MQTT模式下设置的客户端ID。
- 用户名:MQTT模式下设置的用户名。
- 密码:MQTT模式下设置的密码。
- 子协议:WebSocket模式下指定的子协议,多个子协议用英文逗号分隔。
设置完毕后,点击确认按钮,列表中会新增一条数据订阅。点击编辑按钮可以修改数据订阅内容,但是无法修改请求类型。点击删除按钮可以删除数据订阅。
数据模拟
如果目前您没有后端接口,但是想模拟数据订阅的效果,可以激活开启模拟数据。激活后,当项目处于运行状态下,已经设置了模拟规则并开启模拟的数据点会按照轮询间隔定时生成随机数据。您可以修改轮询间隔来增加或者减少数据生成的等待时间,轮询间隔对所有请求方式为HTTP的数据订阅以及模拟数据生效。
数据格式
后端必须按照我们规定的格式来推送数据,目前我们支持两种返回格式:
- 数组
Array<{ id: string; value: any; }>
。其中,id
为需要更新的数据点号,value
为更新的值。例如:
[{ id: 'd-1-a-001', value: 120 },{ id: 'd-1-a-002', value: 60 },{ id: 'd-1-a-003', value: '开启' },{ id: 'd-1-a-004', value: false },{ id: 'd-1-a-005', value: 30 },{ id: 'd-1-a-006', value: 22.5 },
]
- 键值对
{ [
id: string ]: any }
。其中,键为需要更新的数据点号,值为更新的值。例如:
{'d-1-a-001': 120,'d-1-a-002': 60,'d-1-a-003': '开启','d-1-a-004': false,'d-1-a-005': 30,'d-1-a-006': 22.5,
}
值的类型需要符合数据集中对应数据点号设定的数据类型。例如数据点号为'd-1-a-001'
的数据点,它的数据类型为数值(整数),那么后端也应该推送数值类型的值,如果推送的是非数值,那么系统会强制将其转换为数值,例如推送的是布尔值true
,系统会强制转换为1
。