Hier mein script zur Übergabe der Überschussleistung an die Warmwasserwärmepumpe (Ochsner genius 333)
Code: Alles auswählen
! Lesen der Systemvariablen
var sysvarname = "WWP_Überschussleistung";
var Wert = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname).Value();
! ist Systemvariable schon als Zeichenkette sollte es so gehen
! falls Systemvariable als Zahl angelegt - erst in einen String wandeln - ohne Nachkommastellen = ToString(0).
Wert = Wert.ToString(0);
! zur Kontrolle
WriteLine(Wert);
! **************** Schreiben mit system.Exec ****************
string lGetOut;
string lGetErr;
! Schreiben des Wertes
system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.178.181 8899 01 06 2201 "#Wert,&lGetOut,&lGetErr);
In der Variable
Wert steht das was ich übertragen will. Als Zeichenkette.
Übergeben will ich hier als Beispiel 600 W Überschussleistung.
Die WWP nimmt wie oben ersichtlich die Überschussleistung nur als 16bit 2er Komplement an. Oder gibt diese auch so wieder zurück.
600 ist im 2er Komplement 11111101 10101000.
Ich vermute das, dass so nicht übertragen wird in dem tcl.
Evtl weiß da einer weiter. hier bin ich mit meinem latain am ende.
Gruß Thomas