guazze Inserito: 16 giugno 2021 Segnala Share Inserito: 16 giugno 2021 buona sera ho un questito da sotopporvi. ho costrioto un FC nel quale vado a gestire un marci/arresto di utenza ( motore; luce; ecc). tale Fc lo vogli richiamare tutte le volte che ho necessità di gestire una nuova uscita con la stessa logica e ingressi differenti. fino a quando FC nel quale vi è la logica di richiamo, viene richiamato solo una sola volta le scite si comportano in modo corretto, ma quando vado a inserirlo per la seconda volta e di conseguenza vado a variare ingressi e uscite, il PLC alza tutte le uscite indistintamente da quale ingresso va a valore 1. ho effettuato varie prove ma tutte portano allo stesso risultato..... le elenco qui di seguito: -Logica dui richiamo scritta in fc e lo stesso richiamato in altro fc - logica di programma scritta in un Fb e richiamato in un FC ecc. A questo punto credo e ne sono convinto che sto sbagliando qualche cosa, ma non so cosa. Potreste aiutarmi? inserisco immagine di come ho scritto la logica di funzionamento. Dove sto sbagliando?? io ritengo che siano i merker che mi causano l'anomalia e così? Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 (modificato) Devi dichiarare tutte le variabili dell'FC come ingressi uscite e IO, a quel punto puoi richiamare l'fc più volte e nel richiamo associ le tue variabili fisiche es Input P6 Pul1 Output IO Tag_1 Tag_4 Tag_6 L1 Luc1 L1 e Luc1 sono legati alla stessa variabile vero? Modificato: 17 giugno 2021 da acquaman Link al commento Condividi su altri siti More sharing options...
leleviola Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 mi sembra non vada bene che usi il tag per i due fronti una variabile generale, mi sa che devi usare un altro metodo, magari una variabile locale, o qualcosa di indicizzato se vuoi usare le variabili generali, così fatto appena si verifica un fronte e l'FB la richiami varie volte a seconda delle uscite che devi comandare si attivano tutte perchè il tag di appoggio è generale la condizione si attiva in tutti i richiami. Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 10 ore fa, guazze scrisse: ho costrioto un FC Usa una FB, non FC Link al commento Condividi su altri siti More sharing options...
guazze Inserita: 17 giugno 2021 Autore Segnala Share Inserita: 17 giugno 2021 ho provato a che a fare quello, ma niente.....il problema sostanziale credo che risiede nell'utilizza nelle memorie dei fronti di salita... come potrei ovviare? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 Nella tua FC utilizzi delle variabili globali (M1.0, M1.1, M2.0, Q0.1). Le soluzioni, come ti hanno già suggerito, sono due: o passi tutte le variabili come IN/OUT o, meglio, usi una FB al posto di una FC, appoggiandoti a variabili STAT. Ad ogni richiamo della FB, fai riferimento ad un diverso DB di istanza. Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 1 ora fa, batta scrisse: meglio, usi una FB al posto di una FC Sicuramente l'FB è più pulito, ma creare una DB di istanza per appoggiare 3 BIT mi sembra eccessivo, in questo caso rimarrei con l'FC. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 (modificato) 7 minuti fa, acquaman scrisse: ma creare una DB di istanza per appoggiare 3 BIT mi sembra eccessivo, in questo caso rimarrei con l'FC. Diciamo che per fare quello che si vede nell'esempio anche una FC mi pare eccessiva. Credo si tratti di un esempio, di una prova per chi sta imparando a programmare, quindi, più che i tre bit, ho pensato al concetto. Bisognerebbe anche capire cosa si vuole fare, con questa FC, perché non è molto chiaro. Sembrerebbe quasi un flip-flop fatto in modo molto complicato e del quale non si vede tutta la logica. Modificato: 17 giugno 2021 da batta Link al commento Condividi su altri siti More sharing options...
guazze Inserita: 17 giugno 2021 Autore Segnala Share Inserita: 17 giugno 2021 come dice Acquaman , io ero partito da quell'idea li.ma mi sono incartato grazie alle memorie. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 17 giugno 2021 Segnala Share Inserita: 17 giugno 2021 2 ore fa, guazze scrisse: io ero partito da quell'idea li.ma mi sono incartato grazie alle memorie. Ma hai capito dov'è il tuo errore, o ancora no? Il problema è che tutte le memoria che hai usato internamente alla tua FC sono sempre le stesse, ad ogni richiamo della FC. Se al primo richiamo della FC, per esempio, fai il SET di M2.0, nei richiami che seguono la FC leggerà lo stato di M2.0 = TRUE. Stai usando delle memorie che non sono interne alla FC, ma sono memorie globali. Esiste un solo M2.0 per tutto il programma, non c'è un M2.0 per ogni FC. Quindi, o dichiari queste memorie come IN/OUT (cambiando, chiaramente, il bit collegato alla funzione ad ogni richiamo della funzione stessa), oppure utilizzi le variabili STAT di una FB. Le funzioni FC ed FB hanno anche delle variabili locali (TEMP), ma queste variabili sono, appunto, "temporanee", e non hanno più valore una volta che esci dalla funzione. In altre parole, se scrivi un valore in una variabile Temp, questo valore viene perso quando esci dalla funzione. Con le CPU S7-300 potevi trovare un valore casuale, con le 1200/1500 il sistema azzera le variabili Temp. Una volta capito come usare le memorie in una FC (o in una FB), potresti anche dire cosa intendi fare, con quella funzione. È solo un test, si tratta di un flip-flop, o altro? Se è un flip-flop (o toggle, se preferisci), ci sono modi molto più semplici per realizzarlo. Link al commento Condividi su altri siti More sharing options...
guazze Inserita: 17 giugno 2021 Autore Segnala Share Inserita: 17 giugno 2021 buona sera betta si è un flip-flop . sono riuscito a farlo funzionare, ho utilizzato un FB dentro un FC. Nell'FB le memorioe le ho dichiarate come Static da quel momento tutto va ... logicamente ogni volta che richiamo il blocco Fb in unnFC si genere un DB. potresti consigliarmi metodi piu veloci per chreare un flipflop? Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 18 giugno 2021 Segnala Share Inserita: 18 giugno 2021 Se cerchi nel forum flip flop o toggle ne trovi tantissimi di esempi. Link al commento Condividi su altri siti More sharing options...
guazze Inserita: 18 giugno 2021 Autore Segnala Share Inserita: 18 giugno 2021 grazie mille Link al commento Condividi su altri siti More sharing options...
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