Wago Modbus mit externer Visualisierung

Babustino

Level-2
Beiträge
66
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich habe da mal eine Verständnisfrage. Ich habe eine Visualisierung auf die ich die Daten via Modbus zur Verfügung stellen möchte. Das scheint auch zu funktionieren nur verstehe ich gerade nicht warum. Vielleicht stehe ich auch völig auf dem Schlauch, aber ich habe auch noch nicht soviel mit Modbus gemacht.

Ausgangslage Codesys 2.3:

VAR_GLOBAL
rVisuBreitengrad AT%MW5000 : REAL;
END_VAR

Auf der Visu sieht das so aus:

Device ID: 0
Type: Holding Register
Address: 17288
Word Size: Float 32 bit
Content Type: Low Endian

So wie es aktuell aussieht kommen die Werte richtig auf der Visu an, aber:
- Warum kann ich ein REAL in ein Merkerword schreiben? Was passiert da im Hintergrund? Aus meiner Sicht wäre ja AT%MD5000 richtig, aber dann kommt nichts mehr an.
- Ich dachte Wago Modbus ist Big Endian? Wenn ich das in der Visu umstelle kommt aber der falsche Wert.

Kann mir da mal einer auf die Sprünge helfen?

Danke und Gruss
Benjamin
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Da tickt Codesys anders als BigS, MW5000 liegt auf der gleichen Anfangsadresse wie MD2500.

Danke für die Info, habe das angepasst. Verstehe aber immer noch nicht warum es mit dieser Deklaration auch funktioniert
Code:
[COLOR=#333333]VAR_GLOBAL[/COLOR]
[COLOR=#333333]rVisuBreitengrad AT%MW5000 : REAL;[/COLOR]
[COLOR=#333333]END_VAR[/COLOR]

Das ist der Breitengrad im Binärformat:

00000010110100001100111101001001
0sGkoFkIBlIBm5k4A 0EgCfnKiuqAAAAABJRU5ErkJggg==

0sGkoFkIBlIBm5k4A 0EgCfnKiuqAAAAABJRU5ErkJggg==


Das Merkerword AT%MW5000 hat doch nur 16bit. Dann muss Codesys ja automatisch auch das nächste Merkerword AT%MW5001 beschreiben. Wenn ich dann über die Adresse 17288 mit 32bit lesen gehe bekomme ich die Daten von beiden. Warum kommt hier kein Übersetzungsfehler wenn ich ein 32bit in einen 16bit grossen Speicherbereich schreibe?
 
Warum kommt hier kein Übersetzungsfehler wenn ich ein 32bit in einen 16bit grossen Speicherbereich schreibe?

Weil du mit dem AT nur die Anfangsdresse definierst, die Anzahl Bytes werden durch das "REAL" festgelegt. Du kannst auch ganze Structs mit AT auf eine Adresse legen, das können trotzdem hunderte von Bytes sein. Und im Prinzip ist es relativ egal ob du auf MW5000, MD2500 oder MB10000 verweist.
 
Zurück
Oben