Vorschläge für BLIND_SHADE, BLIND_CONTROL und BLIND_ACTUATOR

Begonnen von mattsches, 07. Februar 2014, 20:13:02

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

mattsches

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?


ADS_0x1

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!

mattsches

Ui, vielen Dank für die Blumen! Freut mich, dass dir mein Umbau geholfen hat.

Viel Spaß weiterhin im neuen Eigenheim!

the.neon

#18
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]

mattsches

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"?

the.neon

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

mattsches

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.

mattsches

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.

Jensen

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

mattsches

#24
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

Jensen

#25
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

mattsches

Zitat von: Jensen in 19. Januar 2018, 09:19:23
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).

Zitat von: Jensen in 19. Januar 2018, 09:19:23
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.

Jensen

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

mattsches

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


Jensen

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