+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 21
  1. #1
    Registriert seit
    Oct 2006
    Ort
    Rangsdorf, bei Berlin
    Beiträge
    24

    Standard Ansteuerung einer Heizung über COM oder LON-Bus

    Hallo Forum,

    super Arbeit die Ihr hier leistet.

    Ich hätte gerne mal Eure Meinung zu einem meiner noch zu lösenden Probleme in meiner Haustechnik.

    In meinem Häusschen werkelt ein Heizsystem der Firma Paradigma. Die Heizung besteht aus einem zentralem Schichtenspeicher, Vakuumröhren auf dem Dach und für die kalten Tage eine Junkers Gastherme zum zuheizen.
    Gesteuert wird das ganze über eine erweiterbare Steuereinheit des Herstellers, genannte MES.
    Dahinter verbirgt sich ein Modulgehäuse mit 5 Slots. Zur Zeit sind die Module Kesselsteuerung (zur Ansteuerung der Heiztherme), ein Heizungsmodul (zur Regelung des Schichtenspeichers, Heizung und Warmwasser), ein Solarmodul, zentrales Netzteil und ein COM-Modul installiert. Mit Hilfe des COM-Moduls kann man per seriell angeschlossenem PC und der passenden Software (genannt PCMS) die Parameter der Heizungssteuerung ansehen und ändern. Die einzelnen Module sind über einen LON-Bus miteinander verbunden. Das COM-Modul greift über diesen LON-Bus auf die anderen Modul-Daten zu.
    Genau das hätte ich aber gerne in die IPS eingebunden bzw. von der IPS aus im Zugriff. Hier würde ich gerne mal Eure Meinung hören, wie man die Kommunikation zwischen IPS und MES am besten realisiert. Ich habe bisher zwei Ansätze:

    Mein erster Ansatz war , ich greife an dem seriellen Bus die Kommunikation ab, emuliere sozusagen die Orginalsoftware mit der COM-Instance der IPS. In einem ersten Schritte habe ich mir erst mal den Datenfluss zwischen COM-Modul der Heizung und der org. Software angesehen ( mit einem seriellen Port Monitor - HDD). Allerdings komme ich mit der Identifizierung des verwendeten Protokolls nicht weiter. Ich hab klein angefangen, mir nur einen Heizungsparameter anzeigen lassen (also lesend vom Modul). Aber hier wird leider kein klartext geredet. Oder habt Ihr eine Idee, wie die HEX-Zeichenfolge:

    22 12 74 01 0E den Flieskommawert +47,24 darstellen soll (Vorlauftemperatur)

    Weiterhin gestaltet sich die Anbindung via IPS hier, denke ich, ziemlich schwierig, da die beiden Seiten wirklich gegenseitig Daten austauschen. Eine Messwertabfrage wird so z.B. mit dem HEX-Code (02 22 00 00 24) eingeleitet. Darauf antwortet die MES mit HEX (02 06 22 00 2A). Dann kommt erst der eigentliche Abfragebefehl einer Variable, HEX (03 77 0A) mit dem Variablenindex HEX (16 00 9A). Dann kommen Antworten wie oben beschrieben (der Flieskommawert).
    Kann ich so eine Kommunikation überhaupt in der IPS nachstellen ?

    Mein zweiter Ansatz ist jetzt vielleicht in die Kommunikation der MES mit Hilfe eines LON-Bus- Adapters einzusteigen. Hab ich im Internet bereits in Form von Seriell, USB und Internetserver gefunden. Hat hier jemand von Euch Erfahrungen wie das mit der IPS aussieht ?


    Das war ja erst mal ne Menge Text, ich hoffe ich habs nicht zu umständlich ausgedrückt.

    Grüße

    winni

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    23,716

    Dein Ansatz mit dem ComPort ist schon der richtige und bestimmt auch der einfachste.

    Was dir zu deinem Glück fehlt ist das Protokoll. Da müsstest du mal beim Hersteller direkt oder über deinen Installateur bei dem mal Nachfragen lassen, ob du die bekommst. Wenn du ganz viel Glück hast, rücken die das raus.

    Mit allen anderen Adapter wird es auch nicht einfacher. (Klartext wirst du nirgends sehen)

    Falls du den Reverse Engineering nimmt:

    Die Bytes die hin und hergeschickt werden müsstest du öfters für paar Temperaturwerte abfragen. Dann siehst du was Konstant bleibt und welche Werte sich ändern. Die sich ändernden Werte werden dann deine Temperatur darstellen. (Wird entweder 2 oder 4 Bytes sein)

    Nun musst du mit den Bytes rausfinden, in welchem Standard die Sache kodiert ist und dann hast du die Zahl

    Evtl musst du gucken, ob am Ende eine Prüfsumme sein könnte.

    paresy

  3. #3
    Registriert seit
    Apr 2006
    Ort
    Dingelstädt/ Eichsfeld
    Beiträge
    615

    HEX-Code (02 22 00 00 24)
    da fühlt man sich wieder wie zur MOSC-Zeit...


    PS: für die, die damit nix anfangen können, MOSC bedeutet "Modified Original Smart Card" und kommt aus den Anfängen des verschlüsselten Digitalfernsehens

    Aber die Zeiten sind längst vorbei...

    Was nicht passt wird passend gemacht!

  4. #4
    Registriert seit
    Apr 2006
    Ort
    Dingelstädt/ Eichsfeld
    Beiträge
    615

    22 12 74 01 0E den Flieskommawert +47,24
    also hab jetzt mal genauer hingesehen...

    die 47,24 ist ein float, d.h. er wird bei der Übertragung in Mantisse und Exponent zerlegt. Allerdings sind diese normalerweise binär codiert.

    Hierbei ergibt sich jedoch bei Umrechnung folgendes:
    0x1274 ergibt in dez. 47,24 >> das halte ich nicht für einen Zufall

    Schau mal andere Werte nach oder poste sie hier.

    Gruß
    Fabian

    Was nicht passt wird passend gemacht!

  5. #5
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,618

    und die Quersumme von 12 74 ist 0E - womit auch die Checksumme durchaus Sinn geben würde. Ach, wenn die Dinge nur immer so einfach wären...

    prof hat recht... zeig doch noch ein paar her... Ist bislang alles nur Vermutung.


    Toni

  6. #6
    Registriert seit
    Oct 2006
    Ort
    Rangsdorf, bei Berlin
    Beiträge
    24

    Hallo Leute,

    also erst mal vielen, vielen Dank für die tollen Antworten.

    @paresy:
    Aus Deiner Antwort schliesse ich, Du würdest hier mit dem Reverse-Engineering weiter machen. Also hat die Idee mit dem LON-Bus keinen Sinn ? Kriegt man denn über die IPS-Com-Instance eine bidirectionale Kommunikation (Send-Befehl, zum Werte anfordern / Empfang und Codierung der von der MES gesendeten Werte) so ohne weiteres hin. Ihr müsst wissen, ich habe quasi Null Erfahrung in PHP. Meine letzten Programiererfahrungen kommen aus dem Studium, is lange her, und war damals noch in Turbo-Pascal.....
    Aber ich denke, Du hast recht, Prof und Tonic1024 haben das Protokoll ja schon fast identifiziert. Beim Hersteller anzufragen traue ich mich erlich gesagt noch nicht so richtig. Hier war kein Installateur betraut, ich habe die ganze Technik selber über den Großhandel bezogen und selbst eingebaut.

    @prof @tonic1024:
    Super, ich glaub ihr seit hier genau richtig. Hier mal die kompletten Kommunikations-Mitschnitte für das Abfragen von drei unterschiedlichen Variablen:

    1.Variable (Aussentemperatur: TA Wert: 3,55)
    Request:
    02 22 00 00 24
    Answer: 02 06 22 00 2A
    Request:
    03 77 0A 16 00 9A
    Answer:
    05 57 0A 16 01 63 00 E0

    2.Variable (Vorlauftemp.: TV Wert 47,24)
    Request:
    02 22 00 00 24
    Answer:
    02 06 22 00 2A
    Request:
    03 77 0A 22 00 A6
    Answer:
    05 57 0A 22 12 74 01 0E

    3.Variable (Vorlauf_soll : TVsoll Wert 48,31)
    Request:
    02 22 00 00 24
    Answer:
    02 06 22 00 2A
    Request: 03 77 0A 21 00 A5
    Answer: 05 57 0A 21 12 DF 01 78

    und hier als letztes noch mal der Mitschnitt für das Abfragen von zwei Variablen gleichzeitig:

    Variable TVs=46,43 sowie TVsoll=48,31
    Request:
    02 22 00 00 24
    Answer:
    02 06 22 00 2A
    Request:
    03 77 0A 22 00 A6
    Answer:
    05 57 0A 22 12 23 00 BD
    Request:
    03 77 0A 21 00 A5
    Answer:
    05 57 0A 21 12 DF 01 78

    Bisher habe ich das wie folgt interpretiert:
    Der Request: 02 22 00 00 24 ist eine Art von Einleitung der Kommunikation.
    Er wird immer gleich bestätigt, mit der Answer: 02 06 22 00 2A .
    Das Kommando zum Abfragen einer Variable scheint der 1. Teil des Requests: 03 77 0A 16 00 9A (also 03 77 0A) zu sein, da er immer in allen Variablenabfragen erscheint. Der zweite Teil des Kommandos steht also wahrscheinlich für die Variable, die abgefragt werden soll (hier: 16 00 9A)

    Danach sind die Variablen identifiziert:

    TA : 16 00 9A
    TV : 22 00 A6
    TVsoll : 21 00 A5

    Der Variablen-Wert steht immer in einer Answer, die mit 05 57 0A anfängt und dann den Inhalt enthält, wie z.B. in meinem ersten Feed beschrieben.

    Mein größtes Problem, ich habe keine Ahnung wie ich die IPS dazu bekomme, die decodierung wie Ihr sie beschrieben habt in eine IPS-Variable vorzunehmen.

    Habt Ihr eine Idee ?

    Grüße

    winni

  7. #7
    Registriert seit
    Oct 2006
    Ort
    Rangsdorf, bei Berlin
    Beiträge
    24

    Hi nochmal,

    noch ein Nachtrag:

    Die Float-Werte, die ich oben angegeben habe sind bisher immer positive Werte. Sie könneten natürlich auch negative Werte darstellen (TA unter Null, z.B.). Dafür habe ich jetzt leider keinen aktuellen Mitschnitte, ist halt ein sehr warme November . Habt Ihr eine Idee, wie der Hersteller das mit dem Vorzeichen geregelt hat ?

    Grüße

    winni

  8. #8
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,618

    Ich hab das mal eben durch meine "Analyzer-Software" gejagt und denke das könnte so ausschauen:

    PHP-Code:
    // Variable TVs=46,43   sowie  TVsoll=48,31
    //Request: 
    02 22 00 00 24        // Init: "Hallo? Ist da wer?"
    //Answer: 
    02 06 22 00 2A        // Init: "Wer stört?"  
    //Request: 
    03 77 0A 22 00 A6   //  "Fein, dann lass mal die TVs rüberwachsen"
    //Answer: 
    05 57 0A 22 12 23 00 BD   // "TVs ist 12 23"  
    //Request: 
    03 77 0A 21 00 A5         // "Wo wir grade schnacken... Haste auch die TVsoll?"
    //Answer: 
    05 57 0A 21 12 DF 01 78  // "Klar, TVsoll ist 12 DF" 
    Der Init String scheint immer der selbe zu sein. Da du sagst, dass deine Anlage modular aufgebaut ist könnte dort noch die Adresse des moduls drin stecken (Modul 22?). Darüber können wir hier nix feststellen. Die letzten beiden Ziffern sind immer die Checksumme. Das ist auch durchaus so üblich.

    03 77 0A 22 00 A6 ist eine Anfrage. dabei könnte 03 77 oder 03 77 0A einfach bedeuten "request" und 22 oder 0A 22 (was ich für wahrscheinlicher halte) den Request spezifizieren. In diesem Fall die TVs (was ist eine TVs?). 00, denke ich mal, ist eine Art Füllzeichen für Details. Kann man nix zu sagen - ist wahrscheinlich aber auch irrelevant.

    05 57 könnte für "Antwort" stehen wobei 0A 22 - das kennen wir schon - die Antwort spezifiziert. Wir haben nach TVs gefragt und bekommen für TVs ne Antwort, also für 0A 22.

    Die Folgenden zwei Byte sind der Wert. 12 23(hex) -> 4643(dez).

    Und genauso bei TVsoll....


    negative Zahlen werden oft mit invertiertem MSB gekennzeichnet und dann "rückwärts gezählt". Also wäre FF F4 in hex -0.12 dezimal. Ob der Hersteller das so macht ist aber die Frage...

    Toni
    Geändert von Tonic1024 (24.11.06 um 10:24 Uhr)

  9. #9
    Registriert seit
    Oct 2006
    Ort
    Rangsdorf, bei Berlin
    Beiträge
    24

    Alsooooo,

    das würde bedeuten, ich müsste die Bytes hier mehr in zweier Gruppen sehen:

    Der Request-Befehl wäre also: 03 77

    Die Antwort darauf wäre: 05 57

    Die Variablen hätten die Bezeichnung:

    TV : 0A 22 (TVs war übrigens ein kleiner Tippfehler von mir, meinte TV)
    TVsoll : 0A 21
    TA : 0A 16

    Dann jeweils zwei Bytes für den eigentlichen Wert.
    Blos das mit den letzten beiden Bytes in der Antwort ist mir noch nicht ganz klar. Das mit der Prüfsumme (im Beispiel der 2. Variable) 0E scheint doch nur ein Zufall gewesen zu sein. In der 1. und 3. Variable haut die Quersumme hier nicht hin (wenn mich meine Mathematik-Kenntnisse hier nicht trüben .

  10. #10
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,618

    Alsooooo,das würde bedeuten, ich müsste die Bytes hier mehr in zweier Gruppen sehen:
    genau, 16 Bit ist ja nicht sooo ungewöhnlich, oder?

    [..]haut die Quersumme hier nicht hin[..]
    Die 00 hinten gehört mit zur checksumme!

    Quersumme aus "05 57 0A 21 12 DF" ergibt "01 78".

    "22 12 74 01 0E" ist so allein nicht gültig. Um das festzustellen ist eine Checksum ja da... "05 57 0A 22 12 74" ergibt "01 0E"


    Du hast uns den Anfang der Datenreihe unterschlagen in deinem 1. Post... Natürlich zieht man dann falsche Schlüsse



    Toni
    Geändert von Tonic1024 (24.11.06 um 11:48 Uhr)

Ähnliche Themen

  1. Bessere AVISARO Unterstützung
    Von chrisu im Forum Ideen & Anregungen
    Antworten: 13
    Letzter Beitrag: 05.11.06, 23:17