Daniel_G (11.10.2018),Lars Weiß (03.12.2018),Milove (15.11.2018),Onkel Dagobert (15.10.2018),sventek (26.09.2018)
Hallo zusammen,
da ich in Zukunft privat Häuser mit KNX-Bus-Systemen ausstatten will, mir die KNX-Aktorik aber zu teuer ist, habe ich ein S7-Programm im TIA-Portal erstellt, um mit dem KNX-Bussystem zu kommunizieren. Die SPS soll Rollläden, Beleuchtung und die Fußbodenheizung steuern.
Die PN-Schnittstelle der SPS kommuniziert mit einer beliebigen IP-Schnittstelle für KNX. Durch Aufbau eines Tunnels, werden die KNX-Telegramme zur SPS weitergeleitet bzw. von der Steuerung gesendet.
Die nötigen Informationen dazu habe ich der KNX Spezifikation 2.1 von www.knx.org entnommen.
Folgende KNX Komponenten wurden zum Testen eingesetzt:
MDT Glastaster II Smart BE-GT2TW.01
MDT IP Interface SCN-IP000.02
Als SPS hatte ich eine S7-1510SP. (Das Programm sollte aber auch auf einer S7-1200 laufen!)
Die SPS kann über Gruppen-Adressen via "Bits" (Beleuchtung ein / aus), "16Bit Float" (Temperatur empfangen) und 1 Byte (Rollladen-Status senden) Daten kommunizieren!
Weitere Ergänzungen sollten einfach möglich sein.
Kommunikationsabbrüche werden abgefangen und automatisch wieder aufgebaut. Meiner Meinung nach sollte eine Hausautomatisierung damit erstmal nichts im Wege stehen!
Der Langzeittest muss noch erfolgen!!! (ggf. durch euch!)
Positive und wie auch negative Kritiken sind erwünscht.
Ansonsten übernehme ich keine Garantie auf irgendwas!!
Viel Erfolg!
Gruß
PS: Ich weiß, dass es von Wago-KNX-Kommunkationsbaugruppen gibt! Ich bin aber ein S7-Programmierer und halte die Siemens-Steuerungen für zukunftssicherer!
Daniel_G (11.10.2018),Lars Weiß (03.12.2018),Milove (15.11.2018),Onkel Dagobert (15.10.2018),sventek (26.09.2018)
Hallo,
die Idee an sich ist wirklich super, ich selbst habe die ganze zeit schon ähnliches im Kopf jedoch unter zuhilfenahme eines KNX IP BAOS der firma Weinzierl.
Dieses bietet den Vorteil der ETS integration und besitzt einen Objektserver.
Ich denke mal deine Lösung hat keinerlei ETS integration sprich du schreibst und liest einfach die KNX Gruppenadressen richtig ?
Da sehe ich jetzt keinen preislichen Vorteil, da kommst Du mit KNX-Aktoren direkt auch hin. Zusätzlich hast Du vor-Ort-Bedienung intergriert u. die Vorzugslage der Kontakte ebenfalls. Klar Strommessung ist da noch nicht bei (da wären wir dann bei KNX mit ca. 23,-- dabei), aber das dürfte wohl mit der S7 wesentlich aufwändiger u. teuerer werden.
Beim Heizungskanal wärst Du jetzt geringfügig günstiger unterwegs - was wohl am fehlenden Relais für 230V und der Einschränkung auf 24V liegen dürfte?
Immerhin könnte der reine DI-Abgriff wohl günstiger realisierbar werden - da stehen ca. 8,-- den 13,-- für KNX gegenüber - dafür quasi wahlfrei pot.frei/24V/230V.
HUE ist mit S7 kein Problem, habe es selbst nicht drüber laufen aber schon ein Projekt dazu hier im Forum gefunden. Lifx ist auch möglich da offene API.Wie sieht es bei Beleuchtung jenseits von Klickklack aus?
Ich habe deine Bausteine mal getestet und versucht aus meinem KNX System Temperaturen und Signale auszulesen, aber nicht erfolgreich.
Aber, der Tunnel steht die Signale kommen rein, ich habe mir einen Puffer gebaut wo ich sehen kann welche 500 Adresen zu letzt kommuniziert haben.
Ich glaube da ist ein Problem mit dem "Gruppenadresse zu einem Wort zusammenbauen" denn ich erhalte keine gleichen ergebnisse wenn ich die Gruppenadresse am Baustein eintrage und mit den empfangenden vergleiche. Ich sehe im IPS Server welche Adressen auf dem BUS arbeiten. Ich denke ich werde die Tage auch mal genauer Analysieren.
Vielen Dank für das Projekt ist wirklich toll mal direkt auf dem Bus zu arbeiten, nutze sonst ein KNX PN Gateway
Hallo Daniel,
schön das du damit arbeitest bzw. versuche durchführst!
Falls du Fragen hast, was änderst oder optimierst, kannst du mir ja Bescheid geben!
Wie gesagt, bei mir hat das Ganze nur mit den paar Gruppenaddressen aus den beigefügten KNX_Projekt gelaufen. Das Projekt ist auf 3-teilige Adressen ausgelegt. Ich meine es gibt auch 2-teilige!?
Gruß
Florian
Bin dabei, habe den Baustein schon erweitert und baue gerade die DPT´s ein, damit mann durch beschalten des Bausteins das Format mit übergeben kann und alle Werte erhalten kann.
Ich habe den Lesen Eingang entfernt und Lese immer wenn ich nicht Schreibe. Ich bin mir noch nicht sicher wie es später mit der Zykluszeit ist, eventuell muss die abfrage schneller erfolgen und die Daten in einem Empfangspuffer geschoben werden. Die Zykluszeit ist derzeit bei ~4ms aber das auch nur 20% der Gruppenadressen im Programm und noch keine weiteren Funktionen! Denke das kann später schnell Richtung 10 - 20ms gehen.
Es gibt 1,2 und 3 Stufig aber nutzen ist in meinen Augen nur das 3 Stufige von Interesse und daher ist der Baustein auch für mich gut ausgelegt.Wie gesagt, bei mir hat das Ganze nur mit den paar Gruppenaddressen aus den beigefügten KNX_Projekt gelaufen. Das Projekt ist auf 3-teilige Adressen ausgelegt. Ich meine es gibt auch 2-teilige!?
Wegen den Gruppenadressen habe ich aus ....
... das gemacht......Code://Gruppenadresse zu einem Wort zusammenbauen! #GruppenAddr := SHL (IN := #HauptGruppe, N := 12); #GruppenAddr := #GruppenAddr OR SHL(IN := #MittelGruppe, N := 8); #GruppenAddr := #GruppenAddr OR #TeilnehmerAddr;
zur Analyse und Fehlersuche hab ich das auch einmal andersrumCode://Gruppenadresse zu einem Wort zusammenbauen! #GruppenAddr := SHL(IN := #HauptGruppe, N := 11); #GruppenAddr := #GruppenAddr OR SHL(IN := #MittelGruppe, N := 8); #GruppenAddr := #GruppenAddr OR #TeilnehmerAddr;
und mein Logbuch wo ich alle Gruppenadressen der Telegramme sehen kann die angekommen sindCode:"vHauptGruppe" := SHR(IN := (#KNXDat.Empf_Dat.GruppenAddr AND 16#F800), N := 11); "vMittelGruppe" := SHR(IN := (#KNXDat.Empf_Dat.GruppenAddr AND 16#700), N := 8); "vTeilnehmer" := #KNXDat.Empf_Dat.GruppenAddr AND 16#FF;
Aktuell arbeite ich an allen Datentypen weil ich fast alle im Haus habeCode:IF #KNXDat.Empfangen THEN FOR #index := 499 TO 0 BY -1 DO "DB KNX Logbuch".Adresse[#index+1] := "DB KNX Logbuch".Adresse[#index]; IF #index = 0 THEN "DB KNX Logbuch".Adresse[0] := #KNXDat.Empf_Dat.GruppenAddr; END_IF; END_FOR; END_IF;
Ich bin gespannt wie es läuft wenn alle Gruppenadressen im System sind. Kann auch später nen Zwischenstand zurückgeben damit du sehen kannst was ich mit den Bausteinen angestellt habe.
Gruß Daniel
kürbis85 (16.11.2018)
Lesezeichen