Modbus Verbindungsstatus und Aktualisierung

BOBmoraine
2017-01-02
2017-01-30
  • BOBmoraine - 2017-01-02

    Moin, ich habe zwei Fragen zum Modbus TCP Modul bei Codesys:

    Wenn ich ein neues Programm erstelle, einen Modbus TCP-Slave und die zugehörigen Parameter einstelle und das Programm dann übertrage, werden die Mappings nicht aktualisiert.
    Eine Aktualisierung findet erst statt, wenn ich in einem beliebigen POU auf die Mappings zugreife.
    Müssten die Mappings nicht in dem 100ms Takt aktualisiert werden wie ich sie bei Slave-Kanal einstelle?

    Wo kann ich den Status des Busses abfragen?
    Wenn ich z.B. eine funktionierende Verbindung habe, und dann die Master-SPS auf STOP stelle, dann steht bei Status "Bus läuft nicht". Aber "Modbus_TCP_Slave.xError" ist FALSE.
    Welche Variable kann ich denn auswerten um "Bus läuft nicht" z.B. auf der Webvisu auszugeben?

    IMG: Bild

    IMG: Bild

     
  • eschwellinger

    eschwellinger - 2017-01-03

    Hi,
    ja das ist generell so das IO's nur aktualisiert werden wenn die im Programm auch verwendet werden,
    das ist Feldbus unabhängig.
    Wenn man z.B für Tests oder das manuelle setzen im IO Mapping online Editor haben will, dann kann man
    auf 2 Enabled (always in buscycle Task) einstellen.

    Dann zur Diagnose, es gibt ja die FB Instanzen die du verwenden kannst zur Diagnose.

    Grüße
    Edwin

    IMG: always.jpg

    IMG: InstanzenDiagnose.jpg

     
  • BOBmoraine - 2017-01-03

    Moin,
    danke schonmal für die tollen Antworten, aber in dem Variablen-Mapping des Modbus_TCP_Slave finde ich den Verbindungsstatus nicht wieder.
    Der Bus läuft nicht, aber trotzdem habe ich "Response_Success".
    Anhand welcher Variablen, oder welcher Auswertung kann ich denn in meinem Programm auswerten ob der Bus läuft (grüner Kreis) oder nicht läuft (oranges Dreieck)?

    IMG: 2017

     
  • Kampfwurst - 2017-01-26

    habe das selbe Problem. Gibts da eine Lösung?

     
  • BOBmoraine - 2017-01-26

    Ich hab weiter keine Antwort bekommen, also gibts das wohl nicht.
    Die Doku von Codesys ist echt dürftig. Ein Wiki oder so wäre da schon mal angebracht.

    Ich habe dann einfach Modbus_TCP_Slave.xInitDone abgefragt mit TON#500ms,
    später werde ich das so machen das die Variablen bei Nichtverbindung auf 0 gesetzt werden und eine der Modbus-Variablen dauerthaft 1 ist.
    So weiss ich dann zumindest wenn die Werte nicht aktuell sind wenn ich diese 1 überwache.

    IMG: RPI_PLC_01_v35sp10.project

     
  • Nina - 2017-01-30

    Ab den Modbus-Libs 3.5.10 funktioniert das bei mir fehlerfrei.

    @BOBmoraine: Du musst immer bei Stati abfragen und auswerten, Master & Slave. Dein Screenshot zeigt nur den Slavestatus. Ein TCP-Error kommt z.B. vom Master wirkt aber auf den Slave, der Slave selbst hat keinen Fehler.

     

Log in to post a comment.