OSCAT Forum

oscat.lib => Modulentwicklung / Module Development => Thema gestartet von: Majaestix am 07. September 2009, 22:30:56

Titel: Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 07. September 2009, 22:30:56
Hallo Zusammen,

zunächst ein grosses Lob an die Oscat-Programmierer, einfach nur klasse! Vielen Dank für Euren Einatz!

Nun zu meinem Vorschlag für einen neuen Baustein (hoffe ich zumindest, wenn es ihn schon gibt, habe ich ihn einfach nicht gefunden):

In unserem Haus schalte ich das Licht über div. Helligkeitssensoren. Wird ein festgelgter Schwellenwert unterschritten und ein BWM getoggelt, wird das Licht eingeschaltet. Enprellt habe ich das Ganze mit dem Baustein DEBOUNCE, funzt auch prima :-))
Jetzt passiert aber folgendes: Sobald das Licht an ist, wird der Schwellenwert überschritten und natürlich der Eingang des DEBOUNCE nicht mehr getoggelt. Das führt dazu, dass nach Ablauf der Entprellzeit das Licht kurz flackert, dann der Schwellwert unterschritten wird und das Licht wieder für die festgelegte Entprellzeit angeht.

Da ich mir vorstellen könnte, dass auch andere dieses Problem haben, ist dies mein Vorschlag für einen neuen Baustein.

Nochmals danke für Eure Mühe.

Gruß

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 08. September 2009, 11:48:57
kannst du das mit einem kleinen projekt oder mehr details beschreiben
ich verstehe die aufgabenstellung nicht
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 08. September 2009, 16:04:47
Hallo Hugo,

danke für Dein Interesse.

Also, ich versuche es mal:

In der Küche habe ich einen Helligkeitssensor, einen BWM und ein paar Lampen.
Der HS meldet pro Zyklus einen Wert der Helligkeit an den CX, so zwischen 25000 = Sonne scheint direkt in die Fenster und 100 = Rolladen runter und Licht aus.
Durch Probieren habe ich herausbekommen, dass ich ab ca. 16000 (Meldung des HS) Licht in der Küche benötige, falls ich in der Küche bin => BWM meldet Anwesenheit in der Küche. Werden diese beiden Bedingungen wahr, BWM meldet Anwesenheit und Schwellenwert von 16000 wird unterschritten, schaltet der CX das Licht in der Küche, also dem Raum, in dem auch der HS hängt, ein. Das führt natürlich dazu, dass der HS eine Lichtwertsteigerung von ca. 5000 auf 21000 meldet, da ja die Küche jetzt heller ist. Damit ist der Schwellwert von 16000 aber überschritten und eine der zwei Bedingungen nicht mehr wahr. Also schaltet der CX das Licht wieder aus und so weiter und so weiter....
Ich habe mir jetzt schon ein paar Tage den Kopf zerbrochen wie ich das lösen könnte, evtl. mit einem Flag oder Differenzbildung, komme aber auf keine brauchbare Lösung.

Die Logik könnte evtl. so aussehen:
IF BWM = true
AND IST-Lichtmenge - MEHR-Lichtmenge-durch-Lampen < Unterer-Schwellenwert THEN
     Lampen-Ein
ELSE
     Lampen-Aus
END_IF

oder so ähnlich...

Was den Baustein betrifft, schön wäre, wenn er
1. einen Eingang für einen unteren Schwellenwert
2. einen Eingang für einen oberen Schwellenwert
3. einen Eingang für eine Entprellzeit (wie DEBOUNCE zum Vermeiden von Flattern)
und
4. einen Ausgang für die Steuerung der Lampen hätte.

So, ich hoffe, ich habe das einigermassen verständlich erklärt. Falls nicht bin ich zu weiteren Ausführungen gerne sofort bereit.

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 08. September 2009, 17:06:12
spass beiseite,

vom prinzip solltest du deine einschaltbedingung nur dazu beutzen einen ausgang zu setzen, und wenn er gesetzt ist eine andere bedingung um sie zu löschen.

etwa so:
Q ist der ausgang deiner logik:

if Q then
   (* dein ausgang q ist ein hier also die logik für ausschalten *)
   Q := BWM; (* licht brennt solange wiue bwm bewegung meldet *)
   (* in einer weiteren bedingung kannst du Q löschen wenn die max runtime überschritten wird.
else
   (* else passiert nur wenn q false ist, also das licht aus *)
   Q := bwm and HS < 16000;
end_if;

eine andere alternative wäre der baustein switch_I

der macht debounce und T_on_max bereits alles mit

var
   xxx : switch_i;
end_var


xxx(in := bwm and hs < 16000, rst := not bwm);    (* setzt den ausgang wenn bedingung erfüllt, löscht aber nicht wenn nicht erfüllt *)

(* wenn keine bewegung dann immer ausschalten, wenn der bewegungsmelder kein nachlauf hat dann mit tof eines einbauen rst and set bedeutet reset hat vorrang *)

der baustein sollte eigentlich genau das machen was du benötigst

ich habs nicht getestet aber diese eine zeile mit dem switch_i sollte recht genau das tun was du benötigst
list vorher das manual damit du den baustein richtig konfigurierst
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 08. September 2009, 18:18:35
Hallo Hugo,

ganz vielen Dank für Deine Hilfe!!!

Wahrscheinlich habe ich Deine Lösung noch nicht richtig kapiert :-(

Was ich nicht verstehe, wie ich die mit Deiner Lösung das Licht anbehalte, obwohl durch das zusätzliche Licht der Lampen der untere Schwellenwert fürs Einschalten überschritten wird, aber der obere Schwellenwert fürs Ausschalten noch nicht erreicht wurde.

Zitat
Q ist der ausgang deiner logik:
if Q then
   (* dein ausgang q ist ein hier also die logik für ausschalten *)
   Q := BWM; (* licht brennt solange wiue bwm bewegung meldet *)
   (* in einer weiteren bedingung kannst du Q löschen wenn die max runtime überschritten wird.
else
   (* else passiert nur wenn q false ist, also das licht aus *)
   Q := bwm and HS < 16000;
end_if;

Der ELSE Zweig prüft doch jetzt nur auf gesamtes Licht < Schwellenwert. Wenn das Licht dann an ist, wird die Bedingung < 16000 doch nie mehr erfüllt???
Mein Problem besteht doch darin, dass ich das Licht auch in der Range zwischen 16000 und 21000 anbrauche, obwohl der untere Schwellenwert mit Licht > 16000 durch z. B. Tageslicht und Lampe zusammen überschritten wird. Erst wenn das Tageslicht alleine die untere Schwelle überschreitet, brauche ich die Lampen nicht mehr.

Bitte hab Nachsicht, ich krieg es einfach nicht ins Hirn.

Gruss

Majaestix

Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 08. September 2009, 22:38:02
im code ist ein speicher eingebaut wie z.b. rs flip flop

habe den code nicht getestet, er sollte eine gedankenanregung sein.

wichtig ist die if then else

if Q then
   bedingung zum löschen des ausgangs
   dieser teil wird ja nur aufgerufen wenn q bereits true also das licht ein ist
   sobald die bediungung hier true ist wird q auf false gesetzt und der else zweig ab sofort  aufgerufen
else
   jetzt alle bedingungen die den ausgang q setzten.
   sobald q gesetzt wird der else zweig nicht mehr aufgerufen
end_if

im beispiel mit switch_i passiert im prinzip dasselbe, nur das sich der speicher innerhalb vom modul switch_i befindet

spiel mal mit der if then else bedingung oben rum dann kommst du schnell drauf.

hier noch in worten:
zuerst ist ja q = false.
das bedeutet das nur der teil zwischen else und end_if ausgeführt wird.
wenn du jetzt mit einer bedingung bwm und helligkeit < 1600 q auf true setzt wird dieser teil nicht mehr ausgeführt.

jetzt wird da q ja true isdt der teil zwischen if unf else ausgeführt.

hier steht jetzt diejenige bedingung die q wieder löschen kann, und das ist im einfachsten fall bwm = false, also q := not bwm
denn wenn keine bewegung soll ja ausgeschaltet werden oder.
hier können dann noch weitere bedingungen stehen wie z.b. helligkeit < 24000 usw....
ganz einfach oder
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 09. September 2009, 21:12:38
Hallo Hugo,

Du Gott der SPS! Ich danke Dir! Ich hab´s begriffen und es funktioniert auch noch :D

Du hast was gut!

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 09. September 2009, 23:43:15
ein tip vom mir

lies mal übers wochenende ein buch über programmierung basic, pascal oder c egal ist eh alles gleich
dann werden dir die augen aufgehen was man mit programmierung alles machen kann

übrigends ist st eigentlich pascal
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 10. September 2009, 20:54:33
Hallo Hugo,

üble Nachrichten, es läuft leider doch nicht so ganz  >:(

Folgenden Code habe ich erstellt:

PROGRAM MAIN
VAR

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

Lichtschalter_Kueche : SWITCH_I;
Lichtschalter_Kueche_getastet : BOOL := FALSE;
Lichtschalter_Kueche_Entprellzeit : TIME := T#3m;

Licht_Kueche_ein : BOOL := FALSE;

(*----------------------------------------------- Schwellenwert Helligkeitssensoren  ---------------------------------------*)

Licht_Kueche_unterer_Schwellenwert : INT := 14000;
Licht_Kueche_oberer_Schwellenwert : INT := 18500;

END_VAR

(*+++++++++++++++++++++++++++++++++++++++++++ Kueche ++++++++++++++++++++++++++++++++++++++++++++*)

Lichtschalter_Kueche (SET := EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_unterer_Schwellenwert,
RST := NOT EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND EG_KC_NORD_DECKE_HS_E1_2a > Licht_Kueche_oberer_Schwellenwert,
T_ON_MAX := Lichtschalter_Kueche_Entprellzeit,
Q => Licht_Kueche_ein);

IF Licht_Kueche_ein THEN EG_KC_WEST_DECKE_LICHT_DIMMER_S1_7 := 32767;
EG_KC_OST_DECKE_LICHT_DIMMER_S1_31 := 32767;
EG_KC_NORD_DECKE_LICHT_DIMMER_S1_36 := 32767;
ELSE EG_KC_WEST_DECKE_LICHT_DIMMER_S1_7 := 0;
EG_KC_OST_DECKE_LICHT_DIMMER_S1_31 := 0;
EG_KC_NORD_DECKE_LICHT_DIMMER_S1_36 := 0;
END_IF

Wenn das Licht an ist, also SET = true, dann liegt der vom Helligkeitssensor gemessene Lichtwert über der unteren Schwelle. Das führt dazu, dass SET trotz BWM nicht erneut getoggelt wird. Damit bleibt das Licht zwar für die T_ON_MAX Zeit an, aber nach Ablauf dieser Zeit gibt es einen Licht-aus/Licht-an Effekt. Das dauert zwar nicht lange, SET wird ja sofort wieder getoggelt, aber man merkt es.
Das ist eigentlich das Problem, an dem ich mir schon solange die Zähne ausbeisse.

Hast Du noch eine Idee?

Danke.

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 10. September 2009, 22:29:29
Hallo Hugo,

ich glaube, jetzt habe ich es doch:

Lichtschalter_Kueche (SET := EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_unterer_Schwellenwert
OR EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND EG_KC_NORD_DECKE_HS_E1_2a > Licht_Kueche_unterer_Schwellenwert
AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_oberer_Schwellenwert,
RST := NOT EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND EG_KC_NORD_DECKE_HS_E1_2a > Licht_Kueche_oberer_Schwellenwert,
T_ON_MAX := Lichtschalter_Kueche_Entprellzeit,
Q => Licht_Kueche_ein);


Die erste Bedingung war wahrscheinlich falsch, mal sehen, was bei Sonnenaufgang passiert.

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 11. September 2009, 07:36:40
Hallo Hugo,

war natürlich nicht so intelligent:

Lichtschalter_Kueche      (SET      :=   EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_unterer_Schwellenwert
                        OR EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a > Licht_Kueche_unterer_Schwellenwert
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_oberer_Schwellenwert,

ist ja gleich:

Lichtschalter_Kueche      (SET      :=   EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_OBERER_Schwellenwert

Aber ein Problem logisches bleibt mir trotzdem erhalten:

von HS = 0 bis HS = 14000 brauche ich Licht.
Wenn Licht an, dann ist ja HS = 19000 und bleibt bzw. steigt noch wg. Tageslicht.
Wie kriege ich jetzt das Licht aus, wenn das HS(Tageslicht) > 14000 aber kleiner 19000 ist?

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: McNugget2000 am 11. September 2009, 08:38:28
Gute Morgen.

Nur mal eben so: Auch Bewegungsmelder von B.E.G (und die sind wirklich kein Schnäppchen) haben das Problem mit dem kurzen Flackern, wenn sie selber Licht geschaltet haben.
Es ist eben ein allgemeines Problem, dass die BWM sich ihr eigenes Dämmerungssignal mit dem geschalteten Licht zu sehr aufhellen.

In Produktionhallen immer sehr gern gesehen: BWM schaltet aus, weil hell genug, alle Mitarbeiter stehen im dunkeln, dann nach ca. 2-5 Sekunden geht das Licht wieder an.

Ich glaube, wenn Ihr das Problem gut löst, könntet Ihr es den einschlägigen Bewegungsmelderlieferanten teuer verkaufen. ;-)


Evtl. sollte man es mit einem Dämmerungsschalter koppeln und diesen z.B. auf´s Dach setzen, und so lange es draussen unter einem gewissen Helligkeitswert ist, werden die weiteren Bewegungsschalter aktiviert.
Das von diesen Melder geschaltete Licht darf dann eben nicht den Helligkeitssensor auf dem Dach (oder sonst wo) beeinflussen).

Wenn es draussen hell genug ist, entfällt wieder die Freigabe für die Bewegungsmelder.

Ist nicht schön, aber ich wüsste keinen anderen praktikablen Ansatz.

Gruss

McNugget
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 11. September 2009, 12:54:13
was du beschreibst ist ja auch kein logisches problem, sondern ein problem der sensorik.
grundsätzlich kannst du die helligkeit im raum nur ohne licht ermitteln. sobald das licht ein ist ist es ja per definition heller als der schwellwert.
um nun später nach dem einschalten wieder die helligkeit zu messen musst du zwangsläufig das licht ausschalten, damit du die wirkliche helligkeit ohne beleuchtung messen kannst.
ein sensotr ausserhalb des raumes würde das zwar lösen, aber nur indeirekt, und es könnte z.b. durchaus sein das dein raum abgedunkelt ist wegen sonnenschutz und du beleuchtung benötigst obwohl der externe sensor hell genug ist.

volgender vorschalg:
einschaltbedingung:
- bwm = true and helligkeit < unterer schwellwert

ausschaltbedingung

- bmw = false  or  helligkeit > oberer schwellwert
(* wenn niemand mehr im raum dann ausschalten bwm hat entsprechenden nachlauf *)
oder wenn die helligkeit größer als ein oberer schwellwert liegt.
der oberer schwellwert ist etwas höher zu legen als der wert der sich ergibt wenn bei unterem schwellwert das licht eingeschaltet wird.
wenn der obere schwellwert zu niedrig gewählt wird entsteht genau dieses flackern von dem du sprichst

das ist standard und kann mit bordmitteln wie switch_i wunderbar als 3 zeiler implementiert werden.

eine weitere abschaltbedingung könnte z.b. auch maximale laufzeit sein.

damit muss es kein flackern geben. das ist lediglich eine geeignete wahl von unterer und oberer schwellwert des helligkeitssensors.
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 11. September 2009, 13:39:05
Hallo Zusammen,

Zitat
damit du die wirkliche helligkeit ohne beleuchtung messen kannst.

ich bin ja nun wirklich nicht der grosse Physiker, aber, ist Licht nicht additiv?

Mein Gedanke:

Wenn gemessenes Licht zwischen 0 und 16 dann Kunstlicht an
Wenn Kunstlicht an dann gemessenes Licht = 19
Daraus resultiert ein Delta von 3.
Wenn gemessenes Licht => Kunstlicht + Delta dann Kunstlicht aus.

Oder liege ich da völlig falsch?

Gruss

Majaestix
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 11. September 2009, 14:05:51
naja nicht ganz im prizip hadt du schon recht aber die realen verhälnisse in einem raum sind durchaus komplizierter.
das hängt von vielen faktoren wie der geometrie, oder der spektralen anteile im licht ab und von der art und position der lichtquellen.

ganz wichtig ist hier die optimale position für den lichtsensor.

aber du hast schon recht umgebungslicht von 10000 plus kunstlicht von 20000 sollte gesamt ca 11000 ergeben.
damit aber das ganze nicht flackert und vernünftiog funktioniert wäre ein szenario eher wie folgt:

kunstlich 20000
unterste schwelle 16000
16000+20000 ergibt 36000
hier wäre eine obere grenze von ca 40000 angebracht.

bewegungsmelder : einschaltverzögerung keine ausschaltverzögerung 30sekunden bis einge minuten jke nach artd und nutzung des raumes.

dann passier folgendes:
wenn helligkeit < 16000 und bwm dann licht einschalten.
licht bleibt solange ein bis entweder bwn = false oder helligkeit > 40000

in diesem szenario solltest du kein flackern haben wird das tageslicht > 20000 plus die 20000 des kunstlichtes schaltet das kunstlicht ab und resultiert in ca 20000 tageslicht
was deutlich über den 16000 liegt und das licht bleibt aus bis die helligkeit wieder unter 16000 sinkt.

das flackern von dem du spricht passiert nur bei ganz primitiven schaltern die bei einer schwelle einschalten und dann eine fest zeit anbleiben.
nach ablaufg der zeit geht das licht aus und der schwellwertschalter schaltet wieder ein.
das ist genau das flackern von dem du sprichst.

Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 11. September 2009, 15:52:57
Hallo Hugo,

danke für Deine Zeit!

Zitat
16000+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
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 11. September 2009, 16:18:01
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.
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 11. September 2009, 16:33:15
Hallo Hugo,

Zitat
ich 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
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 11. September 2009, 16:41:05
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.
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: hugo am 11. September 2009, 16:44:23
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
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 11. September 2009, 16:47:48
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
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: Majaestix am 27. September 2009, 11:48:37
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
Titel: Re:Lichtschalter mit Helligkeitssensor
Beitrag von: firsteleven am 30. Dezember 2009, 12:24:58
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.