Werkspur Docs Zur Website

Modbus TCP

Was ist das

Ein Modbus-Ziel ist ein benannter Datenpunkt an einer Maschinensteuerung über das Modbus-TCP-Protokoll, ein Coil oder ein Register mit fester Adresse. Einmal angelegt, brauchen Sie für den Zugriff darauf nur noch den Namen des Ziels.

Zwei Kommandos greifen darauf zu. modbus.read liest einen Wert ab, ohne die Steuerung zu verändern. modbus.write schreibt einen Wert; weil sich eine Steuerung softwareseitig nicht zurückdrehen lässt, gilt dieser Schritt als unumkehrbar. Daneben kann ein telemetry-Eintrag einer Ansicht denselben Datenpunkt laufend anzeigen, unabhängig von jeder Aktion.

Angelegt wird ein Modbus-Ziel in der Verwaltung unter „Modbus-Ziele", von Hand oder mit Unterstützung des Assistenten. Modbus TCP steht damit gleichrangig neben OPC UA; was zu einer bestimmten Maschine passt, richtet sich nach deren vorhandener Anbindung.

Wann einsetzen

Wie weit eine Maschine angebunden ist, verbessert sich meist in Stufen: ohne Anbindung → Modbus-Retrofit → Gateway → natives OPC UA. Ohne Anbindung liefert eine Maschine nur Buchungen vom Terminal. Ein Modbus-Retrofit ergänzt einzelne Werte über ein nachgerüstetes IO-Modul, oft noch am selben Tag. Ein Gateway übersetzt diese Modbus-Werte anschließend in einen OPC-UA-Server, sobald mehrere Maschinen gebündelt an eine übergeordnete Leitebene sollen. Eine neue oder modernisierte Steuerung bringt einen eigenen OPC-UA-Server gleich mit und macht das Gateway überflüssig. Jede Stufe trägt für sich; WERKSPUR bindet Modbus-Ziele und OPC-UA-Ziele gleichberechtigt nebeneinander an, eine Maschine muss auf keine der folgenden Stufen warten.

Anatomie der Definition

Eine Modbus-Ziel-Definition ist ein flaches JSON-Objekt:

Ein Modbus-Ziel kennt, anders als ein OPC-UA-Ziel, keinen security-Block. Modbus TCP bringt selbst keine Verschlüsselung und keine Anmeldung mit; jedes Ziel läuft im Klartext gegen den offenen Port der Steuerung. Das eignet sich, genau wie ein OPC-UA-Ziel ohne security-Block, ausschließlich für abgeschottete Maschinennetze ohne Zugriff von außen.

Das Demoprofil bindet ein Ziel per Modbus an die Presse: presse-1-temperatur-mb, ein input-Register vom Typ float32 im Modus read. Die Zuordnung Maschine→Ziel, mit kind und protocol, stammt heute aus dem Seed-Profil des Systems; das telemetry-Widget der Ansicht bindet nur die Maschine. Für diesen Wert trägt die Zuordnung protocol: modbus und macht damit sichtbar, dass er über Modbus statt über OPC UA kommt; alle übrigen Werte derselben Maschine laufen weiter über ihre bestehenden OPC-UA-Ziele.

Beispiele

presse-2-stueckzaehler-mb modbus-target
{
  "name": "presse-2-stueckzaehler-mb",
  "endpoint": "192.168.10.40:502",
  "unit_id": 1,
  "register": {
    "type": "input",
    "address": 100
  },
  "data_type": "uint32",
  "word_order": "big",
  "mode": "read",
  "poll_ms": 1000
}
Mit dem Assistenten
Lese-Ziel für einen Modbus-Stückzähler anlegen, 32 Bit, große Byte-Reihenfolge.

Ein input-Register vom Typ uint32 braucht zwingend eine word_order, hier big. Der Endpunkt nennt den Port ausdrücklich; ohne diese Angabe würde WERKSPUR ohnehin den Standardport 502 verwenden. mode: read erlaubt modbus.read und das telemetry-Widget, modbus.write dagegen nicht.

presse-2-freigabe-mb modbus-target
{
  "name": "presse-2-freigabe-mb",
  "endpoint": "io-modul.werk.local",
  "unit_id": 1,
  "register": {
    "type": "coil",
    "address": 8
  },
  "data_type": "bool",
  "mode": "read-write",
  "poll_ms": 1000
}
Mit dem Assistenten
Schreibbares Coil-Ziel für eine Freigabe an einem IO-Modul anlegen.

Ein coil trägt immer data_type: bool und braucht keine word_order. mode: read-write erlaubt sowohl modbus.read als auch modbus.write auf dasselbe Ziel, hier ohne Port im Endpunkt, WERKSPUR ergänzt beim Verbindungsaufbau also den Standardport 502.

Fallstricke

Wie ein telemetry-Eintrag einen Datenpunkt in eine Ansicht einbindet, beschreibt das Kapitel Ansichten. Den Zählerabgleich selbst, der ein counter-Ziel gegen gebuchte Stückzahlen hält, erklärt das Kapitel Kennzahlen & Cockpit. Für Maschinen mit eigenem OPC-UA-Server gilt weiterhin das Kapitel OPC UA.