Solve the Brownfield Retrofit problem with a hybrid architecture: correlating 1990s PLC Modbus data with 2025 Edge ML. Secure, scalable, validated by the 6× Rule.
Modbus TCP (Amps/RPM) · MEMS Vibration 10kHz · Epoxy-mounted for fidelity · OPC UA where available
Python Protocol Translator · Edge ML Inference · Isolation Forest · Docker / Kubernetes
mTLS Authentication · MQTT Broker · Read-Only PLC Access · Network Segmentation · SIEM Log Forwarding
Report-by-Exception · Hot/Cold Retention Policy · Cost-optimised ingestion
def poll_cycle(self):
# ── 1. READ-ONLY SECURITY: Never write to PLC ──────────────
plc_data = self.modbus.read_holding_registers(3001, 2)
# ── 2. Edge ML Inference (Isolation Forest) ────────────────
vib_data = self.sensor.read_accel()
prediction = self.model.predict(vib_data) # -1 = anomaly
# ── 3. Report by Exception — bandwidth-conservative ────────
if abs(vib_data - self.last_val) > 0.1:
payload = {
"asset_id": "Press_01",
"health": prediction, # advisory only
"plc_amps": plc_data[0],
"timestamp": datetime.utcnow().isoformat() + "Z"
}
# ── 4. mTLS Publish → UNS / Sparkplug B ───────────────────
self.mqtt.publish("spBv1.0/Audientia/DDATA/Press_01", payload)
self.last_val = vib_data