Schwieriges Schalt-Prellen - bringt mir immer die Abläufe durcheinander

Hallo,
ich habe folgende Konstellation:

Standard Gira Bewegungsmelder (BWM) soll mir seinen Status (Bewegung erkannt) melden. Da dieses 230V ausgibt, setze ich das über ein Relais 230V Spule auf dessen potentialfreien Ausgang um. Diesen werte ich über einen KNX Eingang aus und IP-Symcon liest diesen aus, welches mir dann über einen KNX Aktor ein Strom-Stoss-Relais triggert, welches dann das Licht ein/ausschaltet.

Das Stromstoss-Relais hat ja den Vorteil, ausser im Umschaltvorgang keinen Strom zu verbrauchen. Allerdings muß man den Zustand (Licht an/aus) in einer Variable mitführen, da man ja sonst keinen Zustandsindikator hat.

Hört sich umständlich an, ist aber nun mal so.

Das Problem:
Entweder das Relais im Gira BWM oder das nachgeschaltete Relais zur Umsetzung von 230V zu potentialfrei prellen ganz heftig, und zwar so, dass der KNX Eingang das nicht entprellt bekommt (sollte er, tut er aber nicht). D.h. ich bekomme bei jedem Einschaltvorgang ein Ein/Aus/Ein und bei jedem Auschaltvorgang ein Aus/Ein/Aus, schnell hintereinander. Oder womöglich sogar mehrere Wechsel.

Ok, kein Problem (dachte ich), ich entprelle in IP-Symcon und schreibe dies in eine Zustandsvariable (über die ich dann das Licht schalte). Pustekuchen, das klappt ums Verrecken nicht. Mal schaltet das Ding an und gleich wieder aus, oder es schaltet ein wenn es eigentlich ausschalten soll, usw.

Hab schon alles versucht: Ein Skript, welches nur auf Ein reagiert, und dann eine Zeitsteuerung. Ein Ereignis, was auf nicht aktiv gesetzt wird nach dem ersten Ereignis. Mir die Zustände auf Papier hergeleitet. Ein Wartezustand von 600ms und dann erneutes Auslesen der Variable, usw., usw.

Dieses Skript wird bei einer Änderung des KNX Eingangs getriggert:

<?

// OK, jetzt erstmal Prellen abwarten
$zustand1=GetValueBoolean(23585 /*[BWM Steuerungen\KNX/EIB Gerät BMW Flur UG\Value]*/);
IPS_Sleep(600);
// Falls nach x ms immer noch True, dann nehmen wir an, dass es kein Prellen war
$zustand2=GetValueBoolean(23585 /*[BWM Steuerungen\KNX/EIB Gerät BMW Flur UG\Value]*/);
if ($zustand1==$zustand2) {
	// Annahme - wir sind stabil
	if ($zustand1==True) {
		SetValueBoolean(54112 /*[BWM Steuerungen\KNX/EIB Gerät BMW Flur UG\BMW Flur UG entprellt]*/, True);
	   }
	else {
               SetValueBoolean(54112 /*[BWM Steuerungen\KNX/EIB Gerät BMW Flur UG\BMW Flur UG entprellt]*/, False);
	   }
	}
else  {
	 // Immer noch nicht stabil?
	 IPS_LogMessage("UG Flur Licht", "Immer noch nicht stabil nach 600ms");
	 }
?>

Ich hatte auch schon die Vermutung, dass das Stromstoss-Relais einfach nicht zuverlässig umschaltet, jedoch klappt es über Lichtschalter (Taster) einwandfrei und zuverlässig, daran liegt es also eher nicht.

Hat jemand eine Idee ?

Danke

Unter der Annahme, das der erste gesendete Wert immer der richtige ist, würde ich das Änderungsdatum der auslösenden Variablen einbeziehen. Nur wenn die Zeit z.B. älter als 5 Sekunden ist, dann weitermachen…

Nur so eine Idee.

Gruß

Burkhard

Servus

Wie wird denn dein Script getriggert ? Durch Aktualisierung von 23585
Bedenke das es dann durch prellen mehrmals gestartet wird und sich dadurch wieder undefinierte Zustände ergeben könnten.

Verhindern kannst du das entweder durch setzen von Semaphoren IP-Symcon Community Forum oder zb. damit IPS_SetEventTriggerSubsequentExecution — IP-Symcon :: Automatisierungssoftware

oder gezieltes Aktivieren/Deaktivieren des Events
IPS_SetEventActive — IP-Symcon :: Automatisierungssoftware

gruß
bb

Danke für die Antworten und sorry für die späte Reaktion.

Burkhard, das mache ich ja eigentlich ähnlich durch das Abwarten für 600ms (1000 hatte ich auch schon probiert) und erneutes überprüfen auf Gleichheit der Variable. Aber gut, mit Zeitstempel könnte man auch mal probieren.

bb, auch das De-aktivieren des Ereignisses hatte ich schon probiert, auch kein Erfolg. Explizite Semaphore hab ich noch nicht probiert, wäre denkbar. Das Modell mit SetEventTriggerSubsequentExecution hab ich noch nicht richtig verstanden bei einer Variable Boolean, wie das helfen sollte.

Zur Zeit versuche ich es über Hardware (einen Kondensator am Eingang des KNX Binärsensors, um das Prellen elektrisch abzupuffern), bis jetzt auch noch ohne Erfolg.

Meine Vermutung ist, dass das Prellen zeitlich so unglücklich erfolgt, dass die Triggerung der Folgeevents erfolgt, bevor in der Programmausführung stabil und sicher die Kontrollmechanismen (wie z.B. Ausschalten des Events) greifen können.

Wenn gar nichts hilft, müssen eben klassische Relais anstelle der Stromstoss-Relais her. Dann kann es ruhig prellen, dann flackert es maximal kurz.

Danke nochmal.