Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Jay Clifford [InfluxData] | Tips & Tricks for Analyzing IIoT in Real-Time | InfluxDays 2022

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Cargando en…3
×

Eche un vistazo a continuación

1 de 18 Anuncio

Jay Clifford [InfluxData] | Tips & Tricks for Analyzing IIoT in Real-Time | InfluxDays 2022

Descargar para leer sin conexión

Transforming raw machine data into real business outcomes such as OE and OEE is a journey. In this talk we will learn some tips and tricks for analyzing and transforming your machine data using InfluxDB and other third-party platforms.

Transforming raw machine data into real business outcomes such as OE and OEE is a journey. In this talk we will learn some tips and tricks for analyzing and transforming your machine data using InfluxDB and other third-party platforms.

Anuncio
Anuncio

Más Contenido Relacionado

Similares a Jay Clifford [InfluxData] | Tips & Tricks for Analyzing IIoT in Real-Time | InfluxDays 2022 (20)

Más de InfluxData (20)

Anuncio

Más reciente (20)

Jay Clifford [InfluxData] | Tips & Tricks for Analyzing IIoT in Real-Time | InfluxDays 2022

  1. 1. Tips & Tricks for Analyzing IIoT in Real-Time Jay Clifford Developer Advocate, InfluxData
  2. 2. Transforming raw machine data into real business outcomes such as OE and OEE is a journey. In this talk we will learn some tips and tricks for analysing and transforming your machine data using InfluxDB and other third party platforms. Jay Clifford Developer Advocate, InfluxData Jay Clifford is a Developer Advocate for InfluxData. Before joining InfluxData he previously specialised in solving industrial pain points using Vision AI and OT connectivity. Jay now uses his experience within the IoT and automation sector to enable developers and industrial customers alike to realise the potential of Time Series data and analytics. Tips & Tricks for Analyzing IIoT in Real-Time
  3. 3. Agenda • Data Collection • Data Storage • Data in Action
  4. 4. Machines Data Collection Data Storage Data in action Site A Global Custom Apps Third Party Visualization
  5. 5. Data Collection
  6. 6. Telegraf the middleman Direct Middleman Preprocessing of data + preliminary forecasting • Converting metrics • Aggregation • Forecasting Processor + Aggregator Plugins
  7. 7. [[processors.enum]] [[processors.enum.mapping]] field = "status_code" dest = "status" [processors.enum.mapping.value _mappings] 0 = OFF 1 = ON 2 = RUNNING 3 = FAULT Converting 2 3 [[aggregators.basicstats]] period = "30s" drop_original = false stats = ["count","diff", "rate","min", "max","mean", "non_negative_diff", "non_negative_rate"," stdev","s2","sum","interval"] Aggregation [[processors.execd]] command = ["python", "./processors/forecasting.py"] Forecasting
  8. 8. Data Storage
  9. 9. Time in state Calculating state duration from(bucket: "machines") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "machinery") |> filter(fn: (r) => r["_field"] == "state") |> events.duration(unit: 1h, columnName: "duration") |> group(columns: ["_value", "_start", "_stop", "machine_id"]) |> sum(column: "duration") |> pivot(rowKey: ["_stop"], columnKey: ["_value"], valueColumn: "duration") |> map( fn: (r) => { totalTime = float(v: r.RUNNING + r.FAULT) return {r with FAULT: float(v: r.FAULT) / totalTime * 100.0, RUNNING: float(v: r.RUNNING) / totalTime * 100.0} }, ) FAULT RUNNING 15 85
  10. 10. Determine a state Deriving state import "math" from(bucket: "machines") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "machinery") |> filter(fn: (r) => r["_field"] == "vib" or r["_field"] == "vibTarget") |> aggregateWindow(every: 12h, fn: mean) |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") |> map(fn: (r) => ({ r with vibrationDiff: r.vib - r.vib_target })) |> map(fn: (r) => ({ r with status: if math.abs(x: r.vibrationDiff) >= 15.0 then FAULT else RUNNING })) |> drop(columns: ["vib", "vibTarget"]) _time status vibrationDiff ### FAULT 17.435
  11. 11. Anomaly Detection Comparing machine behavior import "contrib/anaisdg/anomalydetection" from(bucket: "machines") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "machinery") |> filter(fn: (r) => r["_field"] == "vib" |> anomalydetection.mad(threshold: 5.0) |> filter(fn: (r) => r["level"] == "anomaly") |> group(columns: ["machineID"], mode: "by") |> aggregateWindow(every: 1m, fn: count, createEmpty: false) _time machine ID _value # level ### CNC1 2.1 # normal ### CNC2 3.4 # Anomaly ### CNC3 2.1 # normal
  12. 12. Edge to cloud Site A Site A analysed Global Edge Cloud • Durability • Visibility • Security • Performance
  13. 13. Data in Action
  14. 14. Site A Site A analysed Edge Cloud Global Global Analysed
  15. 15. Learn more
  16. 16. T H A N K Y O U
  17. 17. Converting Aggregation Forecasting [[processors.enum]] [[processors.enum.mapping]] field = "status_code" dest = "status" [processors.enum.mapping.value _mappings] 0 = OFF 1 = ON 2 = RUNNING 3 = FAULT [[aggregators.basicstats]] period = "30s" drop_original = false stats = ["count","diff", "rate","min", "max","mean", "non_negative_diff", "non_negative_rate"," stdev","s2","sum","interval"] [[processors.execd]] command = ["python", "./processors/forecasting.py "] 2 3

×