跳转到内容

工厂数据基础

适用版本EdgeCloudEnterprise

在 Tier0 中,工厂数据会基于 UNS(Unified Namespace)方法组织成清晰的树形模型,形成统一的数据基础。

  • Broker 通过模型 topic 接收和发送数据。
  %%{init: {"flowchart": {"defaultRenderer": "elk", "nodeSpacing": 32, "rankSpacing": 48, "diagramPadding": 8}}}%%
  flowchart TB
  source["数据源 / 消费者"]
  subgraph UNS["Unified Namespace"]
      direction LR
      Model["模型<br/>定义路径、topic 和 payload"]
      Broker["Broker<br/>处理数据交换"]
      Storage["存储<br/>持久化数据"]
      Model <--> Broker
      Broker --> Storage
  end
  source <-- "MQTT / API" --> UNS
  classDef broker fill:#F7FAF2,stroke:#D8E6B8,stroke-width:1px,color:#2A2A2A,stroke-dasharray:5 5
  class Broker broker
  • 模型分为 MetricStateAction 三种类型。
  • 数据会根据模型类型存储到不同数据库中。
    • Action/State: JSONB (PostgreSQL)
    • Metric: 实时数据(TSDB)
    %%{init: {
      "themeVariables": {
        "fontSize": "14pt"
      },
      "flowchart": {
        "defaultRenderer": "elk",
        "nodeSpacing": 40,
        "rankSpacing": 56,
        "diagramPadding": 8
      }
    }}%%
    flowchart LR
    subgraph Model["模型类型"]
        direction TB
        metric["Metric<br/>高频数值数据"]
        state["State<br/>当前事实或状态"]
        action["Action<br/>命令或请求操作"]
    end
    subgraph Storage["存储"]
        direction TB
        tsdb["TSDB<br/>Metric 历史的时序存储"]
        jsonb["JSONB<br/>State 和 Action 的文档存储"]
    end
    metric --> tsdb
    state --> jsonb
    action --> jsonb

在 Tier0 中,broker 是平台组件,它会基于数据模型,通过 MQTT 或 OpenAPI 接收和发送数据。

  • 通过 MQTT:模型树中每个节点的完整路径会作为 topic 地址,用于传递消息内容。
  • 通过 OpenAPI:通过 HTTP 请求对数据模型执行 CRUD 操作。

工业数据变化频率不同,目的也不同,因此 Tier0 将 UNS 模型固定分为三类。

类型 对象 示例
METRIC 面向连续采集、需要时序存储的高频数据。 设备温度/压力/电压
STATE 面向变化频率较低、用于描述对象当前状态或事实的数据。 设备运行状态
ACTION 面向低频命令数据,用于记录外部系统或操作员应执行的动作。 启动批次、停止设备

每个 UNS 模型都包含 path、topic 和消息内容。它们共同形成一棵,既承载业务上下文,也传输工业数据。

  • Path/Topic:path 表示数据归属,topic 承载消息内容。二者共同定义 模型地址
  • 消息内容:topic 中保存的消息内容。它是 键值对 格式的 JSON,用来定义 模型数据

例如,UNS 中的模型可以像下面这样表示:

Terminal window
Factory_A
└── Site_01
└── SMT_Line_1
└── Metric
└── Machine_001
  • PathFactory_A/Site_01/SMT_Line_1/Metric
  • Topic/Machine_001
  • 消息内容
    Terminal window
    "temperature": 85,
    "vibration": 2.8,

Tier0 使用 PostgreSQL 存储数据。不同数据类型变化频率不同,也有不同的存储要求。

数据类型 存储 说明
Metric TSDB 针对温度、压力等高频测量数据优化。每个 topic 默认包含 timestampquality 字段。
State PostgreSQL 以灵活的 JSONB 格式存储设备或系统状态。
Action PostgreSQL 以灵活的 JSONB 格式存储命令或动作。