BennoK:
Wenn es für dich nicht zu viel Aufwand ist , wäre mir mit einem Grundgerüst zum Verständnis des schematischen Aufbaues doch sehr geholfen...
OK, ich werde mal schauen, wieviel Aufwand es ist und mir dazu ein paar Gedanken machen.
Hast Du schon Ideen, wie Du die kniffeligen Schaltfälle behandeln möchtest?
Du schreibst:
BennoK:
sollen diese je nachdem aus welcher Richtung man kommt um eine Sekunde Verzögerung angehen und auch so wieder aus.
Mal am konkreten Fall: Der Sensor unten an der Treppe löst aus, und eine halbe Sekunde später löst der Sensor oben an der Treppe aus. Da entstehen "Race-Conditions" (Wettlaufsituationen) zwischen verschiedenen Schaltfolgen, und es muß festgelegt sein, wie dann vernünftigerweise zu verfahren ist und welche Schaltbedingung die Oberhand behält.
In welcher Schaltfolge sollen dann die drei Lichtbalken-Segmente ein- und ausgeschaltet wenn "oben am PIR" die Schaltfolge an derselben Treppe eine halbe Sekunde später ausgelöst wird als "unten am PIR"? In dem Fall besteht ja die hohe Wahrscheinlichkeit, dass zwei verschiedene Personen das Treppenlicht gestartet haben.
In Frage kämen (mit x+Sekunden) bezeichne ich mal die Zeit
x Schalter unten betätigt, Lichtbalken 1 geht an
x+0,5 Schalter oben betätigt, Lichtbalken 3 geht an
x+1 Lichtbalken 2 geht an
x+ 60,5 Lichtbalken 3 geht aus
x+ 61,5 Lichtbalken 2 geht aus
x+62,5 Lichtbalken 1 geht aus
Andererseits würde eine Person, die die Treppe benutzt, immer auch am anderen Ende der Treppe den Sensor auslösen, wenn sie oben ankommt. Es sei denn, die Person löst den Sensor an einem Ende der Treppe aus, überlegt es sich anders, macht kehrt und benutzt die Treppe nicht.
Die einfachste Logik wäre wahrscheinlich: Solange eine Schaltfolge läuft, weitere Schaltbefehle ignorieren. So dass sich im oben genannten Fall ergibt:
x Schalter unten betätigt, Lichtbalken 1 geht an
x+0,5 Schalter oben betätigt, keine Auswirkungen
x+1 Lichtbalken 2 geht an
x+2 Lichtbalken 3 geht an
x+ 60 Lichtbalken 1 geht aus
x+61 Lichtbalken 2 geht aus
x+62 Lichtbalken 3 geht aus
Und erst dann wäre die Schaltung wieder "scharf" geschaltet und würde auf neue Schaltbefehle reagieren.
Diverse andere Reaktionsmöglichkeiten auf Race-Conditions sind denkbar. Das würde dann die Funktion "verarbeitung" im Detail festlegen, wie es genau abläuft.
Und wegen der möglichen Race-Conditions (zwei Schalter steuern eine Treppenbeleuchtung) ist eine in sich stimmige Programmlogik mit einer Trennung von logischem und physikalischem Schaltzustand wichtig. Eben weil es gar nicht so klar ist, wie auf das Betätigen eines Schalters reagiert werden soll, wenn noch Reaktionen auf das vorherige Betätigen desselben oder eines anderen Schalters anhängig sind.
Ich überlege mir mal was, kann aber einen Tag dauern.