SCADA Sensor Data Pipeline

System ↔ System

PLC 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.

sequentialSCADA Collection
SCADA Collectionsystem

OPC-UA server aggregates and normalizes tag values.

sequentialData Validation
Data Validationsystem

Range check, spike detection, and NaN filtering.

sequentialHistorian DB Write
parallelAlarm 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.

sequentialDashboard 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"