Witam Potrzebuje pomocy w konfiguracji (LogicRrocessor) OptimaGSM ze sterownikiem astronomicznym który ma sterować roletą.
Założenia:
Sterownik podłączony pod wejście int3 podaje tylko 2 stany, wysoki i niski zależny od pory dnia.
Wyjście OUT7 steruje zamykaniem rolety
Wyjście OUT8 steruje otwieraniem rolety
Po otrzymaniu sygnału na wejściu int3 (zbocze narastające ) wyzwoli impuls 2s na wyjściu out7 natomiast po otrzymaniu sygnału na int3 (zbocze opadające)
wyzwoli impuls 2s na wyjściu out8.
Witam,
Na zrzutach rozwiązanie.
Dodatkowo poniżej kod skryptu:
int I3;
int I3p;
int M1;
int M2;
int O7;
int O8;
main(){
gbenv();
I3p=geti(3);
O7=geto(7);
O8=geto(8);
while(1){
gbenv();
I3=geti(3);
O7=geto(7);
O8=geto(8);
if((I3p==0&&I3==1)){
M1=1;
} else {
M1=0;
};
if((I3p==1&&I3==0)){
M2=1;
} else {
M2=0;
};
O7=pons(0,M1,0,2);
O8=pons(1,M2,0,2);
I3p=I3;
seto(7,O7);
seto(8,O8);
};
};
Dziękuję za szybką odpowiedź .
Czy jest możliwość dodania logiki aby w sobotę i niedziele roleta (out8) otwierała się o wyznaczonej porze np 8:00 ? (sterownik astronomiczny niestety nie posiada takiej funkcji ). Wiem, że można ustawić TIMER ale LogicProcessor ma chyba wyższy priorytet stąd moje pytanie..
Można w LP użyć wskaźników timerów.
tk1÷tk4 wskaźniki timerów/kalendarzy, przyjmuje wartość binarną 0 lub 1
1= timer załączony (ON->OFF)
0= timer wyłączony (OFF->ON).
Super :) problem z tym ze LogicProcessor to dla mnie "czarna magia"..
Prosił bym o przykład jak i co pozmieniać ;)
Witam,
Przykład wykorzystania timerów w LP jest w nocie aplikacyjnej: an_optimagsm_notkaserwisowa.pdf
Powyższy schemat nie bardzo pasuje do mojego pytania..
od poniedziałku do piątku sterowaniem roletą (otwieranie jak i zamykanie) sterowanie przez sterownik astronomiczny.
W sobotę i niedziele TIMER ma tylko otwierać roletę o godzinie 8:00 natomiast zamykaniem ma być realizowane przez sterownik astronomiczny.
Nie jest to schemat do Pana pytania a przykład zastosowania danej funkcji.
Nie jesteśmy wstanie przygotować gotowej konfiguracji do każdego zastosowania, staramy się robić różne przykłady i już instalator musi dostosować konfigurację w szczegółach do danego obiektu.
Niemniej przygotowałem dla Pana rozwiązanie - opis znajduje się w nocie aplikacyjnej: an_optimagsm_sterowanie_roletami_timer_zegar_astronomiczny.pdf
Założenia:
Sterowanie roletami ma się odbywać poprzez załączenie wyjść na 3 sekundy
O7 – otwarcie rolet
O8 – zamkniecie rolet
Rolety od poniedziałku do piątku powinny się otwierać wg. Stanu z wyjścia zegara astronomicznego gdzie stan wysoki (1) to dzień a stan niski (0) to noc.
Sygnał z zegara jest podłączony do wejścia I3.
W sobotę oraz niedziele niezależnie od zegara astronomicznego otwarcie rolet ma nastąpić automatycznie o godzinie 8:00
Dodatkowo w każdej chwili ma być możliwe ,,ręczne" zamkniecie lub otwarcie rolet.
No cóż.. powiem tak.. dziękuje za zmuszenie mnie do logicznego myślenia bo w/w skrypt niestety nie miał prawa działać dużo błędów.
Mój wygląda następująco
int I2;
int I2p;
int M1;
int M2;
int O5;
int O6;
int tk1;
int tk2;
main(){
gbenv();
I2p=geti(2);
O5=geto(5);
O6=geto(6);
while(1){
gbenv();
I2=geti(2);
O5=geto(5);
O6=geto(6);
if((I2p==0&&I2==1)){
M1=1;
} else {
M1=0;
};
if((I2p==1&&I2==0)&&tk1==1){
M2=1;
} else {
M2=0;
};
if(tk2==1){
M2=1;
} else {
M2=0;
};
O6=pons(0,M1,0,1);
O5=pons(1,M2,0,1);
I2p=I2;
seto(5,O5);
seto(6,O6);
};
};
ustawienia timerów:
TIMER1 ON 23:59:59 Niedziela
OFF 23:59:59 Piątek
TIMER2 ON 08:00:00 Sobota
OFF 08:00:01 Sobota
ON 08:00:00 Niedziela
ON 08:00:01 Niedziela
Działa tak jak chciałem tj od poniedziałku do piątku sterowanie on-off rolety odbywa się przez sterownik astronomiczny natomiast sobota i niedziela sterowana jest przez timer otwierając roletę o godzinie 8:00.
Poza tym sterowanie z panela TPR,SMS i WWW działa bez problemowo.
EDIT:
wejście sterownika podpięte pod I2
wyjścia do sterowania rolet O5 i O6
czas wysterowania wyjścia O5,O6 zmieniony na 1s
Konfiguracja opisana w nocie aplikacyjnej została przetestowana i działa.
W nocie dodany jest jeszcze warunek ręcznego otwierania zamykania rolet.
Gratuluje - idzie Panu bardzo dobrze ! Jednak skrypt który Pan przedstawił nie może działać.
Instrukcje wykonywane są w kolejności dlatego warunek wysterowania wyjścia O5 poprzez opadające zbocze I2 nigdy nie zostanie wykonany ponieważ w kolejnych linijkach przed "pons" M2 zostanie nadpisane na =0 przez warunek tk2
if((I2p==1&&I2==0)&&tk1==1){
M2=1;
} else {
M2=0;
};
if(tk2==1){
M2=1;
} else {
M2=0;
};
O6=pons(0,M1,0,1);
O5=pons(1,M2,0,1);
Sterowanie poprzez www, sms i aplikacje mobilne również nie może działać na Pana skrypcie. Ponieważ LP ma wyższy priorytet i inne sterowanie będzie natychmiast nadpisane przez logike.
Sterowanie to trzeba wykryć w LP i obsłużyć.
Obecna konfiguracja i jest ok :)
int I2;
int I2p;
int I5;
int I5p;
int I6;
int I6p;
int M1;
int M2;
int M3;
int O5;
int O6;
int tk1;
int tk2;
int tk2p;
main(){
gbenv();
I2p=geti(2);
I5p=geti(5);
I6p=geti(6);
tk2p=tk2;O5=geto(5);
O6=geto(6);
while(1){
gbenv();
I2=geti(2);
I5=geti(5);
I6=geti(6);
O5=geto(5);
O6=geto(6);
if((I2p==1&&I2==0)&&tk1==0){
M1=1;
} else {
M1=0;
};
if((I2p==0&&I2==1)||(I6p==0&&I6==1)){
M2=1;
} else {
M2=0;
};
if(M1==1||(tk2p==0&&tk2==1)||(I5p==0&&I5==1)){
M3=1;
} else {
M3=0;
};
O5=pons(0,M3,O6,1);
O6=pons(1,M2,O5,1);
I2p=I2;I5p=I5;I6p=I6;tk2p=tk2;
seto(5,O5);
seto(6,O6);
};
};
Dzięki Wielkie za pomoc ;)