-> Hier kostenlos registrieren
Hallo zusammen,
da dies mein erster Beitrag in diesem Forum ist, möchte ich mich kurz vorstellen: Ich bin freiberuflicher Projektleiter in der Industrie und - als zweites Standbein - Systemintegrator für Home-Automation auf KNX-Basis. Ich habe auch einige Erfahrung mit dem Gira Homeserver, möchte aber nun verschiedene Aufgaben mittels des Wago 750-849 Feldbuscontrollers lösen und bin daher gerade (ganz am Anfang) dabei, mich mit der Codesys-Programmierung zu befassen. Die Schnittstellen KNX/WAGO habe ich soweit am Laufen.
Folgende Funktion habe ich mit dem Homeserver zwar schon erfolgreich realisiert, möchte sie jedoch nun auch mithilfe des Wago-
Feldbuscontrollers durchführen:
Eine Spindeltreppe über zwei Stockwerke hat 26 Stufen. Unter jeder Stufe ist ein 24V-LED-Stripe (nur weiß) angebracht. Jedes Stripe wird
über einen separaten Kanal angesteuert (Barthelme DMX Controller 66000424). Der DMX-Bus wird mittels des LAN Stage-Profi und des Wago-
Bausteins FbDMX_StageProfi angesteuert.
Ca. 80 cm über jeder Stufe ist ein Lichttaster installiert. Mittels der Lichttastersignale (auf Wago-DI-Karten) soll die Stufenbeleuchtung mit der Bewegung des 'Treppenbenutzers' mitwandern: 100% an der Stufe der aktuellen Position der Person und ein paar Stufen ober- und unterhalb der Person jeweils abnehmende Dimmwerte. Die jeweiligen Dimmwerte werden fix parametriert.
D.h. jedem Lichttaster werden die entsprechenden fixen Dimmwerte (0-255) zugeordnet, die bei Belegung des Lichttasters über den DMX-Bus an die jeweiligen Stufen-Stripes ausgegeben werden. Da aber von Personen mit etwas imposanteren Maßen auch mal zwei Lichttaster gleichzeitig belegt werden können, oder sich auch mal mehr als eine Person auf der Treppe befinden können, sollen die von dann mehreren Lichttastersignalen initiierten Dimm-Bytes verglichen und dann der jeweilig höchste Wert auf den DMX-Bus geschickt werden.
Z.B.:
Lichttaster 4 (Treppenstufe 4) ist belegt. Es werden folgende Dimm-Fixwerte an einen 'Vergleicher' geschickt:
Stufe 7 = DMX-Byte 4.7 = 10%
Stufe 6 = DMX-Byte 4.6 = 30%
Stufe 5 = DMX-Byte 4.5 = 70%
Stufe 4 = DMX-Byte 4.4 = 100%
Stufe 3 = DMX-Byte 4.3 = 70%
Stufe 2 = DMX-Byte 4.2 = 30%
Stufe 1 = DMX-Byte 4.1 = 10%
alle anderen Stufen = 0%
Soweit, so gut.
Gleichzeitig ist Lichttaster 9 (Treppenstufe 9) belegt. Es werden also die folgende Dimm-Fixwerte an den 'Vergleicher' geschickt:
Stufe 12 = DMX-Byte 9.12 = 10%
Stufe 11 = DMX-Byte 9.11 = 30%
Stufe 10 = DMX-Byte 9.10 = 70%
Stufe 9 = DMX-Byte 9.9 = 100%
Stufe 8 = DMX-Byte 9.8 = 70%
Stufe 7 = DMX-Byte 9.7 = 30%
Stufe 6 = DMX-Byte 9.6 = 10%
alle anderen Stufen = 0%
Der 'Vergleicher' vergleicht
und schickt das jeweils das Byte mit dem höheren Wert auf den DMX-Bus:
wenn DMX-Byte 4.1 > DMX-Byte 9.1 dann DMX-Byte 4.1 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.1 als Byte 1 auf den DMX-Bus
wenn DMX-Byte 4.2 > DMX-Byte 9.2 dann DMX-Byte 4.2 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.2 als Byte 1 auf den DMX-Bus
.
.
.
wenn DMX-Byte 4.12 > DMX-Byte 9.12 dann DMX-Byte 4.12 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.12 als Byte 1 auf den DMX-Bus
wenn DMX-Byte 4.13 > DMX-Byte 9.13 dann DMX-Byte 4.13 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.13 als Byte 1 auf den DMX-Bus
D.h. für obiges Beispiel:
Stufe 13 = DMX-Byte 13 = 0%
Stufe 12 = DMX-Byte 12 = 10%
Stufe 11 = DMX-Byte 11 = 30%
Stufe 10 = DMX-Byte 11 = 70%
Stufe 9 = DMX-Byte 9 = 100%
Stufe 8 = DMX-Byte 8 = 70%
Stufe 7 = DMX-Byte 7 = 30%
Stufe 6 = DMX-Byte 6 = 30%
Stufe 5 = DMX-Byte 5 = 70%
Stufe 4 = DMX-Byte 4 = 100%
Stufe 3 = DMX-Byte 3 = 70%
Stufe 2 = DMX-Byte 2 = 30%
Stufe 1 = DMX-Byte 1 = 10%
Also insgesamt für 26 Lichttastersignale, 16 Dimm-Fixwerte und 26 Ausgabebytes auf den DMX-Bus.
Nun erwarte ich von Euch sicher keine Lösung auf dem berühmten Silbertablett, aber für eine Hilfe bei dem folgenden Schritt wäre ich echt dankbar (idealerweise in CFC): Wie realisiere ich quasi einen Schalterbaustein, der mir je nach Zustand eines bool'schen Einganges E1 (Lichttastersignal) einen 1-Byte-Wert (Dimm-Fixwert) auf einen Ausgang/Variable A1 durchschaltet (bei E1 = TRUE) und bei E1 = FALSE ein 1-Byte-Signal mit dem Wert 0 durchschaltet (bzw. zum 'Vergleicher' gibt). Das sollte eigentlich eine Standardlösung sein, aber offensichtlich seh ich den Wald vor lauter Bäumen nicht...
Auch genial wäre ein Tipp, wie ich diesen 'Vergleicher' angehe. So ein Baustein mit mindestens 16 1-Byte-Eingängen, der mir am Ausgang das Byte mit dem höchsten Wert ausgibt, wäre schon was feines...
So, nun hoffe ich, dass es jemand beim Lesen bis hierher geschafft hat, und ich verspreche, dass mein nächster Beitrag (besser meine nächste Frage
) etwas kürzer ausfallen wird...
Ich hab auch mal zwei Screenshots von meiner Lösung mit dem Gira Homeserver angehängt.
Anhang anzeigen Ausgabe Dimmwerte an Vergleicher HS 4.pdfAnhang anzeigen Vergleich Byte 1 HS 4.pdf
Vielen Dank im Voraus
Peter
da dies mein erster Beitrag in diesem Forum ist, möchte ich mich kurz vorstellen: Ich bin freiberuflicher Projektleiter in der Industrie und - als zweites Standbein - Systemintegrator für Home-Automation auf KNX-Basis. Ich habe auch einige Erfahrung mit dem Gira Homeserver, möchte aber nun verschiedene Aufgaben mittels des Wago 750-849 Feldbuscontrollers lösen und bin daher gerade (ganz am Anfang) dabei, mich mit der Codesys-Programmierung zu befassen. Die Schnittstellen KNX/WAGO habe ich soweit am Laufen.
Folgende Funktion habe ich mit dem Homeserver zwar schon erfolgreich realisiert, möchte sie jedoch nun auch mithilfe des Wago-
Feldbuscontrollers durchführen:
Eine Spindeltreppe über zwei Stockwerke hat 26 Stufen. Unter jeder Stufe ist ein 24V-LED-Stripe (nur weiß) angebracht. Jedes Stripe wird
über einen separaten Kanal angesteuert (Barthelme DMX Controller 66000424). Der DMX-Bus wird mittels des LAN Stage-Profi und des Wago-
Bausteins FbDMX_StageProfi angesteuert.
Ca. 80 cm über jeder Stufe ist ein Lichttaster installiert. Mittels der Lichttastersignale (auf Wago-DI-Karten) soll die Stufenbeleuchtung mit der Bewegung des 'Treppenbenutzers' mitwandern: 100% an der Stufe der aktuellen Position der Person und ein paar Stufen ober- und unterhalb der Person jeweils abnehmende Dimmwerte. Die jeweiligen Dimmwerte werden fix parametriert.
D.h. jedem Lichttaster werden die entsprechenden fixen Dimmwerte (0-255) zugeordnet, die bei Belegung des Lichttasters über den DMX-Bus an die jeweiligen Stufen-Stripes ausgegeben werden. Da aber von Personen mit etwas imposanteren Maßen auch mal zwei Lichttaster gleichzeitig belegt werden können, oder sich auch mal mehr als eine Person auf der Treppe befinden können, sollen die von dann mehreren Lichttastersignalen initiierten Dimm-Bytes verglichen und dann der jeweilig höchste Wert auf den DMX-Bus geschickt werden.
Z.B.:
Lichttaster 4 (Treppenstufe 4) ist belegt. Es werden folgende Dimm-Fixwerte an einen 'Vergleicher' geschickt:
Stufe 7 = DMX-Byte 4.7 = 10%
Stufe 6 = DMX-Byte 4.6 = 30%
Stufe 5 = DMX-Byte 4.5 = 70%
Stufe 4 = DMX-Byte 4.4 = 100%
Stufe 3 = DMX-Byte 4.3 = 70%
Stufe 2 = DMX-Byte 4.2 = 30%
Stufe 1 = DMX-Byte 4.1 = 10%
alle anderen Stufen = 0%
Soweit, so gut.
Gleichzeitig ist Lichttaster 9 (Treppenstufe 9) belegt. Es werden also die folgende Dimm-Fixwerte an den 'Vergleicher' geschickt:
Stufe 12 = DMX-Byte 9.12 = 10%
Stufe 11 = DMX-Byte 9.11 = 30%
Stufe 10 = DMX-Byte 9.10 = 70%
Stufe 9 = DMX-Byte 9.9 = 100%
Stufe 8 = DMX-Byte 9.8 = 70%
Stufe 7 = DMX-Byte 9.7 = 30%
Stufe 6 = DMX-Byte 9.6 = 10%
alle anderen Stufen = 0%
Der 'Vergleicher' vergleicht
wenn DMX-Byte 4.1 > DMX-Byte 9.1 dann DMX-Byte 4.1 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.1 als Byte 1 auf den DMX-Bus
wenn DMX-Byte 4.2 > DMX-Byte 9.2 dann DMX-Byte 4.2 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.2 als Byte 1 auf den DMX-Bus
.
.
.
wenn DMX-Byte 4.12 > DMX-Byte 9.12 dann DMX-Byte 4.12 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.12 als Byte 1 auf den DMX-Bus
wenn DMX-Byte 4.13 > DMX-Byte 9.13 dann DMX-Byte 4.13 als Byte 1 auf den DMX-Bus, ansonsten DMX-Byte 9.13 als Byte 1 auf den DMX-Bus
D.h. für obiges Beispiel:
Stufe 13 = DMX-Byte 13 = 0%
Stufe 12 = DMX-Byte 12 = 10%
Stufe 11 = DMX-Byte 11 = 30%
Stufe 10 = DMX-Byte 11 = 70%
Stufe 9 = DMX-Byte 9 = 100%
Stufe 8 = DMX-Byte 8 = 70%
Stufe 7 = DMX-Byte 7 = 30%
Stufe 6 = DMX-Byte 6 = 30%
Stufe 5 = DMX-Byte 5 = 70%
Stufe 4 = DMX-Byte 4 = 100%
Stufe 3 = DMX-Byte 3 = 70%
Stufe 2 = DMX-Byte 2 = 30%
Stufe 1 = DMX-Byte 1 = 10%
Also insgesamt für 26 Lichttastersignale, 16 Dimm-Fixwerte und 26 Ausgabebytes auf den DMX-Bus.
Nun erwarte ich von Euch sicher keine Lösung auf dem berühmten Silbertablett, aber für eine Hilfe bei dem folgenden Schritt wäre ich echt dankbar (idealerweise in CFC): Wie realisiere ich quasi einen Schalterbaustein, der mir je nach Zustand eines bool'schen Einganges E1 (Lichttastersignal) einen 1-Byte-Wert (Dimm-Fixwert) auf einen Ausgang/Variable A1 durchschaltet (bei E1 = TRUE) und bei E1 = FALSE ein 1-Byte-Signal mit dem Wert 0 durchschaltet (bzw. zum 'Vergleicher' gibt). Das sollte eigentlich eine Standardlösung sein, aber offensichtlich seh ich den Wald vor lauter Bäumen nicht...
Auch genial wäre ein Tipp, wie ich diesen 'Vergleicher' angehe. So ein Baustein mit mindestens 16 1-Byte-Eingängen, der mir am Ausgang das Byte mit dem höchsten Wert ausgibt, wäre schon was feines...
So, nun hoffe ich, dass es jemand beim Lesen bis hierher geschafft hat, und ich verspreche, dass mein nächster Beitrag (besser meine nächste Frage
Ich hab auch mal zwei Screenshots von meiner Lösung mit dem Gira Homeserver angehängt.
Anhang anzeigen Ausgabe Dimmwerte an Vergleicher HS 4.pdfAnhang anzeigen Vergleich Byte 1 HS 4.pdf
Vielen Dank im Voraus
Peter