sterowanie PIRamirecyrkulacja wody

Zaczęty przez wstan, Grudzień 14, 2014, 16:46:02

Poprzedni wątek - Następny wątek

wstan

mam 3 czujki PIR, chciałbym aby przy uzbrojonej czy tez nieuzbrojonej centrali w momencie detekcji ruchu załaczały mi recyrkulacje wody w obwodzie CWU.
Obecnie sa jako TYP \"ZWYKŁA\" 2EOL/NC
czy jest to mozliwe?

RobertH

#1
Zakładam, iż mowa o centrali serii NeoGSM?
Należy wykorzystać LogicProcessor np.
- funkcje logiczne (suma naruszeń wejść):
M1: OR (I1, I2, I3)
- funkcje czasowe
OneShot: Trigger=M1, Reset=0, Wyjście=O8, Czas=300

Jeżeli w czasie nieobecności pompa ma się wyłączać natychmiast to należy wykorzystać wskaźnik czuwania np.
- funkcje czasowe
OneShot: Trigger=M1, Reset=ArmFull, Wyjście=O8, Czas=300

wstan

gdzie mozna znalezc dokumentacje dotyczacą LogicProcessor?

RobertH


usiex

#4
Witam. W jaki sposób dorobić funkcjonalność do pompy cwu czujka 1, 2,3 wyzwala wyjście pompy na 2 min następnie blokada czasowa wyjścia pompy na 10min pomimo naruszenia wejść i dopiero po tych 10 min nastąpi ponowne uruchomienie pompy na 2 min. Jak to ugryźć?. Dziękuję za podpowiedź
Stworzyłem coś takiego. Kod działa poprawnie w symulatorze w tygodniu sprawdzę na żywo. 90 sekund praca pompy 900 sekund przerwa kolejne wyzwolenie wejść od 1-5 powoduje kolejny cykl 90-900.Strefa pierwsza musi być rozbrojona.Pompa na Out 8.

int as1;
int I1;
int I2;
int I3;
int I4;
int I5;
int M1;
int M2;
int M3;
int O8;
main(){
gbenv();
O8=geto(8);
while(1){
gbenv();
I1=geti(1);
I2=geti(2);
I3=geti(3);
I4=geti(4);
I5=geti(5);
O8=geto(8);
M1=I1|I2|I3|I4|I5;
M2=!M2;
M3=M1&M2;
O8=pons(0,M3,as1,90);
M2=pons(1,M3,as1,990);
seto(8,O8);
};
};

usiex

Witam. Skrypt sprawdzony fizycznie na centrali. Działa jak powinien. Może ktoś z niego skorzysta. Pozdrawiam

gp69

Brawo, skrypt przydatny i działający.
Można go trochę zoptymalizować, by był trochę krótszy i zajmował mniej miejsca:

int as1,I1,I2,I3,I4,I5,M1,M2,M3,O8;
main(){
   while(1){
      gbenv();
      I1=geti(1);
      I2=geti(2);
      I3=geti(3);
      I4=geti(4);
      I5=geti(5);
      M1=I1|I2|I3|I4|I5;
      M2=!M2;
      M3=M1&M2;
      O8=pons(0,M3,as1,90);
      M2=pons(1,M3,as1,990);
      seto(8,O8);
   };
};

roxe

A co powiecie o takim skrypcie jak poniżej?
To na razie nic nie robi oprócz regulacji wyjscia O1 oraz wypisania komunikatu.
Czy to ma rację bytu w ogóle? Szczególnie chodzi mi o te WAIT komendy. One nie blokują czegoś za bardzo?


int I11;int I12;int I2;int M1;           

 main(){

  while(1){
   I12=geti(12);
   I11=geti(11);
   I2=geti(2);
   M1=I12|I11|I2;

   if(M1==1) {                  
    seto(1,1);                     
    print("ZAL na 3 min..."); 
    wait(1000*60*3);   

    seto(1,0);       
    print("WYL, czekam 15 min.....");
    wait(1000*60*15);
   };
  };

};

gp69

Problem jest taki, że blokujesz w ten sposób LogicProcessor tylko do wykonania tego jednego skryptu.
Nie będzie się dało (w sposób sensowny) wykonać innej funkcji.

roxe

Ale to WAIT blokuje cały LogicProcesor?
To nie jest tak, że mogę mieć kilka skryptów i wait blokuje tylko ten skrypt, w którym ta komenda jest zawarta?

roxe

Odpowiem sam, bo uzyskałem wiedzę od suportu.
Skrypt jest jeden jedyny, więc WAIT blokuje LP na zadany czas.

kazikskrz

Cytat: usiex w Styczeń 10, 2019, 08:52:34
Witam. W jaki sposób dorobić funkcjonalność do pompy cwu czujka 1, 2,3 wyzwala wyjście pompy na 2 min następnie blokada czasowa wyjścia pompy na 10min pomimo naruszenia wejść i dopiero po tych 10 min nastąpi ponowne uruchomienie pompy na 2 min. Jak to ugryźć?. Dziękuję za podpowiedź
Stworzyłem coś takiego. Kod działa poprawnie w symulatorze w tygodniu sprawdzę na żywo. 90 sekund praca pompy 900 sekund przerwa kolejne wyzwolenie wejść od 1-5 powoduje kolejny cykl 90-900.Strefa pierwsza musi być rozbrojona.Pompa na Out 8.

int as1;
int I1;
int I2;
int I3;
int I4;
int I5;
int M1;
int M2;
int M3;
int O8;
main(){
gbenv();
O8=geto(8);
while(1){
gbenv();
I1=geti(1);
I2=geti(2);
I3=geti(3);
I4=geti(4);
I5=geti(5);
O8=geto(8);
M1=I1|I2|I3|I4|I5;
M2=!M2;
M3=M1&M2;
O8=pons(0,M3,as1,90);
M2=pons(1,M3,as1,990);
seto(8,O8);
};
};


Jak ten skrypt wpisać do LP w NeoGSM?

Mimix

poniżej zamieszczam moją wersje cyrkulacji bez blokowania LP

sterowanie od PIR - I15
w godzinach wieczornych i rannych  tk1 (od 6 do 8 i od 19 do 23)

czas cyrkulacji 60s
czas przerwy 1800s

działa od dłuższego czasu bez problemu

kazikskrz


Mimix

wchodzisz w logical procesor - edytor tekstowy i wklejasz

int E1;
int I15;
int I40;
int M1 ;
int M2;
int M3;
int R1;
int R2;
int tk1;
main()
{
while(1){
I15=geti(15);
tk1=getenv("tk1");
I40=geti(40);
M1=I15&tk1&M2;
M3=M1|I40;
M2=!R1;
R2=pons(1,M3,0,100,1);
R1=tofd(0,R2,0,900,1);
E1=edge(0,1,R1);
seto(16,R2);
if(E1==1) {hint("cyrkulacja");};
};
};