OSCAT Forum

oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: mattsches am 07. Februar 2014, 20:13:02

Titel: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 07. Februar 2014, 20:13:02
Hallo zusammen,

ich habe seit einiger Zeit die Building Lib (danke dafür!) für die Steuerung unserer Raffstores. Dabei habe ich einige Dinge modifiziert, um das Verhalten besser an meine Vorstellungen anzupassen. Betroffen sind BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR. Vielleicht sind die Punkte ja für den einen oder anderen interessant. Weitere Details gerne bei Bedarf; doch bevor ich mir die Finger hier wund tippe, wollte ich erstmal sehen, ob überhaupt Interesse besteht.

Also los - Folgende Punkte habe ich für meine Zwecke geändert bzw. ergänzt:

Und hier der Code:

BLIND_SHADE:
FUNCTION_BLOCK BLIND_SHADE
VAR_INPUT
UP, DN : BOOL;
S_IN : BYTE;
PI, AI : BYTE;
ENABLE : BOOL;
SUN : BOOL;
DIRECTION : REAL := 180.0;
ANGLE_OFFSET : REAL := 80.0;
DISABLE_TRACKING : BOOL := FALSE; (* disable tracking of sun/slat angle -> always maximize shading *)
END_VAR
VAR_IN_OUT
CX : CALENDAR;
END_VAR
VAR_INPUT CONSTANT
sunrise_offset : TIME := T#1h;
sunset_preset : TIME := T#1h;
slat_width : REAL := 80.0;
Slat_spacing : REAL := 70.0;
Shade_pos : BYTE := 0;

tSunDelay : TIME := t#60s; (* delay after sun detection until slat angle is calculated *)
tShadeDelayAngle : TIME := t#30s; (* delay after shade detection until slat angle is set to 90=horizontal *)
tShadeDelayPos : TIME := t#10m; (* delay after shade detection until slat position is set to 100=fully opened *)
END_VAR
VAR_OUTPUT
QU, QD : BOOL;
STATUS : BYTE;
PO, AO : BYTE;
END_VAR
VAR
angle: REAL;
max_angle : REAL;
angle_old : REAL;

fEffectiveSlatWidth : REAL; (* effective slat width, including effect of horizontal sun angle *)

tonSunDelay : TON; (* timer for delay after sun detection until shade is closed and angle is calculated *)
tofShadeDelayAngle : TOF; (* timer for delay after shade detection until slat angle is set to 90=horizontal *)
tofShadeDelayPos : TOF; (* timer for delay after shade detection until slat position is set to 100=fully opened *)

sun_ver_last : REAL; (* last vertical sun angle (for change detection) *)
sun_hor_last : REAL; (* last horizontal sun angle (dto.) *)
END_VAR

(* delay sun/shade detection in order to prevent shade from constantly going up and down *)
tonSunDelay(IN:=sun, PT:=tSunDelay);
tofShadeDelayAngle(IN:=tonSunDelay.Q OR tofShadeDelayAngle.Q AND sun, PT:=tShadeDelayAngle);
tofShadeDelayPos(IN:=tofShadeDelayAngle.Q, PT:=tShadeDelayPos);


IF UP AND DN AND enable AND (tonSunDelay.Q OR tofShadeDelayPos.Q)
AND cx.SUN_HOR > direction - angle_offset AND cx.SUN_HOR < direction + angle_offset
AND DT_TO_TOD(cx.UTC) > cx.SUN_RISE + sunrise_offset AND DT_TO_TOD(cx.UTC) < cx.SUN_SET - sunset_preset THEN
   status := 151;
   QU := UP;
   QD := DN;

   (* position is predefined *)
   po := shade_pos;

   (* shading is active now calculate the slat angle *)
   (* calculate the max angle for the blind *)
   fEffectiveSlatWidth := slat_width / COS(RAD(ABS(DIRECTION - cx.SUN_HOR)));
   max_angle := DEG(ATAN(slat_spacing / fEffectiveSlatWidth));

   (* check if sun angle is between 0 and max angle *)
   IF cx.SUN_VER > 0.0 AND cx.SUN_VER < max_angle AND NOT DISABLE_TRACKING AND tofShadeDelayAngle.Q THEN
      (* only recalculate blind angle if vertical sun angle has changed *)
      IF   cx.SUN_VER <> sun_ver_last OR cx.SUN_HOR <> sun_hor_last THEN
         angle := cx.SUN_VER + DEG(ACOS(COS(RAD(cx.SUN_VER))*slat_spacing / fEffectiveSlatWidth));
         sun_ver_last := cx.SUN_VER;         (* store current sun angles *)
         sun_hor_last := cx.SUN_HOR;
      END_IF;
      ao := INT_TO_BYTE(LIMIT(0,TRUNC(angle), 90));
   ELSIF DISABLE_TRACKING THEN               (* tracking of sun/slat angle disabled -> always maximize shading *)
      ao := 0;
   ELSE
      ao := 90;
   END_IF;
ELSE
   QU := UP;
   QD := DN;
   po := pi;
   ao := ai;
   status := S_IN;
END_IF;


BLIND_CONTROL:
FUNCTION_BLOCK BLIND_CONTROL
VAR_INPUT
UP, DN : BOOL;
S_IN : BYTE;
PI : BYTE;
AI : BYTE;
T_UD, T_ANGLE : TIME;
END_VAR
VAR_INPUT CONSTANT
SENS : BYTE := 5;
T_LOCKOUT: TIME := T#100ms;
MIN_ANGLE : BYTE := 0; (* minimum slat angle *)
MAX_ANGLE : BYTE := 90; (* maximum slat angle *)
END_VAR
VAR_OUTPUT
POS, ANG : BYTE;
MU, MD : BOOL;
STATUS : BYTE;
END_VAR
VAR
act : BLIND_ACTUATOR;
delta : BYTE;
bTimeTest:BOOL:=FALSE;
iPos:BYTE;
iAngel:BYTE;
END_VAR


(* limit angle setpoint *)
ai := LIMIT(MIN_ANGLE, ai, MAX_ANGLE);


(* Check Position*)
act(T_UD:=T_UD, T_ANGLE:=T_ANGLE, T_lockout := T_Lockout, MIN_ANGLE := MIN_ANGLE, MAX_ANGLE := MAX_ANGLE);

IF UP AND DN THEN
(* automatic modus detected *)
(* first find correct position *)
IF BYTE_TO_INT(act.pos) < BYTE_TO_INT(pi) - delta THEN
act.UP := TRUE;
act.DN := FALSE;
delta := 0;
STATUS := 121;
ELSIF BYTE_TO_INT(act.pos) > BYTE_TO_INT(pi) + delta THEN
act.UP := FALSE;
act.DN := TRUE;
delta := 0;
STATUS := 122;
(* regulate angle *)
ELSIF BYTE_TO_INT(act.ang) < BYTE_TO_INT(ai) - delta AND T_angle > T#100ms THEN
act.UP := TRUE;
act.DN := FALSE;
delta := sens/2;
STATUS := 123;
ELSIF BYTE_TO_INT(act.ang) > BYTE_TO_INT(ai) + delta AND T_angle > T#100ms THEN
act.UP := FALSE;
act.DN := TRUE;
delta := sens/2;
STATUS := 124;
(* correct position reached *)
ELSE
act.UP := FALSE;
act.DN := FALSE;
delta := sens;
STATUS := S_IN;
END_IF;
ELSE
act.UP := UP;
act.DN := DN;
STATUS := S_IN;
END_IF;

(* blind control calls blind_actuator *)
act(T_UD:=T_UD, T_ANGLE:=T_ANGLE, T_lockout := T_Lockout);
pos := act.pos;
ang := act.ang;
MU := act.QU;
md := act.QD;


BLIND_ACTUATOR:
FUNCTION_BLOCK BLIND_ACTUATOR
VAR_INPUT
UP, DN : BOOL;
S_IN : BYTE;
T_UD : TIME := T#10s;
T_ANGLE : TIME := T#3s;
MIN_ANGLE : BYTE := 0; (* minimum slat angle; 0 would equal full vertical position *)
MAX_ANGLE : BYTE := 90; (* maximum slat angle; 90 would equal horizontal position *)
END_VAR
VAR_INPUT CONSTANT
T_LOCKOUT : TIME := t#100ms;
END_VAR
VAR_OUTPUT
POS, ANG : BYTE;
QU, QD : BOOL;
STATUS : BYTE;
END_VAR
VAR
position, angle : RMP_B;
lock : INTERLOCK;
END_VAR

(* make sure only one moto r is active at a given time *)
lock(i1 := UP, I2 := DN, TL := T_lockout);

(* ramp up or down to simulate the angle position of the blind slats *)
angle(e := lock.Q1 OR lock.Q2, UP := lock.Q1, PT := T_Angle);
position(e := lock.Q1 AND angle.high OR lock.Q2 AND angle.low, up := lock.Q1, PT := T_UD);

(* set the outputs *)
pos := position.Out * 100 / 255;
ang := angle.OUT * (MAX_ANGLE - MIN_ANGLE) / 255 + MIN_ANGLE;


(* set the outputs *)
QU := lock.Q1;
QD := lock.Q2;

(* set the status output *)
IF UP AND DN THEN
status := 1; (* error up and down together are not allowed *)
ELSIF UP THEN
status := 121;
ELSIF DN THEN
status := 122;
ELSE
status := S_IN;
END_IF;
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Majaestix am 07. Februar 2014, 21:20:47
Hallo mattsches,

danke!

Interessiert mich auch.
Deinen Code guck ich mir am WE mal an.

Gruss

Majaestix
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 14. Februar 2014, 18:45:15
Um die ekstatische Euphorie hier noch weiter anzuheizen  ;), ich hatte noch ein kleines Feature unterschlagen:

Der neue Eingang "DISABLE_TRACKING" am BLIND_SHADE führt dazu, dass die Jalousie zwar geschlossen, der Lamellenwinkel jedoch nicht nachgeführt, sondern bleibt immer voll geschlossen. Ich nutze das im Schlafzimmer, wo ich immer eine maximale Verschattung haben möchte.

Grüße,
mattsches
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 22. Juli 2014, 14:02:05
Huch! Es interessiert sich tatsächlich ein einsamer Programmierer für das Thema... Da man per PN offenbar keine Anhänge mit verschicken kann, auf diesem Wege anbei die aktuellen Versionen der von mir modifizierten BLIND_*-Bausteine.

[gelöscht durch Administrator]
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: fu_zhou am 08. Dezember 2016, 10:14:57
So, ich bin jetzt auch mal dabei...
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 13. März 2017, 20:00:22
So hab es auch mal getestet.
Erstmal danke für die Arbeit es funktioniert auch alles soweit.

Hat aber jemand noch ein Tipp , wie ich es so einstellen kann das beim Stromausfall oder wenn ein Programm eingespielt wird .
Default Mäßig die Position auf oben ist (0) ? Kann die Bausteine leider aus technischen Gründen nicht in RETAIN legen ...
Oder ich irgendwie eine Kalibrierung machen kann ? Pos auf 0 wäre mir lieber da meistens die Jalousien oben sind.

Gruß

 
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 16. März 2017, 22:34:28
Das verstehe ich nicht... Es ist doch heute schon so, dass nach einem Neustart der Steuerung die Jalousien nach oben fahren. Mich stört das eher, beispielsweise wenn ich abends eine Änderung einspiele, die einen Neustart erfordert. Dann fahren im ganzen Haus die Raffstorees hoch.

Einen konkreten Tipp habe ich dir dazu alber leider nicht, habe mich mit der Initialisierung noch nicht wirklich auseinandergesetzt.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 17. März 2017, 07:02:06
Das ist bei mir leider nicht so .
Da sie meisten oben sind fahren sie nicht hoch.
Was aber blöd ist angle und pos steht dann auf 0.

Weist du wo das initialiesieren gemacht wird ? Hätte gern nach reset 100 und 90.

Gruss
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 17. März 2017, 12:39:48
Setz' mal MASTER_MODE am BLIND_INPUT2 auf TRUE. Dann greifen die Defaults von 100 und 90 für PO und AO, und die Jalousien fahren beim Hochlauf der Steuerung hoch.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 19. März 2017, 12:20:02
Danke das wars
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 30. März 2017, 20:49:38
Leider ist es damit auch nicht optimal.

Mit dem MasterMode fahren die Rollos morgens wieder hoch ... Möchte gerne das die Morgens unten bleiben mit Angle 90 .

Hast du noch ein Tipp ?

Gruß
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 30. März 2017, 20:59:58
Spontan nein. Wenn Du E_DAY am BLIND_NIGHT auf FALSE nimmst, dann bleibt die Jalousie unten. Allerdings auch komplett geschlossen. Du willst die Lamellen ja waagrecht stellen, das geht so nicht. Du könntest nun den BLIND_NIGHT so umbauen, dass er auch Position und Winkel für den Tagbetrieb ansteuern kann. Oder du setzt einen BLIND_SCENE ein. Den habe ich aber nicht in Betrieb und weiß daher nicht, ob für meinen Umbau auf Position in % und Winkel in ° dort Änderungen erforderlich wären.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 04. April 2017, 20:02:18
Danke .

Ich glaub wenn ich den Blind_night umprogramiere bekomm ich mehr probleme. Da das ganze ja in der Kette funktionieren muss. Bedeutet  am Tag muss CONTROL und SHADE die Position bestimmen....

Wie hast du es mit dem SCENE gemeint ? Das ich bei Sonnenaufgang den Scene triggere mit der Position ? Wenn ja muss der vor oder nach dem Night sein ?

Sorry für die viele Fragen ... Funktioniert echt super aber mich nervt das die Jalousien hochfahren .. die sollen schön auf 90 Grad bleiben wie nachts auch ...
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 05. April 2017, 14:21:54
In der Doku ist der BLIND_SCENE direkt hinter dem BLIND_INPUT eingehängt (Kap. 7.7). Aber wie gesagt, ich habe den nicht in Verwendung.

Ich werde nur gerade stutzig - Du schreibst:

.. die sollen schön auf 90 Grad bleiben wie nachts auch ...

Du hast die Jalousien nachts ganz geschlossen, nehme ich an. Oder? Also Lamellen so weit es geht senkrecht? Das sind dann (jedenfalls in meiner Denke) nicht 90°, sondern bei mir z. B. 18°. Aber egal, wenn die Jalousie auch nach Sonnenaufgang genau so bleiben soll, dann reicht es, am BLIND_NIGHT E_DAY auf FALSE zu setzen. Dann bleibt die Jalousie morgens einfach unverändert. So habe ich das z. B. im Bad und im Schlafzimmer parametriert.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 08. April 2017, 20:20:18
Hi ,

nochmals danke. Aber jetzt fährt er in Night Mode , aber dann später wieder hoch in Manual Standby ?
Kann es sein es liegt am MasterMode ?

Hab BLIND_INPUT_2 -> BLIND_SHADE-> BLIND_NiGHT-> BLIND_SEC -> BLIND_CONTROL

( ganze Zeit Auto Mode und Sun auf ON)

17:02:40.373  :  State changed from 151 to 141 => Passt Sunset - 60m
18:56:06.495 :  State changed from 141 to 121 =>  Auf Bewegung Position ? Wieso ?

18:57:20.641 : State changed from 121 to 130  => Standby
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 12. April 2017, 18:30:53
Das klingt einigermaßen seltsam. Am Master Mode liegt es nicht, den habe ich eben auf TRUE, ohne Probleme.

Wie sind die Bausteine denn sonst noch parametriert. Kannst du mir mal dein Projekt zukommen lassen?

Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: ADS_0x1 am 04. Mai 2017, 08:30:37
Uff, da packt jetzt wieder einer ein Thema aus, das über drei Jahre in der Vergangenheit liegt. Und wozu? Um Danke zu sagen.

Ich habe mich extra für dieses 'Danke' hier im Forum angemeldet, darum auch der Eintrag hier.

Danke mattsches für deine Modifizierungen der Bausteine!

Arbeite schon länger mit Industriesteuerungen und wohne seit zwei Wochen in meinem Eigenheim. Schaltschrank ist zu 90% verkabelt und nun fange ich an, nach und nach die Funktionen in Betrieb zu nehmen. Meine CX9020 von Beckhoff läuft mit TwinCAT 2 und mein Wohnzimmer inklusive drei Raffstores habe ich gestern erfolgreich in Betrieb genommen.
Beim Schreiben der Software und dem lesen der Doku kamen einige ? in meinem Kopf hoch und ich habe häufiger im PDF herumscrollen müssen, um alle Funktionen durchblicken zu können. Dabei stieß es (bei mir persönlich) auf Unbehagen, dass ich mit größenlosen Werten arbeiten muss und die Inbetriebnahme zum Trial and Error wird. Klar kann man sich schnell einen Dreisatz aufziehen und die Umrechnung der Lamellenwinkel durchführen, aber wozu? Man könnte doch einfach die Stellgrößen auf reale Werte umlegen. Das hatte ich schon eigentlich abgehakt, da ich über kurz oder lang keine Zeit dafür aufbringen hätte können, aber relativ schnell Ergebnisse sehen wollte. Über ein wenig Bedienen der größten Suchmaschine der Welt dann irgendwann irgendwie hier gelandet und gedacht: Mensch, der Kerl macht genau das, was du mal auf dem Schirm hattest und beschreibt das ganze sogar noch so, dass es einem als äußerst logisch erscheint.

Beim Erstellen der Software dann schon gar nicht mehr die Bausteine aus der Bibliothek genommen, sondern direkt mit deinen als XX_XX_MOD ausprogrammiert, gestern wie gesagt Inbetriebnahme und nach dem Messen der Werte für Wende- und Fahrzeit lief alles.

Zusammenfassung: Lob und Anerkennung!
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 05. Mai 2017, 12:29:29
Ui, vielen Dank für die Blumen! Freut mich, dass dir mein Umbau geholfen hat.

Viel Spaß weiterhin im neuen Eigenheim!
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 27. Mai 2017, 12:55:38
Hi ,

kämpfe leider immer noch mit dem optimalen Setup ...

Er fährt schön in die Nacht Position da bleibt er auch aber der Blind Shade kommt dann nicht mehr zum zug.
Siehe Bild

Ich möchte das er Nachts auf die Nacht Position fährt und eigentlich solang in der Nacht Position bleibt bis etwa SHADE oder Manuel was geändert wird an AI und PI

Hat jemand eine Idee


[gelöscht durch Administrator]
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 29. Mai 2017, 16:52:04
Die Funktionsweise des BLIND_NIGHT ist bei E_DAY=TRUE, dass er so lange aktiv bleibt, bis manuell eingegriffen wird (also UP oder DN = FALSE). Bei E_DAY=TRUE schaltet er sich bei Sonnenaufgang ab und leitet PI und AI an die betreffenden Ausgänge weiter. In Verbindung mit MASTER_MODE=TRUE am BLIND_INPUT führt das dann üblicherweise dazu, dass die Jalousien hochfahren. Gibt zu dem Zeitpunkt jedoch ein nachgeschalteter Baustein etwas anderes aus, dann ist das wirksam. Allerdings wird das kaum der BLIND_SHADE sein, denn wir reden ja über Sonnenaufgang.

Nur um dich verstanden zu haben: Du möchtest, dass die Jalousie zwar geschlossen bleibt, wenn jedoch die Sonne später scheinen sollte und ein BLIND_SHADE sagt 90° Lamellenwinkel reichen aus, dann soll sich die zuvor geschlossene Jalousie auf diesen Wert öffnen. Ist der Tag regnerisch, bleibt die Jalousie geschlossen bis abends. Immer vorausgesetzt, es greift niemand ein.

Richtig verstanden? Ist das wirklich das gewünschte Verhalten? Öffnen, wenn die Sonne scheint und geschlossen lassen, wenn nicht? Oder was meinst du mit "bis etwa SHADE oder Manuel was geändert wird an AI und PI"?
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: the.neon am 29. Mai 2017, 18:51:57
Hi ,

naja was ich gerne hätte.

1 . Nachts auf 90Grad fahren und Pos 0 ( Lamellen offen)
2. Wenn Nacht vorüber und BLIND_SHADE auf AUTO und SUN ist , auf den berechneten Wert von BLIND_SHADE setzen.

Er bleibt bei mir immer im Nachtmodus :-(
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 30. Mai 2017, 19:48:24
Aha. Ich hatte nicht damit gerechnet, dass du die Lamellen nachts offen stehen haben willst.

Den gewünschten Effekt müsstest du mit der folgenden Änderung am BLIND_NIGHT erreichen:

VAR
[...]
rtrig_shade : R_TRIG;
END_VAR

rtrig_shade(CLK:= (PI=151) , Q=> );

IF (NOT (up AND dn) OR rtrig_shade.Q) AND night THEN

Übersetzt: Wenn der Status VOR dem BLIND_NIGHT auf 151 (Beaschattung aktiv) wechselt UND der BLIND_NIGHT bislang aktiv war, dann schaltet sich der BLIND_NIGHT ab, und Position und Winkel vom BLIND_SHADE werden durchgereicht.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 31. Mai 2017, 12:39:49
Andere Variante, viel einfacher (blöd, dass ich nicht gleich drauf gekommen bin):

Häng' doch einfach den BLIND_SHADE hinter den BLIND_NIGHT in die Kette. Dann gewinnt der, wenn die Sonne rauskommt. Wenn nicht, bleibt die Position des BLIND_NIGHT so lange aktiv, bis manuell eingegriffen wird; dann schaltet der BLIND_NIGHT sich ab.

Damit kommst du ohne Codeänderung an den Bausteinen aus.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 18. Januar 2018, 14:19:00
Hallo,
das Thema wurde lange nicht mehr aufgegriffen, aber da ich momentan mit meinen Rollo's kämpfe, wollte ich mal fragen, ob mir vielleicht jemand seine Entwicklungen zur Verfügung stellen kann, so zum Lernen und Abgucken.
Ich habe mehrere BLIND Bausteine (input,scene,shade,night,security,control) in einem Funktionsblock zusammengefasst schon länger im Einsatz, habe davon aber eigentlich nur input,night,control benutzt.
Im Zuge einer ioBroker Anbindung wollte ich nun die Möglichkeit schaffen, auf einen bestimmten Wert zu fahren. Dieser Wert muß auch gleichzeitig wieder als Rückmeldung für die ioBroker Visualisierung herhalten. Ich habe mir ganz schön die Finger verrenkt und hatte mehrere schlaflose Nächte.
Aber irgendwie funktionierte das dann.
Nun wollte ich euphorisch gleich noch was bauen, um den Night Modus aktiv setzen zu können, die Rollos sollten also trotz manueller Bedienung nach Sonnenuntergang in den Modus versetzt werden, daß sie früh allein hochfahren, oder daß man sie schon vor Sonnenuntergang in diesen Modus setzen kann. Daran verzweifele ich jetzt, mal geht das eine, dann mal das andere, alles zusammen hat noch nie geklappt und meistens endet es in unkontrolliertem Hoch Runter  :'(
Wahrscheinlich muß ich zurück auf Anfang, denn mittlerweile habe ich den Überblick verloren.
Ich bin hier für jede Hilfe dankbar, auch wie man diese Eigenbauten sinnvoll vornimmt (Kopieren, Funktionsblöcke etc.) damit man nicht den Überblick verliert. Im Sommer muß ich mich an die Raffstores machen, da wollte ich die Rollos wenigstens im Griff haben, ich denke Raffstores werden noch mal eine Nummer härter.
Gruß Jens
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 19. Januar 2018, 00:47:09
Hallo Jens,
dazu würde ich den BLIND_NIGHT abändern. Baustein aus der Bibliothek in dein Projekt kopieren, umbenennen und dann z. B. mit zwei Eingängen ACTIVATE_NIGHT und DEACTIVATE_NIGHT ergänzen. Den Code

IF NOT (up AND dn) AND night THEN
(* manual operation at night will cancel operation for one night *)
night := FALSE;
ELSIF (cx.LTOD > cx.SUN_SET + sunset_offset) AND (last_night < cx.LDATE) AND NOT night AND e_night AND UP AND DN THEN
(* enable night *)
night := TRUE;
last_night := DT_TO_DATE(cx.LDT);
ELSIF (cx.LTOD > cx.SUN_RISE + sunrise_offset) AND (last_day < cx.LDATE) AND night AND e_day AND (last_night < cx.LDATE) AND UP AND DN THEN
(* disable night *)
night := FALSE;
last_day := DT_TO_DATE(cx.LDT);
END_IF;

würde ich dann so umschreiben:
IF NOT (up AND dn) AND night THEN
(* manual operation at night will cancel operation for one night *)
night := FALSE;
ELSIF (cx.LTOD > cx.SUN_SET + sunset_offset) AND (last_night < cx.LDATE) AND NOT night AND e_night AND UP AND DN [color=red]OR ACTIVATE_NIGHT[/color]THEN
(* enable night *)
night := TRUE;
last_night := DT_TO_DATE(cx.LDT);
ELSIF (cx.LTOD > cx.SUN_RISE + sunrise_offset) AND (last_day < cx.LDATE) AND night AND e_day AND (last_night < cx.LDATE) AND UP AND DN [color=red]OR DEACTIVATE_NIGHT[/color]THEN
(* disable night *)
night := FALSE;
last_day := DT_TO_DATE(cx.LDT);
END_IF;


ACTIVATE_NIGHT und DEACTIVATE_NIGHT könntest Du dann auf die entsprechenden Signale verschalten, wobei das Impulse sein müssen. D. h. sie müssten für mind. einen Zyklus TRUE sein und dann außerhalb des BLIND_NIGHT wieder zurück auf FALSE gesetzt werden. Also so, wie das z. B. bei Tastern der Fall ist.

Gruß,
mattsches
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 19. Januar 2018, 09:19:23
Hallo mattsches,
danke für die Vorschläge. Leider bin ich nicht fit genug, durch reines Lesen zu verstehen, was dann da passiert. Also ich muß den Code ausprobieren und schauen, was dann da so abgeht. Unvorteilhafterweise geht es morgen in den Winterurlaub, ich werde also erst in einer Woche wieder dazu kommen.
Ich melde mich.
Danke und Gruß
Jens

Ok, ein wenig Zeit ist noch, also sofort mal geschaut.
Die Idee ist sehr gut, ich hatte wieder viel zu kompliziert gedacht.
Anscheinend ist allerdings mein Original BLIND_NIGHT etwas anders, sieht jetzt so aus
IF NOT (up AND dn) AND night THEN
(* manual operation at night will cancel operation for one night *)
night := FALSE;
ELSIF (DT_TO_TOD(dtin) > sunset + sunset_offset) AND (last_night < DT_TO_DATE(dtin)) AND NOT night AND e_night OR ACTIVATE_NIGHT THEN
(* enable night *)
night := TRUE;
last_night := DT_TO_DATE(dtin);
ELSIF (DT_TO_TOD(dtin) > sunrise + sunrise_offset) AND (last_day < DT_TO_DATE(dtin)) AND night AND e_day AND (last_night < DT_TO_DATE(dtin)) OR DEACTIVATE_NIGHT THEN
(* disable night *)
night := FALSE;
last_day := DT_TO_DATE(dtin);
END_IF;
Wenn ich das über VPN und einen Button in der Visu teste, dann geht das Rollo runter, aber anschließend steht der Status erst auf 131, dann auf 130. Das verstehe ich nicht, ich würde 141 (Nachtbetrieb) erwarten.
Weiterhin befürchte ich, dieser Teil AND (last_day < DT_TO_DATE(dtin)) erzwingt, daß das Rollo vor Mitternacht runter muß, damit es morgens automatisch auf geht?
Ich forsche weiter ...
Danke und Gruß
Jens
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 22. Januar 2018, 16:34:43
Wenn ich das über VPN und einen Button in der Visu teste, dann geht das Rollo runter, aber anschließend steht der Status erst auf 131, dann auf 130. Das verstehe ich nicht, ich würde 141 (Nachtbetrieb) erwarten.

Das liegt daran, dass der Automatikbetrieb nicht aktiv war, sondern Handbetrieb. Verantwortlich dafür sind die folgenden Codezeilen im BLIND_NIGHT:

IF UP AND DN AND night THEN
status := 141;
po := night_position;
ao := night_angle;

"UP AND DN" steht für "Automatikbetrieb aktiv" (eine Konvention der BLIND-Bausteine).

Weiterhin befürchte ich, dieser Teil AND (last_day < DT_TO_DATE(dtin)) erzwingt, daß das Rollo vor Mitternacht runter muß, damit es morgens automatisch auf geht?

Nein, das trifft nicht zu. In der Booleschen Algebra hat UND Vorrang vor ODER (ähnlich wie "Punkt vor Strich"). Das Ergebnis der betreffenden Zeile ist also dann TRUE, wenn entweder die ganzen mit "AND" verknüpften Bedingungen vor dem eingefügten "OR ACTIVATE_NIGHT" bzw. "OR DEACTIVATE NIGHT" wahr sind oder die Bedinung dahinter. Also das neu eingefügte ACTIVATE bzw. DEACTIVATE.

Die von dir zitierte Bedingung bewirkt lediglich, dass die Jalousie nur dann vom BLIND_NIGHT hochgezogen wird, wenn das heute nicht schon einmal geschehen ist.
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 19. August 2018, 18:59:58
Hallo mattsches,
es ist nun schon lange her, mal schauen, ob sich noch jemand meldet.
Nach dieser langen Pause konnte ich mich kaum noch erinnern, was ich damals so zusammenprogrammiert habe, also Neustart.
Momentan versuche ich, aus deinem modifizierten BLIND* Blöcken einen Fb zusammenzubauen. Hast Du vielleicht schon sowas? Ist 'ne Menge Tiparbeit, wenn man alles neu zusammenstöpselt. Und ich möchte bei ST bleiben, weil ich denke, das ist langfristig die bessere Variante.
Gruß Jens
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 19. August 2018, 19:58:25
Hallo Jens,

einen solchen FB habe ich, allerdings hatte ich ihn - weil sich die BLIND-Bausteine so schön grafisch verknüpfen lassen - in CFC erstellt. Also wenn Du auf ST festgelegt bist, wird Dir das wohl nichts bringen, sorry. Aber so viel Tipparbeit ist das ja auch nicht, über die Eingabehilfe kannst Du Dir die Aufrufe inkl. Parameter ja ganz gut erzeugen lassen.

Falls Du Bedarf hast, ich habe mittlerweile auch einen passenden BLIND_CONTROL_S gebaut. Gib Bescheid, falls Du ihn brauchen kannst.

Viele Grüße,
mattsches

Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 19. August 2018, 20:30:19
Hi mattsches,
schön, daß du noch an Bord bist.
Ich nehme alles, was ich bekommen kann, auch den Fb in CFC. Umschreiben ist immer noch einfacher, als alles neu zu machen.
Vor allem, weil in deinen geänderten Blind Blöcken teilweise auch die Eingangsparameter gegenüber den Oscat-Originalen geändert sind.
Gruß Jens
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: mattsches am 20. August 2018, 12:56:40
Hi Jens,

ich habe Dir mal einen Export angehängt, es müsste alles Relevante drin sein. Also alle meine aktuellen BLIND_x-Bausteine und den zusammenfassenden FB "Jalousie", der sie miteinander verkettet. Darin ist noch etwas Zusatzschnickschnack, z. B. um die Jalousien nach Ende der automatischen Beschattung je nach Parametrierung immer zu öffnen, unabhängig davon, wie die Position zuvor war.

Kommentare sind drin, müsstest ganz gut erkennen können, was was bedeutet.

Schönen Gruß,
mattsches

[gelöscht durch Administrator]
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 20. August 2018, 19:55:49
Danke, dann werd' ich mich mal dran machen.
Leider ist das Wochenende ja schon wieder um, und die Arbeitswoche hat hart begonnen, wird' wohl erst wieder am Wochenende.
Gruß Jens
Titel: Re: Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR
Beitrag von: Jensen am 28. August 2018, 06:10:01
Hallo Mattsches,
nochmal vielen Dank für diese Steilvorlage.
Ich habe noch nicht ansatzweise alles begriffen, aber in meiner Simulation klappt das schon ganz gut.
Es würde mich freuen, wenn ich später mit weiteren Fragen nerven darf.
Gruß Jens