Vai al contenuto
PLC Forum


Gestione Invaso - PID o


Messaggi consigliati

Inserito: (modificato)

Buongiorno, come già scritto in vari post quà e là e in messaggi privati (ma pensavo più giusto e corretto aprire una discussione apposita) vorrei , per ora solo come studio per imparar la programmazione di PLC , automatizzare la gestione di uno sbarramento fluviale.

Lo sabarramento è così composto :

N° 06 paratoie ad apertura idraulica (comando ad olio);

N° 01 sonda di livello invaso;

N° 01 sistema compressore/pompe/valvole per la movimentazione delle paratoie;

Quindi nessuna sonda che mi misura l'apertura delle paratoie.

Lo sbarramento che vorrei automatizzare non ha sfioratori naturali ed è per questo che c'è installato un regolatore di livello automatico (ormai vecchio e non sempre funzionante).

Ora abbiamo già installato una sonda ad ultrasuoni con campo 0...5mt uscita 4..20mA però (ho già un convertitore 4..20mA - 0..10V per collegarlo direttamente al PLC 1214C) ma non pensavo di utilizzare sonde di apertura sulle 6 paratoie ma di basarmi solo sul livello e veder incremento/decremento.. nel senso che prendo (ogni tot secondi) il livello di invaso e ne faccio la differenza con il Set Point , questa differenza la uso come base per i tempi da dare a due temporizzatori che andranno rispettivamente a far lavorare le uscite che comandano chiusura/apertura delle paratoie a seconda che la differenza Livello - Set point sia positiva (comandano apertura) o negativa (comandano chiusura), quindi senza l'uso di PID (che non conosco molto bene). Naturalmente se la differenza è minima il regolatore non effettua operazioni (questo per evitare continui pendolamenti sulle uscite).

Probabilmente la cosa più corretta sarebbe installare trasduttori di posizione sulle paratoie e poi far fare al PLC una serie di calcoli sul grado di apertura totale da dare alle paratoie in base all'incremento/decremento ma in mc di invaso, tenedo conto anche del tempo di vasca o cose simili, usando però una tabella dove mi riporta la capienza dell'invaso in mc in rapporto all'altezza dell'invaso e altre tabelle dove mi riportano la portata in scarico dalle varie paratoie a diversi gradi di apertura e diverse altezze dell'invaso.. ma così andrei sicuramente a complicarmi la vita anche perchè non so se è possibile "inserire" nel PLC queste tabelle perchè non sono delle rette ma delle curve e magari non ne esiste la rispettiva operazione matematica.. magari si potrebbe fare in modo che sia il PLC ad interrogare un Database esterno su PC.. per me è fantascienza..

Il tutto poi sara "visionabile/comandabile" da uno scada locale (semplice pannellino) e magari remoto (PC).

Mi sa che proverò come pensavo all'inizio anche se forse un po da Manovale invece che da Tecnico.. cosa ne pensate?

Qualcosina ho già "messo giù" , magari stasera se riesco vi allego la stampa in pdf (ho visto ora che gli allegati che potavo fare son passati da 30k di ieri sera a 250k quindi dovrei riuscir a starci come "peso" del file)

Ciao.

Saluti a tutti.

Modificato: da Scrim76

Inserita:
Probabilmente la cosa più corretta sarebbe installare trasduttori di posizione sulle paratoie

Questa sarebbe la soluzione ottimale.

La soluzione minima prevede fine corsa di paratoia tutto aperto e tutto chiuso.

Nel secondo caso la regolazione sarebbe più grossolana ma anche molto più semplice.

Ipotizzo, a grandi linee, una possibile soluzione.

Condizione iniziale: paratoie tutte chiuse.

Al raggiungimento/superamento di un certo livello si comanda l'apertura di una paratoia. Trascorso un tempo X, se il livello è aumentato, si apre una seconda paratoia, e così a seguire.

Se il livello rimane stabile si lascia la configurazione attuale; se il livello scende sotto un certo valore si chiude una paratoia.

Come miglioramento si può effettura un controllo sulla derivata del livello, in funzione di questa variabile si anticipa l'apertura o chiusura delle paratoie.

Inserita: (modificato)

Si scusate in effetti mi son dimenticato di dire che come ingressi ho anche i finecorsa di massima apertura e massima chiusura di tutte le paratoie (più altri che servono per regolar la pressione del circuito di comando, ma questi non centrano con il sistema di regolazione livello).

Ora non ho sottomano le tabelle ma se dovessi aprire al massimo una paratoia ( errore mio non indicarlo prima ) con massimo invaso mi pare che scaricherebbe qualcosa come qualche decina di metri cubi.. appena trovo la tabella ve lo indico, comunque si tratta di portate considerevoli che mi farebbero pendolare notevoltmente l'invaso anche in caso solo di lievi incrementi , mi serve quindi aver delle regolazioni intemedie senza installare troppi trasduttori (ma il top penso quindi almeno su tre paratoie e lavorar con quelle, poi comunque in caso di guasto e di situazione meteorologiche particolari lo sbarramneto viene comunque presidiato).

Saluti.

Modificato: da Scrim76
Inserita: (modificato)

Se vuoi farti un buon controllo sulla portata del flusso di acqua devi necessariamente gestire l'apertura delle paratoie, è quindi capire quanto deve aprirsi la paratoioa. Pertanto ritengo indispensabile un trasduttore che possa darti la giusta posizione della paratoia. Come trasduttore puoi utilizzare un potenziometro a filo, o un potenziometro a pistone, che sono sistemi di facile gestione software ed conomici.

non so se è possibile "inserire" nel PLC queste tabelle perchè non sono delle rette ma delle curve e magari non ne esiste la rispettiva operazione matematica

Credo che non ci siano problemi ad inserire nel PLC delle tabbelle, quindi valori da confrontare tra loro, e neanche far fare al PLC qualche operazione matematica.

Modificato: da baltimora
Inserita:

Se non dai tutti i dati le risposte possono anche essere senza senso.

Inserita:
Se non dai tutti i dati le risposte possono anche essere senza senso.

..mea culpa..in effetti non avevo specificato il tutto.

Buon proseguimento.

Saluti

Inserita: (modificato)

Vi allego quello che ho fatto fin'ora....

Simulandolo con potenziometri e relè sembra funzionare.. però spero di riuscir a provarlo in campo magari collegandolo ad un serbatoio al quale collegar in uscita una saracinesca motorizzata o qualcosa del genere..

Accetto qualsiasi consiglio.. soprattutto per migliorarne la forma.. non ho capito bene le differenze tra OB-FB e cosa sono i Blocchi DB..

Grazie a tutti e buon proseguimento

Modificato: da Scrim76
Inserita:

..ho trovato alcuni errori.. nella dichiarazione di variabili penso di aver "sovrapposto" alcune aree di memoria... M0.0 con MD0 e M20.0 con MD20...

Ho inteso giusto ?

Saluti

Inserita:

Durante lo svolgimento del programma mi è sorto un problema.. anzi più che un problema sicuramente è qualcosa che devo capire su come lavora il PLC.

Diciamo che nel blocco Main ho un ingresso (I0.0) che mi richiama un blocco FB al cui interno ho un ingresso (I0.1) che mi commuta direttamente un'uscita (Q0.0).

Allora se io porto a "1" la I0.1 non succede nulla ( e questo è Ok perchè il blocco FB non è "in funzione"), se porto a "1" solo I0.0 non succede nulla ( a parte rimandarmi al blocco FB , e fin quì OK) , invece se porto a "1" l'ingresso I0.0 e poi I0.1 mi commuta l'uscita Q0.0 (e questo è sempre OK).

Ora se nel frattempo porto a "0" l'ingresso I0.0 (cioè quello che mi richiama il blocco FB) e lascio a "1" I0.1 l'uscita Q0.0 resta a "1".. è normale?

Peggio ancora succede se porto a "0" anche I0.1 l'uscita Q0.0 resta a "1"..è normale?

Praticamente per portar a "0" l'uscita devo portar a "0" I0.1 tenendo l'ingresso di richiamo I0.0 a "1".

Io penso che sia normale, cioè nel senso che il PLC "ragiona" così però mi fa strano..

Spero di essermi riuscito a spiegare tra tutti sti "1" e "0"....

Ciao e portate pazienza...

Inserita: (modificato)

Ti consiglierei di leggerti il manuale di sistema (che è piccolo piccolo) :superlol:

In ogni caso vi sono prevalentemente 3 tipi di blocchi (blocco dati escluso).

1) Blocco organizzativo, "OB" che è pressapoco come il main per non dire che è identico. Tale blocco viene eseguito ciclicamente e non ha bisogno di essere richiamato. (stiamo parlando del blocco organizzativo P.CYCLE, poi può esserci quello di avvio (startup) che viene eseguito una sola volta all'avvio, ecc. ecc. (c'è ne sono ancora altri della stessa famiglia, quindi che vengono eseguiti senza richiamo)

2)Poi ci sono i blocchi funzionali, "FB" che sono dei blocchi che vengono eseguiti "a richiamo" ed hanno la caratteristica di "ricordarsi" i dati elabborati, in tal modo che questi dati possano essere riutilizzati da altre parte del programma anche quando il blocco non è più in esecuzione.

Faccio ar esempio dei calcoli matematici ecc.

3)E poi ci sono i blocchi funzione "FC" che sono come quelli di sopra, ma una volta chiusi si scordano tutto.

Ora se nel frattempo porto a "0" l'ingresso I0.0 (cioè quello che mi richiama il blocco FB) e lascio a "1" I0.1 l'uscita Q0.0 resta a "1".. è normale?

Se il blocco viene chiuso e non c'è nulla che resetta il bit, prima della chiusura del blocco tale bit resta ad 1

Peggio ancora succede se porto a "0" anche I0.1 l'uscita Q0.0 resta a "1"..è normale?

Se il reset del bit stà solo in quel blocco, ed il blocco non viene più richiamato, è ovvio che l'istruzione di reset del bit non viene eseguita

Ciao

Modificato: da baltimora
Inserita:

ciao, il manuaetto (da 3mila paginette) :P :me lo sto leggendo piano piano e intanto faccio anche qualche prova .

Mi sembrava un po strano il funzionamento ma magari basta "farci l'occhio".

Grazie ancora dei consigli e aspettatevi altre domandine... Vorrei proprio diventar in grado di far qualcosa anch'io..

Ciao buona serata

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