Fehlererkennung bei Ausfall von einem Teilnehmer bei einer ModBus RTU Verbindung

Kurzschluß

Level-2
Beiträge
59
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
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
 
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
 
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.

Code:
VAR
	modbuszust	:	WagoTypesModbus.eRemoteSlaveError;

END_VAR
Code:
modbuszust	:=	IoConfig_Globals.RTUNr1_rtu.GetErrorCode();

Gruß Schlabbesaicher
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 

Anhänge

Zurück
Oben