TIA Support-Anfrage: Modbus RTU RS485

Aymen23

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem mit der Modbus-RTU-Kommunikation über RS485. Das Modbus-Programm sieht korrekt aus, jedoch erhalte ich auf dem IoT-Gerät keine Antwort, obwohl die TX- und RX-LEDs am CM-PtP bereits blinken.
Ich teile mit Ihnen Screenshots meines Modbus-Programms mit.
Vielen Dank im Voraus.
Mit freundlichen Grüßen.
 

Anhänge

  • Capture d'écran 2025-12-11 124825.png
    Capture d'écran 2025-12-11 124825.png
    25 KB · Aufrufe: 44
  • Capture d'écran 2025-12-11 124853.png
    Capture d'écran 2025-12-11 124853.png
    34,2 KB · Aufrufe: 43
  • Capture d'écran 2025-12-11 124925.png
    Capture d'écran 2025-12-11 124925.png
    27,6 KB · Aufrufe: 39
  • Capture d'écran 2025-12-11 125039.png
    Capture d'écran 2025-12-11 125039.png
    228,1 KB · Aufrufe: 40
  • Capture d'écran 2025-12-11 125117.png
    Capture d'écran 2025-12-11 125117.png
    183,6 KB · Aufrufe: 39
  • Capture d'écran 2025-12-11 125158.png
    Capture d'écran 2025-12-11 125158.png
    84 KB · Aufrufe: 32
  • Capture d'écran 2025-12-11 125220.png
    Capture d'écran 2025-12-11 125220.png
    12,7 KB · Aufrufe: 44
Was keinen Sinn macht ist LEN 12 für 12 Reals, das wären für gewöhnlich mindestens 24 Register, das Modbus WORD-Basiert arbeitet.
Außerdem solltest du prüfen ob du Eingangswörter, oder Halteregister lesen/schreiben musst (und Mode entsprechend beschalten).

Was du auf jeden Fall noch tun solltest, Status bei Error sichern (Move auf eine zusätzlichen Stat-Var).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was keinen Sinn macht ist LEN 12 für 12 Reals, das wären für gewöhnlich mindestens 24 Register, das Modbus WORD-Basiert arbeitet.
Außerdem solltest du prüfen ob du Eingangswörter, oder Halteregister lesen/schreiben musst (und Mode entsprechend beschalten).

Was du auf jeden Fall noch tun solltest, Status bei Error sichern (Move auf eine zusätzlichen Stat-Var).
Eigentlich ja. Mein IoT-Gerät soll 12 Real-Werte aus der S7 auslesen. Und die S7 soll beschreibbar sein, deshalb ist im MODBUS_MASTER der Mode auf 1 gesetzt. Ich habe auch ausprobiert, dass Modbus nur zwei INT16-Werte sendet, aber der Empfänger bekommt trotzdem keine Werte. Das Problem liegt also entweder im Programm oder in der Hardware.
 
Jetzt solltest du vielleicht erst mal klären wer der aktive Part ist.
Wenn dein IoT Ding lesen / schreiben soll, dann musst du den Modbus-Slave Baustein verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der aktive Part ist S7 und Iot als slave , deswegen habe ich Modbus_Master baustein verwundet.
Okay, was soll dann die Formulieren "das IoT Device soll Werte auslesen"?
In dem Fall ist es ganz klar, dass die S7 Werte zum Device schreibt, bzw. Werte vom Device anfordert.

Um was handelt es sich bei dem IoT-Teil eigentlich?

P.S. Das sichern vom Status hast du mittlerweile implementiert?
Was steht da drin?
 
Okay, was soll dann die Formulieren "das IoT Device soll Werte auslesen"?
In dem Fall ist es ganz klar, dass die S7 Werte zum Device schreibt, bzw. Werte vom Device anfordert.

Um was handelt es sich bei dem IoT-Teil eigentlich?

P.S. Das sichern vom Status hast du mittlerweile implementiert?
Was steht da drin?
Das IoT-Gerät hat genaue Registerangaben. Das erste Register ist 0x31002 (dann in Tia portal 44099 ) und für die Baudrate kann ich ändern, aktuell steht sie auf 9600, die Parität ist none, 1 stopbits und 8 datenbits.
Der Status wechselt zwischen 7000, 7002 oder selten 81E2 oder 7001 ( in MODBUS_MASTER).
Das Problem liegt nicht am IoT-Gerät, weil ich dieses bereits erfolgreich getestet habe, sondern vermutlich an der S7.
 
Zuletzt bearbeitet:
Wie kommst du denn von 31002 auf 44099?

Aber nochmal sichern von Status bei Error, erst dann kannst du irgendwas erkennen.
 
3 ist Read Holding und 1002 in dez ist 4098 , dann 40001 + 4098 = 44099
Du willst also das Holding Register 4098 aus dem IOT holen? richtig? Und das hat funktioniert mit deinem Simulationsprogramm (Modbus Poll?)
Hast du auch ein Modbus Slave simulator? Um mal zu testen was aus der SPS kommt?
RS485 könnte man mit einem Terminalprogramm auch mitschreiben, bzw. Modbus Poll kann dir das direkt korrekt Loggen um mal die Telegramme zu vergleichen.
hast du ModcomLoad nochtmal angetriggert, NACHDEM du die Baudrate geändert hast?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du willst also das Holding Register 4098 aus dem IOT holen? richtig? Und das hat funktioniert mit deinem Simulationsprogramm (Modbus Poll?)
Nein, ich wollte das Holding Register 4098 an IoT schicken. Ich habe mit Modbus Poll das Register an IoT gesendet, und das hat sehr gut funktioniert. Das bedeutet, dass das Problem im TIA Portal liegt.
 
Nein, ich wollte das Holding Register 4098 an IoT schicken. Ich habe mit Modbus Poll das Register an IoT gesendet, und das hat sehr gut funktioniert. Das bedeutet, dass das Problem im TIA Portal liegt.
Oder an der korrekten nutzung der Bausteine in der CPU
Ich empfehle dir, bei anstehendem Error oder Kommunikationsproblemen zu allen Teilnehmern, den Modcom_Load in regelmässigen Abstannd zu triggern z.B. alle 10 hintereinander geschriebenen Fehltelegrammen.
Zeichenrahmenfehler deuten oft auf verkehrte Polarität, oder falsche Buskonfiguration hin. Mindestens ein Abschlusswiederstand ist trotzdem immer sinnvoll.
Fehlersuche ist einfacher wenn du die Stati wegschreibst und vor allem ein Terminal mitlaufen lässt.
 
Oder an der korrekten nutzung der Bausteine in der CPU
Ich empfehle dir, bei anstehendem Error oder Kommunikationsproblemen zu allen Teilnehmern, den Modcom_Load in regelmässigen Abstannd zu triggern z.B. alle 10 hintereinander geschriebenen Fehltelegrammen.
Zeichenrahmenfehler deuten oft auf verkehrte Polarität, oder falsche Buskonfiguration hin. Mindestens ein Abschlusswiederstand ist trotzdem immer sinnvoll.
Fehlersuche ist einfacher wenn du die Stati wegschreibst und vor allem ein Terminal mitlaufen lässt.
Im TIA Portal bleibt Modbus_Master_DONE immer auf FALSE, und in jedem Zyklus tritt ein ERROR auf. In einem Zyklus wird auch im STATUS des MODBUS_MASTER die Fehlernummer 81E2 angezeigt. Ich habe im Modbus-Comm-Load-DB versucht, LINE_PRE = 2 zu setzen, aber die Fehlernummer erscheint 81E2 weiterhin in jedem Zyklus.
 
Zurück
Oben