Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Help PID

Risolto!
Vai alla soluzione

Ciao a tutti. Oramai sono più di sei mesi che mi avvalgo dei preziosi consigli che questo forum elargisce grazie alle persone fantastiche che vi partecipano. Ora ho bisogno di un ultimo aiuto, perchè non so proprio come fare, nel senso che i miei tentativi di più di 4 giorni di lavoro non hanno prodotto risultati. Chiedo aiuto in maniera quasi disperata nel senso che devo fare quest'ultimo step per riuscire a finire il mio lavoro (tesi) e purtroppo il tempo a disposizione per farlo è praticamente scaduto. Non vorrei scrivere un post strappalacrime, ma la situazione per me è davvero al limite. Io dovrei inserire un PID nel programma allegato che è funzionante per l'invio e la ricezione dei segnali al mio attuatore. Il programma l'ho creato io e devo dire che per ora ha sempre funzionato, solo che non riesco proprio a capire come aggiungerci il controllo. I valori del controllo già ce li ho. Se qualcuno riuscisse con infinita pazienza a risolvermi questo problema gliene sarò infinitamente grato. 

 

Grazie a tutti per le risposte

0 Kudos
Messaggio 1 di 10
5.688Visualizzazioni
Soluzione
Accettato da autore argomento Salvo84

Per capirsi io sono riuscito a fare qualcosa ma non sono sicuro che funzioni bene, se questa soluzione può sembrare vicina alla soluzione vera qualcuno può dirmi basandosi su questo ultimo tentativo dove sbaglio???? Grazie

 

0 Kudos
Messaggio 2 di 10
5.677Visualizzazioni

Ciao!

Puoi trovare un esempio di come implementare un PID nel VI allegato.

 

Credo potrebbe esserti utile

0 Kudos
Messaggio 3 di 10
5.645Visualizzazioni

Grazie per la risposta,

purtroppo però anche questo esempio ha il setpoint impostato come valore singolo, il mio problema è che non riesco a far aggiornare il pid abbastanza velocemente avendo bisogno di un input variabile! per ora infatti mi sa che il mio problema è proprio quello cioè che il mio pid qualcosa la fa però mi sembra che sia troppo troppo lento.

0 Kudos
Messaggio 4 di 10
5.642Visualizzazioni

In che senso setpoint variabile?

Ogni quanto ti varia il setpoint? 

 

Hai provato a cambiare i parametri "PID gains", "dt(s)"  e velocità di esecuzione del ciclo while?

0 Kudos
Messaggio 5 di 10
5.640Visualizzazioni

Variabile nel senso che è una waveform, cmq si ho messo il ds a 0,0002 che è il campionamento base del mio programma. In poche parole io vorrei che il PID seguisse la forma d'onda che gli dò io. Questo purtroppo non è semplice. Ho anche provato a guardare varie discussioni sul forum generale del sito, ma purtroppo non ho capito le soluzioni. Il fatto è che non sono tanto bravo con LabVIEW. Magari se te le capisci e riuscissi a spiegarmele te ne sarei grato.

0 Kudos
Messaggio 6 di 10
5.638Visualizzazioni

Provo a spiegarmi meglio. Nell'allegato tentativo n, sono riuscito a risolvere tutti i problemi di errore, ed il PID effettivamente qualcosa fà, nel senso che modifica la mia forma d'onda. Però è come se la modificasse ogni secondo e non continuativamente come vorrei io. Infatti il risultato dell'output viene una specie di gradoni. I parametri del PID non dovrebbero essere un problema nel senso che dovrei averli già. Quello che non riesco a fare è in poche parole che l'input ovvero il valore desiderato cambia continuamente cioè ogni 0,0002 sec, questo è un problema che ho già trovato discusso e non so se risolto. Per ora io sono un pochino disperato.

0 Kudos
Messaggio 7 di 10
5.636Visualizzazioni

Da detailed help del PID.vi

 

"If dt(s) must be less than 1ms, specify the value explicitity" quindi collega una costante 0.0002 all'ingresso dt(s) del PID.vi. 

Seconda cosa, non credo che tramite windows riesci ad ottenere un controllo così spinto. Il clock del sistema operativo è di 1ms. Quindi al massimo riesci ad ottenere una velocità di controllo di quell'ordine.

 

Per andare pùiù veloce dovresti spostarti su FPGA 

0 Kudos
Messaggio 8 di 10
5.634Visualizzazioni

io ho già collegato e scritto come costante nel ds la mia variabile. però non basta. Io penso che il problema sia nella forma d'onda di ingresso o in quella di uscita. O almeno credo, non ho la presunzione di avere ragione, però mi è parso di capire questo dal forum americano. Per capirsi...se hai pazienza guarda questa discussione:

http://forums.ni.com/t5/LabVIEW/how-to-make-setpoint-dynamic-for-PID-control/m-p/2930998#M847306

Mi pare che sia il mio problema, però proprio non capisco come fare.

 

Cmq grazie scaiola, hai veramente molta pazienza grazie davvero...alle volte basta un consiglio in più per partire a trovare la soluzione.

0 Kudos
Messaggio 9 di 10
5.632Visualizzazioni

correggo non variabile ma costante e l'ho impostata a 0,0002 però anche 1 ms andrebbe bene.

0 Kudos
Messaggio 10 di 10
5.630Visualizzazioni