Witam
Chciałbym w optimie za pomocą logicproseccor wykonać taki warunek:
IF (as2=1) i ((i1 != 1) lub (i2 !=1) lub (i3!=1)) THEN (O4=1) ELSE (O4=0)
Jeżeli mam tylko jedno warunek że jest uzborjona strefa i tylko jedno wejście to wszytko działa (zdjęcie 1)
Ale gdy dodam kolejne wejścia to już nie działa. Nawet jeżeli strefa jest rozbrojona to przy naruszaniu wejścia 2 lub 3 załącza się wyjście 4 a nie powinno.
Czy ktoś może mi pomóc jak to można poprawić żeby to działo ?
Wszystko działa poprawnie ponieważ, tak jak Pan napisał, warunek jest taki :
IF (as2=1) i ((i1 != 1) lub (i2 !=1) lub (i3!=1)) THEN (O4=1) ELSE (O4=0)
Natomiast tworząc warunek z kreatora nie ma możliwości dodania nawiasów - w podglądnie skryptu jak Pan zobaczy jest następujacy zapis:
if(as2==1&&I1!=1||I2!=1||I3!=1){
O4=1;
} else {
O4=0;
};
Może Pan się przełączyć na edytor tekstowy i dodać nawiasy:
if(as2==1&&(I1!=1||I2!=1||I3!=1)){
O4=1;
} else {
O4=0;
};
Warunek jest równiez do wykonania w kreatorze - rozwiązanie w załączniku.
Dziękuje za odpowiedź.
Mam jeszcze jedno pytanie. Trochę się bawię przez edytor tekstowy skryptu. I napisałem taki kod:
int as1;
int as2;
int I1;
int I2;
int I3;
int I4;
int O4;
int O5;
int M1;
int M2;
main(){
gbenv();
O4=geto(4);
O5=geto(5);
while(1){
gbenv();
I1=geti(1);
I2=geti(2);
I3=geti(3);
I4=geti(4);
O4=geto(4);
O5=geto(5);
if(as1==1&&(I1!=1||I2!=1)){
M1=1;
} else {
M1=0;
};
if(as2==1&&(I3!=1||I4!=1)){
M2=1;
} else {
M2=0;
};
O4=blnk(0,M1,0,3);
O5=blnk(1,M2,0,3);
seto(4,O4);
seto(5,O5);
};
};
Drugi blinker mi nie działał. Dopiero jak przypadkiem się przełączyłem w kreatora logiki i w zakładce przekaźniki czasowe dodałem drugi blinker (puste pole bez żadnych danych), i potem przełączyłem się z powrotem do edytora tekstowego i wkleiłem ten kod to wszytko zadziałało.
Czy rzeczywiście tak trzeba robić czy może w kodzie powinna być jeszcze jakaś dodatkowa linijka kodu?
Nie ma potrzeby ustawiania czegokolwiek w kreatorze.
Urządzenia analizują powstały lub napisany kod skryptu.
Jeżeli jest prawidłowy -powinien działać.