OSCAT > Ankündigungen / Announcements

Building 1.10

<< < (4/6) > >>

Wu Fu:
Hallo zusammen,

mich würden die xblind Bausteine interssieren.
Gibt es hierzu schon einen akutellern Stand und evtl auch eine knappe Beschreibung. Ich brauch keinen ausgefeilten Text, ein Klartext zu den Parametern würde mir schon genügen.

Schöne Grüße
Daniel

mike_roh_soft:
Aha,

da ja niemand auf meinen Beitrag geantwortet hat: http://www.oscat.de/community/index.php/topic,1668.0.html

habe ich dieses Thema hier gefunden...

Ich habe nämlich mit dem BLIND_NIGHT auch das Problem, dass der Baustein die Rollos nicht mehr hochfährt weil im Baustein das gar nicht programmiert ist.

Wenn ich es richtig verstanden habe bekommen wir bald einige neue Versionen der BLIND Bausteine?!?

Gruß

mike_roh_soft:

--- Zitat von: GA_Home am 14. April 2011, 15:46:39 ---Hallo Hugo

Ich habe mir den Baustein XBLIND_NIGHT angesehen.


--- Code: ---IF CX.LDATE <> last_set THEN (* event is only generated once per day *)
tmp := DINT_TO_TOD(TOD_TO_DINT(CX.SUN_SET) + SET_OFFSET * 60000);
IF (CX.LTOD > TSB AND cx.LTOD > tmp) OR CX.LTOD > TSE THEN
last_set := CX.LDATE;
timer(IN := TRUE, PT := TIMEOUT);
status := 101;
END_IF;
ELSIF CX.LDATE <> last_rise THEN (* event is only generated once per day *)
tmp := DINT_TO_TOD(TOD_TO_DINT(CX.SUN_RISE) + RISE_OFFSET * 60000);
IF (CX.LTOD > TRB AND CX.LTOD > tmp) OR CX.LTOD > TRE THEN
last_rise := CX.LDATE;
timer(IN := TRUE, PT := TIMEOUT);
STATUS := 102;
END_IF;
ELSE
timer.IN := FALSE;
END_IF;

--- Ende Code ---

Das würde bedeuten, ein neuer Tag beginnt und bei der If schleife würde dann CX.LDATE <> last_set so lange TRUE sein bis die Sonne untergegangen ist. Dann würde der elsif Zweig berücksichtigt dort ist aber die Sonnenaufgangsbedingung.

Fazit ich glaube die if und elsif sollten vertauscht werden.

Was bringt eigentlicht die Zuweisung timer.IN := FALSE; im else Zweig ???
Bei Aufruf des Timerbausteins wird sowieso dann immer IN:= TRUE mitgegeben.

Bin ich mit meiner Behauptung auf den Holzweg und ich habe gerade einen Knopf im Kopf?

ich bin noch immer beim Testen der Bausteine mir fehlt leider etwas Zeit.

Grüße,

GA_Home

--- Ende Zitat ---

Sehe ich genauso... die Jalousie wird nie hochfahren wenn die IF Schleife so rum steht.
Des Weiteren finde ich es nicht schlüssig den SUNRISE OFFSET zu addieren.
Ich möchte doch gerne 5Minuten vor Sonnenaufgang den Rollo öffnen und den Sonnenaufgang zu sehen und nicht, dass der Rollo erst 5min nach Sonnenaufgang hochfährt.
Bein Sonnenuntergang ist es richtig, dass ich den Untergang sehen will und 5Min später der Rollo runterfährt.

Jetzt ist der Beitrag fast ein Jahr alt.
Entweder liege ich auch daneben oder es halt noch keiner den Baustein in Betrieb.
Ich kämpfe ich mich grad druch INPUT,DEFAULT,NIGHT und CTRL2 und berichte später noch einmal ob läuft.

mike_roh_soft:
Hm Sorry,
das sind mir alles zu viele unbekannte Variablen. Komme ich leider nicht mit klar ohne Beschreibung.

Ich werde nun versuchen den alten NIGHT Baustein dahingehend umzubauen dass er auch hochfährt.
Mehr wollte ich ja nicht.

Freue mich aber wenn der Hugo Zeit findet und die XBausteine fertig stellt.

Gruß

mike_roh_soft:
Ich habe den aktuellen BLIND_NIGHT geändert, dass er morgens auch hoch fährt!
Ich poste hier den Code. Damit kann man sich dann einfach einen eigenen FB machen um die OSACT-Lib nicht zu ändern!

Ich übernehme keine Garantie oder Gewährleistung, dass der Baustein funktioniert... das hier ist ausdrücklich nur eine Hilfestellung oder Anregung! Jeder muss natürlich selbst testen ob alles passt!

Ich habe diesen Baustein hier zu Hause an meinem Rollladen getestet:


--- Code: ---FUNCTION_BLOCK FB_BLIND_NIGHT
VAR_INPUT
UP, DN : BOOL;
S_IN : BYTE;
PI, AI : BYTE;
E_NIGHT : BOOL := TRUE;
E_DAY : BOOL := TRUE;
DTIN : DT;
SUNRISE, SUNSET : TOD;
END_VAR
VAR_INPUT CONSTANT
SUNRISE_OFFSET : TIME;
SUNSET_OFFSET : TIME;
NIGHT_POSITION : BYTE;
NIGHT_ANGLE : BYTE;
DAY_POSITION : BYTE;
DAY_ANGLE : BYTE;
END_VAR
VAR_OUTPUT
QU, QD : BOOL;
STATUS : BYTE;
PO, AO : BYTE;
END_VAR
VAR
night : BOOL;
day : BOOL;
last_night, last_day : DATE;
END_VAR


--- Ende Code ---


--- Code: ---IF NOT (up AND dn) AND (night OR day) THEN
(* manual operation at night/day will cancel operation for one night/day *)
night := FALSE;
day := FALSE;
ELSIF (DT_TO_TOD(dtin) > sunset + sunset_offset) AND (last_night < DT_TO_DATE(dtin)) AND NOT night AND e_night THEN
(* enable night *)
day := FALSE;
night := TRUE;
last_night := DT_TO_DATE(dtin);
ELSIF (DT_TO_TOD(dtin) > sunrise + sunrise_offset) AND (last_day < DT_TO_DATE(dtin)) AND NOT day  AND e_day AND (last_night < DT_TO_DATE(dtin)) THEN
(* enable day *)
night := FALSE;
day := TRUE;
last_day := DT_TO_DATE(dtin);
END_IF;

(* night/day motion only in auto mode *)
IF UP AND DN AND night AND NOT day THEN
status := 141;
po := night_position;
ao := night_angle;
ELSIF UP AND DN AND day AND NOT night THEN
status := 142;
po := day_position;
ao := day_angle;
ELSE
QU := UP;
QD := DN;
po := pi;
ao := ai;
status := s_in;
END_IF;


--- Ende Code ---

Im Großen und Ganzen ist der Baustein gleich. Er wurde nur ergänzt bzw. erweitert.
Neu sind die Variablen day, day_position und day_angle.
Hoffe das hilft einigen weiter.
Wer Fehler sieht bitte melden!

Danke

EDIT: Gestern Abend ging der Rollo runter und heute Morgen wieder hoch  :)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln