in data 11-10-2014 05:05 AM
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
Risolto Andare alla soluzione.
in data 11-10-2014 06:31 AM
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
in data 11-11-2014 04:28 AM
Ciao!
Puoi trovare un esempio di come implementare un PID nel VI allegato.
Credo potrebbe esserti utile
in data 11-11-2014 04:54 AM
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.
in data 11-11-2014 05:04 AM
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?
in data 11-11-2014 05:15 AM
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.
in data 11-11-2014 05:20 AM
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.
in data 11-11-2014 05:29 AM
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
in data 11-11-2014 05:36 AM
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.
in data 11-11-2014 05:38 AM
correggo non variabile ma costante e l'ho impostata a 0,0002 però anche 1 ms andrebbe bene.