TIA Modbus MB_Client Register List lesen

Christian_1

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich benötige Hilfe bei dem Auslesen von Daten über die MB_Client Funktion.
Die Konfiguration ist soweit klar, bis auf die Einstellungen von MB_MODE, MB_DATA_ADDR & MB_DATA_LEN.
In dem Anhang seht ihr die Daten die ausgelesen werden sollen. Hier die Daten unter Device-ID "1"
MB_DATA_ADDR hätte ich auf 40468 gesetzt.
MB_MODE = 0
Frage ist, wie mache ich das mit der Länge bei der Anzahl von Daten?
Ist bei MB_DATA_LEN die Länge der Einträge anzugeben 40468 - 40710 = 242 oder die Anzahl der Daten in WORD?

Schöne Grüße
Christian
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
MB_DATA_LEN ist Anzahl Words. 242 ist ziemlich sicher falsch. Beachte, daß max 125 Words am Stück gelesen werden können. (geräteabhängig ggf. auch weniger)
Eigenartig bei deinem Gerät ist, daß die Register/Adressen byteweise nummeriert sind. Daher weiß ich nicht, ob Anfangsadresse 40468 so korrekt ist.
Wie heißt dein Partner-Gerät? Gibt es da eine Dokumentation/Handbuch, die mehr verrät als deine Liste?
 
Die byteweise Adressierung ist hier etwas irreführend, oder im Manual schlecht beschrieben. DATA_LEN 242 geht gar nicht. 125 sofern unterstützt.
Eigenartig bei deinem Gerät ist, daß die Register/Adressen byteweise nummeriert sind.
Klingt nach Chinese 🥷

Der Partner verlangt eine Modbus-Funktion. MB_MODE ist nicht gleich Modbus-Funktion!! Manchmal etwas irreführend.
MB-MODE 0 und MB_DATA_ADDR 1 - 9999 = Modbus-Funktion 01
MB-MODE 0 und MB_DATA_ADDR 10001 - 19999 = ModbusFunktion 02 usw.
Anbei ein Beispiel aus einem aktuellen Projekt. Gut wäre zu wissen welches Gerät angezapft werden soll.

Hast du überhaupt Verbindung? Dann muss es auch einen Errorcode gebe.
 

Anhänge

Zuletzt bearbeitet:
Ich würde 40710-40468=242/2=121 Register abfragen.
Erstellen würde ich dafür einen Datenbaustein mit einem UDT der direkt die Signal_Names beinhaltet. Dann kann ich auch Bit, Byte, Word, Char nutzen wie hier z.B. bei 40470 (STRUCT mit 8xCHAR). 40486 wäre erstmal ein REAL.

Den Mode würde ich auf 103 stellen und MB_DATA_ADDR auf 40468, MB_DATA_LEN auf 121. In Kombination ergibt es "Lesen von 121 Halteregistern ab Adresse 40468. Vielleicht sind es auch Eingangsworte, das steht in der Doku des Gerätes.

Für ein zweites Gerät eben mit 40836 anfangen, das dritte bei 41204,....

Nach erfolgtem Lesen den ersten Eintrag, irgendeinen mittig und den letzten abgleichen um einmal zu schauen ob die Struktur überhaupt aufeinanderliegt.
Wenn ja, dann bei Fehlern vielleicht noch das UDT anpassen und es sind alle Daten richtig formatiert angelegt.

MB_DATA_ADDR hätte ich auf 40468 gesetzt.
MB_MODE = 0
Damit würdest Du die Register ab 467 lesen, nicht 40468, da 40.001=0


Hättest Du das Gerät genannt könnten alle eventuell auftretenden Fehler direkt umgangen werden, aber das mochtest Du ja nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke schonmal für eure Antworten.
Bei dem Gerät handelt es sich um einen Dampferzeuger aus den USA. Die Firma nennt sich "Miura".
Testen kann ich leider noch nicht, da wir uns noch in der Projektierung befinden.

In der Doku findet man nur noch folgende Infos, siehe Anhang.
Ansonsten ist leider nur beschrieben wie man die IP-Adresse anpassen kann.
 

Anhänge

  • Modbus_Notes.png
    Modbus_Notes.png
    90,3 KB · Aufrufe: 13
Zurück
Oben