Vollständige Anleitung zur Modbus-RTU-Registeradresszuordnung für die Siemens S7-200 SMART SPS

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

1. Übersicht

Wenn eine S7-200 SMART SPS als Modbus-RTU-Master oder -Slave arbeitet, besteht eine feste Zuordnung zwischen ihren internen Speicherbereichen (I, Q, AIW, V) und den Standard-Modbus-Adressen. Auf Basis der offiziellen technischen Dokumentation von Siemens erläutert dieser Artikel die Adresszuordnungsregeln des S7-200 SMART ausführlich, einschließlich vollständiger Adressvergleichstabellen, Konfigurationsschritte, Kommunikationsbeispiele und eines Fehlersuchleitfadens.

Der S7-200 SMART unterstützt zwei Modbus-Betriebsmodi:

  • Modbus-RTU-Master: initiiert aktiv Kommunikationsanfragen, um Slave-Geräte zu lesen oder zu steuern
  • Modbus-RTU-Slave: antwortet passiv auf die Lese-/Schreibanfragen des Masters

2. Beschreibung der Modbus-Adresstypen

Das Modbus-Protokoll definiert vier Datenbereiche, jeweils mit festem Adressbereich und festen Funktionscodes:

Modbus-AdressbereichFunktionscodeLese-/SchreibattributDatentypEntsprechender S7-200 SMART-Speicherbereich
0xxxx (Coils)01 (Coils lesen) / 05 (Einzelnes Coil schreiben) / 15 (Mehrere Coils schreiben)Lesen/SchreibenBit (1 Bit)Q-Bereich digitale Ausgänge
1xxxx (Diskrete Eingänge)02 (Diskrete Eingänge lesen)Nur LesenBit (1 Bit)I-Bereich digitale Eingänge
3xxxx (Eingangsregister)04 (Eingangsregister lesen)Nur LesenWort (16 Bit)AIW-Analogeingänge
4xxxx (Halteregister)03 (Halteregister lesen) / 06 (Einzelnes Register schreiben) / 16 (Mehrere Register schreiben)Lesen/SchreibenWort (16 Bit)V-Speicherbereich (konfigurierbar)

Wichtiger Hinweis: Modbus-Adressen verwenden 1-basierte Nummerierung, d. h. die Zählung beginnt bei 1. PLC-interne Adressen sind üblicherweise 0-basiert und beginnen bei 0.

3. S7-200 SMART Modbus-Adresszuordnungstabelle

3.1 Digitaler Ausgangsbereich (Q-Bereich) → 0xxxx Coils

Der digitale Ausgangsbereich Q ist dem Modbus-0xxxx-Coilbereich zugeordnet und unterstützt Lese- und Schreiboperationen.

Modbus-AdresseS7-200 SMART-AdresseBeschreibung
00001Q0.0Kanal 0, Bit 0
00002Q0.1Kanal 0, Bit 1
00003Q0.2Kanal 0, Bit 2
00004Q0.3Kanal 0, Bit 3
00005Q0.4Kanal 0, Bit 4
00006Q0.5Kanal 0, Bit 5
00007Q0.6Kanal 0, Bit 6
00008Q0.7Kanal 0, Bit 7
00009Q1.0Kanal 1, Bit 0
00010Q1.1Kanal 1, Bit 1
00011Q1.2Kanal 1, Bit 2
00012Q1.3Kanal 1, Bit 3
00013Q1.4Kanal 1, Bit 4
00014Q1.5Kanal 1, Bit 5
00015Q1.6Kanal 1, Bit 6
00016Q1.7Kanal 1, Bit 7
00017Q2.0Kanal 2, Bit 0
00018Q2.1Kanal 2, Bit 1
......Und so weiter; jeweils 8 Adressen entsprechen einem Byte
00256Q31.7Maximale Adresse (bis zu 32 Byte Ausgänge)

Berechnungsformel: Modbus-Adresse = Kanalnummer × 8 + Bitnummer + 1

Beispiel: für den Zugriff auf Q2.3 gilt Modbus-Adresse = 2×8 + 3 + 1 = 00020

Funktionscodes:

  • Coil-Status lesen: Funktionscode 01
  • Einzelnes Coil schreiben: Funktionscode 05
  • Mehrere Coils schreiben: Funktionscode 15 (0x0F)

Hinweise:

  • Die Zuordnung des Q-Bereichs ist fest und erfordert keine zusätzliche Konfiguration
  • Die tatsächlich verfügbare Anzahl an Q-Punkten hängt vom CPU-Typ und den Erweiterungsmodulen ab
  • Existiert der entsprechende Q-Punkt in der Hardware nicht, ist der ausgelesene Wert immer 0

3.2 Digitaler Eingangsbereich (I-Bereich) → 1xxxx Diskrete Eingänge

Der digitale Eingangsbereich I ist dem Modbus-1xxxx-Bereich für diskrete Eingänge zugeordnet und ist nur lesbar.

Modbus-AdresseS7-200 SMART-AdresseBeschreibung
10001I0.0Kanal 0, Bit 0
10002I0.1Kanal 0, Bit 1
10003I0.2Kanal 0, Bit 2
10004I0.3Kanal 0, Bit 3
10005I0.4Kanal 0, Bit 4
10006I0.5Kanal 0, Bit 5
10007I0.6Kanal 0, Bit 6
10008I0.7Kanal 0, Bit 7
10009I1.0Kanal 1, Bit 0
10010I1.1Kanal 1, Bit 1
10011I1.2Kanal 1, Bit 2
10012I1.3Kanal 1, Bit 3
10013I1.4Kanal 1, Bit 4
10014I1.5Kanal 1, Bit 5
10015I1.6Kanal 1, Bit 6
10016I1.7Kanal 1, Bit 7
10017I2.0Kanal 2, Bit 0
10018I2.1Kanal 2, Bit 1
......Und so weiter; jeweils 8 Adressen entsprechen einem Byte
10256I31.7Maximale Adresse (bis zu 32 Byte Eingänge)

Berechnungsformel: Modbus-Adresse = 10000 + Kanalnummer × 8 + Bitnummer + 1

Beispiel: für den Zugriff auf I3.5 gilt Modbus-Adresse = 10000 + 3×8 + 5 + 1 = 10030

Funktionscode: zum Lesen diskreter Eingänge wird Funktionscode 02 verwendet

Hinweise:

  • Die Zuordnung des I-Bereichs ist fest und erfordert keine zusätzliche Konfiguration
  • Diskrete Eingänge sind nur lesbar; der Master kann sie nicht schreiben
  • Die tatsächlich verfügbare Anzahl an I-Punkten hängt vom CPU-Typ und den Erweiterungsmodulen ab

3.3 Analogeingangsbereich (AIW-Bereich) → 3xxxx Eingangsregister

Der Analogeingangsbereich AIW ist dem Modbus-3xxxx-Eingangsregisterbereich zugeordnet und ist nur lesbar.

Modbus-AdresseS7-200 SMART-AdresseBeschreibung
30001AIW01. Analogeingangskanal
30002AIW22. Analogeingangskanal
30003AIW43. Analogeingangskanal
30004AIW64. Analogeingangskanal
30005AIW85. Analogeingangskanal
30006AIW106. Analogeingangskanal
30007AIW127. Analogeingangskanal
30008AIW148. Analogeingangskanal
30009AIW169. Analogeingangskanal
30010AIW1810. Analogeingangskanal
......Und so weiter, mit einer Schrittweite von 2
30056AIW11056. Analogeingangskanal (Maximum)

Berechnungsformel: Modbus-Adresse = 30000 + AIW-Nummer / 2 + 1

Beispiel: zum Lesen von AIW20 gilt Modbus-Adresse = 30000 + 20/2 + 1 = 30011

Funktionscode: zum Lesen der Eingangsregister wird Funktionscode 04 verwendet

Hinweise:

  • AIW verwendet Wortadressierung; jedes AIW belegt 2 Byte, sodass einer Adressschrittweite von 1 eine AIW-Schrittweite von 2 entspricht
  • Eingangsregister sind nur lesbar; der Master kann sie nicht schreiben
  • Der Wertebereich der Analogeingänge beträgt üblicherweise 0-32767 (unipolar) oder -32768 bis 32767 (bipolar)
  • Die tatsächlich verfügbare Anzahl an AIW-Kanälen hängt von der Kanalzahl des Analogmoduls ab

3.4 V-Speicherbereich → 4xxxx Halteregister

Die Zuordnung des V-Speicherbereichs ist konfigurierbar und wird über zwei Parameter der Modbus-Slave-Anweisung MBUS_INIT definiert:

  • HoldStart: die Start-V-Adresse des Halteregisterbereichs (z. B. &VB1000)
  • MaxHold: die Anzahl der Wörter im Halteregisterbereich (Einheit: Wort, d. h. die Anzahl der VW)

Zuordnungsregeln:

Modbus-AdresseS7-200 SMART-AdresseBeschreibung
40001VW[HoldStart]1. Halteregister
40002VW[HoldStart + 2]2. Halteregister
40003VW[HoldStart + 4]3. Halteregister
40004VW[HoldStart + 6]4. Halteregister
......Und so weiter, mit einer Schrittweite von 2 Byte
400XXVW[HoldStart + 2 × (XX - 1)]Das XX-te Halteregister

Vollständiges Beispiel: wenn HoldStart = &VB1000 und MaxHold = 100 gilt

Modbus-AdresseV-SpeicheradresseByte-BereichBeschreibung
40001VW1000VB1000-VB10011. Halteregister
40002VW1002VB1002-VB10032. Halteregister
40003VW1004VB1004-VB10053. Halteregister
40004VW1006VB1006-VB10074. Halteregister
40005VW1008VB1008-VB10095. Halteregister
............
40100VW1198VB1198-VB1199100. Halteregister (das letzte)

Funktionscodes:

  • Halteregister lesen: Funktionscode 03
  • Einzelnes Register schreiben: Funktionscode 06
  • Mehrere Register schreiben: Funktionscode 16 (0x10)

Hinweise:

  • Die Zuordnung des V-Speicherbereichs ist konfigurierbar und wird über die Parameter HoldStart und MaxHold der Anweisung MBUS_INIT eingestellt
  • HoldStart muss auf eine VB-Adresse zeigen, z. B. &VB1000
  • Die Einheit von MaxHold ist das Wort (VW), nicht das Byte (VB)
  • Der Halteregisterbereich darf nicht mit bereits im SPS-Programm verwendetem V-Speicher kollidieren
  • Ist MaxHold auf 100 gesetzt, belegt das VB1000-VB1199, insgesamt 200 Byte

4. SPS-Slave-Konfigurationsschritte

4.1 Modbus-Slave-Anweisungsbibliothek installieren

  1. Öffnen Sie die Programmiersoftware STEP 7-Micro/WIN SMART
  2. Suchen Sie im Anweisungsbaum den Ordner „Bibliotheken"
  3. Wenn keine Modbus-Slave-Bibliothek vorhanden ist, importieren Sie sie zuerst: Rechtsklick auf „Bibliotheken" → „Bibliothek importieren" → Modbus-Slave-Bibliotheksdatei auswählen
  4. Die Bibliotheksdatei wird üblicherweise von der offiziellen Siemens-Website heruntergeladen und heißt „Modbus Slave"

4.2 MBUS_INIT zur Slave-Initialisierung aufrufen

Rufen Sie die Anweisung MBUS_INIT im ersten Scan-Zyklus (SM0.1) auf. Die Parameter sind nachfolgend beschrieben:

ParameterWertebereichBeschreibung
Mode0 / 10 = Modbus-Slave deaktivieren und zum normalen Freeport zurückkehren; 1 = Modbus-Slave aktivieren
Baud1200-115200Baudrate; übliche Werte: 9600, 19200, 38400, 115200
Parity0 / 1 / 2Parität: 0 = keine, 1 = ungerade, 2 = gerade
Port0 / 1Kommunikationsport: 0 = integrierter RS485-Port, 1 = RS485-Port des Signalboards SB CM01
SlaveAddr1-247Modbus-Slave-Adresse; darf auf demselben Bus nicht doppelt vergeben sein
HoldStart&VBxxxZeiger auf die Start-V-Adresse des Halteregisterbereichs, z. B. &VB1000
MaxHold0-10000Anzahl der Wörter im Halteregisterbereich (Einheit: Wort); z. B. bedeutet 100 genau 100 VW
DoneBOOLInitialisierung-abgeschlossen-Merkerbit
ErrorBYTEFehlercode

4.3 MBUS_SLAVE im Hauptprogramm zyklisch aufrufen

Die Anweisung MBUS_SLAVE muss in jedem Scan-Zyklus im Hauptprogramm aufgerufen werden:

  • Diese Anweisung bearbeitet die Anfragen des Modbus-Masters
  • Wird sie nicht aufgerufen, kann der Slave dem Master nicht antworten
  • Parameter: Done (Abschluss-Merker), Error (Fehlercode)

4.4 V-Speicherbereichsdaten konfigurieren

Legen Sie die zu lesenden/schreibenden Daten im durch HoldStart angegebenen V-Adressbereich ab:

  • Vom Master geschriebene Daten werden in diesem Bereich abgelegt
  • Das SPS-Programm liest die Daten aus diesem Bereich zur Verarbeitung
  • Stellen Sie sicher, dass keine Kollision mit anderen im Programm verwendeten V-Adressen auftritt

5. SPS-Master-Konfiguration und Lesebeispiel

5.1 MBUS_CTRL zur Master-Initialisierung aufrufen

Rufen Sie die Anweisung MBUS_CTRL im ersten Scan-Zyklus (SM0.1) auf, um den Modbus-Master zu initialisieren:

ParameterWertebereichBeschreibung
Mode0 / 10 = Modbus-Master deaktivieren, 1 = Modbus-Master aktivieren
Baud1200-115200Baudrate; muss mit dem Slave übereinstimmen
Parity0 / 1 / 2Parität; muss mit dem Slave übereinstimmen
Port0 / 1Kommunikationsport: 0 = integrierter RS485, 1 = Signalboard
Timeout1-32767 msZeitüberschreitung beim Warten auf die Slave-Antwort; 1000 ms empfohlen
DoneBOOLInitialisierung-abgeschlossen-Merkerbit
ErrorBYTEFehlercode

5.2 MBUS_MSG zum Auslösen von Lese-/Schreibanfragen aufrufen

Die Anweisung MBUS_MSG wird verwendet, um eine Modbus-Lese-/Schreibanfrage auszulösen:

ParameterWertebereichBeschreibung
FirstBOOLErstausführungsimpuls; die Anfrage wird bei Erkennung einer steigenden Flanke ausgelöst
Slave1-247Slave-Adresse
RW0 / 10 = Leseanfrage, 1 = Schreibanfrage
AddrModbus-AdresseDie zuzugreifende Modbus-Adresse; z. B. bedeutet 40001 das 1. Halteregister
Count1-120Anzahl der zu lesenden/schreibenden Register/Coils
DataPtr&VBxxxZeiger auf den Datenpuffer, z. B. &VB2000
DoneBOOLAbschluss-Merker für diese Anfrage
ErrorBYTEFehlercode

5.3 Beispiel: Halteregister lesen

Angenommen, Sie möchten 10 Halteregister (40001-40010) vom Slave-Gerät mit der Adresse 1 lesen:

  1. First: mit einem Impulssignal auslösen
  2. Slave: 1
  3. RW: 0 (lesen)
  4. Addr: 40001
  5. Count: 10
  6. DataPtr: &VB2000

Nach erfolgreichem Lesen enthalten die 20 Byte ab VB2000 die Daten der 10 Register.

6. Häufige Probleme und Fehlersuchleitfaden

6.1 Keine Kommunikationsantwort; der Slave antwortet nicht

  • Verdrahtung prüfen: ob A+ und B- von RS485 vertauscht sind — das ist der häufigste Fehler
  • Parameterübereinstimmung prüfen: Baudrate, Datenbits, Stoppbits und Parität von Master und Slave müssen exakt übereinstimmen
  • Slave-Adresse prüfen: ob SlaveAddr korrekt ist; auf dem Bus darf es keine doppelten Adressen geben
  • Busspannung messen: die A-Leitung (D+) sollte etwa 200 mV oder mehr über der B-Leitung (D-) liegen
  • Abschlusswiderstand prüfen: ob an beiden Busenden 120-Ω-Abschlusswiderstände angebracht sind (bei großen Entfernungen erforderlich)
  • Port-Parameter prüfen: ob der richtige Kommunikationsport (0 oder 1) gewählt ist

6.2 Daten können nicht gelesen werden oder sind falsch

  • Adressformat prüfen: Modbus-Adressen gibt es in 1-basierter und 0-basierter Schreibweise; sorgfältig unterscheiden
  • HoldStart prüfen: bestätigen, dass die Startadresse des Halteregisters korrekt gesetzt ist
  • MaxHold prüfen: bestätigen, dass die Anzahl der Halteregister ausreicht
  • Adressbereich prüfen: ob die zu lesende Adresse innerhalb des durch MaxHold definierten Bereichs liegt
  • Byte-Reihenfolge prüfen: ob die High-/Low-Wort-Reihenfolge von 32-Bit-Daten zum Master passt

6.3 Datenchaos oder falsche Zahlenwerte

  • Datenformat prüfen: bestätigen, ob es sich um eine 16-Bit-Ganzzahl, 32-Bit-Ganzzahl oder Gleitkommazahl handelt
  • Byte-Reihenfolge prüfen: ob Big-Endian und Little-Endian konsistent sind
  • Wortreihenfolge prüfen: ob die High-/Low-Wort-Reihenfolge von 32-Bit-Daten korrekt ist
  • Skalierung prüfen: ob ein Multiplikator erforderlich ist (z. B. Werte in 0,1-°C-Einheiten müssen durch 10 dividiert werden)
  • Behandlung negativer Zahlen prüfen: negative Zahlen werden im Zweierkomplement dargestellt; Unterschied zwischen vorzeichenbehafteten und vorzeichenlosen Zahlen beachten

6.4 Gelegentliche Kommunikationsausfälle

  • Schirmkabel prüfen: ob für die RS485-Leitung geschirmtes Twisted-Pair-Kabel verwendet wird und ob der Schirm einseitig geerdet ist
  • Buslänge prüfen: maximal 1200 m bei 9600 bps, etwa 100 m bei 115200 bps
  • Slave-Anzahl prüfen: ein RS485-Bus trägt höchstens 32 Slaves (ohne Repeater)
  • Elektromagnetische Störungen prüfen: ob die Kommunikationsleitung parallel zu Leistungskabeln verläuft oder eine Störquelle vorhanden ist
  • Timeout-Einstellung prüfen: ob der Timeout-Parameter zu klein gesetzt ist; versuchen Sie, ihn angemessen zu erhöhen

6.5 Fehlercode-Beschreibung

FehlercodeBeschreibungLösung
0Kein Fehler-
1ParitätsfehlerParitätseinstellung prüfen
2Baudrate nicht unterstütztBaudratenparameter prüfen
3ZeitüberschreitungsfehlerVerdrahtung, Slave-Versorgung und Timeout prüfen
4Slave-AdressfehlerSlaveAddr-Parameter prüfen
5Keine Bestätigung erhaltenDer Slave antwortet nicht; Verdrahtung und Parameter prüfen
10Gateway-FehlerGateway-Konfiguration prüfen

7. Zusammenfassung

Die Modbus-Adresszuordnungsregeln des S7-200 SMART sind klar und eindeutig:

  • 0xxxx-Coilbereich → entspricht den digitalen Ausgängen des Q-Bereichs, Lesen/Schreiben
  • 1xxxx-Bereich diskreter Eingänge → entspricht den digitalen Eingängen des I-Bereichs, nur Lesen
  • 3xxxx-Eingangsregisterbereich → entspricht den AIW-Analogeingängen, nur Lesen
  • 4xxxx-Halteregisterbereich → entspricht dem V-Speicherbereich, konfigurierbar, Lesen/Schreiben

Wenn Sie diese Zuordnung beherrschen, können Sie schnell eine Modbus-RTU-Kommunikation zwischen einem S7-200 SMART und Drittgeräten realisieren. In der Praxis empfiehlt es sich, die Kommunikation zuerst mit Debugging-Software wie Modbus Poll zu testen und das SPS-Programm erst zu schreiben, nachdem die korrekte Adresszuordnung bestätigt ist.

8. Weiterführende Links

  • Modbus-RTU-Kommunikations-Grundlagentutorial
  • Ausführliche Erklärung der Modbus-Funktionscodes
  • Konfigurationsbeispiel für den Siemens S7-200 SMART Modbus-Master
  • RS485-Bus-Verdrahtungsrichtlinie
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.