'Inteligenty' dom ze sterownikiem PLC
Główna => Programowanie => Wątek zaczęty przez: zim w Kwietnia 27, 2016, 10:03:44 pm
-
Witajcie,
Czy mógł by się ktoś pochwalić kawałkiem kodu lub FB, realizującym zapalanie światła za pomocą czujki ruchu.
Zamysł jest taki że wejściowe dane to zmienna czujki i czas świecenia, oczywiście zmiana stanu czujki resetuje timer.
Pozdrawiam,
-
Było to baaaardzo proste jeśli zna się funkcję TOF ;-)
Wklejam może innemu nowicjuszowi jak ja się przyda.
-
Zaprzyjaznij sie z Oscat Basic.
tam jest TOF_1, ktory ma bardzo przydatną opcję RST. pozwoli Ci ona wyłączyć TOF.
-
A ja to zrobiłem tak:
Najważniejsze zmienne:
- manual jest zanegowana i jest to blokada czujników ruchu
- control to operator AND, który wymaga wyłączonej blokady
-
Odświeżam temat. Mam dwa wejścia:
włącznik tzw. dzwonkowy IN1
włącznik wirtualny z aplikacji IPS_1 (przez Modbus)
Takie połączenie jak na załączonym obrazie działa.
Jak dołożyć do tego sterowanie z czujki ruchu (wejście z) tak, żeby po naruszeniu światło paliło się np. przez 60s ale żebym wychodząc wcześniej z pomieszczenia miał możliwość wyłączyć światło włącznikiem.
-
Czy jest taki blok funkcyjny, który jak na wejściu będzie impuls to odliczy ustawiony czas i na koniec na wyjście wyśle impuls?
-
Witam. Mam mały problem z wyłączeniem światła po czasie. Gdy czujka wykrywa ruch to włączy światło i FB_Delay odlicza czas, i po tym czasie wyłączy. Mogę też wcześniej wyłączyć włącznikiem ściennym. ale jak zrobić, żeby czas był resetowany gdy czujka wykrywa ruch?
-
Sterownie oswietlenia z czujnika ruchu
Deklaracja Zmiennych:
(*deklaracje gaszenia i swiecenia z czujnika ruchu*)
Light_PIR_A_Wiatrolap: Fb_Delay;
Light_PIR_B_Wiatrolap: F_TRIG;(*gasi po czasie dwToff_10tel_s*)
Light_PIR_C_Wiatrolap: R_TRIG; (*swiecie po podaniu na xInput*)
Kod (oświtelnie DMX):
Lampa1_Wiatrolap (xDimmSwitch:=IN43 OR IN43_VISU, XCentON:= Central_ON_Wiatrolap OR (Light_PIR_C_Wiatrolap.Q AND REAL_TO_BOOL (zmierzch_real)) , XCentOFF:= Central_OFF_Wiatrolap OR (Light_PIR_B_Wiatrolap.Q AND REAL_TO_BOOL (zmierzch_real)), bDimmValue:=Lampa1_Wiatrolap_bDimmValue, bDimmValueatMemoOFF:= (10*swiatlo_dzienne));
Lampa1_Wiatrolap_Sterowanie ( bValueRed:=Lampa1_Wiatrolap.bNvo_DimmValue, iChannelRed:=7, (*xWrite:=TRUE,*) xAutoWrite:= TRUE, abDMX_Values:=abDMX_Values);
Light_PIR_A_Wiatrolap(xInput:=IN58, dwTon_10tel_s:=1, dwToff_10tel_s:=(Light_PIR_Time_Wiatrolap*10));
Light_PIR_B_Wiatrolap (CLK:= Light_PIR_A_Wiatrolap.xOutput);
Light_PIR_C_Wiatrolap (CLK:= Light_PIR_A_Wiatrolap.xOutput);
lub standardowa lampa na przekaźniku
Deklaracja Zmiennych:
(*deklaracje gaszenia i swiecenia z czujnika ruchu*)
Lampa1_Garaz: FbDimmerSingleSwitch:= (uiT_ShortIn10telSec:= 5, xMemoOFF:= TRUE, bMaxDimmValue:= 200, bMinDimmValue:= 10, uiT_SpeedIn10telSec:= 50, bModeOnReset:= 3);
Lampa2_Garaz: FbDimmerSingleSwitch:= (uiT_ShortIn10telSec:= 5, xMemoOFF:= TRUE, bMaxDimmValue:= 200, bMinDimmValue:= 10, uiT_SpeedIn10telSec:= 50, bModeOnReset:= 3);
Central_ON_Garaz: BOOL;
Central_OFF_Garaz: BOOL;
IN52_VISU: BOOL;
IN53_VISU: BOOL;
Light_PIR_A_Garaz: Fb_Delay;
Light_PIR_B_Garaz: F_TRIG;(*gasi po czasie dwToff_10tel_s*)
Light_PIR_C_Garaz: R_TRIG; (*swiecie po podaniu na xInput*)
Kod:
(*obsluga oswietlenia garaz*)
Lampa1_Garaz (xDimmSwitch:=IN52 OR IN54_VISU, XCentON:= Central_ON_Garaz OR (Light_PIR_C_Garaz.Q AND REAL_TO_BOOL (zmierzch_real)) , XCentOFF:= Central_OFF_Strych OR (Light_PIR_B_Garaz.Q AND REAL_TO_BOOL (zmierzch_real)), bDimmValueatMemoOFF:= (10*swiatlo_dzienne));
OUT25:= Lampa1_Garaz.xSwitch;
Lampa2_Garaz (xDimmSwitch:=IN53 OR IN55_VISU, XCentON:= Central_ON_Garaz OR (Light_PIR_C_Garaz.Q AND REAL_TO_BOOL (zmierzch_real)) , XCentOFF:= Central_OFF_Strych OR (Light_PIR_B_Garaz.Q AND REAL_TO_BOOL (zmierzch_real)), bDimmValueatMemoOFF:= (10*swiatlo_dzienne));
OUT26:= Lampa2_Garaz.xSwitch;
Light_PIR_A_Garaz(xInput:=IN60, dwTon_10tel_s:=10, dwToff_10tel_s:=10);
Light_PIR_B_Garaz (CLK:= Light_PIR_A_Garaz.xOutput);
Light_PIR_C_Garaz (CLK:= Light_PIR_A_Garaz.xOutput
Pozdrawiam
Łukasz
-
Pod którym "IN" masz wejście z włącznika (dzwonkowy? czy bistabilny?) a pod który czujkę ruchu? Poustawiałem to w blokach (nie w ST) i coś mi nie działa.
-
Dzięki lukaszdebiec za odzew. Już sobie poradziłem. Działa to tak, że po wejściu do pomieszczenia czujka włącza światło i jeżeli jest ruch TOF odlicza od nowa jeśli ruchu nie ma puszcza na drugi TOF a on po ustalonym czasie przez Fb_Delay wyłącza światło. Problem był w tym, że gdy chciałem wcześniej wychodząc wyłączyć światło wyłącznikiem ściennym, to owszem wyłączyłem ale TOF odliczał dalej i po odliczeniu włączał. Skomplikowane to trochę ale narazie działa jak trzeba. A jeszcze IPS_1 rozłącza zdalnie przez stronę, telefon i jest to także stan włącznika. Może jest jakiś bardziej elegancki i prostszy sposób?.