Optima gsm Problem z wyzwalaniem syreny z tha1 i tha2

Zaczęty przez tedi26ak, Listopad 28, 2016, 19:18:03

Poprzedni wątek - Następny wątek

tedi26ak

Na kurniku zamontowałem centrale optima gsm z dwoma czunikami temperatury, panel tpr1,  sygnalizator wewnętrzny. Sygnalizator jest podłączony do wyjścia O2 sygnalizuje on awarie zasilania i rozłączenie róznicówki wentylatorów. Chce aby przekroczenie progu tha1 i tha2 wyzwalało O2 na 5s. logic procesor skrypt:
int O2;
int tha1;
int tha2;
main(){
gbenv();
O3=geto(3);
O4=geto(4);
while(1){
gbenv();
O2=geto(2);
O2=pons(0,tha1,0,5);
O2=pons(1,tha2,0,5);
seto(2,O2);
};
};
ale jest brak reakcji a jak zrobie tha1->O3 i tha2-O4 skrypt :
int O3;
int O4;
int tha1;
int tha2;
main(){
gbenv();
O2=geto(2);
while(1){
gbenv();
O3=geto(3);
O4=geto(4);
O3=pons(0,tha1,0,5);
O4=pons(1,tha2,0,5);
seto(3,O3);
seto(4,O4);
};
};
To działa poprawnie teraz pytanie czy mogę podłączyć 1 przekaźnik do wyjść O3 i O4 i wyjście z przekaźnika podłaczyć do O2 pobierając zasilanie z AUX   

robertm

Logika jest wykonywana w kolejności - dlatego jeżeli ustawia Pan wyjście O2 w dwóch wierszach - działał będzie tylko ostatni.

Najprostszym rozwiązaniem bez robienia logiki na fizycznych przekaźnikach bedzie użycie w wersji 2 zamiast O3 i O4 - markerów M1 i M2 a następnie zrobienie z nich sumy logicznej na wyjście O2. (O2=M1|M2 )


int M1;
int M2;
int O2;
int tha1;
int tha2;
main(){
gbenv();
O2=geto(2);
while(1){
gbenv();
O2=geto(2);
O2=M1|M2;
M1=pons(0,tha1,0,5);
M2=pons(1,tha2,0,5);
seto(2,O2);
};
};

tedi26ak