-
Notifications
You must be signed in to change notification settings - Fork 0
Condition Monitoring & Machine Health
Sofia Engine transforms raw time-series telemetry into actionable mechanical condition assessments using statistical anomaly detectors, deterministic diagnostic rule matrices, and uncertainty-bounded health scores.
Industrial condition monitoring classifies vibration severity based on machine size, mounting stiffness, and power rating:
| Zone | Severity Status | Operational Guidance |
|---|---|---|
| Zone A | Newly Commissioned | Normal, vibration of newly commissioned machines. |
| Zone B | Unrestricted Operation | Acceptable for long-term continuous operation without restriction. |
| Zone C | Restricted Operation | Unsatisfactory for long-term continuous operation; plan remedial action. |
| Zone D | Damage Probable | Vibration severity is sufficient to cause damage to the machine. Trip/Shutdown required. |
Sofia evaluates RMS velocity (
Sofia Engine provides a collection of pluggable statistical detectors in sofia_ai.inference.detectors:
Unlike standard deviation, which is easily distorted by fault transients, MAD provides a 50% breakdown point:
The normalized robust
An anomaly is flagged when
For detecting subtle, progressive drifts in bearing temperature or baseline vibration:
The control limits at time
Detects small persistent shifts in mean level:
Where
-
Z-Score:
$$z = \frac{x_t - \mu_w}{\sigma_w}$$ -
IQR:
$$\text{IQR} = Q_3 - Q_1, \quad \text{Bounds} = [Q_1 - 1.5 \cdot \text{IQR}, Q_3 + 1.5 \cdot \text{IQR}]$$
Sofia's diagnostic pipeline scales its confidence based on the integrity of the underlying data:
flowchart TD
S["Raw Sensor Input"] --> V{"Validation Filter"}
V -->|Non-finite NaN / Inf| INV["Quality: INVALID\n(Discard / Count)"]
V -->|Out of Physical Range| OOR["Quality: OUT_OF_RANGE\n(Confidence Scaled: 0.2)"]
V -->|Duplicate Timestamp| DUP["Quality: DUPLICATE\n(Confidence Scaled: 0.3)"]
V -->|Age > max_age_s| STL["Quality: STALE\n(Confidence Scaled: 0.5)"]
V -->|Normal| GD["Quality: GOOD\n(Confidence Scaled: 1.0)"]
INV & OOR & DUP & STL & GD --> DIAG["Diagnostic Engine"]
Sofia Engine enforces SOFIA-DQ-003: $$\text{Confidence}{final} = \text{Confidence}{model} \cdot Q_{factor}$$
Where:
$Q(\text{GOOD}) = 1.0$ $Q(\text{STALE}) = 0.5$ $Q(\text{DUPLICATE}) = 0.3$ $Q(\text{OUT_OF_RANGE}) = 0.2$ $Q(\text{MISSING}) = 0.0$
A degraded data stream never produces a falsely confident critical diagnosis.
The compute_health_score() function maps all active HealthEvents into a single 0–100 index:
-
$w_i$ : Diagnostic rule weight$\in [0, 1]$ -
$\mathcal{S}_i$ : Event severity penalty:-
NORMAL:$0$ -
LOW:$15$ -
MEDIUM:$35$ -
HIGH:$65$ -
CRITICAL:$100$
-
-
$Q_i$ : Quality factor of the source telemetry
The uncertainty interval
Where