Vai al contenuto
PLC Forum


Controlloare ... - ... minimo instabile ?!?


Federico Milan

Messaggi consigliati

Ciao,

avrei bisogno di un consiglio, e se possibile di dove cercare magari materiale free :) ...

in pratica non posso entrare nel dettaglio ma vi dico il comportamento del sistema:

immaginate di dover regolare una "velocità".

ho un set point di riferimento. Lo applico direttamente al sistema senza controllo.

la risposta ad uno scalino positivo del mio set point la velocità mi risponde inizialmente diminuendo e poi riaquistando valore posizionandosi ad un valore per fortuna più alto di quello inizale ... (non so se riuscite ad immaginare, ma non posso essere più preciso :) )

Devo inserire quindi un controllo ad anello chiuso per mantenere la "velocità" desiderata, ma come ovviamente potete immaginare un PID credo vada in tilt per il comportamento del sistema ... in quanto ho il tratto iniziale di risposta che fa il contrari di quello che ci si aspetta e otterrei correzioni sbagliate andando ovviamente in oscillazione o comunque in sovraelogazione ....

ora cosa dispongo, dispongo della "velocità" in ingresso, dispongo del comando in uscita ...

cosa ho come controllo .... un PLC

Posso campionare ogni 0.02s ...

Cosa dovrei ottenere ... almeno dopo 0.2 s avere la velocità a set point ...

errore tollerato 2-3-4% ... su un ipotetico valore X massimo

come varia l'andamento del processo ... in modo casuale "sembrerebbe" apparte l'andamento prima descritto.

Come lo regolo adesso, io attualmente memorizzo i dati ogni 0.2s e faccio una azione preventiva secondo una tabella per portare la velocità desiderata in linea per il prosssimo campionamento ... sembrerebbe andare ?!?

ma avete qualche idea, materiale di consultazione per sistemi di questo tipo ?!? ...

Purtroppo questi sono i dati che vi posso dare, ma più che basarsi su questi dati mi piacerebbe sapere se esiste qualche cosa per generalizzare sistemi con questo comportamento ...

ciao

grazie

Modificato: da Federico Milan
Link al commento
Condividi su altri siti


Ciao Fede. Da come descrivi il sistema mi sembra che il modo migliore di regolarlo sia modellizzare e fare un sistema predittivo ed è più o meno quello che fai o stai tenttando di fare. Potresti provare ad associare un P alla tua regoalzione e magari anche un anticipo sulla reazione. Sembrerebbe un caso ideale per un controlore FUZZY.

Se vuoi e puoi mandami una mail con descrizione più dettagliata e provo a vedere se posso cavarci qualche idea.

Link al commento
Condividi su altri siti

Da come scrivi sembra che ti sei imbattuto in un sistema di regolazione a fase non minima.

A dire il vero non so come si implementi in un PLC ma mi sento di consigliarti di aumentare l'ordine del tuo

controllore.

Ciao

Link al commento
Condividi su altri siti

Ciao, anchio pensava in un sitema a fase non minima ma la teoria mi sfugge parecchio :) ...

Omedas ipotizzando che io risca a ricavarmi la Fdt del sitema (credo per me impossibile, ma magari a colpi di martello trovo anche la risposta all'impulso :) ... apparte gli scherzi) mi potresti dare una dritta su come iniziare a pensare il controllo o qualche riferimento non troppo teorico ma molto pratico :) ... Se non erro a fase non minima significa che gli zeri della Fdt del mio sistema sono negativi ?!? ... premetto che non mi ricordo tanto la teoria ...

Per Livio grazie mille, però per il momento sembra strano e neanche io son entusiasta, ma sto regolando questo sistema senza effettivamente conoscerne le reazioni vere e proprie, ossia essendo prototipale basta solo che qualcuno mi modifichi la parte meccanica/processo e mi trovo tutto sfalsato con reazioni che sono completamente opposto a quelle precendnti :(, questo è il motivo che per cuoi ho adottato una tabella di correzione delegando a qulcun altro ...

Un altro problema che ho visto è che è molto soggetto a rumore, ossia il tempo di campionamento è circa 0,2 secondi e in 6s che ho monitorato il sistema, ho provato a fare una FFT per curiosità dell'ingresso ho notato 4-5 oscillazioni sovrapposte e nessuna ad una frequenza che mi dica qualcosa o soggetta al controllo ...

Ma per questo chiedo un consiglio anche sulla FFT, in quanto non vorrei sbagliarmi, sarà la fretta, ma ho qualche dubbio ora anche su questo, nel senso che:

io ho una serie di campioni con deltaT=0.2 secondi, quando trasformo FFT secondo voi qual è la deltaF ?!?

esempio ho una serie campionata onghi 0,2 secondi di valore [1,2,3,4,3,2,1] ...

se trasformo ho una serie complessa ok la serie è simmetrica quindi anche la trasformata lo è per note propietà :) , pari a

[16. - 4.5489173 - j*2.1906431, .1920215 + j+.2407873, - .1431041 - j*.6269802,

- .1431041 + j*.6269802, .1920215 - j*.2407873, - 4.5489173 + j*2.1906431]

voi dove le mettereste le frequenze ? ...

ciao e grazie ancora ...

Link al commento
Condividi su altri siti

Per il problema iniziale: se riuscissi a trovare la f.d.t. del tuo sistema probabilmente troverai a numeratore uno sero positivo, attraverso il tuo controllo dovresti tentare di piazzare un polo dello stesso valore del tuo polo in modo tale da poter cancellare l'effetto del tuo zero a fase non minima.(per questo di dicevo di aumentare l'ordine dovresti inserire uno polo in più). Aspetti più pratici non saprei...

Per il tuo secondo problema a dire il vero non ho afferrato molto.

Ciao

Link al commento
Condividi su altri siti

Inanzi tutto, portate un po' di pazienza con me è da poco che mi sono iscritto al forum e a volte sono un po' troppo frettoloso, allora Federico rileggendo bene il tuo messaggio credo di aver afferrato il problema della FFT,

Se tu campioni a 0,2 sec allora il tuo periodo di campionamento è Fc = 5 Hz, ora se tu hai N campioni le frequenze relative alla FFT calcolata sono 0 , Fc/N , 2 Fc/N , ... , (N-1) Fc/N.

Come già saprai se hai N campioni allora la trasformata relativa avrà anch'essa N dati di frequenza.

Ad ogni modo tu parlavi di rumore in senso generico, beh solitamente il rumore influenza le componenti ad alta frequenza, attento quindi ai tuoi scopi forse un campionamento a 0,2 sec (quindi al max arrivi a 5 Hz) potrebbe essere troppo poco

Link al commento
Condividi su altri siti

Se tu campioni a 0,2 sec allora il tuo periodo di campionamento è Fc = 5 Hz, ora se tu hai N campioni le frequenze relative alla FFT calcolata sono 0 , Fc/N , 2 Fc/N , ... , (N-1) Fc/N.
Ok ci siamo, mi ricordavo giusto :) ... quindi effettivamente nell'esempio che ho fatto

[1,2,3,4,3,2,1]

FFT

[16., - 4.5489173 - j*2.1906431, .1920215 + j*.2407873, - .1431041 - j*.6269802,

- .1431041 + j*.6269802, .1920215 - j*.2407873, - 4.5489173 + j*2.1906431]

ipotizando dT=0.2secondi

a 0Hz la componente complessa è 16,

a 2.5Hz la componete complessa è -4,4+j*2.2

a 5.0Hz la componente complessa è .19+j*024

a 7.5Hz la componete complessa è .14+j0.62

le restanti fanno parte dell'asse negativo giusto? in quanto abbiamo supposto il nostro segnale esteso tra -infinito e +infinito ...

Se quello che ho detto è giusto allora le mie considerazioni sono:

Come già saprai se hai N campioni allora la trasformata relativa avrà anch'essa N dati di frequenza.

Ad ogni modo tu parlavi di rumore in senso generico, beh solitamente il rumore influenza le componenti ad alta frequenza, attento quindi ai tuoi scopi forse un campionamento a 0,2 sec (quindi al max arrivi a 5 Hz) potrebbe essere troppo poco

Il problema dell 0.2s compionamento è dovuto al fatto che questi sono i dati che ho, prendiamoli per assoluti!

Parlo di rumore, ma non credo che sia corretto, la mia supposizione è che:

ho un processo meccanico, di cui a priori non conosco frequenze proprie, ma essendo qualcosa di meccanico e visivamante/uditivamente non esistono senzazioni che mi fanno presumere vibrazioni a certe frequenze tra i 0.5 e 15Hz, ipotizzo che tutte le frequenze che mi trovo FFT trasformando facciano parte o delle rezioni del sistema, o del controllo che è in oscillazione o del "rumore" ... quindi frequene <=5Hz potrebbero essere dovute al controllo quelle maggiori a 5 ad altre cause che generalizzo come "rumore" a torto oviamente ...

... corregetimi

ciao

Link al commento
Condividi su altri siti

Mi sa che nella FFT ti sei dimenticato di dividere per N (numero di campioni) i vari coefficienti.

Per il runuore non ho capito molto bene cosa intendi per:

".... dell'ingresso ho notato 4-5 oscillazioni sovrapposte e nessuna ad una frequenza che mi dica qualcosa o soggetta al controllo ....."

Da quel poco che ho capito, sono d'accodo con Omedas; mi sa che stai sovraccampionando il sistema.

Prova a fare la stessa FFT dei dati utlizzando come dati la media di n campioni (n fissa). Questo ha come effetto l'abbassamento del tempo di campionamento.

Link al commento
Condividi su altri siti

Ciao Fede, tu disponi di Mathlab? Perchè sarebbe abbastanza semplice con Mathlab analizzare il tuo sistema e, forse, anche simularlo.

Il tuo sistema è puramente meccanico o ha anche componenti fluidici?

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Mi sa che nella FFT ti sei dimenticato di dividere per N (numero di campioni) i vari coefficienti.
Si nell'esempio ho dimenticato di dividere ... la fretta :) ... quindi tutte le frequenze scritte nel caso dell'esempio vanno divise per 7 giusto? ...

mi sa che stai sovraccampionando il sistema.

Prova a fare la stessa FFT dei dati utlizzando come dati la media di n campioni (n fissa). Questo ha come effetto l'abbassamento del tempo di campionamento.

sovra o sottocampionando? comunque sia, prendetelo per postulato, non posso variare la frequenza di campionamento, è gia tanto che risco a ricavarmi questi pochi dati in croce ...

Quindi se sottocampiono avrò sicuramente fenomini di aliasing ... qui mi spiegherei qualche cosa, ...

Se sovracampiono ? devo decimare nel tempo alcuni valori?

Non capisco cosa significa fare la FFT passandogli la media di n campioni. mi puoi delucidare?

Ciao Fede, tu disponi di Mathlab? Perchè sarebbe abbastanza semplice con Mathlab analizzare il tuo sistema e, forse, anche simularlo.

Il tuo sistema è puramente meccanico o ha anche componenti fluidici?

utilizzo un CAS simile a mathlab.

io ho fatto l'esempio di una velocità, ma in pratica regolo una velocità la quale agisce su un sistema che non è molto semplice da modellare (scusami ma non posso entrare nei dettagli) e soprattutto la lettura del sistema non è delle più precise, sia per tolleranze meccaniche che di tipologia di lettura ... dove diciamo ha qualcosa di fluidodinamica ... anche se non è corretto come esempio ...

mi piacerebbe modellarlo, ma non ho la più pallida idea di come farlo, non perchè sia difficile, ma per il comportamente che nella realtà assume ...

Del resto non ho la strumentazione ne la possibilità di investigare molto, e per il momento ho seguito la strada di crearmi una tabelle a due colonne dove nella prima pongo il grado di errore e nella seconda il fattore di correzione, ...

Secondo te Livio, se volessi provare con Fuzzy, che passi mi consigli, mi son scaricato qualche esempio e un pseudo manuale, se ho un po' di tempo provo a vedere come applicare in modo scentifico la taballe :)

ciao e grazie a tutti

Link al commento
Condividi su altri siti

Si nell'esempio ho dimenticato di dividere ... la fretta ... quindi tutte le frequenze scritte nel caso dell'esempio vanno divise per 7 giusto? ...

no devi dividere i coefficienti per 7; per intenderci la componente a frequenza zero della FFT (stesso discorso per lo sviluppo in serie di fourier e la z trasformata e........) non è altro che il valo medio del segnale.

Se ad esempio prendi un segnale a media nulla stai sicuro che la componente 0 in frequenza ha come coefficiente 0.

Non capisco cosa significa fare la FFT passandogli la media di n campioni. mi puoi delucidare?

Semplicemente se campioni a 0.2 secondi (ad esempio) e se prendi gruppi di 5 campioni alla volta e fai la medie è come se campioni ad 1 secondo. A questo punto effettua nuovamente la FFT dei valori trovati con tempo di campionamento 1 secondo (ad esempio) e verifica se ci sono ancora componenti spettrali "estranee".

Per il sottocampionamento, è difficile, a mio parere, avere componenti spettrali molto elevate in sistemi elettro-meccanici; ovviamente dipende dalla configurazione del sistema (fenomeni di risonanza).

Per il "postulato"............. la mia è solo una supposizione. Se mi dici a che frequenze trovi le componenti spettrali estranee forse posso azzardare ipotesi più precise.

Link al commento
Condividi su altri siti

Il sistema migliore per usare Fuzzy è cercare di ricreare la reazione di una persona. Cerco di spiegare meglio con un esempio. Se tu fai un posizionamento tradizionale ti basi sull'errore di posizione e regoli la velocità in funzione dell'errore. Se posizioni con un regolatore fuzzy, questo tende a ricreare quello che fai quando, per esempio, viaggi in auto in una colonna: tieni conto di diversi fattori, non solo della distanza. Ved se riesco a trovare il tempo di scannerizzare due vecchi esempi: un attracco di un traghetto e l'altro della guida di auto in colonna (devo reperire il manuale e scannare le pagine).

Immaginavo che il lavoro fosse abbastanza riservato, giustappunto ti avevo proposto una mail privata.

Ciao

Livio

Link al commento
Condividi su altri siti

Grazie Livio :) ... sono curiosissimo e "impaziente" :) ... grazie ...

Per il momento ho tratto le seguenti considerazioni, ho provato a campionare più velocemente (0,02s), e ho concluso che quello che leggo è rumore ... ho ricampionato a 0,2 e ho qualcosa di molto più reale e concreto.

Scusate la mia genericità.

in sostanza il metodo che ora uso è il seguente, e mi sembra che dia buoni risultati, non ottimi, ma meglio di niente:

Leggo la grandezza di ingresso la confronto con un mio setPoit.

L'errore derivante ne faccio il modulo e lo confronto con una tabella di correzione, che corregerà la grandezza controllante. tutta la tabela è modificable ...

Seguendo il consiglio di Livio ora provo ad analizzare se magari altre grandezze possono aiutarmi a migliorare la tabella di selezione, quindi se ho ben capito, invece che utilizzare una matrice a due dimensioni potrei usarne una a 3-4 dimensioni ...

ciao e grazie a tutti ...

Link al commento
Condividi su altri siti

Ciao Fede, in attesa che reperisca gli esempi della neurallogix, dai un'occhiata qui:

http://scholar.lib.vt.edu/theses/available...cted/thesis.pdf

è la tesi di un master del politecnico della Virginia, relativa al posizionamento di una culla rotante (Rotary Cranes)

Ciao e Buone Feste

Link al commento
Condividi su altri siti

  • 3 weeks later...
Federico Milan

Ciao Livio, grazie del link.

Per il momento mantengo la tabella di correzione, non è un gran che, ma per lo meno qualcosa corregge.

Fra poco avrò altri risultati da analizzare, e vedrò cosa ottimizzare.

Sto cercando ora un modo per avere un controllo molto reattivo nel tratto iniziale, per poi diventare blando, ma ovviamente sono solo supposizioni.

Modelli matematici non riesco a trovarne. Vedrò più avanti se riesco ad essere più preciso ...

ciao e grazie a tutti :)

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