工业资产指标&数据分析最佳实践
一、术语
英文名称 | 中文名称 | 说明 |
Asset | 资产 | 是工业设备、流程和设施的数字化表示,它可以是PLC、整个机床、生产线、棍床、汽车、电机等。每个资产都有与其关联的数据。例如,一套设备可能具有序列号、位置、品牌和型号以及安装日期。它还可能具有可用性、性能、质量、温度、压力等时间序列值。本产品支持空间类和设备类资产数字化管理,以及支持按空间或功能系统结构,进行资产层次管理。 |
AssetCode | 资产编码 | 是资产的编码系统,在项目中作为资产的唯一标识符,方便与第三方做对接开发 |
AssetTypeCode | 资产类型编码 | 资产模型、资产类型 AssetTypeCode)是一个信息模板,资产可以基于模板快速创建。在每个资产模板中,用户可以配置定义业务属性、技术属性(时序)、技术指标(时序转换或聚合)、资产模板的父子关系、以及资产模板的可视模型(2D/3D)。注意:资产可以基于模板创建,也可以不依赖模板直接添加属性。 |
AttributeName | 资产属性 | 是每个资产中包含工业数据的元数据。从数据管理的角度,资产属性分为四个类别:基础属性、管理属性、业务属性和技术属性。业务属性是具有静态特征的数据表示,例如设备生产厂家和产品规格型号,业务属性可以具有默认值,用户从资产模型创建的每个资产都包含该模型的属性默认值。技术属性是具有时序特征的数据表示,比如设备的振动频率,每个技术属性都有一个数据类型,并可以有一个单位。 |
AttributeGroupName | 属性分组名称 | 用于属性归类,便于展示或检索。 |
AssetIndicator | 资产指标 | 针对技术属性数据做实时的ETL,主要包括两个功能,分别是数据转换和数据统计。 数据转换:将资产属性的数据点从一种形式映射到另一种形式的数学表达式。转换表达式由资产属性变量、文本、运算符和函数组成。转换后的数据点与输入数据点保持一对一的关系。每次当任何输入属性接收新数据点时,都会计算一个新的转换数据点。例如,如果您的资产具有以摄氏度为单位的名为 Temperature_C 的温度测量流,您可以使用公式 Temperature_F = 9/5 * Temperature_C + 32 将每个数据点转换为华氏度。 数据统计:使用聚合函数处理所有输入数据点并按指定时间间隔输出单个数据点的数学表达式。例如,指标可以从温度数据流计算每小时平均温度。 |
View | 数据视图 | 用于管理用户编写的SQL模板,和对执行 SQL后获取到的数据模型进行配置 |
Widget | 数据图表 | 依据数据视图提供的数据模型对SQL结果进行二次聚合分组,然后将二次加工的数据进行可视化编码。 |
DashBoard | 数据仪表板 | 仪表板提供自动布局和可交互能力,帮助用户快速打造可视化报表。 |
二、需求描述
分析工厂车间设备能耗情况,分析维度可以是设备资产、资产模型、空间模型、时间。
取能耗比较高的TOP20设备,并且取设备的能耗平均值。
设备的能耗数据是通过PLC点位上报上来,数据类型是float类型,并且数值正常是单调递增。
三、整体流程
边缘数采一体机通过驱动程序采集PLC设备数据后,点位原始数据首先会保存到tsdb数据库,点位数据和资产模型做映射转换成技术属性数据,最终会通过mqtt分发出来,其中包括设备能耗的数据。
资产指标会按照技术属性维度订阅mqtt数据,用户可以按照业务需求定义数据转换或者数据统计公式,技术属性数据就会按照公式做实时计算。
计算后的资产指标结果数据会统一存储到ClickHouse,平台选择ClickHouse做为平台实时查询引擎,该引擎具备写入效率高、宽表查询速度快、压缩比高等特点,可满足海量OT数据分析场景。
最后平台提供了易用的BI工具,可以针对指标数据做建模和可视化多维钻取分析。
四、操作步骤
1、资产指标定义
a、创建设备能耗指标
由于设备的能耗数据是逐渐累加的,并不需要记录原始能耗值,只需要记录固定周期内的能耗增量值即可。
因此我们只需要定义一个数据统计类型的能耗指标即可,统计周期比如30分钟。
设备能耗的增量值只需要填写这样的计算公式即可:max(energy)-min(energy)
注意该统计周期是滚动窗口,滚动窗口(TUMBLE)将每个元素分配到一个指定大小的窗口中,滚动窗口有一个固定的大小,并且不会出现重叠。
创建完指标后平台会自动运行一个实时计算任务,计算后的数据会自动存储到ClickHouse中。
注意:目前暂时只针对增量的数据做计算,后续会增加功能可以针对某一时间段的技术属性历史数据重新针对该公式做计算。
b、查询设备资产指标值
设备资产里面查询对应的最新值。
另外可以在数据分析视图里面通过编写SQL语句获取资产指标的各个时间段的值。
c、函数说明
支持的函数功能参考:二、资产指标公式函数说明
2、数据分析
针对资产指标平台会默认创建一个资产模型数据源,也就是ClickHouse数据源。
所有资产指标的数据都会存储在该数据源里面,接下来只需要针对该数据源做可视化建模分析即可。
a、数据视图编辑
数据视图就是写SQL方式对资产指标数据做建模,用户可以灵活编写SQL来定义模型。
根据资产模型对应的资产指标,双击资产指标默认会生成SQL模板
用户可以按照业务需求调整该SQL模板,平台提供的是个常用的分析SQL Demo。
数据视图SQL如下,把资产指标和空间资产、设备资产维度做关联JOIN分析,生成一个DWD明细宽表。
select asset.assetTypeCode as "设备类型编码"
,asset.assetTypeName as "设备类型名称"
,asset.assetCode as "设备编码"
,asset.assetName as "设备名称"
-- 可自定义别名, 空间资产第一层级
,asset.level1 as level_1
-- 可自定义别名, 空间资产模型第二层级
,asset.level2 as level_2
-- 可自定义别名,空间资产模型第三层级
,asset.level3 as level_3
-- 可自定义别名, 空间资产模型第四层级
,asset.level4 as level_4
,metric.ts_second as "统计日期(ymdhms)"
,metric.ts_minute as "统计日期(minute)"
,metric.ts_hour as "统计日期(hour)"
,metric.ts_day as "统计日期(day)"
,metric.ts_month as "统计日期(month)"
,metric.ts_year as "统计日期(year)"
,metric.value as "采集值"
from (
select asset_code
,cast(ts / 1000 as DateTime) as ts
,formatDateTime(ts, '%F %T') as ts_second
,formatDateTime(ts, '%F %R') as ts_minute
,formatDateTime(ts, '%F %H') as ts_hour
,formatDateTime(ts, '%F') as ts_day
,formatDateTime(ts, '%G-%m') as ts_month
,formatDateTime(ts, '%G') as ts_year
,value
from (
select *
from FB_ENERGY_Data_Sfere_energySum
)
order by ts desc
) as metric
left join (
select *
from asset_location_view
) as asset
on metric.asset_code = asset.assetCode
;
SQL语法是ClickHouse语法,涉及的函数可以参考:ClickHouse SQL语法
资产指标ClickHouse表结构说明,也就是例子中:FB_ENERGY_Data_Sfere_energySum 结构说明
字段名 | 类型 | 描述 |
asset_code | String | 资产编码 |
attribute_group_name | String | 技术属性组名称 |
attribute_name | String | 技术属性名称 |
attribute_code | String | 技术属性编码 |
ts | uint64 | 时间戳。 数据转换类型该字段精度为纳秒 数据统计类型该字段精度为毫秒 |
value | Float64/String | 转换后的值 |
b、数据图表设计
数据图表是针对数据视图用多样的可视化组件展现,比如柱状图、表格、折线图等。
c、数据应用开发
数据应用就是按照业务诉求把图表关联进来。
默认展示的是总的维度,平台的BI工具可以按照各种维度做钻取分析。
可以定义全局控制台,比如定义日期范围选择,可以针对某一时间段数据做灵活查询。
效果