Jump to content
PLC Forum


riempimento serbatoio


Recommended Posts

Posted (edited)

Buongiorno a tutti

sono un elettricista alle prime armi con i plc, diciamo che me la cavo a ricercare guasti e fare qualche bypass un pò su tutti i plc , ma non bene come i programmatori

Devo controllare il riempimento e lo svuotamento di una decina si serbatoi di acqua trattata, non ci sono galleggianti ma dei tubi esterni ad ogni serbatoio con un "cilindretto" collegato con una funicella al serbatoio... su questo tubo esterno ci sono tre sensori : uno di basso, uno di medio e uno di massimo livello...

ho un plc omron cj1

pensavo di usare i due sensori di basso e medio per fare una specie di "encoder" e memorizzare ... poi mi sono arenato...

 

voi come fareste? grazie

Edited by Domenico Maschio

Posted

Non sapendo altro si potrebbe ipotizzare che con il livello basso inizi a caricare liquido e smetti quando hai raggiunto il livello di alto.

Però bisognerebbe avere qualche dato in più; ad esempio potrebbe essere necessario partire a caricare quando sei sotto il livello medio, oppure fermare il carico non appena superato il livello medio.

tortellino79
Posted

Buongiorno e buon anno 

 

Il serbatoio si riempe sempre da vuoto, quindi il primo sensore che si accende è quello del minimo, poi il sensore di medio infine ma non sempre quello di massimo... I sensori però non rimangono accesi, si spengono quando il cilindretto li supera sia in riempimento che in svuotamento... 

Per quello pensavo di metter minimo e medio vicini e creare un pseudo encoder... 

 

Posted

Quindi il tuo scopo è svuotarli man mano che si riempiono? Questi sensori però non puoi trattarli come uno "pseudo encoder" a meno che non ti calcoli il tempo che intercorre tra l'arrivo del segnale di livello minimo e quello medio e su quello poi ci fai dei calcoli per capire quanti litri al minuto entrano e di conseguenza quanto tempo devi fare funzionare la pompa per svuotarli quanto ti serve. Sempre che questo sia il tuo intento.... Spiega meglio nel dettaglio cosa vuoi ottenere e come.

Posted

Tortellino79, Se i sensori hanno un funzionamento come da te descritto, dovrai memorizzare e poi resettare con il successivo sensore il loro intervento, altrimenti non avrai mai la situazione sotto controllo. es. se memorizzi il minimo la funzione di svuotamento si fermerà e si attiverà una volta resettato con il medio come la funzione di riempimento terminerà con il massimo, verrà memorizzato  e sarà riattivabile una volta ripassati per il medio che appunto resetterà anche il massimo. questo automatismo riuscirebbe bene e sicuro fatto a relè elettromeccanici bistabilì SR, i quali si "ricordano" lo stato anche al mancare della tensione di alimentazione. Buon anno.

Posted

Anche i PLC si ricordano lo stato se vengono spenti.. 🤣

  • Domenico Maschio changed the title to riempimento serbatoio
tortellino79
Posted

buongiorno e buon proseguimento a tutti quanti

 

 

avevo pensato anche io al set/reset, so che su plc omron si usa gli HR (holdind relè) che rimangono alti in caso di mancanza di tensione

partiamo dalla fase iniziale in cui il serbatoio è vuoto

 

"LIv_min"  SET "Mem_Minimo"

"Mem_Minimo" and "Liv_Med"  SET "Mem_Medio" RSET "Mem_Minimo"

"Mem_Medio" and "Liv_Max" SET "Mem_Max"  RSET "Mem_Medio"

 

ora il serbatoio è pieno e inizia lo svuotamento

 

"Mem_Max"  and "Liv_Medio" SET "Mem_Medio" RSET "Mem_Max"

"Mem_Medio" and "Liv_Min" SET "Mem_Minimo" RSET "Mem_medio"

"Mem_Min" andnot "Liv_Min" RSET "Mem_Minimo"

 

non sempre il serbatoio viene riempito fino al livello massimo, durante le fasi di caricamento e svuotamento si creano delle turbolenze che potrebbero falsare le letture dei sensori...

meglio usare delle memorie diverse per riempimento e svuotamento?

 

 

 

 

Posted

C'è qualcosa che non va.
Per esempio, nell'ultima riga resetti "Mem_Minimo" se perdi il segnale di livello minimo. Ma il segnale lo perdi  se il livello scende, ma lo perdi anche se il livello sale.
E, se azzeri "Mem_Minimo", visto che questa memoria la usc per il set di "Mem_Medio", "Mem_Medio" non si attiverebbe mai.
Quindi, dovresti inserire ulteriori controlli per tener conto se stai riempiendo o se stai svuotando.

 

Ma potresti semplificare il tutto togliendo le condizioni che non servono.

Quando viene impegnato un sensore, non ti serve controllare a quale livello eri prima, ma ti basta impostare lo stato relativo a quel livello.
Voglio dire, se è impegnato il sensore del livello medio, semplicemente ti basta fare il set di "Mem_Medio" ed il reset di "Mem_Min" e di "Mem_Max", indipendentemente dallo stato precedente di "Mem_Min" e di "Mem_Max".
Se poi hai necessità di sapere anche se sei sotto al livello minimo, come detto prima devi rilevare la perdita del sensore di minimo mentre stai svuotando.
Ma, secondo me, questa condizione non ti serve: il riempimento parte se sei al minimo (o sotto al minimo), e si arresta, credo, quando arriva a livello medio (o massimo).
Come condizione di partenza, potresti settare la memoria "Mem_Minimo" (e resettare "Mem_Medio" e "Mem_Max") non solo quando viene impegnato il livello di minimo, ma anche se non hai nessuna memoria attiva.
Oppure, con il segnale di livello minimo potresti solo resettare "Mem_Medio" e "Mem"Max" e "Mem_Min" potrebbe essere solo il risultato di NOT "Mem_Medio" AND NOT "Mem_Max".

 

Altra possibilità, potresti assegnare un valore ad una variabile, tenendo conto anche (se ti può servire) dei livelli intermedi.
Per esempio:

0 = sotto livello minimo
1 = livello minimo

2 = tra livello minimo e livello medio

3 = livello medio

4 = tra livello medio e livello massimo

5 = livello massimo

6 = oltre livello massimo

 

Se viene impegnato un sensore di livello, imposti direttamente il valore corrispondente (1, 3, 5).
Se sei a livello 1 e perdi il sensore mentre stai riempiendo, passi a livello 2.
Se sei a livello 1 e perdi il sensore mentre stai svuotando, passi a livello 0.

Uguale ragionamento per il passaggio da 3 a 2 e da 3 a 4, e per il passaggio da 5 a 4 e da 5 a 6.

 

Se il livelli intermedi non ti servono, potresti semplicemente impostare i valori come segue:
0 = livello minimo

1 = livello medio

2 = livello massimo

 

Qualunque sia il sistema che adotterai, come ti è già stato detto è importante che le memorie siano di tipo ritentivo.
A dire il vero, potrebbe anche non essere importante, ma solo tu lo puoi sapere.
Usando memorie non ritentive partiresti dalla condizione di serbatoio vuoto, che potrebbe non essere la condizione reale. Appena viene impegnato un sensore, tutto si risistema.

 

Posted (edited)

Buongiorno 

e scusate l'intromissione.

A dire il vero con il modo di funzionamento dei sensori  descritto io i set / reset non li userei proprio.. 

Almeno per il sensore di massimo farei in modo di posizionarlo in modo tale che sicuramente rimanga in uno stato conosciuto anche se il livello viene superato per scongiurare di riempire il serbatoio oltre il dovuto e farlo tracimare.

 

Di solito funzionano come contatti normalmente chiusi ( 1 fino a quando non raggiungono il livello 0 quando lo raggiungono o lo superano ) cosi se si rompe qualcosa non ti allaghi :)

 

 

Non è che agendo sulla cordicella che hai detto , magari aggiungendo qualcosa , riesci a riportare i sensori in questa condizione ?

Se si allora la logica si semplifica tantissimo , oltre ad avere un funzionamento intrinsecamente più sicuro.

Per le turbolenze a cui fai cenno di solito in queste applicazioni gli ingressi a cui vengono collegati i sensori non vengono usati direttamente nella logica ma vengono filtrati con dei temporizzatori che trovi come oggetti nel plc stesso.

 

Buona fortuna.

 

 

Edited by AlexB
la fretta genera mostri ( di ortografia.. )
tortellino79
Posted

intanto grazie @batta e @AlexB per i vostri interventi....

il plc non sa se è la fase di riempimento o di svuotamento: 

lo svuotamento (piccolo ma continuo) e il riempimento sono "manuali" ma devo bloccare quest'ultimo  perchè non tracimi.

la gestione dei livelli mi serve per bloccare il riempimento : quando il  serbatoio raggiunge il livello medio devo segnalare e interbloccare il caricamento, l'operatore acquisisce l'informazione e continua a caricare il serbatoio fino al blocco da livello massimo.....

dimenticavo di aggiungere che il riempimento può essere fatto anche se il serbatoio non è vuoto, per questo avrei messo vicini i sensori di minimo e medio in modo da capire se il serbatoio si svuota o si riempie

 

mi suggerite qualche passo di programma?

 

grazie

 

 

 

Posted
43 minuti fa, tortellino79 ha scritto:

il plc non sa se è la fase di riempimento o di svuotamento: 

Quindi il PLC è usato solo per informare l'operatore dello stato della vasca?

 

Vale comunque quanto già detto: quando vedi un segnale, imposti i bit di memoria livello (o il valore di una variabile) nella condizione corrispondente.

Vedo il segnale di livello minimo? Memorizzo che sono a livello minimo e, questa condizione, rimane fino a quando non vedo un segnale che mi dice quialcosa di diverso.

Ho raggiunto il livello medio? Memorizzo questa situazione, che cambierà solo quando vedrò il segnale di livello minimo o di livello massimo.

Ho raggiunto il livello massimo? Memorizzo questa situazione, che cambierà solo quando vedrò il segnale di livello medio.
In base al funzionamento desiderato, decidi tu quale stato assumere come stato di partenza in caso di condizioni ignote.

 

50 minuti fa, tortellino79 ha scritto:

per questo avrei messo vicini i sensori di minimo e medio in modo da capire se il serbatoio si svuota o si riempie

Non capisco di preciso cosa intendi.

Per capire se il livello sta aumentando o diminuendo, i sensori dovrebbero essere posizionati in modo da avere una sovrapposizione dei segnali. In questo modo, sui fronti di salita e di discesa di un segnale, analizzando lo stato dell'altro segnale riesci a capire come si sta muovendo il livello. Ma, il fatto che stia aumentando o diminuendo in quel particolare istante, non significa che questa condizione non cambi in altri istanti.

 

Comunque, io mi chiedo sempre perché ci si debbano sempre inventare "cose strane", quando esistono da parecchi decenni i controlli di livello conduttivi, fatti con delle semplici aste di metallo. Oppure, dei semplici galleggianti.
Che poi, con uno di questi dispositivi, se devi solo informare l'operatore, accendi direttamente delle lampade spia, senza nemmeno bisogno di un PLC.
O mi sfugge qualcosa, o qualcuno si sta inutilmente complicando la vita.

tortellino79
Posted

@batta  hai perfettamente ragione ma i miei clienti sono speciali per complicarsi la vita, prima c'erano dei sensori gavazzi magnetici che si settavano in riempimento e si resettavo nel senso di svuotamento, poi hanno buttato via tutto e qualche altro elettricista per spendere di meno ha messo dei sensori induttivi normali

 

ok metto i sensori nella posizione di sovrapposizione segnale, come faccio??

 

⬆️ sens_1 and....

 

. me

 

 

 

 

Posted

Chiamiamo i due segnali A e B (tanto per rifarsi ai segnali di un encoder).
Supponiamo che, partendo da vasca vuota, il livello che sale impegni i sensori in questo ordine:
fronte salita segnale A

fronte salita segnale B

fronte discesa segnale A

fronte discesa segnale B

 

Partendo invece dall'alto con il livello che scende, troveresti questa situazione:

fronte salita segnale B

fronte salita segnale A

fronte discesa segnale B

fronte discesa segnale A

 

Potresti discriminare 4 punti e, per ogni punto, capire se il livello sta salendo o sta scendendo

Esempio:
FP = fronte positivo (fronte salita) del segnale
FN = fronte negativo (fronte di discesa) del segnale

 

FP_A AND NOT B --> il livello sta salendo
FP_B AND A --> il livello sta salendo

FN_A AND B --> il livello sta salendo

FN_B AND NOT A --> il livello sta salendo

 

FP_B AND NOT A --> il livello sta scendendo

FP_A AND B --> il livello sta scendendo

FN_B AND A --> il livello sta scendendo

FN_A AND NOT B --> il livello sta scendendo

 

A te, probabilmente, interessa un solo punto. Prendi quello che più ti piace.
Tra i quattro possibili, io consiglierei o il cambio di stato del segnale A con segnale B presente, oppure il cambio di stato del segnale B con segnale A presente.

 

Per evitare di avere continui cambi di stato dovuti alla fluttuazione del livello, come ti è stato già consigliato dovresti filtrare i segnali con dei timer.

 

 

 

tortellino79
Posted

@batta  grazie mille, sei proprio gentile e disponibile

come posso ricompensarti? minimo una cena...

 

se invece uso i tre livelli distinti come posizione...

 

riempimento...

"Liv_min" SET "Mem_MIN" RSET "Mem_MEDIO" RSET "Mem_ALTO"

"Liv_medio" SET "Mem_MEDIO" RSET "Mem_MIN" RSET "Mem_ALTO"

"Liv_alto" SET "Mem_ALTO" RSET "Mem_MEDIO" RSET "Mem_MIN"

 

svuotamento

"Liv_alto" SET "TIMER_ALTO"

"Liv_alto" AND "TIMER_ALTO" SET "Mem_ALTO1" RSET "Mem_ALTO"

"Liv_medio" SET "Mem_MEDIO1" RSET "Mem_MIN1" RSET "Mem_ALTO1"

"Liv_min" SET "Mem_MIN1" RSET "Mem_MEDIO1" RSET "Mem_ALTO1"

"Liv_min" SET "TIMER_MIN"

"Liv_min" AND "TIMER_MIN" SET "Mem_MIN" RSET "Mem_MIN1"

 

ma mi pare non funzioni perchè non riesco a discriminare quando si riempie o quando si svuota

 

riparlando col cliente devo interbloccare il caricamento col livello MEDIO, gestire il bypass dell'operatore e bloccare il caricamento con il livello MAX

quindi per forza di cose devo discriminare se sto riempiendo o svuotando e tenendo conto che  non sempre lo svuotano fino al livello MIN prima di ricaricarlo e non sempre lo caricano sino al MAX....

Posted

Io non ho ancora capito come funziona questo sistema. Il PLC non sa se la vasca si sta riempiendo o svuotando, quindi non è il PLC che gestisce riempimento e svuotamento.
Però mi dici che devi interbloccare il caricamento con il livello medio, gestire il bypass dell'operatore, bloccare il caricamento con il livello massimo.

 

Comunque, se hai bisogno di sapere sempre a che livello è la vasca, basta abbandonare i tre segnali digitali e passare ad un segnale analogico.

tortellino79
Posted
23 minuti fa, batta ha scritto:

Io non ho ancora capito come funziona questo sistema. Il PLC non sa se la vasca si sta riempiendo o svuotando, quindi non è il PLC che gestisce riempimento e svuotamento.
Però mi dici che devi interbloccare il caricamento con il livello medio, gestire il bypass dell'operatore, bloccare il caricamento con il livello massimo.

 

Comunque, se hai bisogno di sapere sempre a che livello è la vasca, basta abbandonare i tre segnali digitali e passare ad un segnale analogico.

 

@batta ti ringrazio, l'impianto è fatto così.... il riempimento è fatto da esterni a cui devo avvertire/bloccare il carico

 

a questo punto uso il sistema " encoder" e pace

FP_A AND NOT B --> il livello sta salendo
FP_B AND A --> il livello sta salendo

FN_A AND B --> il livello sta salendo

FN_B AND NOT A --> il livello sta salendo

 

FP_B AND NOT A --> il livello sta scendendo

FP_A AND B --> il livello sta scendendo

FN_B AND A --> il livello sta scendendo

FN_A AND NOT B --> il livello sta scendendo 

 posso usarli in parallelo per settare e poi resettare il merker??

 

 

Posted
4 ore fa, tortellino79 ha scritto:

posso usarli in parallelo per settare e poi resettare il merker??

Sì, certo. Ma continuo a non capire cosa te ne fai.

tortellino79
Posted
17 ore fa, batta ha scritto:

Sì, certo. Ma continuo a non capire cosa te ne fai.

 

Grazie @batta

 

ne basta solo uno per tipo per settare/resettare il merker??

per ogni segnale è meglio mettere un filtro di 2sec  sia per lo stato ON che per lo stato OFF ??

 

 

Posted
1 ora fa, tortellino79 ha scritto:

ne basta solo uno per tipo per settare/resettare il merker??

Se ti riferisci al fatto che puoi avere 4 punti dove rilevi se il livello sta salendo o sta scendendo, sì, puoi anche prendere in considerazione un solo punto.
Ma continuo a non capire a cosa ti serve: sai esattamente a che livello è il liquiodo e se sta salendo o scendendo, e cosa te ne fai? Non hai bisogno di sapere se sei a livello minimo, medio o massimo? A meno che tu non intenda duplicare i segnali per tutti e tre i livelli, per un totale di 6 segnali. In questo caso, per ogni livello, oltre a conoscere dove si trova il livello esatto, sai anche se sale o se scende, e questo ti può aiutare per ulteriori analisi.
Ma, a questo punto, perché non sostituire sei sensori e sei ingressi digitali con un unico trasduttore ed un unico ingresso analogico? Forse, considerando anche staffe per il fissaggio dei sensori, cavi, posa dei cavi, cablaggi, ecc., ti costerebbe anche meno.
Se il liquido è acqua non troppo sporca, basta un trasduttore di pressione posto sul fondo della vasca.

 

Per filtrare il segnale, meglio ritardare sia il passaggio da off a on, sia quello da on a off, ma potrebbe andare bene anche ritardare solo la commutazione da off a on. Molto dipende da quanto è turbolento il fluido. E, sempre da come si comporta il fluido, dipenderà il ritardo ideale del segnale.

tortellino79
Posted
Il 5/1/2022 alle 16:11 , batta ha scritto:

.....Ma continuo a non capire a cosa ti serve: sai esattamente a che livello è il liquido e se sta salendo o scendendo, e cosa te ne fai? Non hai bisogno di sapere se sei a livello minimo, medio o massimo? .....

@batta grazie ancora

 

alla fine hanno deciso che gli interessa solamente interbloccare il riempimento con il livello medio e bloccarlo con il livello max

quindi devo settare un relè con il livello medio quando sto riempiendo il serbatorio e resettarlo quando libero il livello medio in svuotamento....

Posted

ciao, non so se posso esserti di aiuto ma potresti provare ad adattare alle tue esigenze questo programma di un mixer a due componenti che gira su Omron e lavora su tre livelli del serbatoio. Ovviamente se la funzione mixer e/o dosaggio non ti servono le puoi sempre eliminare.   Purtroppo non riesco a caricare il .cxp sul forum ma te lo posso inviare se lo vuoi. 

 

spero di esserti stato utile.
Mixer_Pagina_1.thumb.jpg.ef74aa4e8235bfc6e688cec21b72f1a7.jpg

Mixer_Pagina_2.jpg

Posted (edited)

Ammiro la buona volontà ma, per gestire un serbatoio con tre livelli, una volta capito come deve essere gestito (ed è proprio questo che non si è ancora capito), scrivere il programma da zero è sicuramente più facile che adattare un programma nato per qualcos'altro.

Edited by batta
  • 3 weeks later...
Posted
Il 14/1/2022 alle 13:16 , batta ha scritto:

Ammiro la buona volontà ma, per gestire un serbatoio con tre livelli, una volta capito come deve essere gestito (ed è proprio questo che non si è ancora capito), scrivere il programma da zero è sicuramente più facile che adattare un programma nato per qualcos'altro.

@batta hai perfettamente ragione, ma io non sono un "softwerista" e non posso chiedere al cliente di farsi rifare il sw, anche perchè la ditta che lo aveva fatto è fallita

Posted
2 ore fa, tortellino79 ha scritto:

ma io non sono un "softwerista" e non posso chiedere al cliente di farsi rifare il sw, anche perchè la ditta che lo aveva fatto è fallita

Il mio commento era riferito all'esempio postato da @_gian, che non puoi adattare al tuo caso.

Posted
13 ore fa, batta ha scritto:

Il mio commento era riferito all'esempio postato da @_gian, che non puoi adattare al tuo caso.

@batta perchè non va bene?

avevo già iniziato a copiarlo di sana pianta...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...