Używamy plików cookies (tzw. ciasteczka) by spersonalizować treść i ogłoszenia oraz by analizować ruch na stronie.  W sposób automatyczny dzielimy się informacjami o Twoim użyciu tego portalu z dostawcami ogłoszeń, którzy mogą połączyć te informacje z informacjami, które im udzieliłaś/łeś lub, które sami zebrali. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym.  Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies zmieniając opcje przeglądarki.

Kontrolowanie Rolet - Building_common.lib

Sterowanie roletami daje możliwość, by nasza instalacja zdobywała pochwały zbliżające ją do miana 'inteligentnej'.  Z roletami bowiem, można wg mnie zrobić dużo więcej niż z oświetleniem lub gniazdkami.  

W moim domu rolety kontrolowane są przez zwykłe przyciski ścienne, przez wizualizację oraz przez smartphone.  Dodatkowo mogą, być zamykane/otwierane zgodnie z ustalonymi wcześniej godzinami lub w zależności od godziny wschodu i zachodu słońca.

Proste sterowanie roletą wygląda następująco:

VAR
	Blind1 : FbSunblind;
END_VAR

* * *

Blind1(xSunblindSwitchUp:= IN1 OR VIS_Blind1_UP, xSunblindSwitchDown:=IN2 OR VIS_Blind1_DN);

OUT1:=Blind1.xDoSunblindUp;
OUT2:=Blind1.xDoSunblindDown;

gdzie:

  • IN1 i IN2 - wejścia DI, do których podłączone są przyciski,
  • VIS_Blind1_UP i .._DN - zmienne typu BOOL do sterowania przez wizualizację,
  • OUT1 i OUT2 - wyjścia DO, które przez przekaźniki sterują silnikiem rolety.

 

Powyższy, prosty kod można rozbudowywać i modyfikować poprzez:

  1. Umieszczenie definicji bloku funkcyjnego w VAR RETAIN PERSISTENT aby np. po zaniku i włączeniu zasilania steronik pamiętał ich położenie i nie wykonywał żadnych ruchów,
  2. Na poziomie definicji, określenie podstawowych parametrów tj. całkowity czas potrzebny do opuszczenia/podniesienia rolety (w 0.1 sek), czas podtrzebny do postawienia rolety w pozycji 'cień',
  3. Dodanie innych źródeł impulsów sterujących roletą tj. timery, bloki wyliczające pozycję słońca.

A więc:

VAR RETAIN PERSISTENT
	Blind1 : FbSunblind:=( uiT_WholePosTimeIn10telSec:=300, uiT_MoveShadowPosIn10telSec:=100);
END_VAR

* * *

Blind1(
    xSunblindSwitchUp:= IN1 OR VIS_Blind1_UP OR Timer_Blind1_UP OR Sunrise_Signal, 
    xSunblindSwitchDown:=IN2 OR VIS_Blind1_DN OR Timer_Blind1_DN OR Sunset_Signal
	);

OUT1:=Blind1.xDoSunblindUp;
OUT2:=Blind1.xDoSunblindDown;

gdzie:

  • Timer_Blind1_UP, ..._DN - to zmienne, które muszą sygnalizować zaprogramowane godziny podniesienia/opuszczenia rolety,
  • Sunrise_Signal, Sunset_Signal - to zmienne sygnalizujące przekroczenie przez słońce ustalonych wcześniej pozycji.

Poniższy wycinek wizualizacji ukazuje opisaną powyżej funkcjonalność.  Na górze widoczna jest pozycja słońca z możliwością ustalenia progów, przy których rolety powinny reagować (tj. podnosić się gdy słońce przekroczy linię -7° poniżej horyzontu i zamykać, gdy słońce zejdzie poniżej -6° od linii horyzontu).  Dla każdego ruchu: w górę lub w dół można ustalić, czy ma on być wykonywany zgodnie z ustaleniami zegara, wg ruchów słonca, lub wyłacznie manualnie.  W poniższym przykładzie rolety podniosą się zgodnie z zegarem: o 0655 w dni powszednie i o 0800 w weekend, a opuszczą w momencie (skorygowanego) zachodu słońca.

Blind Visu 

Bardziej złożone funkcje sterowania roletami opisałem w kolejnym artykule: Kontrolowanie Rolet - biblioteki OSCAT.