W systemie Grenton sterowanie roletami odbywa się poprzez sterowanie czasem załączenia rolety. Na podstawie czasu załączenia można wyliczyć i zadać określoną pozycję rolety. Aby wykonać sterowanie roletami z wykorzystaniem Slidera wykonaj następujące kroki:


Do zrealizowania poniższej funkcjonalności potrzebujesz:

  • jednostka centralna CLU 
  • sterownik rolet Roller Shutter
  • urządzenie mobilne z zainstalowaną aplikacją Home Manager
  • środowisko do tworzenia logiki sytemu Object Manager


Realizowanie wspomnianej funkcjonalności wymagać będzie utworzenia:

  • skryptu
  • obiektu wirtualnego Timer
  • interfejsu aplikacji mobilnej
  • zmiennych globalnych


Konfiguracja jednostki centralnej CLU

  1. Dwukrotnie kliknij w ikonę CLU aby wejść do ustawień modułu
  2. Wejdź do zakładki "Cechy użytkownika" i stwórz cztery zmienne globalne typu number niezbędne do poprawnej realizacji funkcjonalności. Na potrzeby projektu zostały nazwane jak niżej.

    • current_position - aktualne, zadane położenie rolety,
    • previous_position - położenie rolety z poprzedniej iteracji,
    • cycle_time - czas pełnego otwarcia/zamknięcia rolety,
    • time - czas jazdy napędu wykorzystywany podczas pracy logiki,

    (Kliknij aby powiększyć)


    UWAGA! Dla różnych napędów rolet całkowity czas pełnego otwarcia/zamknięcia (czas cyklu) może się różnić. Przed podaniem wartości zapoznaj się z dokumentacją techniczną producenta lub dokonaj pomiaru samodzielnie.

  3. Po utworzeniu skryptu (patrz akapit niżej) wejdź do zakładki "Zdarzenia" i dodaj do Zdarzenia OnInit dwie akcje:
    • Uruchomienie timera pobierającego wartości suwaka
    • Ustawienie rolety w pełnym otwarciu (kalibracja przy uruchomieniu lub po spadku zasilania w systemie). Dozwolone jest również aby punktem startowym było pełne zamknięcie rolety.

(Kliknij aby powiększyć)


        Okno Zdarzeń po wykonaniu konfiguracji powinno wyglądać jak niżej:


(Kliknij aby powiększyć)


        UWAGA! Stosowany napęd rolety musi być wyposażony w krańcówki. W przeciwnym razie napęd może zostać uszkodzony.


        4. Kliknij OK aby zaakceptować zmiany


Konfiguracja logiki

  1. Utwórz skrypt zarządzający pracą. W analizowanym przypadku nazwany "roller_shutter"
  2. Utwórz skrypt realizujący logikę systemu korzystając z zasobnika Komponenty po prawej stronie okna oprogramowania Object Manager. Informacje jak tworzyć skrypty w systemie Grenton możesz znaleźć TUTAJ. Połączenia i warunki logiczne między utworzonymi blokami funkcyjnymi powinny wyglądać jak pokazano na schemacie poniżej:

(Kliknij aby powiększyć)


Poniżej znajduje się pełna lista komponentów oraz procedura ich tworzenia.

  • Warunek > ROLLER_SHUTTER > Cecha wbudowana State >"==" > Wartość: Stop 
        Napęd nie zostanie załączony dopóki poprzednio ustawiona pozycja rolety nie zostanie osiągnięta

(Kliknij aby powiększyć)


  • Warunek > CLU > Cechy zdefiniowane: current_position > Warunek logiczny: "~=" > Wartość: Cecha > CLU > Cechy zdefiniowane: previous_position
        Sprawdzenie czy suwak został przesunięty, aktualna pozycja rolety jest taka sama jak poprzednia

(Kliknij aby powiększyć)


  • Operacje na zmiennych > time > "=" > Cecha > CLU > Cechy zdefiniowane: current_position
        Przypisanie zmiennej time wartości aktualnej pozycji rolety

(Kliknij aby powiększyć)


  • Operacje na zmiennych > time > "-=" > Cecha > CLU > Cechy zdefiniowane: previous_position
        Obliczenie różnicy zadanej i aktualnej pozycji rolety

(Kliknij aby powiększyć)


  • Operacje na zmiennych > time > "/=" > Wartość: 100
        Obliczenie procentowej wartości otwarcia rolety

(Kliknij aby powiększyć)


  • Operacje na zmiennych > time > "*=" > Cecha > CLU > Cechy zdefiniowane: cycle_time
        Obliczenie czasu załączenia wyjścia niezbędnego do osiągnięcia zadanej pozycji rolety

(Kliknij aby powiększyć)


  • Warunek > CLU > Cechy zdefiniowane: current_position >  ">" > Wartość: Cecha > CLU > Cechy zdefiniowane: previous_position
        Sprawdzenie czy roleta wykonać ma ruch do dołu, czy w górę

(Kliknij aby powiększyć)


  • Akcja > ROLLER_SHUTTER > Metoda: Up(Time) > Parametry: Time > Wartość: Cecha > CLU > Cechy zdefiniowane: time
        Jazda rolety w górę zgodnie z wyznaczonym czasem załączenia wyjścia

(Kliknij aby powiększyć)


  • Operacje na zmiennych > previous_position > "=" > Cecha > CLU > Cechy zdefiniowane: current_position
        Przepisanie wartości zadanej położenia jako aktualna

(Kliknij aby powiększyć)


  • Operacje na zmiennych > time > "*=" > Wartość: -1 > CLU
        Przeliczenie wartości czasu załączenia na wartości znajdującą się w dziedzinie liczb dodatnich

(Kliknij aby powiększyć)


  • Akcja > ROLLER_SHUTTER > Metoda: Down(Time) > Parametry: Time > Wartość: Cecha > CLU > Cechy zdefiniowane: time
        Jazda rolety w dół zgodnie z wyznaczonym czasem załączenia wyjścia

(Kliknij aby powiększyć)


  • Operacje na zmiennych > previous_position > "=" > Cecha > CLU > Cechy zdefiniowane: current_position
        Przepisanie wartości zadanej położenia jako aktualna

            

(Kliknij aby powiększyć)



 Powyższa logika w trybie tekstowym prezentuje się jak niżej

if(CLU->ROLLER_SHUTTER->State==0) then
if(CLU->current_position~=CLU->previous_position) then
CLU->time=CLU->current_position
CLU->time=CLU->time-CLU->previous_position
CLU->time=CLU->time/100
CLU->time=CLU->time*CLU->cycle_time
if(CLU->current_position>CLU->previous_position) then
CLU->ROLLER_SHUTTER->Up(CLU->time)
CLU->previous_position=CLU->current_position
else
CLU->time=CLU->time*-1
CLU->ROLLER_SHUTTER->Down(CLU->time)
CLU->previous_position=CLU->current_position
end
end
end


Wirtualny obiekt TIMER

  1. Kliknij w symbol zegara aby przejść do okna tworzenia wirtualnych obiektów. 

  2. Z rozwijanej listy wybierz pozycję "Timer". Obiekt ten wykorzystywany będzie do sprawdzania czy wartość suwaka uległa zmianie.


  3. Wejdź w zakładkę "Cechy wbudowane", 'ustaw cechę Mode w tryb Interval, oraz podaj wartość cechy Time - częstotliwości z jaką sprawdzana będzie wartość z suwaka aplikacji mobilnej.

  4. Wejdź w zakładkę "Zdarzenia", dodaj do zdarzenia OnTimer utworzony skrypt roller_shutter



  5. Zatwierdź zmiany przyciskiem OK


Interfejs aplikacji mobilnej


        1. Umieść na jednej ze stron Twojego interfejsu aplikacji mobilnej Komponent Slider.


        2. Dwukrotnie kliknij w umieszczony obiekt aby wejść do jego ustawień i wejdź w zakładkę "Cechy wbudowane". Podaj parametry obiektu jak niżej:

  • Min value - 0.0 - początek zakresu wartości przyjmowanych przez suwak
  • Max value - 100.0 - koniec zakresu wartości przyjmowanych przez suwak (wybór cyfry z zakresu 0-100 pozwoli na graficzną interpretacje procentowego zamknięcia rolety)
  • Text - $value$ - wyświetlanie zadanej wartości pozycji rolety

(Kliknij aby powiększyć)


        3. Następnie przejdź do zakładki "Zdarzenia", w której do zdarzenia ONSLIDE przypisz komendę przepisującą wartość obiektu slidera do wartości cechy zdefiniowanej current_position jak pokazano poniżej:

(Kliknij aby powiększyć)


        4. Po zaakceptowanych zmianach okno powinno wyglądać jak niżej:

(Kliknij aby powiększyć)

            5. Aby zabezpieczyć logikę przed wprowadzaniem dziesiętnych wartości milisekundy, które przez moduły wykonawcze są błędnie interpretowane, wykorzystaj funkcję LUA zaokrąglającą liczby w górę math.ceil() stosując ją dla argumentu $value$. 

CLU->current_position=math.ceil($value$)


Pole "Przypisanie komendy" wyglądać będzie wówczas jak niżej:

(Kliknij aby powiększyć)


            6. Zatwierdź zmiany przyciskiem OK.



Wysyłanie konfiguracji do systemu


            1. Po wprowadzeniu wszystkich zmian wyślij konfigurację do CLU za pomocą poniższego przycisku na pasku narzędzi:


            2. Wyślij interfejs na aplikację mobilną Grenton Home Manager. W tym celu zaznacz interfejs mobilny, na którym znajduje się utworzony suwak po czym naciśnij poniższy przycisk na pasku narzędzi i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.