ottoz Inserito: 8 aprile 2020 Segnala Inserito: 8 aprile 2020 un saluto a tutti ho una cosa che capisco e non riesco a venirne a capo #T1.TON(IN := #Y1 OR #Y2 , ET => #tempo, PT := t#5s, Q=>#y3); quando Y1 va a 1 , y3 si eccita , mentre non avviene nulle quando Y2 va a1 eppuire istruzione in ing e un OR come è possibile? ringrazio anticipatamente ciaoo
pigroplc Inserita: 8 aprile 2020 Segnala Inserita: 8 aprile 2020 ottoz, stai sbagliando tu qualcosa da qualche altra parte perché la condizione di OR è accettata e funzionante.
ottoz Inserita: 9 aprile 2020 Autore Segnala Inserita: 9 aprile 2020 ciao, probabilmente appena si disecita Y1 passa contemporaneamnte a settareY2 senza avre il tempo di tranzione da 0 a 1 puo essere? cioè il cambio avviene istantaneamente e quindi non vede il fronte? mi sa che devo trovare un altra soluzione
batta Inserita: 9 aprile 2020 Segnala Inserita: 9 aprile 2020 Come si fa a risponderti senza sapere come comandi Y1 e Y2 ???
pigroplc Inserita: 10 aprile 2020 Segnala Inserita: 10 aprile 2020 quando mi capita di incartarmi in qualche cosa strana comincio a togliere roba, quindi scavando salta fuori il vero motivo. Io al tuo posto avrei messo in OR altri 2 bit NUOVI e INUTILIZZATI, in modo da alzarli solo con una tabella di forzatura. A quel punto in funzione del risultato hai scremato da che parte sta il problema, magari successivamente scopri che #Y2 viene azzerato prima della elaborazione del blocco.
ottoz Inserita: 14 aprile 2020 Autore Segnala Inserita: 14 aprile 2020 in pratica non appena Y1 si diseccita istantaneamente si eccita Y2 diciamo che con y1 Y3 si eccita dopo aver contato il tempo mentra non non conta se si eccita Y2 ma se inverto Y2 OR Y1 anzichè Y1 OR Y2 allora funziona inversamente y1 e y2 vengono comandate dal programma e funziona cosi: quando Y1va a1 dop 5 sec si eccita y3, allo stesso modo succede per y2 che quando va 1 fa eccita y3 ma non va cioe funziona solo con la prima variabile di sinistra di OR quando si diseccitaY1 istantaneamente si eccita Y2
batta Inserita: 14 aprile 2020 Segnala Inserita: 14 aprile 2020 Hai descritto quello che vorresti fare, ma il tuo programma, evidentemente, non fa ciò che tu vorresti. Senza vedere il codice, come pensi che ti possiamo dire dov'è l'errore?
max.bocca Inserita: 14 aprile 2020 Segnala Inserita: 14 aprile 2020 Fai il debug e vedi cosa succede Ho provato per curiosità...
batta Inserita: 16 aprile 2020 Segnala Inserita: 16 aprile 2020 Non può non funzionare! Come ti ho già detto, se non possiamo vedere il tuo programma, non possiamo nemmeno dirti dov'è l'errore. Chiami il medico, e gli dici: "Dottore, mi fa male un piede". E il dottore: "Sì, ma dove di preciso?" Tu - Le ho detto che mi fa male un piede. Doc - Sì, ma dove le fa male? Che tipo di dolore? Ha subito un trauma? Tu - Mi fa male un piede. I suoi piedi stanno bene? Capirai che si potrebbe continuare all'infinito, senza mai arrivare ad un risultato.
ottoz Inserita: 17 aprile 2020 Autore Segnala Inserita: 17 aprile 2020 // ciclo caricamento liquido IF #ciclo = 1 AND (#s3 = 0 OR #s5 = 0) THEN #mk1 := 1; #H1 := 1; ELSIF #Emerg = 1 THEN #Mk0 := 0; #H1 := 0; #Y1 := 0; #Y2 := 0; #Y3 := 0; #mk1 := 0; END_IF; //temp" per apetura ritardo #Y3 #T1.TON(IN := #Y1 = 1 OR #Y2 = 1, ET => #tempo, PT := t#5s, Q => #Y3); IF #stop = 1 AND #s4 =0 OR #s6 = 0 THEN #mk1 := 0; #H1 := 0; END_IF; // comando carico tank n1 IF #s3 = 0 AND #mk1 = 1 AND #s4 = 1 AND "H1_ciclo" = 1 THEN #Y1 := 1; ELSIF #s3 = 1 AND #s4 = 0 THEN #Y1 := 0; END_IF; IF #s4 = 0 AND #s5 = 0 AND #s6 = 1 AND #s3 = 1 AND #mk1=1 THEN #Y2 := 1; ELSIF #s4 = 1 AND #s5 = 0 AND #s6 = 1 AND #s3 = 0 AND #Mk0=0 AND #mk1=1 THEN #Y2 := 0; ELSIF #s6 = 1 AND #s5 = 0 AND NOT #s4=0 AND #Mk0=1 AND #mk1=1 THEN #Y2 := 1; ELSIF #s6 = 0 AND #s5 = 1 AND #mk1=1 THEN #Y2 := 0; END_IF; #Mk0 := #s4 = 0 AND #s5 = 0; // segnalazione serbatoi #H2 := NOT "S3_Min_Liv_Tank1"; #H3 := NOT "S5_Min_Liv_Tank2"; #H4 :=NOT #s4; #H5 := NOT #s6; IF #s4 = 0 OR #s6 = 0 AND #mk1=1 THEN #Y3 := 0; END_IF;
pigroplc Inserita: 17 aprile 2020 Segnala Inserita: 17 aprile 2020 dando un'occhiata senza perderci tempo adesso, vedo subito che #Y3 lo pasticci più volte nel codice e questo è sbagliato! Y3 deve essere una uscita legata al timer. Se lo vuoi ammazzare devi attenerti alle condizioni iniziali di lancio del timer cioè Y1 e Y2. altra cosa: se le interrogazione sono booleane non serve controllare = 1 IF #stop = 1 AND #s4 =0 OR #s6 = 0 THEN ... diventa IF (#stop AND NOT #s4) OR #s6 THEN..... // metti le parentesi che non sbagli mai.....
ottoz Inserita: 19 aprile 2020 Autore Segnala Inserita: 19 aprile 2020 grazie del suggerimento seguirò il tuo consiglio ciao a presto
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora