Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR

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 :frowning:

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.

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.

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 :cry:
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

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 OR ACTIVATE_NIGHTTHEN
	(* 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 OR DEACTIVATE_NIGHTTHEN
	(* 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

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

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).

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.

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

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

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

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]

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

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