Vai al contenuto
PLC Forum


riempimento serbatoio


tortellino79

Messaggi consigliati

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

Modificato: da Domenico Maschio
Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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... 

 

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

  • Domenico Maschio changed the title to riempimento serbatoio

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?

 

 

 

 

Link al commento
Condividi su altri siti

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.

 

Link al commento
Condividi su altri siti

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.

 

 

Modificato: da AlexB
la fretta genera mostri ( di ortografia.. )
Link al commento
Condividi su altri siti

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

 

 

 

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

@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

 

 

 

 

Link al commento
Condividi su altri siti

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.

 

 

 

Link al commento
Condividi su altri siti

@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....

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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??

 

 

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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 ??

 

 

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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....

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Modificato: da batta
Link al commento
Condividi su altri siti

  • 3 weeks later...
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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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...

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...