物模型与资产建模¶
物模型是用户可在EnOS上管理的、特定设备资产或非设备资产(逻辑资产)的抽象。物模型描述了物的特征、能力、能提供的服务,以及可能发生的事件。
物模型抽象出资产的共同特征,形成一个模型,以便应用进行处理。以智能水表为例,尽管规格不同,其属性相似、功能逻辑相仿、收集的数据种类相同。我们便可以用抽象的模型标准化智能水表的特征。设备模型让用户免于设备多样性的迷惑,使其专注于资产的共同特征,助力应用开发。
物模型也可以表示一个包含了一系列同类型或不同类型设备的物理场所或容器。即物模型也可以表示 逻辑资产。例如,一个风场就是一个非设备资产,其包含了若干风力发电机。风场也都具有通用的属性种类、运行时数据、及状态。例如平均风速、平均发电量等。
资产建模的必要性¶
物在模型化之后才可以被应用程序利用。
例如,一个监控电表的应用需要记录、处理、分析、展示从实际电表设备收集到的数据。为了向应用描述电表设备,需要抽象出电表的通用测点和处理逻辑。利用模型可以完成抽象。模型包含了通用的设备特征、能力,以参数形式呈现。模型将复杂现实转化为标准化的、面向自动化和应用程序的结构。
物模型功能定义¶
用户可根据产品的实际需求定义以下要素用以定义一个物模型。
模型功能定义 |
描述 |
例子 |
属性 |
描述设备的静态属性。用户可自定义属性的名称以及标识符,名称相当于是一个描述,允许中文输入。 |
名称、型号、位置、设计参数、经度等 |
测点 |
描述设备运行时的状态。测点允许用户自定义测点的名称以及标识符,名称相当于是一个描述,允许中文输入。 |
温度、压力、电流、电压、各类状态等 |
服务 |
可被外部调用的能力或方法。可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑。 |
下发的指令、执行的任务等 |
事件 |
设备运行时上报的事件,一般包含需要被外部感知和处理的通知信息。可以包含多个输出参数。用户可以使用EnOS数据订阅服务订阅事件数据,详情参见 数据订阅。 |
设备状态变更、指令执行完毕等 |
模型标准功能定义库¶
用户除了可以自己创建功能定义,还可以直接使用EnOS提供的行业标准功能定义。更多信息,参见模型功能定义标准功能库。
数据类型¶
模型的属性、测点、服务、事件,都需要通过数据来描述,每一个数据都有一个类型。EnOS模型的要素支持以下数据类型:
int32:32位带符号整数
float:浮点型数据
double:双精度浮点型
enum:枚举型数据
string: 字符串类型,长度为1-1024个字节
timestamp:时间戳类型数据,格式为UTC时间,精确到毫秒
date: 日期类型数据
struct:构造体类型数据,不允许嵌套struct,成员字段只能是int32、float、double、enum、bool、string、date类型
array:数组类型数据。数组成员只能是int32、float、double、string类型。使用时需要声明数组内元素的数据类型。数组长度支持不定长,最长不超过128个元素。
file:文件类型数据
备注
支持的数据类型将根据所选的功能类型和测点类型而有所不同。
对于属性和测点,如果数据类型是非 enum 或 struct,你可以选用系统内置的一些单位,如:千米,分米,百分比等。有关单位的列表,参见 EnOS 内置单位。
模型关系¶
创建模型的时候,有拷贝和继承两种模式。两种不同的创建模式主要体现在模型关系上。
拷贝¶
基于拷贝模式创建的模型。新建模型与被拷贝模型有完全相同的四要素,两个模型相互独立,模型变更互不影响。
继承¶
基于 继承 模式创建的模型。新建的模型被定义为 子模型,被继承的模型定义为 父模型。子模型主要有以下特性:
子模型继承父模型的所有要素,继承自父模型的元素无法被修改。
子模型可以再被继承,支持多层的继承关系。
子模型可以创建独立的要素,但子模型中新增的要素不可与所有上级父模型中的元素重名。
当父模型中的四要素发生变更,则子模型中继承自父模型的四要素同步变更,保持与父模型一致。
模型权限¶
模型分为 公共模型 和 私有模型 两类。各自权限策略不同。
公共模型¶
公共模型是EnOS沉淀的领域标准模型,对所有OU开放。所有OU都具有读权限,任何OU都不具有写权限。
私有模型¶
在本OU下创建的模型都属于私有模型。私有模型不对其他OU开放。OU内所有用户都有读权限,被授权的用户拥有私有模型的写权限。