SCADA Sensor Data Pipeline
System ↔ SystemPLC sensor data flows through SCADA to historian DB with alarm evaluation.
6 nodes · 5 edgesmanufacturing
eventsystemdb
Visual
PLC Sensor Dataevent
Raw readings from programmable logic controllers on the plant floor.
↓sequential→ SCADA Collection
SCADA Collectionsystem
OPC-UA server aggregates and normalizes tag values.
↓sequential→ Data Validation
Data Validationsystem
Range check, spike detection, and NaN filtering.
↓sequential→ Historian DB Write
↓parallel→ Alarm Evaluation
Historian DB Writedb
Time-series insert to process historian (e.g., OSIsoft PI, InfluxDB).
Alarm Evaluationsystem
Compare values against high-high, high, low, low-low setpoints.
↓sequential→ Dashboard Update
Dashboard Updateapi
Push real-time values to HMI and web dashboard via WebSocket.
uc-scada-pipeline.osop.yaml
osop_version: "1.0"
id: "scada-pipeline"
name: "SCADA Sensor Data Pipeline"
description: "PLC sensor data flows through SCADA to historian DB with alarm evaluation."
nodes:
- id: "plc_data"
type: "event"
name: "PLC Sensor Data"
description: "Raw readings from programmable logic controllers on the plant floor."
- id: "scada_collect"
type: "system"
name: "SCADA Collection"
description: "OPC-UA server aggregates and normalizes tag values."
timeout_sec: 10
- id: "data_validation"
type: "system"
name: "Data Validation"
description: "Range check, spike detection, and NaN filtering."
- id: "historian_write"
type: "db"
name: "Historian DB Write"
description: "Time-series insert to process historian (e.g., OSIsoft PI, InfluxDB)."
retry_policy:
max_attempts: 2
backoff: "fixed"
- id: "alarm_eval"
type: "system"
name: "Alarm Evaluation"
description: "Compare values against high-high, high, low, low-low setpoints."
- id: "dashboard_update"
type: "api"
name: "Dashboard Update"
description: "Push real-time values to HMI and web dashboard via WebSocket."
edges:
- from: "plc_data"
to: "scada_collect"
mode: "sequential"
- from: "scada_collect"
to: "data_validation"
mode: "sequential"
- from: "data_validation"
to: "historian_write"
mode: "sequential"
- from: "data_validation"
to: "alarm_eval"
mode: "parallel"
- from: "alarm_eval"
to: "dashboard_update"
mode: "sequential"