Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Nachrichten - Majaestix

Seiten: 1 2 [3]
31
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

32
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

33
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

34
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


35
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

36
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

37
Bestehende Module / Existing Modules / Re: DIMM_I Rel. 3.03
« am: 02. Februar 2009, 11:54:08 »
Hallo Hugo,

danke für die Info. Da ich z. Zt. eh andere Sorgen hab, warte ich wirklich das neue Release ab.
Dann probiere ich das Ganze noch einmal und melde mich, wenn sich die Fehler reproduzieren lassen sollten.

Gruss

Majaestix

38
Bestehende Module / Existing Modules / Re: DIMM_I Rel. 3.03
« am: 29. Januar 2009, 18:56:59 »
Hallo Hugo,

danke für die Mühe und Deine Infos. Ich warte jetzt mal das neue Release ab und dann sehen wir weiter.

Gruss

Majaestix

39
Bestehende Module / Existing Modules / DIMM_I Rel. 3.03
« am: 08. Januar 2009, 05:10:57 »
Hallo Hugo,

danke für die Info, habe ich probiert und funktioniert.

Bei der folgenden Konstellation habe ich noch ein paar weitere Annomalien festgestellt:

PROGRAM MAIN
VAR
   fbDIMM_I   :   DIMM_I;
   fbOUT   :   BYTE;
   fbQ      :   BOOL;
END_VAR

bDIMM_I(SET   := FALSE,   (* Schalteingang mit Wert v. VAL , FALSE = Licht aus bei Start, TRUE = Licht ein bei Start *)
VAL            := 100,         (* Helligkeitswert fuer SET, org. 255 *)
      IN         := Schalter_1,      (* Eingang fuer Dimmerschalter *)
      RST         := fbDIMM_I.DBL,   (* Eingang fuer Dimmer RESET Schalter *)
      T_DEBOUNCE   := T#10ms,      (* Entprellung, org. 10ms *)
      T_RECONFIG   := T#10s,         (* Test auf Schliesser oder Oeffner, org. 10s *)
      T_ON_MAX      := T#0h,         (* Einschaltzeitbegrenzung, org. 0h*)
      T_DIMM_START   := T#500ms,      (* Wartezeit vor Dimmung, org. 1s *)
      T_DIMM      := T#5s,         (* Dauer der Dimmrampe, org. 3s *)
      MIN_ON      := 128,         (* Lichtwert beim Einschalten, org. 50 *)
      MAX_ON      := 255,         (* Maximaler Lichtwert, org. 255 *)
      SOFT_DIMM   := FALSE,      (* TRUE = Dimmstart bei 0 , org. TRUE*)
      DBL_toggle      := TRUE,         (* Wird Doppelklick ausgewertet, org. keine Vorbesetzung *)
      RST_OUT      := TRUE,         (* Reset setzt OUT auf 0  wenn TRUE gesetzt, org. keine Vorbesetzung *)
(*
      Q         =>Lampe_1,      (* Schaltausgang , org. FALSE*)
      DBL         => Lampe_2,      (* Ausgangsschalter bei Doppelklick, org. keine Vorbesetzung *)
*)
      OUT         := fbOUT);      (* Dimmwert zwischen 0 - 255, org. keine Vorbesetzung *)

Strahler_1:=127*(BYTE_TO_INT(fbOUT));


Einstellung: SOFTDIM := TRUE
Wenn ich beim Starten den Taster gedrückt halte, fährt der Dimmer bis Out = 255 hoch und dann zurück bis OUT=35. Lasse ich den Taster dann los, fährt er von alleine wieder bis OUT = 255 und dann zurück bis OUT = 1. Dort bleibt er stehen.

Einstellung: SET := TRUE
Wenn der FB mit SET := TRUE gestartet wird, ist der Dimmer nicht mehr bedienbar.

Einstellung: RST_OUT := FALSE
ein Auschalten durch RST := TRUE ist nicht mehr möglich
Dadurch ist auch der letzte Wert von Out nicht mehr erreichbar, RST_OUT := FALSE -> kein Ausschalten mehr möglich, RST_OUT := TRUE -> OUT = 0

Gruss

Majaestix

40
Bestehende Module / Existing Modules / DIMM_I Rel. 3.03
« am: 07. Januar 2009, 19:13:05 »
Hallo Hugo,

heute habe ich mich weiter mit dem Dimmerbaustein DIMM_I befasst.
Dabei ist mir aufgefallen, dass, wenn ich wie im HB vorgeschlagen,

Zitat
Der Ausgang DBL kann auch auf den Eingang SET gelegt werden und der
Dimmer mittels eines Doppelklicks auf einen durch VAL vordefinierten Wert
gesetzt werden

DBL auf SET lege, der Dimmerbaustein bis zum nächsten Doppelklick unbedienbar bleibt, da SET den Wert von DBL hält.
Dann geht sogar RST nicht mehr, da SET auf TRUE bleibt :o

Ferner habe ich keine Möglichkeit gefunden, den Dimmer mittels des Tasters, der zum Einschalten benutzt wurde, auch wieder auszuschalten, ausgenommen die Möglichkeit, diesen solange zu toggeln, bis OUT den Wert 0 erreicht.
Ist das ein BUG oder ein Feature?

Gruss

Majaestix

41
Bestehende Module / Existing Modules / DIMM_I Rel. 3.03
« am: 06. Januar 2009, 18:24:20 »
Hallo Zusammen,

zunächst ganz herzlichen Dank für die super LIB. Sie hat mir, und bestimmt nicht nur mir, einen Haufen Arbeit erspart  :D

Im Moment befasse ich mich gerade mit dem Baustein DIMM_I, also Dimmer.

Für diesen FB hätte ich noch einen Wunsch:
Wenn man den IN lange toggelt, fährt der FB die Helligkeit entweder gleich gegen 0 (out < 127) oder erst gegen max und dann gegen null (out > 127).
Ich fände es sehr praktisch, wenn er das in einer Endlosschleife tuen würde, also das Spektrum zwischen 0 und MAX_ON so lange abfahren, wie IN getoggelt wird.

Hintergrund:
Es gab früher von Merten einen elektronischen Sensordimmer, der arbeitete folgendermassen:
1. Klick > Licht an  = 100%
2. Klick > Licht aus = 0%

1 x Doppelklick > Licht an in Stufe letzter Helligkeit

Dimmer gedrückt halten > Licht fährt solange zwischen 0% und 100% hin und her, wie Dimmer getastet wurde.

Der war wirklich praktisch, na ja, und wenn man sowas mal kennengelernt hat, kann Mann sich nur noch schlecht umstellen  ;)

Und dann habe ich da noch eine Frage:
Wenn ich an IN einen Taster klemme, geht beim ersten Tasten das Licht an, die Helligkeit ist ja abhängig von MIN_ON. Will ich das Licht jetzt wieder ausschalten, muss ich an RST einen weiteren Taster klemmen, um Q auf FALSE zu kriegen. Klemme ich an RST den gleichen Taster wie an IN an, wird das Licht zwar ausgeschaltet, aber sofort wieder ein, ist ja auch logisch. Ich kann das Problem natürlich mit einem vorgeschalteten CLICK lösen, aber vielleicht habe ich da einfach nur einen Denkfehler?

Nochmals ein grosses DANKE für Eure Arbeit.

Majaestix

Seiten: 1 2 [3]