NEO GSM IP prośba o pomoc w prostym skrypcie

Zaczęty przez mor, Grudzień 30, 2018, 18:43:32

Poprzedni wątek - Następny wątek

mor

Witam, na początek mam małą uwagę co do czuwania nocnego, w domu mam ustawioną tylko 1 strefę, w tym czujki oznaczone jako nocne (są na parterze), diody syreny zew. podłączone do O1, wyjec do O2 (przy czym O2 mam odznaczone jako alarm włamaniowy noc), niestety sygnał dźwiękowy z zew. syreny był wyzwalany przy naruszeniach strefy nocnej (czy tak być powinno?), załatwiłem sprawę prostym skryptem.
if(an1==1){                   
O2=0;
};
seto(2,O2);
Działa, ale może jest jakiś inny sposób w ustawieniach?

Druga rzecz, sterowanie elektrozaczepem furtki przez wejście I14 (NO, zwykła cicha, strefa 1, czułość 100 ms) i wyjście O6 (NO, mono na czas, 3 sek., sterowanie lokalne I14), chciałbym zablokować to wyjście podczas czuwania nocnego i pełnego, popełniłem taki skrypt:

int an1;
int as1;
int I14;
int O6;
main(){
gbenv();
O6=geto(6);
while(1){
gbenv();
I14=geti(14);
O6=geto(6);
if(I14==1&&as1==0&&an1==0){
O6=1;
WAIT(3000);
O6=0;
} else {
O6=0;
};
seto(6,O6);
};
};
       
W trybach czuwania po naciśnięciu przycisku (I14) elektrozaczep pracuje przez 0,1 sek (centrala podaje krótki impuls prądu na wyjście O6), czy da się tego uniknąć?

robertm

Ad.1
Tak wszystko działa poprawnie, funkcja "alarm włamaniowy" aktywuje wyjście niezależnie od trybu czuwania.
Zaznaczona funkcja "alarm włamaniowy noc" aktywuje wyjście tylko wtedy gdy alarm wystąpił w czuwaniu nocnym,


Ad.2
Z tego co rozumiem sterowanie wyjściem O6 jest ustawione w dwóch miejscach  w LP i w konfiguracji wyjścia - sterowanie lokalne.
Najpierw wykonywane jest sterownie lokalne i za kilkadziesiąt milisekund wykonywany jest skrypt w LP  gdzie wyjście jest wyłączane.
Stąd ten impuls na wyjściu. Żeby uniknąć takiej sytuacji należy przenieść całość sterowania wyjściem O6 do LP.

przykładowo tak:
(Wyjście O6 załączane gdy nie ma czuwania i I14 =1 na 5 sekund.)


int an1;
int as1;
int I14;
int M1;
int M2;
int O6;
main(){
gbenv();
O6=geto(6);
while(1){
gbenv();
I14=geti(14);
O6=geto(6);
if(as1==0&&an1==0){
M1=I14;
} else {
M2=0;
};
O6=tond(0,M1,0,5);
seto(6,O6);
};
};

mor


robertm

Mała pomyłka - tam gdzie jest M2=0 powinno być M1=0

int an1;
int as1;
int I14;
int M1;
int O6;
main(){
gbenv();
O6=geto(6);
while(1){
gbenv();
I14=geti(14);
O6=geto(6);
if(as1==0&&an1==0){
M1=I14;
} else {
M1=0;
};
O6=tond(0,M1,0,5);
seto(6,O6);
};
};