# Lichtsteuerung Logo Problem 3 taster 3 leuchten



## irony (20 November 2018)

Servus, bin gerade am Bauen und automatisiere mein Häuschen mit 4 Logo 8 Steuerungen. Hab so gut wie alles fertig, rolladen Garage Licht lichtbänder panikschalter und und und nur jetzt stoße ich iwie an meine grenzen.

Ich habe im wohn ess Bereich 3 leuchten und 3 taster. 

Taster 1 ist an der wz türe soll bei einmaligem drücken Lampe 1 im wz schalten und bei zweimaligem drücken die Lampe 2. Und beim 3ten mal alle aus

Taster 2 im essbereich schaltet beim ersten drücken Lampe 3 und beim 2ten mal Lampe 2 und auch beim dritten mal alle aus

Taster 3 an der Terrassentür soll beim ersten drücken Lampe 2 beim zweiten Lampe 3 und beim dritten mal Lampe 1 angehn.und beim vierten Mal alles aus

Die tasterimpulse sollen nur innerhalb von 3 sekunden gezählt werden nach der Zeit genügt 1 tastendruck um die jeweiligen lichter die dem taster zugeordnet sind auszuschalten

Habs bisher programmiert mit vorrückwärtzähler funkt grunsätzlich sobald man nur einen der taster nutzt soblad man das lich an der Terrassentür anmacht uns an der wz Tür ausmachen will drückt man sich blöd. Kann amn das nicht eleganter lösen?

Sorry für den langen text


----------



## Blockmove (21 November 2018)

Vorschlag:
Kurz Drücken zum Weiterschalten und Lang Drücken für Alles aus

Gruß
Blockmove


----------



## irony (21 November 2018)

Ne bitte immer kurz drücken brauche das lange Signal für Panik umd rolladenfunktion


----------



## Blockmove (21 November 2018)

irony schrieb:


> Ne bitte immer kurz drücken brauche das lange Signal für Panik umd rolladenfunktion



Dann halt eben folgende Idee:
Wenn irgendeine Lampe an ist, ist einmal Drücken = Aus.
Sobald ein Aus-Befehl kommt, müssen natürlich alle anderen Zähler auch einen Reset bekommen.

Gruß
Blockmove


----------



## Onkel Dagobert (21 November 2018)

Vorschlag:
Kurz drücken zum Weiterschalten, lang drücken für alles aus, ganz lang drücken für Panik und Rolladen?


----------



## Heinileini (21 November 2018)

Onkel Dagobert schrieb:


> Kurz drücken zum Weiterschalten, lang drücken für alles aus, ganz lang drücken für Panik und Rolladen?


Schafft es denn jemand, der in Panik ist, sich ausreichend lange auf das gaaanz laaange Drücken zu konzentrieren?
Oder soll mit dem ganz langen Drücken die Panik erzeugt werden? 

Habe ich das richtig verstanden: 
Ein TastenDruck, der innerhalb von 3 s nach dem letzten TastenDruck erfolgt, soll als nächster (2., 3., .. .) interpretiert werden und ein TastenDruck, der nach mehr als 3 s nach dem letzten TastenDruck erfolgt, ist wieder ein "erster" TastenDruck?
Jeder der 3 Taster soll unabhängig davon arbeiten, wann ein anderer der 3 Taster zuletzt gedrückt wurde?

PS:
1. TastenDruck (später als 3 s nach letztem TastenDruck) auf Taste 1, wenn Lampe 1 bereits Ein ist, soll
- Lampe 1 ausschalten?
- Lampe 1 noch einerschalten?
- als 2. TastenDruck gewertet werden?



irony schrieb:


> . . . nach der Zeit genügt 1 tastendruck um die jeweiligen lichter die dem taster zugeordnet sind auszuschalten . . .


Welche Zuordnungen gelten denn nun?
Taster 1: Lampe 1
Taster 2: Lampe 3
Taster 3: Lampe 2
oder
Taster 1: Lampe 1 und Lampe 2
Taster 2: Lampe 3 und Lampe 2
Taster 3: Lampe 2 und Lampe 3 und Lampe 1

Könnte man auch die Bezeichnungen Taster 2 und Taster 3 tauschen? Oder Lampe 2 und Lampe 3?

Tipp:
Zuerst die Bedienungsanleitung schreiben und den potentiellen Bedienern zur Prüfung vorlegen!
Abläufe, die sich schon nicht vernünftig beschreiben lassen, lieber so ändern, dass sie sich verständlich beschreiben lassen!


----------



## hucki (21 November 2018)

irony schrieb:


> Taster 1 ist an der wz türe soll bei einmaligem drücken Lampe 1 im wz schalten und bei zweimaligem drücken die Lampe 2. Und beim 3ten mal alle aus
> 
> Taster 2 im essbereich schaltet beim ersten drücken Lampe 3 und beim 2ten mal Lampe 2 und auch beim dritten mal alle aus
> 
> ...


1. Innerhalb von 3 Sekunden soll gezählt werden, aber nach 3 Sekunden kann auch noch ein Tastendruck erfolgen. Woher soll die LOGO! da wissen, wann sie wirklich reagieren soll?
2. Einerseits muss die LOGO immer 3 Sekunden warten, es könnte ja noch in dieser Zeit ein Tastendruck kommen. Andererseits sollte der Benutzer ja irgendwie wissen, wie oft er richtig getastet hat. Nur weil man auf den Taster drückt, heißt das ja noch lange nicht, dass das auch in der LOGO! ankommt. Also eher schwierig ohne Rückmeldung.



Ich hab' daher mal eine Code-Tastung nach folgendem Prinzip entworfen, das sich zumindest weitestgehend an der Vorgabe orientiert:

Man hat für jede Eingabe 3 Sekunden Zeit, danach wird der augenblicklich gerade gewählte Zustand übernommen und der Zähler des Tasters zurückgesetzt.
1.x Tasten invertiert den Zustand der 1. zugehörigen Lampe.
2.x Tasten stellt den originalen Zustand der 1. Lampe wieder her und invertiert die 2. zugehörige Lampe.
Beim Taster 3 stellt das 3.x Tasten den originalen Zustand der 2. Lampe wieder her und invertiert die 3. zugehörige Lampe.
Der 3. bzw. 4. Tastendruck schaltet jeweils alle Lampen aus.
Übertastet man, also 4x bzw. 5x (oder noch mehr), stellt sich alles wieder in den Ausgangszustand und nach Ablauf der 3 Sekunden kann man einen neuen Versuch starten. Damit kann man eine Tasteingabe also ggf. wieder "abbrechen".

So toggelt man die Leuchten, die dem jeweiligen Taster zugeordnet sind, in dessen festgelegter Reihenfolge nach durch und bei dem Zustand, den man gerne hätte, hört man einfach auf (oder übertastet, um beim Startzustand zu bleiben).
Da der letzte gewünschte Zustand jedes Tasters eh' "ALLES AUS" ist, hab' ich diesen nachträglichen Tastdruck für nochmal AUS weggelassen.
Eine begonnenen Tastung unterdrückt eine gleichzeitige Tastung an einem weiteren Taster bis zum Ablauf der 3 Sekunden.


Bei allen 3 Leuchten hab' ich alle XORs integriert, um sie mit allen 3 Tastern toggeln zu können. Zwei sind daher momentan ungenutzt, da mit den Tastern nur 2 Lampen getastet werden sollen.
So können aber andere Suchende sich ähnliche Codetaster einfacher anpassen.

Im Augenblick reagieren die Zähler auf jegliche Tastung. 
Für Nurreagieren auf kurze bzw. Nichtreagieren auf lange Tastendrücke müssten dann noch die entsprechenden Schaltungen jeweils zwischen Taster und Zähler.


----------



## irony (21 November 2018)

OK krasse lösung recht kompliziert mit meinen beschränketen sps kenntnissen. muss mich da erstmal reindenken.. habs bisher so gelöst siehe anhang
	

		
			
		

		
	

Anhang anzeigen lichtsteuerung.zip


----------



## hucki (22 November 2018)

Du wohnst in dem Haus, wo das läuft, 'ne?
Wie willst Du Dein Programm in einigen Jahren noch lesen können? 
Momentan kannst Du Dich vermutlich noch erinnern, was Du Dir bei der Programmierung gedacht hast. Aber in ein, zwei Jahren musst auch Du selber Dir diese Erinnerung vermutlich zurück lesen!


Sowohl die Bausteine als auch die Verbindungslinien kann man (auch noch nachträglich) durch Linksklick markieren und dann verschieben.
 Damit kannst Du beides so verlegen, dass sie möglichst nicht durch andere Bausteine und/oder deren Parameter verlaufen und vor allem kannst Du sie so verschieben, dass sie nicht auf anderen Verbindungslinien verlaufen, mit denen sie eigentlich keine Verbindung haben.
Das erhöht für Dich selber und vor allem für andere die Lesbarkeit des Programms erheblich.

Wenn Verbindungen, insbesondere zwischen verschiedenen Funktionsgruppen, zu lang werden und deshalb zuviele andere Dinge kreuzen, kann man sie mit Rechtsklick auf sie auch auftrennen.
Auch für Rekursionen, also Rückführungen von Merkern bzw. Ausgängen auf den Beginn von Verknüpfungen hat sich das Auftrennen IMHO bewährt.
(Achtung, aufgetrennte Analogverweise funktionieren nach Cut/Copy/Paste nicht mehr, ohne sie erneut zu verbinden!)


----------



## irony (22 November 2018)

Noch wohne ich nich befindet sich alles noch in Bau und testphase das Programm wird noch geordnet und kommentiert. Aber erstmal is wichtig das es läuft und der Rest der hütte fertig wird ziehe in 5 Wochen ein. Hab im Februar 3 Wochen zwangsfrei da widme ich mich der verschönerung


----------



## hucki (22 November 2018)

irony schrieb:


> OK krasse lösung recht kompliziert mit meinen beschränketen sps kenntnissen.


So kompliziert ist das eigentlich nicht:

Erst mal ein Zähler je Taster. 
Gleichzeitig mit dem Zähler wird eine speichernde Einschaltverzögerung gestartet, die sich selbst und den Zähler nach den 3 Sekunden zurücksetzt.
Der Zähler setzt ab Zählerstand 1 seinen Ausgang und damit alle anderen Zähler über deren RESET-Eingang "dauerhaft" zurück.
(Gleichzeitige Betätigung mehrerer Taster bringt wahrscheinlich alle schön ausgedachten Tast-Codes durcheinander, werden aber meist vergessen zu simulieren/zu testen.)

Der Zählerstand wird durch eine arithmetische Anweisung ausgelesen und durch verschiedene Schwellwertschalter ausgewertet.
Man könnte dafür auch parallele Zähler zum 1. Zähler verwenden. Ich persönlich opfere aber lieber einen zusätzlichen Baustein und hab's dadurch etwas übersichtlicher.

Wenn ein Schwellwertschalter seinen Ausgang einschaltet, invertiert er über das folgende XOR temporär den zugehörigen Lampenausgang.
Wird weiter getastet, schaltet er wieder ab und der Lampenausgang geht auf seinen ursprünglichen Zustand zurück.
Schaltet jedoch die 3 Sekunden Einschaltverzögerung ein und der Schwellwertschalter ist noch auf EIN, wird über das folgende UND dieser Zustand auf den TOGGLE-Ausgang des Stromstossschalters der entsprechenden Lampe gegeben und der neue Zustand wird dauerhaft gespeichert.
(Aus diesem Grund befindet sich der Merker für die Rekursion bei der speichernden Einschaltverzögerung auch gleichzeitig zwischen dieser und dem RESET-Eingang des Zählers.
Dadurch kann der Zähler noch einen Zyklus lang für das Speichern des Lampenzustands ausgelesen werden, bevor der Zähler selbst resettet wird.)

Bei der "ALLES AUS"-Stufe wird statt eines XORs ein UND mit negierten Eingang und beim Stromstossschalter nicht der TOGGLE- sondern der Zentral-AUS-Eingang verwendet.
(Ähnlich könnte man mit einem ODER sowie dem Zentral-EIN-Eingang des Stromstoßschalters auch eine "ALLES EIN"-Stufe programmieren.)



Man könnte sicher noch einige Bausteine weg optimieren. 
Für's Funktionsverständnis (und andere Suchende) fand' ich die Vollausstattung jedoch lesbarer.


----------



## Heinileini (22 November 2018)

Moin hucki!
Ich habe versucht, die aus Deinem Codetaster6.1.zip entzippte Datei Codetaster6.1.lsc in "LOGO!Soft Comfort Demoversion" zu öffnen, erhalte aber leider "Fehler beim Laden der Datei: . . .".
Also habe ich als blutiger LOGO-Frischling angefangen, was eigenes zu basteln:


Du schreibst "Der Zählerstand wird durch eine arithmetische Anweisung ausgelesen und durch verschiedene Schwellwertschalter ausgewertet."
Auf die "arithmetische Anweisung" war ich schon gekommen und auch auf die "verschiedenen SchwellwertSchalter" . . . aber die zu erwartende hohe Anzahl von SchwellwertSchaltern hat mich dann schon demoralisiert, woraufhin ich auf das Basteln eines "eigenen" Zählers auf Bit-Ebene umgeschwenkt bin.
Langer Vorrede kurzer Sinn: gar keiner!
Ich wollte hier nur kundtun, dass ich die vorgegebenen 3 s verlassen und mich auf 0,7 s eingeschossen habe:
In meiner Version müssen die positiven Flanken der TasteDrücke in Abständen von maximal 0,7 s erfolgen, um gezählt zu werden. Wenn 0,7 s lang nicht mehr gedrückt wurde, wird der erreichte ZählerStand übernommen und einen Zyklus später der Zähler gelöscht.
Von der Bedienbarkeit her finde ich dieses Prinzip eigentlich recht gut und leicht vermittelbar.

Gruss, Heinileini


----------



## hucki (22 November 2018)

Ich kann Dir leider nicht sagen, warum Deine Demoversion das nicht öffnen kann.
Ich hab' standardmäßig die neueste LOGO!-Version aktiviert. Vlt. ist das für die Demo zu neu.
PS: im nächsten Post ist eine Version mit der 0BA8-Standard. Probier die mal. /PS


Mit den 0,7s statt der festen 3s ist wahrscheinlich sogar praktikabler. Ich müsste dann bei mir die speichernde Einschaltverzögerung durch eine Ausschaltverzögerung mit NAND-Flanke ersetzen (oder eine eingangsnegierte AND-Flanke ).


Hier ein Bild meiner Schaltung:


----------



## hucki (22 November 2018)

@Heinilein,

ich hab' mal auf die erste 8er-Logo (0BA8 Standard) umgestellt, vlt. geht's dann bei Dir:


----------



## Heinileini (22 November 2018)

Oh ja, hucki, der Trick hat funktioniert! Vielsten Dank für Deine Mühen!


----------



## Onkel Dagobert (22 November 2018)

irony schrieb:


> Noch wohne ich nich befindet sich alles noch in Bau und testphase das Programm wird noch geordnet und kommentiert. Aber erstmal is wichtig das es läuft und der Rest der hütte fertig wird ziehe in 5 Wochen ein. Hab im Februar 3 Wochen zwangsfrei da widme ich mich der verschönerung



Das ist echt beneidenswert. Du gehst arbeiten, baust so ganz nebenbei ein Haus (ok, man lässt bauen), und nichts ist wichtiger als so eine kleine verspielte Lichter-Show? Junge junge, deine Nerven möchte ich haben  !


----------



## Heinileini (22 November 2018)

Onkel Dagobert schrieb:


> Das ist echt beneidenswert. Du gehst arbeiten, baust so ganz nebenbei ein Haus (ok, man lässt bauen), und nichts ist wichtiger als so eine kleine verspielte Lichter-Show? Junge junge, deine Nerven möchte ich haben  !


Vielleicht ist er schon dabei die Nerven zu verlieren (das Wort Panik klammere ich hier erstmal aus), denn was hat man von einem neuen Haus, in dem sich das Licht noch nicht ein-/ausschalten lässt?


----------



## Heinileini (25 November 2018)

Sooo, konnte jetzt weiter LOGOfizieren.
Habe die AufgabenStellung etwas umdefiniert. 
Von jeder der 3 Tasten . . . 
- sind alle 3 Leuchten Q1 bis Q3 einzeln ein- bzw. ausschaltbar (= umschaltbar).
- werden durch 4maliges Tasten ALLE 3 Leuchten gemeinsam ausgeschaltet.
- wird durch laaanges Betätigen der Taste (> 0,7 s) die "ZusatzFunktion" Q4 umgeschaltet.
Welche Leuchte von welcher Taste mit dem 2. bzw. 3. TastenDruck angesprochen wird, ist durch das FunktionsPrinzip des Programms FESTGELEGT und wird wahrscheinlich von der WunschVorstellung abweichen!?
Für das HochlaufVerhalten der Schaltung werden 3 Alternativen angeboten:
Nach dem Einschalten der LOGO
- sind die 3 Leuchten Q1 bis Q3 sowie die ZusatzFunktion Q4 AUS.
- ist nur die Leuchte Q1 EIN, Q2 bis Q4 sind AUS.
- ist nur die ZusatzFunktion Q4 EIN, die Leuchten Q1 bis Q3 sind AUS.
Anhang anzeigen 3Tasten3Leuchten+.pdf

Anhang anzeigen 3Tasten3Leuchten+.lsc.pdf

	

		
			
		

		
	
 hinten '.pdf' wegnehmen!

Und jetzt noch der Nachschlag. Statt angebliche AnalogWerte mit SonderFunktionen zu verwursten, wird hier auf BitEbene gezählt, dekodiert und geMUXt:
Anhang anzeigen 3T3L++.pdf

Anhang anzeigen 3Tasten3Leuchten++.lsc.pdf
hinten '.pdf' wegnehmen!
Diese Version finde ich gar nicht sooo schwer zu verstehen . . . ausser wahrscheinlich für Programmierer, die nichts anderes kennen als den LOGO-"BefehlsUmfang".


----------



## irony (25 November 2018)

Ich lasse nur bedingt bauen, arbeite normalerweise 35Std haben aber in dnen letzten 3 Jahren so viele Überstunden angehäuft das ich seit Juli halbtags arbeite um bei meinem Haus die komplette Elektrik und den Innenausbau selbst zu machen. Das Logo Programm hab ich während der Estrich Trockenphase komplett fertig gestellt und jetzt entspanne ich abends mit programiererischen Spielereien.

Meine bisherige programmlösung funktioniert schonmal recht zufriedenstellend perfektioniert und verschönert wirds im Januar wenn ich drin wohne und der webzugriff funktioniert.

Danke für die vielen Antworten und für die Lösungsansätze.


----------

