Vai al contenuto

mikescossa

Chiamata prioritaria

Recommended Posts

mikescossa

Buongiorno a tutti, sto automatizzando il caricamento del materiale da dei silos esterni a sei piccoli silos interni. Questo avviene con una pompa del vuoto, eccitando la rispettiva elettrovalvola posta su ogni singola stazione.

Ogni stazione ha il suo sensore di livello che fa partire il sistema. Ora il problema è gestire la priorità della chiamata se ad esempio due o più stazioni, hanno bisogno di essere riempite contemporaneamente. Ovviamente è possibile completare un solo ciclo per volta. Ho provato a scrivere una bozza di programma, ma temo che non sia corretto. In pratica ho preso il contatto del sensore di livello della prima stazione e quando chiude, mi fa partire il ciclo di chiamata solo se gli altri sensori non stanno chiamando e così via anche per le altre stazioni. Però il mio dubbio è su come il plc gestisce la priorità se più stazioni stanno chiamando. 

Condividi questa discussione


Link discussione
Condividi su altri siti
RDA

Devi pensarlo un pò come un ascensore, chi prima arriva prima alloggia per la chiamata, ovviamente il primo sensore che richiede livello becca la priorità, e gli altri si accodano, finito il primo passa la palla a chi si e prenotato per secondo e cosi via, non so se ho inteso bene il tuo problema come principio.

Saluti.

 

Condividi questa discussione


Link discussione
Condividi su altri siti
84paolo

Ciao. Una cosa molto semplice sarebbe utilizzare un contatore per ogni stazione di chiamata. Ogni stazione conta il tempo che è in attesa. Se non è in chiamata azzeri il.contatore. quello con il.contatore più alto parte a trasferire il prodotto. Quando ha finito si azzera il suo contatore e quindi partirá il successivo con il.contatore più alto. Questo è quello che mi è venuto i  mente su due piedi, ma esistono anche altri metodi altrettanto validi

Condividi questa discussione


Link discussione
Condividi su altri siti
mikescossa

Grazie per le risposte.

30 minuti fa, 84paolo scrisse:

Ciao. Una cosa molto semplice sarebbe utilizzare un contatore per ogni stazione di chiamata. Ogni stazione conta il tempo che è in attesa. Se non è in chiamata azzeri il.contatore. quello con il.contatore più alto parte a trasferire il prodotto. Quando ha finito si azzera il suo contatore e quindi partirá il successivo con il.contatore più alto. Questo è quello che mi è venuto i  mente su due piedi, ma esistono anche altri metodi altrettanto validi

non essendo esperto, che istruzione dovrei usare per "vedere" il contatore che ha contato di più?

 

Condividi questa discussione


Link discussione
Condividi su altri siti
RDA

Forse e un po' più semplice di come la racconti, visto che il tuo livello e solo on off, non sai se il primo silos e meno pieno/vuoto del 5 giusto, pertanto la condizione e questa:

tutti i serbatoi pieni nessuna apertura elettrovalvola,

il 2 in richiesta e tutti gli altri pieni setta un bit per la partenza dell'elettrovalvola vuoto ed inibisce le richieste degli altri fintanto che i secondo non è pieno, quindi la condizione è:

negato primo sensore chiuso il secondo, negato tutti gli altri livelli,  setta bit per partenza elettrovalvola del secondo serbatoio,

riempimento del 2 il bit torna od off e se il 3 richiede livello con la logica scritta per il 2 ma con il bit chiuso del 3 serbatoio riparte la giostra, e con un numero pari di righe e qualche altro controllo te la cavi.

Spero di essermi spiegato.

 

Saluti

Condividi questa discussione


Link discussione
Condividi su altri siti
mikescossa

Questa è la riga di programma che ho scritto, naturalmente, è uguale anche per le altre 5 stazioni rimanenti.

Temo di essermi spiegato male nel primo post. Provo a portare un esempio del problema che ho riscontrato con questa programmazione.

Stazione 1 non chiama, passo oltre. Stazione 2 non chiama, passo oltre. Stazione 3 chiama, attivo l'elettrovalvola di caricamento. Per riempire, ci vogliono circa 40 secondi. All'inizio della partenza di Stazione 3, chiama Stazione 1, verso la fine del caricamento della stazione 3, chiama anche Stazione 4. Ora, finito il caricamento di Stazione 3, il Plc si fermerà a farmi caricare la Stazione 4, lasciandomi per altri 40 secondi circa in attesa la Stazione 1, la quale nel frattempo, si è svuotata del tutto.

 

r1.PNG

Condividi questa discussione


Link discussione
Condividi su altri siti
84paolo

Ma infatti io ti avevo suggerito di usare dei contatori. Fai word di appoggio. Una per ogni serbatoio. Quando non hai il livello max e hai impulso a un secondo incrementi le word di conteggio. In pratica all'interno della word vedi il tempo in secondi da quanto aspetta il serbatoio. Poi per far partire la.1 quando è tutto fermo, verifichi che il contatore della 1 sia maggiore di tutti gli altri. E cosi via. 

Se però nel tempo di ricarica di un serbatoio uno va a vuoto devi vedere se dare delle priorità, magari sul serbatoio 1 il tempo lo sommi con un più due per fare in modo che reagisca prima. Ma se neanche questo basta, magari devi aggiungere altri livelli per esempio di serbatoio in esaurimento che danno la massima priorità a quel serbatoio

Condividi questa discussione


Link discussione
Condividi su altri siti
mikescossa
1 minuto fa, 84paolo scrisse:

Ma infatti io ti avevo suggerito di usare dei contatori. Fai word di appoggio. Una per ogni serbatoio. Quando non hai il livello max e hai impulso a un secondo incrementi le word di conteggio. In pratica all'interno della word vedi il tempo in secondi da quanto aspetta il serbatoio. Poi per far partire la.1 quando è tutto fermo, verifichi che il contatore della 1 sia maggiore di tutti gli altri. E cosi via. 

Se però nel tempo di ricarica di un serbatoio uno va a vuoto devi vedere se dare delle priorità, magari sul serbatoio 1 il tempo lo sommi con un più due per fare in modo che reagisca prima. Ma se neanche questo basta, magari devi aggiungere altri livelli per esempio di serbatoio in esaurimento che danno la massima priorità a quel serbatoio

Si Paolo e ti ringrazio del suggerimento, solo che non so che istruzione usare, per far leggere il contatore più alto.

Condividi questa discussione


Link discussione
Condividi su altri siti
84paolo

Devi fare dei semplici confronti. mi pare che l'istruzione sia il Cmp o qualcosa del genere.

In omron non ricordo bene la sintassi. Ma se vedi sulla guida in linea trovi tutte le istruzioni che ti servono

Condividi questa discussione


Link discussione
Condividi su altri siti
RDA

Quindi la priorità e quella di non far svuotare mai i serbatoi a valle, ma pero mi viene questo: come fai ad essere sicuro che nonostante la valvola del vuoto insegua in continuazione i serbatoi riesce a mantenere il livello mai al di sotto del minimo, in quanto come penso lo svuotamento può avvenire con una velocità del tutto aleatoria giusto?

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!

Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui

Connettiti adesso


×