- otopcua-dataflow: equipment → drivers (8, with stability tiers) → namespaces → ACL → consumers - redpanda-eventhub: site ScadaBridge → store-and-forward → central cluster (topics + retention tiers + schema registry) → enterprise consumers - snowbridge-dataflow: source adapters (Historian/Redpanda) → governed selection + approval workflow → Snowflake landing - scadabridge-dataflow: OtOpcUa inputs → scripts/templates → multiple outputs (Redpanda, Web APIs, DB, email, equipment writes, Camstar) - snowflake-dbt-dataflow: landing → staging → curated layer (dim_equipment, fact_state_transitions, mart_oee) → Power BI / AI/ML / ad-hoc
51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
flowchart LR
|
|
subgraph Equipment["Equipment (Layer 1)"]
|
|
PLC1["Modbus TCP/RTU<br/>devices"]
|
|
PLC2["Siemens S7<br/>PLCs"]
|
|
PLC3["OPC UA-native<br/>equipment"]
|
|
PLC4["AB CIP/Legacy<br/>PLCs"]
|
|
PLC5["Beckhoff TwinCAT<br/>controllers"]
|
|
CNC["FANUC CNC<br/>(FOCAS)"]
|
|
end
|
|
|
|
subgraph OtOpcUa["OtOpcUa Cluster — per site (Layer 2)"]
|
|
direction TB
|
|
subgraph Drivers["Core Drivers (8)"]
|
|
D1["Modbus<br/>Tier A"]
|
|
D2["S7<br/>Tier B"]
|
|
D3["OPC UA Client<br/>Tier A"]
|
|
D4["AB CIP + Legacy<br/>Tier B"]
|
|
D5["TwinCAT<br/>Tier B"]
|
|
D6["FOCAS<br/>Tier C ⚡"]
|
|
end
|
|
subgraph Namespaces["Two Namespaces"]
|
|
EN["Equipment NS<br/>(raw data)"]
|
|
SPN["System Platform NS<br/>(processed data)"]
|
|
end
|
|
ACL["ACL Enforcer<br/>6-level scope"]
|
|
end
|
|
|
|
subgraph Consumers["Downstream Consumers"]
|
|
SB["ScadaBridge<br/>(Tier 1 cutover)"]
|
|
IG["Ignition SCADA<br/>(Tier 2 cutover)"]
|
|
SP["System Platform IO<br/>(Tier 3 cutover)"]
|
|
end
|
|
|
|
PLC1 --> D1
|
|
PLC2 --> D2
|
|
PLC3 --> D3
|
|
PLC4 --> D4
|
|
PLC5 --> D5
|
|
CNC -.->|"out-of-process<br/>named pipe"| D6
|
|
D1 --> EN
|
|
D2 --> EN
|
|
D3 --> EN
|
|
D4 --> EN
|
|
D5 --> EN
|
|
D6 --> EN
|
|
EN --> ACL
|
|
SPN --> ACL
|
|
ACL --> SB
|
|
ACL --> IG
|
|
ACL --> SP
|