Vai al contenuto
PLC Forum


Ottimizzare Gestione Livelli - Pompe


nwzah

Messaggi consigliati

Ciao Forum,

speriamo che non tutti siano in ferie .... e chi lo è ... buone ferie !!! :P:P:P

PLC S7-224

Avrei bisogno di un consiglio su che metodo applicare per la gestione combinata di 100 livelli ( letti in multiplex ) e 10 pompe da comandare.

Dal mio HMI l'utente ha visualizzate 125 vasche, vasca per vasca dichiara da che pompa dovrà essere servita, naturalmente ogni vasca ha un suo livello che comanderà la pompa impostata.

Quindi se non sbaglio ho 1250 combinazioni diverse.

Come mi consigliate di gestire queste combinazioni ?

Grazie 1000

Mauro

Link al commento
Condividi su altri siti


Mi rispondo da solo, con una soluzione pensata, cosi la potete analizzare e magari migliorarla.

Imputo un "peso" ad ogni pompa

P1 ==>100

P2==>200

P10 ==>1000

Lo stesso ai livelli :

L1 ==>1

L2 ==>2

L15==>15

L100 ==>100

Faccio la somma dei due pesi in base alla selezione dell'operatore

p.e. Pompa 6 Livello 32 ( 600+ 32 ) 632

Applico un confronto

101<XX<200 ... ATTIVO pompa 1

201<XX<300 ... ATTIVO pompa 2

.

.

.

1001<XX<1100 ... ATTIVO pompa 10

Nelle esempio attivo pompa 6 ....

Che ne pensate ... controindicazioni ... ???

Grazie

Link al commento
Condividi su altri siti

Ciao il tuo problema mi intriga molto ma non capisco cosa dovrà fare esattamente il sistema

hai 125 vasche e solo 100 livelli

hai 10 pompe, l'operatore potrà scegliere una pompa da combinare a una vasca immagino ci saranno delle valvole

o farà delle operazioni manuali l'operatore?

Comunque sia io cercherei di fare una del genere

Per ogni vasca farei una Db (Dbvasca1, Dbvasca2............)

strutturerei la Db piu' o meno cosi'

DbvascaX

Word1(Ingressi) bit 0 (stato livello)

bit 1 (scorta) bit 2 (scorta)

Link al commento
Condividi su altri siti

La cosa mi intriga, ma non hai spiegato molte cose

es hai 125 vasche, 100 livelli e 10 pompe, l'operatore puo' legare ad ogni vasca una delle 10 pompe

non descrivi la logica di funzionamento.

Come struttura di massima farei una cosa del genere

Una db per ogni vasca

La db la farei cosi'

Word1 (per eventuali settaggi per la vasca)

Bit0 vasca che lavora con o senza i livelli

Bit1 vasca abilitata

Bit2 scorta

----

Bit15 scorta

Word2 (ingressi, se appoggi i tuoi ingressi su una db poi sul touch puoi sempre visualizzare lo stato dei livelli )

Bit 0 stato livello

Bit 1 scorta

----

Bit 2 scorta

Word3 (qui appoggerei i bit bit che mi servono per la logica di funzionamento)

Word4 (pompa selezionata da touch per la vasca)

(se 0 nessuna pompa, se 1 pompa1,se 2 pompa2, se maggiore del numero max di pompe lo ributti a 0 da programma)

Word5 (uscite)

Bit0 richiesta marcia generale

Bit1 richiesta marcia pompa1 (se in word 4 c'e 1, e la logica di funz richiede la marcia della pompa)

Bit2 richiesta marcia pompa2 (se in word 4 c'e 2, e la logica di funz richiede la marcia della pompa)

----

Bit15 scorta

A questo punto farei un Fb o Fc a cui far macinare le mie Db ciclicamente

tu dici che hai farai un multiplexing per cui potresti legare il giro delle db al giro del multiplexing

Quando hai elaborato tutte le Db, fai un un word-or di tutte le word5 di ogni Dbvasca

nella word avrai il

il Bit 1 true se una qualsiasi vasca richiede la partenza della pompa1

il Bit 2 true se una qualsiasi vasca richiede la partenza della pompa2

etc

etc

In questo modo usi un solo Fb o Fc per tutte le vasche, se un domani devi fare una modifica ci metti un secondo,

eviti di fare mille copia incolla,

va fatta bene la parte di controllo del completamento del ciclo di scansione

in prima di attivare le uscite es quando si riaccende il plc magari sarebbe bene assicurarsi di aver fatto grare tutte le db

onde evitare di far partire l'impianto con dati non aggiornati

Non conosco molto siemens ma sono sicuro che un modo per far girare piu' db su un solo fc c'e

spero di non aver detto stupidaggini e di averti dato qualche idea su come procedere,

potrei prepararti qualcosa giusto per il gusto di farlo, ma io uso omron, e non saprei come fare

per darti un codice che puoi veder girare, conosci CodeSys? è a scrocco :smile::smile::smile::smile::smile::smile::smile::smile::smile::smile: basta registrarsi.

Link al commento
Condividi su altri siti

Grazie Marcoso,

la logica è molto semplice, ogni vasca ha il proprio livello ( 100 livelli ), quando il livello chiama, fa partire la pompa che l'operatore ha settato per quella vasca.

Quando la vasca è piena la pompa si ferma.

Codesys lo conosco più di Siemens, uso di solito Schneider, ma purtroppo sono obbligato ad usare una cpu del cliente.

Se mi giri il codice me lo studio e provo a portarlo sul 200 ...

Grazie 1000

Mauro

Link al commento
Condividi su altri siti

  • 3 months later...
  • 3 months later...

Ciao Attilio,

problema risolto, con db e puntatori per ogni pompa .... aggiorno ogni singolo DB a seguito della chiamata dei forni, ed interrgoando il DB comando l'uscita della pompa relativa.

Il programma mi occupa l'80% delle risorse del PLC, considerando che il cliente mi ha dato l'HD con il quale ho dovuto fare un multiplex per leggermi tutti i gallegiani, ho avuto seri problemi con il WD per superamento del tempo ciclo .... un pò un agonia per il rapporto fra la quantità I/O e la potenza dell HW .... però adesso è li che funziona buono buono senza problemi e senza blocchi.

 

Mauro

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...