Lichtschalter mit Helligkeitssensor

Begonnen von Majaestix, 07. September 2009, 22:30:56

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Majaestix

Hallo Hugo,

danke für Deine Zeit!

Zitat16000+20000 ergibt 36000
hier wäre eine obere grenze von ca 40000 angebracht.

Und wie löse ich das, wenn mein Ausschaltwert innerhalb der Grenze des Kunstlichtes liegt?

z.B:

Lichtbedarf von 0 bis 16.000
Kunstlichtleistung 19.000
Genügend Licht bei 18.000, d.h. Kunstlicht aus weil genug Tageslicht.

Würde das bedeuten:

Gesamtes Licht - Kunstlicht = Tageslicht
19.000 - 19.000 = 0

oder

37.000 - 19.000 = 18.000
also Licht aus bei 37.000
dann hätte ich aber für den gesamten Zeitraum zwischen 19.000 und 37.000 das Licht unnötig an.

Oder muss ich mit dem Zuwachs rechnen:

Kunstlicht - Untereschwelle = Zuwachs
19.000 - 16.000 = 3000

also

Gesamtes Licht - Zuwachs  = Obere Schwelle
21.000 - 3.000 = 18.000
also Licht aus bei 21.000 Gesamtlicht

Vielleicht hätte ich doch Physik studieren sollen...

Gruss

Majaestix

hugo

ich denke wir reden immer noch aneinander vorbei

nichts und kein zustand schaltet aus und oder ein, sondern es gibt ein oder mehrere einschaltevents. und ein oder mehrere auschaltevents.
wenn helligkeit > 16000 eintritt und bwn = true dann setzte ausgang auf true
nachdem ausgang auf true steht hat diese bedingung keine bedeutung mehr.
dann gibt es zustände die wieder auschalte, das sind aber ganz andere als die die einschalten.

if LICHT = TRUE then
   (* diser teil kommt nur zur ausführung wenn das licht brennt. *)
   if helligkeit > 40000 OR not BWM then LICHT := FALSE; end_if;
   (* wenn helligkeit > 40000 wird kein kunstlicht mehr benötigt.
       oder wenn niemend mehr im raum (bwm = false) wird auch kein licht benötigt. *)
   (* WEEN HELLIGKEIT > 40000 UND DAS KUNSTLICH ABGESCHALTET wird sollte ja immer noch ca 20000 restlicht bleiben. and das licht ausbleiben *)
else
   (* else kommt nur dran wenn kein licht brennt *)
   if helligkeit < 16000 AND BWM then LICHT := TRUE; end_if;
end_if;

fakt ist das abhängig davon ob das licht ein oder aus ist jeweils eine ganz andere bedingung greift.
das bedeutet das die bedingungen immer nur einmal beim erreichen des zustandes schalten und danach keinerlei rolle mehr spielen.

Majaestix

Hallo Hugo,

Zitatich denke wir reden immer noch aneinander vorbei

Das fürchte ich auch :-(

Die Programmlogik für eine Obere Schwelle auserhalb der Kunstlichleistung ist mir soweit klar.

Du gehst von 40.000 als obere Schwelle aus, dann klappt das so, wie Du das mir ja schon mehrfach erklärt hast.

Ich meine aber eine obere Ausschaltschwelle INNERHALB der Kunstlichtleistung, also z.B. 18.000, d.h. es gibt mehr Kunstlicht als eigentlich benötigt wird.

Wie kriege ich da das Licht aus, wenn das Tageslicht mindestens die untere Schwelle = 16.000 sicherstellen würde?

Gruss

Majaestix

hugo

das licht geht deshalb aus weil dein tageslicht deutlich heller ist als deine untere schwelle

tageslicht ca 50000 - 100000
kunstlich 20000
untere schwelle 16000
obere schwelle 40000

das licht geht eben erst aus wenn mindestens 20000 als tageslicht zur verfügung steht und fällt dann auf 20000 zurück.
das ganze nennt man schalthysterese, ohne diese hysterese wird deine schaltung genau das problem haben das sie unter umständen aus und wieder ein geht oder am schwellwert hin und her schaltet.

hugo

das ganze hat doch nichts mit physik zu tun,
es hat auch nichts mit sps oder programmierung zu tun
sondern simples logisches denken

das dumme ist das recher oder sps immer genau das tun was man ihnen sagt bzw programmiert

Majaestix

Dann werde ich am Wochende mal mit den Schwellen spielen und anschliessend berichten.

Nochmals, vielen Dank für Deine Geduld und ein schönes Wochenende.

Gruss

Majaestix

Majaestix

Hallo Hugo,

hat zwar eine Weile gedauert, aber jetzt melde ich mich mit einer Erfolgsmeldung zurück: es funktioniert!
Ich stelle mal Deine/meine Lösung hier ein, falls es noch mal jemand benötigt:


FUNCTION_BLOCK eg_kc_decke_licht_sensor

VAR_INPUT
END_VAR

VAR_OUTPUT
eg_kc_decke_licht_sensor_status_ein : BOOL;
eg_kc_decke_licht_sensor_status_aus : BOOL;
END_VAR

VAR
(*=========================================== Ein-/Ausgaenge Lichtschalter Kueche =====================*)

Lichtschalter_Kueche : TP_1;
Lichtschalter_Kueche_getastet : BOOL := FALSE;
Lichtschalter_Kueche_Impulsdauer : TIME := T#3M;
Lichtschalter_Kueche_Reset : BOOL := FALSE;

Licht_Kueche_ein : BOOL := FALSE;

eg_kc_decke_licht_an_aus : eg_kc_decke_licht;
eg_kc_decke_licht_status : BOOL;

Licht_Kueche_unterer_Schwellenwert : INT := 155;
Licht_Kueche_oberer_Schwellenwert : INT := 220;
Eg_Kueche_nord_Decke_Hs : INT;
END_VAR

g_Kueche_nord_Decke_Hs := EG_KC_NORD_DECKE_HS_E1_2a / 100;

IF Licht_Kueche_ein THEN
IF  EG_KC_NORD_WAND_WEST_BWM_E1_48b THEN
Lichtschalter_Kueche_getastet := TRUE;
ELSE
Lichtschalter_Kueche_getastet := FALSE;
END_IF;
IF Eg_Kueche_nord_Decke_Hs > Licht_Kueche_oberer_Schwellenwert THEN
Lichtschalter_Kueche_getastet := FALSE;
END_IF;
ELSE
IF EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND Eg_Kueche_nord_Decke_Hs < Licht_Kueche_unterer_Schwellenwert THEN
Lichtschalter_Kueche_getastet := TRUE;
END_IF;
END_IF;

(* via FB TP_1 *)
Lichtschalter_Kueche (IN := Lichtschalter_Kueche_getastet,
PT := Lichtschalter_Kueche_Impulsdauer,
RST := Lichtschalter_Kueche_Reset,
Q => Licht_Kueche_ein);

eg_kc_decke_licht_an_aus (Licht_einschalten := Licht_Kueche_ein,
LichtMenge_proz := 100,
eg_kc_decke_licht_ein_status => eg_kc_decke_licht_status);


Umnd nochmals Dank für Deine Hilfe.

Gruss

Majaestix

firsteleven

#22
Ich versteh ehrlichgesagt die ganze Problematik nicht, die BM haben meist selbst einen einstellbaren Lux Schwellwert und schalten nur bei Unterschreitung des am BM eingestellten Schwellwert.

Das mit dem externen Außenluxfühler finde ich nicht schlecht, müsste dann aber wie Hugo gesagt hat, noch die Beschattung berücksichtigen (Blind POS muss mit ausgewertet werden)

Anmerkung vom 19.06.2010
In Durchgangsräumen nimmt man am besten die Zeit als Abschaltbedingung. In der angesprochen "Küche" nutze Ich z.B. ein PM als Abschaltbedingung, wenn der Raum nicht mehr belegt ist. Dieser hat einen eigenen einstellbaren Lux Wert.