7.0 - Modbus - verrückte Werte bei Nutzung der Console

Moin zusammen,

ich war lang am überlegen wie ich mein Problem hier schildern kann, aber nach langem beobachten komme ich nicht weiter. Folgendes Problem:

Ich lese seit Jahren von meinem Sunny Island 8.0H Batteriewechselrichter per Modbus die aktuelle Leistung und Strom aus. Je nach dem, ob die Batterie gerade Energie speichert oder abgibt ist es ein positiver oder negativer Wert. Soweit so gut. Es funktioniert solange bis ich meinen PC an mache und in der Webconsole unterwegs bin. Solange ich nicht auf der Console arbeite, ist im Log alles sauber. Die letzten Tage und Stunden. Arbeite ich wiederum auf der Console zeigt er astronomisch hohe Werte und das ergibt keinen Sinn.

Aber !! Ich nutze per Script diesen Wert und schreibe mit bei positiven Werten eine extra Variable und genauso auch bei negativen Werten eine andere Variable. Witzigerweise stimmt dort der Wert auch wenn der Ursprungswert astromomische Zahlen anzeigt.

Ich bin extrem verwirrt.

Der Rohwert aus dem Modbusregister sieht sauber aus. Hab in meinem Script für das schreiben der positiv und negativ Variablen ein Log eingebaut.

<?php 
$NegativeZahl = getvalueinteger(13982); 

// Protokollierung des berechneten Wertes
IPS_LogMessage("Modbus Wert", "Verarbeiteter Wert: " . $NegativeZahl);

$PositiveZahl = $NegativeZahl * (-1);

if ($NegativeZahl < 0)
{
    setvalueinteger(48984,$PositiveZahl);
    setvalueinteger(38918,0);

    // Protokollierung der geschriebenen Werte
    IPS_LogMessage("Modbus Wert", "Geschriebener positiver Wert: " . $PositiveZahl);
}
else
{
    setvalueinteger(48984,0);
    setvalueinteger(38918,$NegativeZahl);

    // Protokollierung der geschriebenen Werte
    IPS_LogMessage("Modbus Wert", "Geschriebener negativer Wert: " . $NegativeZahl);
}

Analyse meines symcon GPT´s:

Aus der neuen Information geht hervor, dass der Rohwert, den Sie aus dem Modbus-Register lesen, korrekt zu sein scheint und negative Werte wie erwartet darstellt. Die Tatsache, dass die Rohwerte korrekt sind, bestätigt, dass das Lesen des Registers und die Interpretation der Daten in Ihrem System funktionieren.

Wenn das ursprüngliche Problem darin besteht, dass gelegentlich zehnstellige Werte in der IP-Symcon-Oberfläche angezeigt werden, aber Ihr Skript dennoch korrekte Werte verarbeitet, könnte das Problem mit der Darstellung der Werte in der Oberfläche zusammenhängen und nicht mit dem Modbus-Register selbst oder dem Skript.

IP-Symcon Support kontaktieren: Wenn das Problem weiterhin besteht und keine Lösung gefunden wird, könnte es hilfreich sein, sich an den IP-Symcon Support zu wenden, um Unterstützung bei der Diagnose des Problems zu erhalten.

Du hast in der Instanz doch UINT32 also ohne Vorzeichen eingestellt.
Dann werden negative Werte halt extrem groß, weil das höchste Bit ja das Vorzeichen angibt.
Stell die Instanz doch Mal auf vorzeichenbehaftet um.
Michael

1 „Gefällt mir“

Danke Michael ! Das wars.

Hatte vor 7.0 aber nie diese Probleme und selbst jetzt mit 7.0 lief es ja „meistens“. Irgendwas muss sich mit dem Update auf 7.0 geändert haben.

Aber sei es drum… mit INT32 statt UINT32 gehts natürlich ! Ist mir gar nicht bewusst gewesen.

1 „Gefällt mir“