'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Autor Wątek: Rolety cd.  (Przeczytany 3760 razy)

zim

  • Jr. Member
  • **
  • Wiadomości: 54
    • Zobacz profil
Rolety cd.
« dnia: Maja 01, 2016, 08:16:29 pm »

Witam,

Mam pytanie odnośnie zachowania rolet.

Mam poustawiane czasy opuszczania, podnoszenia, lamelki działają bardzo ładnie.

Natomiast dziwi mnie jedno zachowanie, roleta jest otwarta wago widzi pozycję poprawnie '255' ale jeśli przycisnę przycisk otwierania przekaźnik ponownie załącza się na czas otwierania, podczas domykania z pozycji lamelek przekaźnik załącza się na ok 10s (powinien na 2s).

Czy tak ma być ? Czy ja gdzieś popełniłem błąd.

Zapisane

admin

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 313
    • Zobacz profil
Odp: Rolety cd.
« Odpowiedź #1 dnia: Maja 02, 2016, 09:16:25 pm »

Cześć,

bez wglądu w Twój kod ciężko jest cokolwiek powiedzieć.... 
Zapisane

zim

  • Jr. Member
  • **
  • Wiadomości: 54
    • Zobacz profil
Odp: Rolety cd.
« Odpowiedź #2 dnia: Maja 03, 2016, 10:57:25 am »

Witaj,

Oto kod:

Blok Funkcyny RoletyPRG:

FUNCTION_BLOCK RoletyPRG
VAR_INPUT
WejscieSterujace :BOOL;
ZmiennaPodnoszenieVis :BOOL;
ZmiennaOpuszczanieVis :BOOL;
      ZmiennaLamelkiVis :BOOL;
PozycjaLameli :BYTE;
CzasOtwarcia: TIME;
CzasZamkniecia: TIME;
MaxCzasDzialania :TIME;
ZamykanieWszystkieVIS: BOOL;
OtwieranieWszystkieVIS: BOOL;
END_VAR
VAR_OUTPUT
WyjsciePodnoszenie :BOOL;
WyjscieOpuszczanie :BOOL;
RoletaZamknieta :BOOL;
RoletaOtwarta: BOOL;
Pozycja:BYTE;
END_VAR
VAR
    Wejscie1 : Fb_ShortLong:=(uiTS_10tel_s:=1, uiTL_10tel_s:=1, uiT_10tel_s :=5); (* Przycisk w garazu*)
Wejscie2 : Fb_ShortLong:=(uiTS_10tel_s:=1, uiTL_10tel_s:=1, uiT_10tel_s :=5);
END_VAR

VAR RETAIN PERSISTENT
    Input_B_Roleta4 :BLIND_INPUT;
    (*Shade_B_Roleta4 :BLIND_SHADE_S:=(HORZ1:=70, HORZ2:=150, SHADE_POS:=150, SHADE_DELAY:=T#60s);*)
    Control_B_Roleta4 :BLIND_CONTROL_S;
END_VAR

FB:


Wejscie1(xSwitch:=WejscieSterujace);
Input_B_Roleta4(
    S1:=Wejscie1.xShort OR ZmiennaPodnoszenieVis OR OtwieranieWszystkieVIS,
    S2:=Wejscie1.xLong OR ZmiennaOpuszczanieVis OR ZamykanieWszystkieVIS,
    IN:=ZmiennaLamelkiVis,
    PI:=PozycjaLameli,
    MAX_RUNTIME:= MaxCzasDzialania,
    MANUAL_TIMEOUT:=T#60m,
    MASTER_MODE:=FALSE,
    POS:=Control_B_Roleta4.POS
    );
(*Shade_B_Roleta4(
    UP:=Input_B_Roleta4.QU,
    DN:=Input_B_Roleta4.QD,
    S_IN:=Input_B_Roleta4.STATUS,
    pi:=Input_B_Roleta4.PO,
    ENABLE:=ShadeFlag_B_1S,
    SUN:=SunSignal_1S,
    CX:=ReadClock.Calendar
    );*)
Control_B_Roleta4(
T_UP:= CzasOtwarcia,
T_DN:= CzasZamkniecia,
    UP:=Input_B_Roleta4.QU,
    DN:=Input_B_Roleta4.QD,
    S_IN:=Input_B_Roleta4.STATUS,
    pi:=Input_B_Roleta4.PO
    );

WyjsciePodnoszenie:=Control_B_Roleta4.MU;
WyjscieOpuszczanie:=Control_B_Roleta4.MD;
Pozycja:=Control_B_Roleta4.POS;


IF (Control_B_Roleta4.POS <= 255 AND Control_B_Roleta4.POS  >= 1) THEN RoletaOtwarta:=TRUE;
ELSE RoletaOtwarta:=FALSE;
END_IF;

IF (Control_B_Roleta4.POS = 0) THEN RoletaZamknieta:=TRUE;
ELSE RoletaZamknieta:=FALSE;
END_IF;


(* Koniec ROLETA4*)


I sam bloczek wykonawczy.



« Ostatnia zmiana: Maja 03, 2016, 11:00:20 am wysłana przez zim »
Zapisane

schuey

  • Jr. Member
  • **
  • Wiadomości: 54
    • Zobacz profil
Odp: Rolety cd.
« Odpowiedź #3 dnia: Października 27, 2018, 06:55:30 pm »

Stary wątek ale pracuję teraz nad Oscatem i miałem podobny problem - wyjście podnoszenia/obniżania zawsze zapala się na MAX_RUNTIME nawet jeśli pozycja pełnego zamknięcia/otwarcia jest osiągnięta.

Rozwiązaniem jest instrukcja AND przy zmiennych wyjścia, czyli:
...
WyjsciePodnoszenie:=Control_B_Roleta4.MU AND Control_B_Roleta4.POS < 255;
WyjscieOpuszczanie:=Control_B_Roleta4.MD AND Control_B_Roleta4.POS > 0;
...
Zapisane