Modbus - Probleme mit UINT32

Ich bin gerade am verzweifeln mit meiner Modbus-Anbindung meiner SolarEdge Wechselrichters.

M_EXPORTED ist als modbus instanz als UINT32 angelegt:
image

Der Wert steht aktuell bei 2995263600, Type Integer

Lese ich diese Variable nun mit GetValueInteger ( $value = GetValueInteger(IPS_GetChildrenIDs($ModbusID)[0]); ) , so erhalte ich einen negativen Wert, -1299703696. Die Variable wird wohl als INT32 interpretiert und da ist de Range -2,147,483,648 … 2,147,483,647.

Wie mache ich es richtig? Wie lese ich den Modbus Wert richtig in mein Script ein? In der Console wird der Wert ja richtig angegeben…

Ich würde mal Float (mit Vorzeichen nutzen)
F10A R/W FixedCosPhiPhase Float32 -1.0 - 1.0 N/A

Also, mit

$value = GetValue(IPS_GetChildrenIDs($ModbusID)[0]);

anstelle von

$value = GetValueInteger(IPS_GetChildrenIDs($ModbusID)[0]);

funktionierts.

GetValueInteger funktioniert nur für INT und nicht UINT. Ich muss wohl hier das typunsichere Lesen der Variable nutzen. Wieder was gelernt…

Das ist ein Bug. Soeben korrigiert und kommt zum RC1 der 8.0 Morgen mit :slight_smile:

Danke für den Fund!

paresy

Ein Beitrag wurde in ein neues Thema verschoben: INT16 Problem mit Datenfluss an ModBus-GW