Jump to content
PLC Forum
Informazione di servizio:
Questa versione del forum si basa su una installazione non completa in quanto a seguito dell'incendio del datacenter di Strasburgo avvenuto il 10 marzo.
Stiamo attendendo di avere accesso agli ultimi backup siti nello stesso datacenter. Appena disponibili provvederemo all’integrazione dei dati.
Tutti i malfunzionamenti che potreste riscontrare (mancanza di file, immagini, messaggi privati, discussioni, post e funzionalità del sito) sono dovuti al ripristino ancora in versione parziale dei database, file e pagine web.
Per chi volesse fare delle segnalazioni può scrivere a segnalazioni@plcforum.it o attraverso la nostra sezione di assistenza disponibile su ticket.plcforum.it

Vi ringraziamo anticipatamente per la pazienza e l'attesa a cui, nostro malgrado, vi stiamo sottoponendo.

Grazie
L'amministrazione di PLC Forum.



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. 

Link to post
Share on other sites

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.

 

Link to post
Share on other sites
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

Link to post
Share on other sites
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ù?

 

Link to post
Share on other sites
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

Link to post
Share on other sites
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

Link to post
Share on other sites
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

Link to post
Share on other sites
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.

Link to post
Share on other sites
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

Link to post
Share on other sites
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?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...