Modbus Wärmepumpe Variablen formatieren

Hallo,

ich habe erfolgreich meine Dimplex Wärmepumpe per Modbus RTU eingebunden.

Jetzt versuche ich verzweifelt die Werte in das richtige Format zu bekommen.

Laut Beschreibung ist der Datapoint Typ Float 16 bit / signed 16 bit.

Wenn ich aber bei der Geräteerstellung (Modbus Gerät) als Einheit smallnt (16bit signed) auswähle erhalte ich immer nur eine Integervariable (Float kann ich nicht auswählen) der ich natürlich keine Nachkommastellen im Variablenprofil zuweisen kann.

Die Werte werden dann zwar auch ausgelesen, aber anstatt Außentemperatur 5,6 °C steht da dann 56.

Was mache ich falsch ???

Danke für Eure Hilfe !

Christoph

Hallo Christoph,

du musst die Integer Werte noch umrechnen und in eine neue Variable (Typ Float, Profil z.B. Temperature) schreiben, siehe folgenden Screenshot.
So habe ich es zumindest gelöst…

<?

SetValue(18216 /[Waermepumpe\Umrechnung\Außentemperatur]/ , (GetValue(21182 /[Waermepumpe\WP_TF_Aussen\Value]/ )/10));
SetValue(23364 /[Waermepumpe\Umrechnung\Rücklauftemperatur]/ , (GetValue(56745 /[Waermepumpe\WP_TF_RL\Rücklautemperatur Wärmepumpe]/ )/10));
SetValue(59649 /[Waermepumpe\Umrechnung\Vorlauftemperatur]/ , (GetValue(17302 /[Waermepumpe\WP_TF_VL\Vorlauftemperatur Wärmepumpe]/ )/10));
SetValue(15823 /[Waermepumpe\Umrechnung\Warmwassertemperatur]/ , (GetValue(39507 /[Waermepumpe\WP_TF_WW\Warmwassertemperatur]/ )/10));
SetValue(33351 /[Waermepumpe\Umrechnung\Vorlauftemperatur HK OG]/ , (GetValue(39072 /[Waermepumpe\WP_TF_HK_OG\Vorlauftemperatur Heizkreis 2]/ )/10));
SetValue(53259 /[Waermepumpe\Umrechnung\Vorlauftemperatur HK EG]/ , (GetValue(44107 /[Waermepumpe\WP_TF_HK_EG_KG\Vorlauftemperatur Heizkreis 1]/ )/10));

$kWh_HZG_1000 = (float)(GetValue(32983 /[Waermepumpe\Integer_96\Value]/ )10000);
$kWh_HZG_100 = (float)(GetValue(12543 /
[Waermepumpe\Integer 95\Value]/ ));
$kWh_HZG = ($kWh_HZG_1000) + ($kWh_HZG_100);
SetValue(51772 /
[Waermepumpe\Umrechnung\Wärmemenge_Heizung]*/ , $kWh_HZG);

$kWh_WW_1000 = (float)(GetValue(54671 /[Waermepumpe\Integer_97\Value]/ )10000);
$kWh_WW_100 = (float)(GetValue(55442 /
[Waermepumpe\Integer_98\Value]/ ));
$kWh_WW = ($kWh_WW_1000) + ($kWh_WW_100);
SetValue(36213 /
[Waermepumpe\Umrechnung\Wärmemenge_Warmwasser]*/ , $kWh_WW);

SetValue(15432 /[Waermepumpe\Umrechnung\Durchfluss_Primärkreis]/ , (GetValue(37220 /[HTTP\ANALOG_KG.WP_DFM]/ )*60/1000));

?>

Hoffe, das hilft dir…

Schöne Grüße
Dan

Hallo Dan,

vielen Dank.

Hat super funktioniert !

Auch die Ermittlung der Gesamtwärmemengen konnte ich gut gebrauchen :slight_smile:

Danke

Christoph

Hallo nochmal,

hatte jemand schon einmal das Problem, dass Modbusgeräte den Timer verlieren ?

Ich hatte das Intervall auf 5000 millisekunden eingestellt.

Irgendwann stellte ich fest, dass einige Variablen nicht mehr aktualisiert werden.

Als ich testweise das Abrufintervall ändern wollte, bekam ich eine Fehlermeldung „Timer #18 existiert nicht“.

Mit „Befehl testen“ klappt die Aktualisierung.

Wo finde ich die Modbus timer um diese wieder einzuschalten und warum schalten die sich ab ?

Vielen Dank.

Christoph