Energiezähler über Modbus

HAllo zusammen

Ich habe einen Energiezähler von Phoenix den ich gerne über Modbus auf Symcon einlesen möchte und im IPS visualisieren.
Dabei bin ich auf folgendes Probelm gestosen das ich zum Beispiel für die Spannung Register 0 und 1 ausgelesen werden soll, gerne möchte ich diese einzeln auslesen damit ich diese anschliessend über den Workflow in der IPS zusammen setzen kann.

(Register (0)x65536+Register (1) / 1000) sollte den richitgen Spannungswert ergeben, leider schaff ich es nicht zum Register 1 einzeln auszulesen, siehe Fehlermeldung unten, hat jemand einen Idee wie ich das Problem am einfachsten lösen kann?

Im Datenblatt ist angegeben das es sich um ein Uint32 handelt, so hab ich mir gedacht ich lese beide mit einem Int16 einzeln aus.

Warum ließt du es nicht direkt als 32 bit aus? Die mathematische Formel sorgt nur für das Bitverschieben…, das wird aber bei der Einstellung 32bit sowieso gemacht.

Wie hast du die Registeradresse laut Handbuch in Symcon eingetragen? Und welcher Funktionscode ist eingetragen? Symcon erwartet die volle Adresse (Holding Register FC03 - Adresse 40001) und nicht z.B. Adresse 1 eintragen. Ggf. auch mal mit einer Adresse größer bzw. kleiner probieren.
Das Flag im Splitter Swap MSB/LSB macht den Unterschied zwischen - nach deiner Nomenklatur:

(Register (0)x65536+Register (1) und
(Register (1)x65536+Register (0)

Wenn ich die 32 Bit auslese, erhalte ich einen Wert der nicht möglich ist, daher bin ich auf die Idee gekommen das ich es gleich machen könnte wie. wenn ich den Wert auf meine Beckhoff einlese (einzeln) und diesen danach in einem Workflow bearbeite.



Du kannst im Gateway (übergeordnete Instanz der Modbus Instanz) noch Swap ausprobieren.
Michael

Habe Swap ausgeschaltet, so funktioniert es, was bendeute Swap oder was ist die Funktion?

Damit werden high und Low Byte bei der Umwandlung in 32bit getauscht.
Michael

1 „Gefällt mir“

Ok, alle klar den verstehe ich es soweit.
Danke für eure Hilfe.

Und mit Adresse 0 geht es jetzt? Wundert mich etwas. Denn der Function Code 03 ist für Adressen ab 40000. Und ich hätte jetzt erwartet, dass du bei Symcon daher auch die 40000 für Register 0 eintragen musst.

40000 wäre auf alle Fälle nicht richtig. Für die Registeradresse 40123 wäre die Schreibadresse 122 einzutragen:
Modbus Device

Grüße, Gerhard

Danke, jetzt kommen endlich sinvolle Werte aus meinem Victron System, da kam bei uint32 nichts brauchbares an