Siemens Modbus Fehlercode 0551

Elektro Wolf

Level-1
Beiträge
38
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen!

Ich bin gerade dabei eine Kommunikation zwischen einem Energiezähler B21 von der Firma Janitza (als Slave) und einer ET200S mit einer 1Sl Modbus/USS Karte (als Master) über MODBUS RTU aufzubauen.
Mein Ziel ist es die Verbrauchten Leistungswerte aus dem Energiezähler herauszulesen und diese dann anschließend in ein Datenbaustein zu schreiben für eine Übertragung in die Zentrale.

Alles schön und gut. Die Kommunikation scheint zunächst zu funktionieren, indem ich ein Receiver (FB2) und einen Sender (FB3) Baustein nutze. Jedoch bemerke ich, dass manche Telegramme fehlerhaft beim Receiver Baustein ankommen. Der Fehler Status lautet 0551.

Die Siemenshilfe gibt mir folgendes aus:

Fehlercode (W#16#...):
0551

Beschreibung:

Rahmenablauffehler bei der Kommunikation zwischen der seriellen Schnittstellenbaugruppe ET 200S Modbus/USS und der CPU. Der Fehler ist beim Übertragen eines empfangenen Telegramms der seriellen Schnittstellenbaugruppe ET 200S SI in der CPU aufgetreten.

Abhilfe:

Die Baugruppe und die CPU haben die Übertragung abgebrochen. Wiederholen Sie den Empfangsauftrag. Die serielle Schnittstellenbaugruppe ET 200S Modbus/USS sendet die empfangene Meldung erneut.



Ich habe es mir zunächst mit Zeitglieder so gebastelt, sodass ich aller 5s für 1ms einen Request vom Master an den Slave schicke, um somit eine Antwort zu bekommen.
Die Abhilfe von Siemens sagt mir nicht viel aus.

Hat jemand etwas mehr Ahnung über den Fehlercode 0551? :confused:

Ich habe es mal mit der Änderung der Abtastrate versucht, jedoch hat das nicht viel geholfen.:?

Vielen Dank im Voraus!
 
Hi,

ich kann dir zu dem Fehlercode leider auch nicht mehr sagen. Aber wichtig ist der Ablauf bzw. das Timing. Wenn du einen neuen Sendeauftrag triggerst, musst du warten bis der alte "erledigt" meldet (oder eben Störung). Dieser muss also abgearbeitet worden sein. Erst dann dürftest du einen erneuten Sende- bzw. Receive auftrag triggern. Umgekehrt mit dem Receive genauso.
Triggerst du einen neuen Auftrag, während ein anderer läuft, kann es zu Problemen kommen. Eventuell ist das dort dein Problem, wenn du sturr nach 5s triggerst? Könnte sein, dass in dem Fall das MB-Modul auf der ET200 eben dies als Störung erkennt und Siemens dafür leider diese Meldung dazu generiert?.

Ich kenne das leider nur mit der 1200er und dem CM1241 (Modbus-RTU). Dort gibt es allerdings dann die passende Meldung.


-chris
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Chris,

auf diese Idee bin ich ebenfalls gekommen und habe es so umgebastelt, dass erst eine weitere Anfrage geschickt werden kann, wenn der Telegrammauftrag mit erfolgreich bestätig wurde.
Leider entstehen trotzdem fehlerhafte Antworttelegramme.

Ich konnte die Fehlerrate inzwischen sehr weit eindämmen, indem ich die Anzahl an lesende Register verringere und die Baudrate auf 1200 Bit/s einstelle.
Jedoch ist das nicht die optimale Lösung....

Ich halte mich also noch ran an der Problematik.
 
Ich habe eine eventuelle Lösung gefunden, indem ich einen Kompromiss eingehen musste.

Es lag mitunter daran, wie viele Register ich auslesen möchte. Sobald mindestens 2 Register ausgelesen werden, treten ab und zu fehlerhafte Telegramme auf.
Also gehe ich davon aus, dass die Master Modbus Karte 1Sl Modbus/USS mit dem Janitza Energiezähler nur 1 Register auslesen korrekt kann.

Also bastel ich jetzt ein Programm zusammen, indem jedes einzelne Register nacheinander einzeln ausgelesen werden anstatt mehrere gleichzeitig.

Gruß Wolf
 
Zurück
Oben