# Gegenseitige Überwachung von zwei Controllern



## spec (5 Februar 2015)

Hallo Leute,

ich hab hier zwei Wago Controllern 880 und zwei  Koppler mit I/O Klemmen. Alle sind mit einander über das Modbus TCP  verbunden (Konfiguration über das WAGO-Modbus-Konfigurator). Jetzt habe  ich gemacht, dass die beiden Controllern sich gegenseitig "Überwachen"  und bei Ausfall z.B. von Controller_1 übernimmt Controller_2 die Arbeit.  Ich hab das so gelöst in dem ich "MBCFG_Error=> ," auswerte.  Beispiel bei Ausfall von Controller_1 gibt mir "MBCFG_Error=> iError"  ein Fehlercode von 129.


```
IF Error = 129 THEN;
    T1(IN:= NOT xError , PT:= T#25ms, Q=> xError, ET=> );
END_IF;
```

Dann  wird das Programm von Controller_1 in Tastkonfiguration von  Controller_2 Ereignisgesteuert bei xError = TRUE abgerufen und  abgearbeitet. Meine Frage ist kann man das so lösen oder gibt es andere  Möglichkeiten?

Und was ich noch fragen wollte, kann mir jmd eine Seite verlinken wo die ganzen Error Codes stehen? Ich hab bis jetzt herausgefunden:

129 = ModbusSlave nicht erreichbar.
4 = K-Bus Fehler im ModbusSlave.


mfg


----------



## lord2k3 (7 Februar 2015)

Bei den Errorcodes schau mal in den Bibliotheken nach meistens sind dort entsprechende Kommentare hinterlegt.

Du solltest sicherstellen, dass es nur einen Master gibt der mit den Slaves kommuniziert. Ich denke eine normale Task mit einer sinnvollen gegenseitigen Verriegelung für den Masterbaustein würde Sinn machen.
Die Master sollten z.B. nicht sofort nach einem Neustart los rennen 

Gruß
Lord2k3

„If you always do what you’ve always done, you’ll always get what you’ve always got.“
„Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.“
Henry Ford


----------



## norustnotrust (7 Februar 2015)

Ich oute mich, wie immer bei diesem Thema, als Skeptiker was selbstgebaute Redundanzlösungen betrifft.

Üblicherweise sind redundate SPS Systeme über einen eigenen HW Kanal verbunden der HW seitig autonom ist und dazu dient festzustellen was wirklich der Fehler ist. Sollte das nicht der Fall sein (in der IT z.B. beim SQL Server) dann wird mit einem Drittsystem, einem s.g. Witness (Zeugen) gearbeitet.

Denn in deiner Lösung hast du immer das Problem: Wenn einer mitbekommt dass der andere nichts tut, ist der andere kaputt oder ist der "Überwacher" selber kaputt?


----------



## spec (9 Februar 2015)

Danke für die Antwort 

Ich hab schon einige Dokumentation von Libs angeguckt und hab keine passende error cods gefunden, es fehlen immer 129 und 4. Muss woll bei Wago anrufen.

Was meinst du mit Masterbaustein, den Baustein der von Modbus Konfigurator generiert wird?

mfg


----------



## .:WAGO::016346:. (12 Februar 2015)

Hallo spec,

die Fehlercodes findest Du in der Bibliothek Wago_MBCFG_COMMON_01.lib.
Diese wird vom Modbus Master Konfigurator automatisch angezogen und ist im Reiter Ressourcen/Bibliotheksverwalter zu finden. Im Datentyp MBCFG_eERROR ist die Enumeration der Fehlercodes zu finden.

Der vom Modbus Master Konfigurator generierte Code ist für eine zyklische Kommunikation gedacht. Diesen generierten Code nur bedingt aufzurufen könnte zu undefinierten Zuständen führen.
Hier ist es ratsamer den Baustein ETHERNET_MODBUSMASTER_TCP oder ETHERNET_MODBUSMASTER_UDP aus der Bibliotek WagoLibModbus_IP_01.lib zu nutzen. Der Anwendungshinweis A300003 zeigt die Verwendung dieser Bibliothek.
http://www.wago.de/suche/index.jsp?...dium=forum&utm_content=sps-forum&utm_term=APN

Trotzdem ist diese Lösung nicht mit einem echten redundanten System zu vergleichen.

Viele Grüße


----------



## spec (12 Februar 2015)

Danke für die Anwort.

Ich hab die Bibliothek  Wago_MBCFG_COMMON_01.lib gefunden aber wenn ich es herunterlade kann ich  es nicht öffnen und das liegt nicht am winrar. Die Datei scheint selbst  Fehler zu enthalten.

mfg


----------



## lord2k3 (12 Februar 2015)

Schau mal in deinem bibliotheken ordner, dort sollte sie schon vorhanden sein. Diese musst du dann in codesys hinzufügen.
In dem anwendungshinweis ist es gut beschrieben, dort sind auch beispiele.


----------



## spec (12 Februar 2015)

Hab alles gefunden danke. 

Ich weiß nicht ob das hier rein  passt aber ich hab wieder ein Problem. Und zwar ich mache in meine Firma  eine Gebäudeautomatisierung mit Wago SPS. Ein kleiner Bereich ist aber  noch das alte Beckhoff Koppler BK9000 und diese soll bleiben. Ich hab  jetzt eine Modbus Kommunikation zwischen Wago (Master) und BK9000(Slave)  aufgebaut, über das Modbus-Konfigurator. Digitale Eingänge und Digitale  Ausgänge von dem Koppler bekomme ich gelesen und geschrieben und die  Beckhoff Klemme KL3204 (Für PT100, zwei Draht System) kann auch gelesen  werden. Nur bei KL3202 (PT100 drei Draht System) und bei KL3454 (4-24mA, für Lichtsensoren) gibt es  Probleme, die kann ich nicht lesen bzw irgendwie finde ich die nicht.  Kann es sein das man nicht alle Klemmen über Modbus lesen kann?? Oder  könnte das an meine Adressierung liegen?

Ich hab das so Adressiert:

```
MBCFG_ModbusSlave(
    QX0_0:= ,     BOOL      (* Adresse 0, FC5 *)
    QX0_1:= ,     BOOL      (* Adresse 1, FC5 *)
    QX0_2:= ,     BOOL      (* Adresse 2, FC5 *)
    QX0_3:= ,     BOOL      (* Adresse 3, FC5 *)
    QX0_4:= ,     BOOL      (* Adresse 4, FC5 *)
    QX0_5:= ,     BOOL      (* Adresse 5, FC5 *)
    QX0_6:= ,     BOOL      (* Adresse 6, FC5 *)
    QX0_7:= ,     BOOL      (* Adresse 7, FC5 *)

    QX1_0:= ,     BOOL      (* Adresse 8, FC5 *)
    .
    .
    .
    QX16_5:= ,   BOOL      (* Adresse 133, FC5 *)
    QX16_6:= ,   BOOL      (* Adresse 134, FC5 *)
    QX16_7:= ,   BOOL      (* Adresse 135, FC5 *)

    IX0_0=> ,     BOOL      (* Adresse 0, FC2 *)
    IX0_1=> ,     BOOL      (* Adresse 1, FC2 *)
    .
    .
    .
    IX13_6=> ,    BOOL      (* Adresse 110, FC2 *)
    IX13_7=> ,    BOOL      (* Adresse 111, FC2 *)

    AnalogWerte1=> ,    WORD  (* Adresse 14, FC4 *)
    AnalogWerte2=> ,    WORD  (* Adresse 15, FC4 *)
    .
    .
    .
```

Wie gesagt kann DI/DOs lesen und schreiben sowie die KL3204 Klemmen aber nicht die Oben erwähnten Klemmen.



mfg


----------



## lord2k3 (12 Februar 2015)

Überprüf mal die adressen und funktionscodes. Sollte eigentlich auch funktionieren.
Zeigt der master irgendwelche fehler an?


----------



## spec (13 Februar 2015)

Ne hab kein ERROR gehabt, nur als ich mal anders adressiert hab kamm  ERROR CODE 512 "MBCFG_INVALID_STARTBIT". Aber sonst funktioniert alles  gut bis auf die Klemmen.

mfg


----------



## lord2k3 (13 Februar 2015)

Versuch mal mit modbus poll die register auszulesen, das ist ein modbus master am pc.


----------



## spec (16 Februar 2015)

Danke nochmals für die Hilfe hab das Problem gelöst. 
Eine Frage habe ich noch, warum können hier im Forum manche User eine Frage mit zwei Zeilen erklären und die Firmen kriegen das nicht mit 100 Seiten??


mfg


----------



## lord2k3 (17 Februar 2015)

Geschmäcker sind wie das Verständnis unterschiedlich


----------

