# Fehlererkennung bei Ausfall von einem Teilnehmer bei einer  ModBus RTU Verbindung



## Kurzschluß (11 Dezember 2020)

Hallo zusammen,
habe mit einer Steuerung (Typ 750-8212)   4 Schutzgeräte der Firma Siemens über Modbus-RTU angebunden.  Ich programmiere mit E!Cockpit.
Gibt es eine Möglichkeit in der Steuerung zu überwachen ob die Verbindung zu einem Schutzgerät ausgefallen ist?

Danke für eure Antworten


----------



## JSEngineering (11 Dezember 2020)

Hallo,

vermutlich Modbus TCP...
Eigentlich müßtest Du einen Watchdog aktivieren können. Entweder über die Bibliothek oder über die Steuerung.
Falls nicht: Werte auf Änderung überwachen. Irgendwo hat man ja immer Fluktuationen...

Gruß
    Jens


----------



## Kurzschluß (11 Dezember 2020)

Hallo Jens,

wir benutzten bei dieser Anlage Modbus RTU. Einen Watchdog kann man nicht aktivieren. Werte wie z.Bsp Sekunden werden nicht im Protokoll bereitgestellt.
Es werden Stellungen vom Erder, Trenner und Leistungsschalter übertragen. Bei Ausfall gibt es keine Änderung mehr. Dachte es gibt in der Wago Steuerung die Möglichkeit auszulesen ob sich alle Teilnehmer melden.

Gruß Michael


----------



## JSEngineering (11 Dezember 2020)

Bin mir bei Wago nicht sicher, die hab ich bisher nur als Slave eingesetzt.
Aber bei anderen Steuerungen haben wir es schon so gemacht, dass wir den Receive-Counter der seriellen Schnittstelle auf Änderung angefragt haben.
Das setzt aber zum einen voraus, dass jeder Teilnehmer eine eigene Schnittstelle hat oder Du die Kommunikation selbst triggern kannst. Zum anderen mußt Du Zugriff auf diesen Counter haben. Da kann ich bei Wago leider nicht weiter helfen...

Gruß
     Jens


----------



## holgermaik (12 Dezember 2020)

Morgen.
Wenn du es mit dem Konfigurator gemacht hast wird es schwierig. Hast du es mit der WagoApp programmiert ist es kein Problem. Hier kannst du den Error abfragen, sogar mit Argument was für ein Problem vorliegt.
Die Antwort lässt sich gemäß Modbus Spezifikation auswerten.
Holger


----------



## Kurzschluß (12 Dezember 2020)

Hallo Holger,

habe die Anbindung mit dem Konfigurator erstellt. :-(

Gruß Michael


----------



## holgermaik (12 Dezember 2020)

Eventuell gibt es bei den Geräten einen Status oder ähnliches was immer ungleich 0 ist. In diesem Fall könntest du über den Ersatzwert arbeiten und würdest wenigstens Time Out mitbekommen.
Holger


----------



## Schlabbesaicher (13 Dezember 2020)

Importiere die Bibliothek WagoTypesModbus und deklariere eine Variable vom Typ eRemoteSlaveError.
Die weist du IoConfig_Globals.DeinRTU/TCPGerät.GetErrorCode() zu
Wenn der 0 oder noError ist dann ist alles ok.


```
VAR
	modbuszust	:	WagoTypesModbus.eRemoteSlaveError;

END_VAR
```


```
modbuszust	:=	IoConfig_Globals.RTUNr1_rtu.GetErrorCode();
```

Gruß Schlabbesaicher


----------



## Tobsucht (14 Dezember 2020)

Hallo,

GetErrorCode bringt nur bei Modbus TCP was.
Bei Modbus UDP wird nur der Status des UDP Socket und bei Modbus RTU der Status der seriellen Schnittstelle ausgegeben.

:= GetChannelErrorCode(1); liefert den gewünschten Status.

Grüße


----------



## oliver.tonn (14 Dezember 2020)

Hast Du schon mal im Handbuch der Schutzgeräte geschaut, ob die sowas wie ein Lifebit oder Heartbeat anbieten? Gib doch mal den genauen Typ preis, dann kann man vielleicht näheres sagen.


----------



## .:WAGO::0102330:. (23 Dezember 2020)

Hallo,
hier ein kleines Beispiel, bei dem die Diagnose bei den unterschiedlichen Ausprägungen des Modbus mit dem Konfigurator diagnostiziert werden kann. Beim Modbus RTU fragt man dazu den einfach einen Datenpunkt (Channel) ab. Kommt hier
z.B. ein Timeout, so weiß man das die Verbindung gestört ist.


----------

