Anbindung von Helios KWL 370 Pro

Hi,

bei RS485 kannste A und B bei den meisten Anwendungen vertauschen. Spielt keine Rolle

hab jetzt mal einen anderen USB auf RS485 Stick am raspberry hängen… jetzt siehts beim debugger anders aus!??:frowning:
kann hier jemand was zu sagen?

@molla
was kommt bei dir beim debugger an?

vg
chrissi

Falls es sich um das eine zeit lang von Vallox und Helios gemeinsam genutzte Digit Protokoll handelt habe ich hier eine kurzbeschreibung des Protokolls (PDF-Datei im Anhang).
Notwendige Schnittstelleneinstellungen:
9600Baud, keine Patität(N), 8Datenbits, 1 Stoppbit.
Ich habe schon seit einiger Zeit die Anbindung eines Vallox Lüftungsgerätes über eine Wago SPS an IP-Symcon am laufen (ein paar Optimierungen stehen noch aus). Bei Interesse stelle ich den Programmteil gerne zur Verfügung.

stw80

Digit_protocol_english_RS485.pdf (48.3 KB)

hallo,

kannst du mal vergleichen was bei dir beim debuggen der Rohrdaten der Schnittstelle ankommt… denke dann sieht man schnell ob es die selbe „Sprache“ ist die da über den Bus kommt…

Das ist nicht ganz richtig, wenn du A/B vertauscht kommt nichts vernünftiges an
Schau mal hier da ist der Bus gut beschrieben https://de.m.wikipedia.org/wiki/EIA-485

ich habe mir die von euch geposteten Scripte angeschaut, es handelt sich dabei eindeutig um das Digit Protokoll. (Protokollbeschreibung siehe mein voriger Post).

Ein Vertauschen von A und B bewirkt wie thka richtig bemerkt hat dass nichts sinnvolles mehr ankommt.

Ich habe leider von meiner Kommunikation keine Aufzeichnung zur hand da die Protokollauswertung unmittelbar vom Wagocontroller durchgeführt wird und nur noch die Auswerteergebnisse zu Ip-Symcon übertragen werden bzw. von IP-Symcon Anforderungen entgegennimmt.

Beispiel für Lüfterstufenumschaltung:

Senden 6 Bytes

  1. 0x01 Domain, immer 0X01
  2. 0x22 Senderadresse hier 2. Bedienteil das wir simulieren.
  3. 0x11 Empfangsadresse, Master Mainbord
  4. 0x29 Kommando Lüfterstufe einstellen
  5. 0x01 Neue Lüfterstufe 1
  6. Prüfsumme: Summe der ersten 5 Bytes, hier 0x5E

Daraufhin sollte Das Master Mainboard Mit eine Acknowledge Byte antworten:
0xD8

Das Bedienteil pollt sich die Lüfterstufe von selbst,daher eine Änderung der Lüfterstufe erscheint von selbst

Weiterhin ist unbedingt zu beachten, dass das Master-Mainboard gelegentlich den Bus sperrt um mit einem anderen Protokoll mit CO2 Sensoren kommuniziert (tritt auch auf wenn gar keine CO2 Sensoren angeschlossen sind)

Sequenz zum sperren der Kommunikation: 0x01, 0X11, 0x20, 0x91, 0x00, 0xC3, wird zur Sicherheit 2 x gesendet
Sequenz zum freigeben der Kommunikation: 0x01, 0X11, 0x20, 0x8F, 0x00, 0xC1, wird zur Sicherheit 2 x gesendet

im Zeitraum zwischen den beiden Sequenzen dürfen keinerlei Daten auf den Bus geschrieben werden.

@stw80

Könntest du bitte mal eine Skriptzeile zum test posten mit der ich auf zb Lüfterstufe 1 umschalte?

lg
chrissi

Bei mir läuft die eigentliche Kommunikation komplett im Wago Controller ab, deshalb habe ich kein fertiges PHP-Script zur hand.
Die Auswertung ist in strukturiertem Text geschrieben (Codesys).
allerdings sollte folgender PHP-Code Auszug weiterhelfen:

 <?
$id_Helios =40391 ;

// Lüfterstufe 1
$Stufe =  "\x01\x22\x11\x29\x01\x5E"; 

COMPort_SendText($id_Helios,$Stufe);

?> 

Betreffend der Datenleitung A und B: im zweifelsfall beide Schaltungsvarianten ausprobieren, eine Beschädigung der Hardware durch vertauschten von A und B ist technisch ausgeschlossen.

@stw80

hallo,

erst mal Danke für deine Unterstützung! Das Umschalten der Stufe mit dem Skript funktioniert aber leider nicht:-( Denke man kann den Unterschied beim debuggen sehen… Hier mal ein Debuggerscreenshot von thka…
Wenn man den mit meinem weiter oben geposteten vergleicht sind da schon deutliche Unterschiede und deine Skriptzeilen machen da auch Sinn… weiß jetzt leider nicht weiter:-(

vg
chrissi

Hast natürlich Recht.
Hatte eine andere Serielle Schnittstelle im Kopf.
Man sollte vorher das Gehirn einschalten bevor man was schreibt.

Humbug, wegen unnötiger verwirrung entfernt…

@molla

das sieht auch wieder ganz anders aus als bei mir… womit debuggst du denn und welchen usb-stick nutzt du? wo hast du dich aufgeschaltet? Auch in die Leitung zwischen Lüftungsgerät und Bedienteil?
Konntest du mal nachvollziehen wenn du eine Lüfterstufe am Bedienteil umschaltest welcher Befehlscode sich dann beim debuggen wiederholt wenn man es öfters testet…

vg
chrissi

… humbug

was steht denn bei dir bei Softwareversion im Display? Hast du einen Endwiderstand am PC genutzt? Was hat dein Bedienteil für eine Adresse?

Humbug :wink:

inv_kwl_control.txt (23.5 KB)

inv_kwl_only.txt (6.42 KB)

inv_kwl_sens.txt (5.79 KB)

sniffer_delta.txt (875 Bytes)

ich hatte wohl mit falscher Baudrate gemessen, nach Umstellung der Baudrate auf 19200 8N1 sieht das ganze sinnvoller aus.
im Anhang ein Auszug aus den logs.

In der Bedieneinheit kann die Adresse eingestellt werden (1-4). Das Datum wandert dann entsprechend auf die Adresse 0c10 - 0x13

Kommunitkationssequenz Bedienteil Adresse 4(0x13):
0.097: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x24 0x1 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x88 0x0
0.080: 0x10 0x0 0x0 0x11 0x0
0.098: 0x11 0x0 0x0 0x12 0x0
0.085: 0x12 0x0 0x0 0x13 0x0
0.100: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.079: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x25 0x1 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x89 0x0
0.082: 0x10 0x0 0x0 0x11 0x0
0.096: 0x11 0x0 0x0 0x12 0x0
0.097: 0x12 0x0 0x0 0x13 0x0
0.097: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.077: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x25 0x1 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x89 0x0

Ich habe auch das umschalten der Lüfterstufe aufgezeichnet ( Lufe 4 nach 3):
0.062: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x26 0x4 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x8d 0x0
0.094: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0xc0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.051: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x26 0x4 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x8d 0x0
0.098: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.096: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x26 0x4 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x8d 0x0
0.098: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0x3 0xbb 0xb 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.053: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x26 0x3 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x8c 0x0
0.097: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0
0.072: 0xff 0xff 0x17 0x1a 0x5 0xc 0xf 0xa 0x26 0x3 0x0 0x0 0x0 0x1 0x0 0xe 0x0 0xa5 0x0 0x14 0x0 0x2 0x3 0x0 0x0 0x3c 0x8c 0x0
0.094: 0x13 0x0 0x0 0x14 0x0 0x13 0x1 0x3 0x35 0xaa 0xbb 0xb2 0x0 0x13 0x5 0x2 0x35 0x55 0xa5 0x0

Mann kann Erkennen das nach der Sequenz 0x1 0x3 0x35 ein 0xaa gesendet wird, ausser im Moment des umschaltens, dann steht die neue Lüfterstufe an der ensprechenden stelle. In der Antwort der KWL ändert sich auch entsprechend das Byte nach 0xc 0xf 0xa 0x26. Leider ist mir der andere Inhallt immer noch ein grosses Rätsel…

kwl_ctrl_0_4.txt (74.2 KB)

hallo molla

hab auch auf 19200 umgestellt… sieht jetzt beim Umschalten der Lüfterstufe von 4 auf 3 denke so aus wie bei dir!? (Bedienteiladresse auch mal auf 4 gestellt) Er schreibt es nur beim debuggen mit IPS in mehrere Zeilen und nicht hintereinander… Wäre das generell ein Problem, dass das nicht alles in einer Zeile steht wenn man später ein fertiges funktionierendes Skript z.B. zum Umschalten von Lüfterstufen hätte?? oder ist bei mir was anders?

vg
chrissi

Hallo,

hab die vier Stufe durch ausprobieren:-) rausgefunden… und in ein Stufenskript von einem vorherigen Beitrag kopiert…

<?

#####################################################

Lüfterstufe Senden

#####################################################

$id_Helios =40391 /[Serial Port KWL]/;

if($IPS_SENDER == „WebFront“);
{
switch($IPS_VALUE)
{
case 1: // Lüfterstufe 1
$Stufe = „\x13\x01\x03\x35\x01\xBB\x09\x05\x02\x35\x55\xA5“;
break;
case 2: // Lüfterstufe 2
$Stufe = „\x13\x01\x03\x35\x02\xBB\x0A\x05\x02\x35\x55\xA5“;
break;
case 3: // Lüfterstufe 3
$Stufe = „\x13\x01\x03\x35\x03\xBB\x0B\x05\x02\x35\x55\xA5“;
break;
case 4: // Lüfterstufe 4
$Stufe = „\x13\x01\x03\x35\x04\xBB\x0C\x05\x02\x35\x55\xA5“;
break;

}

}

COMPort_SendText($id_Helios,$Stufe);
?>

Die Zeilen funktionieren einzeln ohne Fehler und schalten auch bei o.a. Skript in Webfront die Stufen um… bekomme jedoch in Webfront beim Schalten eine Fehlermeldung… woran könnte das liegen? Jetzt müssen die PHP-Profis ran:-)
Schön wäre natürlich jetzt noch eine Rückmeldung der aktuellen Stufe wenn man am Bedienteil von Helios schaltet… wie könnte das denn funktionieren?

vg
chrissi

webfront fehler.jpg

Nimm das Leerzeichen vor <? raus!!

Grüße,
Peter

ja, an dem Leerzeichen lag es… danke!

Wie mache ich es denn am besten, wenn ich einen Schalter in Webfront haben möchte, den ich betätige, um nach einer einstellbaren Zeit den Befehl für Lüfterstufe 1 zu senden? (Nachtmodus nach dem Duschen z.B.)