PLC to SAP PM

From sensor reading to SAP PM notification in 4 events

The Problem

PLCs generate thousands of readings. SAP PM expects structured notifications. IAES bridges the gap.

Without IAES

  • Custom code per PLC vendor
  • Brittle point-to-point integrations
  • SAP RFC calls embedded in gateway logic
  • No standard event format across plants

With IAES

  • Standardized events from any PLC
  • Decoupled: sensor layer and CMMS layer independent
  • SAP bridge consumes typed IAES events
  • Same format across Siemens, Allen-Bradley, Mitsubishi

Architecture

End-to-end flow from PLC register to SAP PM work order

⚙
PLC Modbus / OPC-UA
→
⍑
Gateway Edge / Node-RED
→
■
IAES asset.measurement
→
★
AI Engine Anomaly Detection
→
■
IAES asset.health
→
☍
Bridge SAP RFC / OData
→
⚒
SAP PM IW31 Notification

The 4-Event Chain

Each step produces a standard IAES event. No proprietary formats.

1

Vibration Reading

asset.measurement

PLC reads accelerometer via Modbus. Gateway emits IAES event.

// asset.measurement from PLC { "event_type": "asset.measurement", "asset": { "asset_id": "PUMP-4401" }, "data": { "measurement_type": "vibration", "value": 12.4, "unit": "mm/s" } }
2

Health Alert

asset.health

AI engine detects anomaly, emits health event with severity.

// asset.health — anomaly detected { "event_type": "asset.health", "asset": { "asset_id": "PUMP-4401" }, "data": { "health_index": 0.35, "severity": "medium", "failure_mode": "bearing_wear" } }
3

Work Order Intent

maintenance.work_order_intent

Bridge creates SAP PM notification from health event.

// maintenance.work_order_intent { "event_type": "maintenance.work_order_intent", "asset": { "asset_id": "PUMP-4401" }, "data": { "title": "Bearing wear — PUMP-4401", "priority": "high", "source": "iaes_sap_bridge" } }
4

Completion

maintenance.completion

Technician closes work order in SAP PM. Bridge emits completion.

// maintenance.completion { "event_type": "maintenance.completion", "asset": { "asset_id": "PUMP-4401" }, "data": { "outcome": "resolved", "actions_taken": "Bearing replaced", "downtime_minutes": 45 } }

SAP PM Bridge

~30 lines of Python. Subscribe to IAES health events, create SAP PM notifications.

from iaes import IaesEvent # IAES health event → SAP PM IW31 Notification def handle_health_event(event: IaesEvent): if event["data"]["severity"] in ("high", "critical"): sap_notification = { "NotificationType": "M2", "Equipment": event["asset"]["asset_id"], "ShortText": f"IAES Alert: {event['data']['failure_mode']}", "Priority": "1" if event["data"]["severity"] == "critical" else "2", } create_sap_notification(sap_notification) # Subscribe to IAES events via MQTT import paho.mqtt.client as mqtt import json client = mqtt.Client() client.connect("mqtt-broker", 1883) client.subscribe("iaes/+/asset.health") def on_message(client, userdata, msg): event = json.loads(msg.payload) handle_health_event(event) client.on_message = on_message client.loop_forever()

Works with Any CMMS

The same IAES events can feed any maintenance system. Swap the bridge, keep the standard.

⚒

SAP PM

IW31 notifications via RFC/OData

This page
⚙

Odoo

Maintenance requests via XML-RPC

IAES Ready
☑

MaintainX

Work orders via REST API

IAES Ready
♺

Fracttal

Tasks via Fracttal API

IAES Ready