跳转到内容

工厂数据建模

适用版本EdgeCloudEnterprise

来自有物理位置的机器和设备的工业数据,通常基于 ISA-95 标准建模。

Terminal window
Enterprise (Level 4)
└── Site (Level 3/4)
└── Area (Level 3)
└── Work Center / Process Cell (Level 2/3)
└── Equipment / Unit (Level 1/2)
└── Control Module / Device (Level 0/1)

对于 ERP 中的生产订单、工单计划等业务计划和流程对象,应根据业务上下文进行建模。

Terminal window
Factory / Business Domain / Business Object / Topic Type / Topic
  • 业务域:确认数据所属的业务流程或系统。

    Terminal window
    ERP
    MES
    WMS
    QMS
    EAM
    LIMS
    Planning
    Inventory
    Maintenance
    Quality
    Logistics
    ...
  • 业务对象:业务域中被管理的核心对象。

    Terminal window
    ProductionOrders
    WorkOrderPlan
    MaterialInventory
    QualityInspection
    MaintenanceOrders
    PurchaseOrders
    Shipments
    ...
  • Topic 类型:从 MetricActionState 中选择数据类型。

    Topic 类型 用途 示例
    STATE 当前状态或当前事实 工单状态、订单状态、设备状态
    METRIC 连续变化的数值 温度、速度、产量、OEE、能耗
    ACTION 给外部执行者的命令 启动设备、停止设备、重置报警、请求下发工单
Terminal window
DemoFactory
└── ERP
├── ProductionOrders
│ └── State
│ ├── UpsertProductionOrder
│ └── OrderList
└── WorkOrderPlan
├── Metric
│ └── SplitCount
└── State
├── PlanStatus
└── WorkOrderList

设计 topic 消息内容时,需要同时考虑要消费的数据和要回写的数据。

  • Action

    Action 消息内容会自动包含 _timestamp,用于记录数据存入 Tier0 数据库的时间。

    Terminal window
    {
    "light_turn_on": true,
    "height_adjust": 12.5,
    "_timestamp": "2026-07-10T10:00:00Z"
    }
  • Metric

    Metric 消息内容会自动包含 _timestamp_quality:前者记录数据存入 Tier0 数据库的时间,后者用于映射数据质量。

    Terminal window
    {
    "production_order_id": "PO-20260710-001",
    "plan_id": "PLAN-001",
    "plan_number": "WOP-20260710-001",
    "split_count": 3,
    "updated_at": "2026-07-10T10:00:00Z",
    "_timestamp": "2026-07-10T10:00:00Z",
    "_quality": "Good"
    }
  • State

    State 消息内容会自动包含 _timestamp,用于记录数据存入 Tier0 数据库的时间。

    Terminal window
    {
    "event_id": "EVT-001",
    "event_type": "UPSERT",
    "source": "ERP",
    "production_order_id": "PO-20260710-001",
    "order_number": "PO-001",
    "product_code": "SKU-1001",
    "planned_qty": 1200,
    "unit": "pcs",
    "status": "Released",
    "due_date": "2026-07-12T00:00:00Z",
    "updated_at": "2026-07-10T10:00:00Z",
    "_timestamp": "2026-07-10T10:00:00Z"
    }

Tier0 设计了三种固定的 Topic 类型, Metric, ActionState 来避免 topic 爆炸.

  • Metric 用于高频实时数据

    将高频测量值和遥测数据统一放在 Metric 下,而不是为每个信号细节创建 topic。

    Terminal window
    Factory_A
    └── SMT_Line_1
    └── Machine_001
    ├── Temperature_Value
    ├── Temperature_Unit
    ├── Temperature_Status
    └── Speed_Value
  • State 用于低频状态数据

    将低频状态、快照和当前业务状态放在 State 下。避免为作业、批次或订单等变化实体分别创建新 topic。

    Terminal window
    Factory_A
    └── SMT_Line_1
    └── State
    ├── Job_001
    ├── Job_002
    └── Job_003
  • Action 用于低频动作数据

    将命令、请求和操作员动作放在 Action 下。动作输入应作为 topic 的字段,而不是为每个参数创建一个 topic。

    Terminal window
    Factory_A
    └── SMT_Line_1
    └── Machine_001
    ├── Start_Command
    ├── Target_Height
    └── Light_On