Hallo,
ich habe die Daten der Heizkurve untersucht. Die Heizkurve hat beim VCR430 die Adresse 31, das Format war mir unbekannt. Deshalb hatte ich es erst einmal mit BYTE versucht.
'// Adressen und Formate von Datensätzen (hinzugefügte)
Private Const EBUS_HEIZKURVE As String = "31" 'aus AnalyseVaillant3.xls
Private Const EBUS_HEIZKURVE_FORMAT As String = "BYTE" 'eigentlich uint100; Bsp: 1,5
Ich habe festgestellt das zwei Byte geliefert werden. Die Formate DATA2b und DATA2c passen hier nicht. Deshalb habe ich verschiedene Heizkurvenwerte manuell eingestellt und das Ergebnis ausgelesen.
Heizkurve Bytes Wert
0,20 14 00 20
0,75 4B 00 75
1,00 64 00 100
1,70 A9 01 170 !!!!
2,00 C8 00 200
3,00 2C 01 300
4,00 90 01 400
[INFO] [SENT] 00 15 B5 09 03 0D 31 00 7D
[INFO] 00 15 B5 09 03 0D 31 00 7D 00 02 37 00 8D
[INFO] Regler: REGLER_HEIZKURVE=55
Mit dem Format BYTE habe ich nur Werte unter 256 lesen können, das ist ja klar. Jedenfalls war es wichtig zu wissen das die Werte durch 100 zu teilen sind. Das Low-Byte ist an erster Stelle. Das High-Byte ist mit 256 zu multiplizieren und zum Low-Byte zu addieren.
Auf den Wert 170 bin ich auf Zufall gestossen, da dieser Wert bei mit eingestellt war. Ich hatte mich zuerst gewundert das der Wert 170 aus A9 + 01 zusammengesetzt worden ist. Jedoch war schnell klar das 170 dem Hexcode AA entspricht und der beim Einlesen eine Sonderbehandlung erfährt. Dies ist hinterher beim kodieren zu beachten.
Jedenfalls habe ich durch die Tests erfahren das für mich ein Wert von 0,6 schon ausreichend ist. Die Regelung reagiert auf kurzfristige Änderungen mit einem gewissen Überschwingen, das heisst der Wert „Regler VT“ pendelt sich erst nach einigen Minuten auf seinen Wert ein. Er schwankt dabei bis um +/- 1°C. Man muss also mit Änderungen behutsam vorgehen, sollte nur jeweils kleine Änderungsschritte vornehmen und danach bis zum nächsten Änderungsschritt einige Minuten warten. Ich denke die Vorgehen kommt der Regelung entgegen.
Wie ich schon einmal sagte, ich nutze die php-Scripte von Thomas Terényi, habe sie aber für VB.NET 2010 umgeschrieben.
Gibt es schon ein Format passend für die Daten der Heizkurve?
'-----------------------------
' // DATA2h dekodieren (Heizkurve)
'-----------------------------
If (strFormat = "DATA2h") Then
If (strHexString.Length <> 4) Then
EBUS_LogFehler("Daten für Format " & strFormat & " ungültig: " & strHexString)
Return ""
End If
strL = strHexString.Substring(0, 2)
strH = strHexString.Substring(2, 2)
If strL = "AA" Then
Return CStr(170)
Else
Return CStr(CInt("&H" & strL) + (CInt("&H" & strH) * 256))
End If
End If
Gruss Klaus