Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

MDT Modbus RTU485 Gateway - Grundverständnis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MDT Modbus RTU485 Gateway - Grundverständnis

    Alle bisherigen Versuche mit der Steuerung (siehe Anhang) zu kommunizieren schlagen fehl und das ganze Prinzip an sich mit den Registern, Prokoll-Adressen, BIT-Integer-Vergleicher usw. ist mir ein Rätsel, dazu die zigtausend Parametern vom Gateway. Diverse Recherche von Modbus-Grundlagen boten bisher keine Offenbarung.

    Das Diagnoseobjekt vom Gateway meldet auf den Bus E9 NO_ANS c1 also schonmal keine Antwort vom Slave.

    Die Basis-Bedingungen sind meines Erachtens gegeben. Master-Slave, Adresse, Datenrate usw., Verdrahtung

    Auf Seite 2, 1. Hinweis soll man alle 4 Sekunden diesen "Überwachungszähler" (Seite 35, ID 31) senden damit überhaupt Kommunikation möglich ist? Soll das etwas jetzt für immer alle 4 Sekunden als Bus-Telegramm raus? Dann kann ich ja die Bus-Aufzeichnung zu Diagnose-Zwecken in Zukunft aufgeben wenn die zu 95% nur noch mit diesem Telegramm gefüllt sein wird.

    Und wie soll ich das Gateway parametrieren? Fängt schon direkt bei den Modbus-Geräten an mit Register-Adresse und Byte-Reihenfolge. Woher soll man das alles wissen? Das einzige was ich weiß ist, dass z.B. "Holding Register" in der PDF, als Beispiel 40032, beim MDT Gateway Modbus-Registeradresse 4x0032 ist. Und was ist mit der Protokoll-Adresse? Und wieso Datentyp INT16? Auch beim allerersten Objekt in der PDF, ID 0.0, eine binäre Statusmeldung BOOL zwingt mich das Gateway als Modbus-Datentyp min. einen 1 Byte-Datentyp auszuwählen!?
    Angehängte Dateien

    #2
    Hallo,

    Manche Hersteller verwenden die Notation als "Protokoll Adresse" oder manchmal auch "Registernummer".

    Bei dieser Notation bedeutet eine 3 vor der eigentlichen Modbus Adresse z.b. dass es sich um Input Register handelt (Funktionscode 0x04) oder eine 4 für ein Holding Register. Bei der Schreibweise erfolgt die Adressierung dann mit der Basisadresse 1, dafür muss bei unserem Gateway dann "erste Adresse 1" ausgewählt werden
    Beispiel für die "Protokol Adresse" 40032 : Modbus Registeradresse 32 (Parameter "erste Adresse 1"), oder 31 (Parameter "erste Adresse 0")

    Die Fehlermeldung sieht erstmal nach falschen Schnittstellenparametern aus (keine Antwort vom Modbus Client), vielleicht checkst Du diese nochmal.

    Das Manual des SAM4.0 ist in dem Punkt mit dem Überwachungszähler nicht ganz eindeutig, vielleicht fragst Du dort im Support einmal nach und lässt Dir die Doku mal genau erklären


    Du könntest aber mal folgendes ausprobieren, es liest sich, als ob Du den Zähler auslesen musst und ihn prompt wieder zurück schicken (mindest-Zykluszeit ???).

    Das könntest Du mit 2 Kanälen lösen, einer liest (0x03 ) und senden zyklisch auf ein KNX Objekt. Ich würde es mal mit 10sec zyklisch senden probieren, evtl. ändert sich der Coutner ja auch in kurzen Abständen, dann könntest Du den Kanal bei Änderung senden lassen.

    Der andere Kanal sendet (0x06) und ist mit dem KNX Objekt vom anderen Kanal verknüpft. Sobald der andere Kanal das Objekt sendet, wird auch ein holding register write Kommando ausgelöst.

    Bitte dabei die Priorität hoch einstellen.

    Statusmeldung (allererstes Objekt im PDF) : Die Meldung steckt im 16 Modbus Holdingregister im Bit 0.
    Wenn Du in unserem Gateway den 1 Bit KNX Datenpunkttyp auswählst, kann Du Die Bitposition im Register auswählen - so hast Du die den Schaltstatus direkt auf dem KNX Bus.


    Beste Grüße aus Engelskirchen, Jörg




    Kommentar


      #3
      Inzw. funktioiert das Lesen von Werten. Das Kabel war nicht nur falsch verdrahtet, weitere Hürden taten sich auf. Nach zigtausend Stunden (gefühlt) ergab sich also, dass die Adresse/ID, wie Jörg schon geschrieben hat, als ein- bis dreistellige Zahl eingegeben wird. Basierend auf der Input oder Holdingregister-Zahl. NICHT der ID. Wenn die ID 1 ist, ist die im Gateway einzutragende Registeradresse 2, herzuleiten aus der Adresse 30002 halt.
      Bei INT16 Datentypen sind die auszuwählenden KNX- & Modbus-Datentypen entsprechend "2 byte Dezimalwert vorzeichenbehaftet"
      Bei Binärwerten (wie die ersten 16 IDs) die alle in EINER 2 byte Adresse auszulesen sind, muss man die entsprechende Bitposition im Register anhand der 6. Spalte der Tabelle (Andere > Modbus > Bit) eingeben. Auch so ein toller Spaß, aufpassen müssen, dass die mit 8 bis 15 anfangen und 0 bis 7 weitergehen, statt 0 bis 15. 🙄 Was für ein Mist.

      So, und Werte schreiben, also Steuerung der Kompressoren, funktioniert aber nicht und Kaeser weiß auch nicht weiter (über's Telefon). Man liest also ID 28 (Adresse 29) per Homeserver Logikbaustein Telegrammgenerator mit einfach mal sicherheitshalber 3 Sekunden (5 Sekunden ist ja die erzwungene Max.dauer wo eine Antwort erwartet wird) und schickt den empfangenen Wert einfach direkt wieder weiter auf die ID 31 (Adresse 32) per 0x06 write single register. Dann müllt man sich schön den Bus voll und hat nichts davon weil alle Schreibbefehle, wie beispielsweise Freigabe und Ein-/Ausschalten der Zeitsteuerung, nichts bewirken haha. "Fernbetrieb" an der SAM ist freigegeben. Trotzdem kommt dort nix vom Gateway an.

      Ich hasse Modbus. Oder diese furchtbare Kaeser-Steuerung. Oder beides zusammen. Oder das MDT Gateway. Alles.

      Kommentar

      Lädt...
      X