Come utilizzare la risposta del passo misurata per ottimizzare il sistema di controllo


17

Come si usa una risposta a gradino misurata per ottimizzare uno schema di controllo della convoluzione o PID?

Ispirato da questa risposta * , sono interessato a una spiegazione più dettagliata di come implementare un sistema di controllo basato sulla risposta del passo misurata.

Non proverei a indovinare tutti gli effetti. Probabilmente ci sono alcune cose non ovvie in corso e non puoi conoscere tutti i parametri.

Misurerei la risposta del passaggio. Trova due impostazioni della pompa che fanno sì che la sfera si trovi all'interno dell'intervallo misurabile all'interno del tubo. Quindi fare in modo che il controller passi improvvisamente da un'impostazione all'altra ad anello aperto. Nel frattempo misura ciò che la palla fa nel tempo. Questa è la risposta al passo. Puoi prenderne la derivata e ottenere la risposta all'impulso. Dalla risposta all'impulso è possibile prevedere il movimento della sfera per qualsiasi cronologia delle impostazioni della pompa, supponendo che si tratti di un sistema lineare. Probabilmente è abbastanza lineare su un piccolo intervallo di impostazioni per mantenere la palla all'interno del suo raggio normale.

Puoi usarlo come base di simulazione per trovare i parametri per il controllo PID vecchio stile. Oppure puoi usare direttamente la risposta all'impulso per eseguire un controllo di convoluzione. Devi filtrare abbastanza basso l'ingresso di controllo in modo che il kernel di convoluzione non diventi negativo a meno che la tua pompa non sia effettivamente reversibile e possa risucchiare la palla.

Come funziona esattamente? L'ottimizzazione PID è difficile ; Suppongo che il "controllo della convoluzione" sia l'uso della funzione polo zero o trasferimento, ma non vedo esattamente come ottenere i parametri.

CORRELATO: Modellazione di sistemi per sistemi di controllo
* Funzione di trasferimento della modellazione della levitazione della pallina da ping pong in un tubo come smorzatore

Risposte:


23

introduzione

In primo luogo, dobbiamo considerare cosa è esattamente questa cosa chiamata risposta all'impulso di un sistema e cosa significa. Questo è un concetto astratto che richiede un po 'di pensiero per visualizzare. Non entrerò in matematica rigorosa. Il mio punto è provare a dare un po 'di intuizione su cosa sia questa cosa, il che porta a come utilizzarla.

Esempio di problema di controllo

Immagina di avere un grosso resistore di potenza con un sensore di temperatura montato su di esso. Tutto inizia a temperatura ambiente. Quando si accende l'alimentazione, si sa che alla fine la temperatura del sensore aumenterà e si stabilizzerà, ma l'equazione esatta sarebbe molto difficile da prevedere. Diciamo che il sistema ha una costante di tempo di circa 1 minuto, sebbene la "costante di tempo" non sia completamente applicabile poiché la temperatura non aumenta in modo esponenziale come in un sistema con un singolo polo, e quindi una singola costante di tempo . Supponiamo che tu voglia controllare la temperatura in modo accurato e farlo cambiare a un nuovo livello e rimanere costantemente significativamente più rapidamente di quello che farebbe se accendessi al livello di potenza appropriato e aspetti.

Fondamentalmente, hai un problema con il sistema di controllo. La risposta ad anello aperto è ragionevolmente ripetibile e c'è da qualche parte un'equazione che la modella abbastanza bene, ma il problema è che ci sono troppi sconosciuti per derivare quell'equazione.

Controllo PID

Un modo classico per risolverlo è con un controller PID. Nel pleistocene, quando questo doveva essere fatto nell'elettronica analogica, le persone si sono fatte intelligenti e hanno escogitato uno schema che funzionava bene con le capacità analogiche a portata di mano. Tale schema era chiamato "PID", per proporzionale , integrale e derivato .

Termine P

Inizi a misurare l'errore. Questa è solo la risposta del sistema misurata (la temperatura segnalata dal sensore nel nostro caso) meno l'ingresso di controllo (l'impostazione della temperatura desiderata). Di solito questi potrebbero essere organizzati per essere disponibili come segnali di tensione, quindi trovare l'errore era solo una differenza analogica, il che è abbastanza facile. Potresti pensare che sia facile. Tutto quello che devi fare è guidare la resistenza con una potenza maggiore maggiore è l'errore. Ciò cercherà automaticamente di renderlo più caldo quando fa troppo freddo e più freddo quando fa troppo caldo. Funziona, sortof. Si noti che questo schema necessita di errori per causare un'uscita di controllo diversa da zero (alimentazione del resistore). In realtà, significa che maggiore è la potenza necessaria, maggiore è l'errore poiché è l'unico modo per ottenere la massima potenza. Ora potresti dire che tutto ciò che devi fare è aumentare il guadagno in modo che l'errore sia accettabile anche a potenza elevata. Dopotutto, questa è praticamente la base per il modo in cui vengono utilizzati gli opamp in molti circuiti. Hai ragione, ma il mondo reale di solito non ti consente di cavartela. Questo può funzionare per alcuni semplici sistemi di controllo, ma quando ci sono tutti i tipi di rughe sottili nella risposta e quando può richiedere un tempo significativo, si finisce con qualcosa che oscilla quando il guadagno è troppo alto. Detto in altro modo, il sistema diventa instabile. ma quando ci sono tutti i tipi di rughe sottili alla risposta e quando può richiedere un tempo significativo, si finisce con qualcosa che oscilla quando il guadagno è troppo alto. Detto in altro modo, il sistema diventa instabile. ma quando ci sono tutti i tipi di rughe sottili alla risposta e quando può richiedere un tempo significativo, si finisce con qualcosa che oscilla quando il guadagno è troppo alto. Detto in altro modo, il sistema diventa instabile.

Ciò che ho descritto sopra era la parte P (proprietaria) del PID. Proprio come è possibile rendere l'uscita proporzionale al segnale di errore, è anche possibile aggiungere termini propri della derivata temporale e integrale dell'errore. Ognuno di questi segnali P, I e D ha il proprio guadagno separato prima di essere sommato per produrre il segnale di uscita di controllo.

Io termine

Il termine I consente all'errore di annullarsi nel tempo. Finché si verifica un errore positivo, il termine I continuerà ad accumularsi, aumentando infine l'uscita di controllo al punto in cui l'errore complessivo scompare. Nel nostro esempio, se la temperatura è costantemente bassa, aumenterà costantemente la potenza nel resistore fino a quando la temperatura di uscita non sarà finalmente più bassa. Spero che tu possa vedere che questo può diventare instabile ancora più velocemente di quanto possa fare un termine alto. Il termine AI di per sé può facilmente causare overshoots, che diventano facilmente oscillazioni.

Termine D.

Il termine D è talvolta escluso. L'uso di base del termine D è quello di aggiungere un po 'di stabilità in modo che i termini P e I possano essere più aggressivi. Il termine D in sostanza dice che se sto già andando nella giusta direzione, spegni un po 'il gas poiché quello che ho ora sembra ci sta portando lì .

Ottimizzazione del PID

Le basi del controllo PID sono piuttosto semplici, ma ottenere i termini P, I e D non è giusto. Questo di solito viene fatto con molta sperimentazione e ottimizzazione. L'obiettivo finale è quello di ottenere un sistema globale in cui l'output risponda il più rapidamente possibile ma senza eccessivo superamento o squillo, e ovviamente deve essere stabile (non iniziare a oscillare da solo). Sono stati scritti molti libri sul controllo PID, su come aggiungere piccole rughe alle equazioni, ma in particolare su come "ottimizzarle". L'accordatura si riferisce alla divinazione dei guadagni P, I e D ottimali.

I sistemi di controllo PID funzionano e c'è sicuramente molta conoscenza e trucchi là fuori per farli funzionare bene. Tuttavia, il controllo PID non è l'unica risposta corretta per un sistema di controllo. Le persone sembrano aver dimenticato perché il PID è stato scelto in primo luogo, che aveva più a che fare con i contorni dell'elettronica analogica che non come una sorta di schema di controllo ottimale universale. Purtroppo oggi troppi ingegneri identificano il "sistema di controllo" con il PID, che non è altro che una reazione istintiva al ginocchio. Ciò non rende sbagliato il controllo PID nel mondo di oggi, ma solo uno dei molti modi per attaccare un problema di controllo.

Oltre PID

Oggi, in un microcontrollore verrebbe realizzato un sistema di controllo a circuito chiuso per qualcosa come l'esempio di temperatura. Questi possono fare molte più cose oltre a prendere la derivata e l'integrale di un valore di errore. In un processore puoi fare divisioni, radici quadrate, tenere una cronologia di valori recenti e molto altro. Sono possibili molti schemi di controllo diversi dal PID.

Risposta impulsiva

Quindi dimentica le limitazioni dell'elettronica analogica e fai un passo indietro e pensa a come potremmo controllare un sistema che ritorna ai primi principi. E se per ogni piccolo output di controllo sapessimo cosa avrebbe fatto il sistema. L'uscita di controllo continuo è quindi solo la somma di molti piccoli pezzi. Dato che sappiamo qual è il risultato di ciascun pezzo, possiamo sapere qual è il risultato di qualsiasi storia precedente delle uscite di controllo. Si noti ora che "un piccolo pezzo" dell'uscita di controllo si adatta perfettamente al controllo digitale. Stai per calcolare quale dovrebbe essere l'uscita di controllo e impostarla su quella, quindi tornare indietro e misurare di nuovo gli ingressi, calcolare la nuova uscita di controllo da quelli e impostarla di nuovo, ecc. Stai eseguendo l'algoritmo di controllo in un ciclo, e misura gli ingressi e imposta nuovamente l'uscita di controllo ad ogni iterazione di loop. Gli ingressi vengono "campionati" in momenti discreti e anche l'uscita viene impostata su nuovi valori a intervalli fissi. Finché puoi farlo abbastanza velocemente, puoi pensare che ciò accada in un processo continuo. Nel caso di un riscaldamento della resistenza che normalmente richiede alcuni minuti per stabilizzarsi, sicuramente più volte al secondo è molto più veloce di quanto il sistema risponda intrinsecamente in modo significativo che l'aggiornamento dell'uscita a 4 Hz sembrerà continuo al sistema. Questo è esattamente lo stesso della musica registrata digitalmente che cambia il valore di uscita in passi discreti nell'intervallo 40-50 kHz e che è così veloce che le nostre orecchie non riescono a sentirlo e sembra continuo come l'originale. puoi pensare che questo accada in un processo continuo. Nel caso di un riscaldamento della resistenza che normalmente richiede alcuni minuti per stabilizzarsi, sicuramente più volte al secondo è molto più veloce di quanto il sistema risponda intrinsecamente in modo significativo che l'aggiornamento dell'uscita a 4 Hz sembrerà continuo al sistema. Questo è esattamente lo stesso della musica registrata digitalmente che cambia il valore di uscita in passi discreti nell'intervallo 40-50 kHz e che è così veloce che le nostre orecchie non riescono a sentirlo e sembra continuo come l'originale. puoi pensare che questo accada in un processo continuo. Nel caso di un riscaldamento della resistenza che normalmente richiede alcuni minuti per stabilizzarsi, sicuramente più volte al secondo è molto più veloce di quanto il sistema risponda intrinsecamente in modo significativo che l'aggiornamento dell'uscita a 4 Hz sembrerà continuo al sistema. Questo è esattamente lo stesso della musica registrata digitalmente che cambia il valore di uscita in passi discreti nell'intervallo 40-50 kHz e che è così veloce che le nostre orecchie non riescono a sentirlo e sembra continuo come l'originale. sicuramente più volte al secondo è molto più veloce di quanto il sistema risponda intrinsecamente in modo significativo che l'aggiornamento dell'uscita a 4 Hz sembrerà continuo al sistema. Questo è esattamente lo stesso della musica registrata digitalmente che cambia il valore di uscita in passi discreti nell'intervallo 40-50 kHz e che è così veloce che le nostre orecchie non riescono a sentirlo e sembra continuo come l'originale. sicuramente più volte al secondo è molto più veloce di quanto il sistema risponda intrinsecamente in modo significativo che l'aggiornamento dell'uscita a 4 Hz sembrerà continuo al sistema. Questo è esattamente lo stesso della musica registrata digitalmente che cambia il valore di uscita in passi discreti nell'intervallo 40-50 kHz e che è così veloce che le nostre orecchie non riescono a sentirlo e sembra continuo come l'originale.

Quindi cosa potremmo fare se avessimo questo modo magico di sapere cosa farà il sistema nel tempo a causa di un campione di output di controllo? Poiché la risposta di controllo effettiva è solo una sequenza di campioni, possiamo sommare la risposta da tutti i campioni e sapere quale sarà la risposta del sistema risultante. In altre parole, possiamo prevedere la risposta del sistema per qualsiasi forma d'onda di risposta di controllo arbitraria.

È fantastico, ma semplicemente prevedere la risposta del sistema non risolve il problema. Tuttavia, e qui è il momento, è possibile capovolgere e trovare l'output di controllo che sarebbe stato necessario per ottenere qualsiasi risposta di sistema desiderata. Si noti che sta risolvendo esattamente il problema del controllo, ma solo se possiamo in qualche modo conoscere la risposta del sistema a un singolo campione di output di controllo arbitrario.

Quindi probabilmente stai pensando, è facile, basta dare un impulso grande e vedere cosa fa. Sì, funzionerebbe in teoria, ma in pratica di solito no. Questo perché ogni campione di controllo, anche di grandi dimensioni, è così piccolo nello schema generale delle cose che il sistema ha a malapena una risposta misurabile. E ricorda, ogni campione di controllo deve essere piccolo nello schema delle cose in modo tale che la sequenza dei campioni di controllo sia continua al sistema. Quindi non è che questa idea non funzionerà, ma che in pratica la risposta del sistema è così piccola da essere sepolta nel rumore di misurazione. Nell'esempio del resistore, colpire il resistore con 100 W per 100 ms non causerà abbastanza cambiamenti di temperatura da misurare.

Risposta passo

Ma c'è ancora un modo. Mentre mettere un singolo campione di controllo nel sistema ci avrebbe dato la sua risposta ai singoli campioni direttamente, possiamo ancora dedurlo inserendo una sequenza nota e controllata di risposte di controllo nel sistema e misurando la sua risposta a quelle. Di solito questo viene fatto mettendo una fase di controlloin. Ciò che vogliamo veramente è la risposta a un piccolo blip, ma la risposta a un singolo passo è solo l'integrale di quello. Nell'esempio del resistore, possiamo assicurarci che tutto sia stabile a 0 W, quindi accendere improvvisamente l'alimentazione e inserire 10 W nel resistore. Ciò causerà eventualmente un cambiamento di temperatura ben misurabile sull'uscita. La derivata di ciò con il giusto ridimensionamento ci dice la risposta a un singolo campione di controllo, anche se non siamo riusciti a misurarlo direttamente.

Quindi, per riassumere, possiamo inserire un input di controllo step in un sistema sconosciuto e misurare l'output risultante. Questa è chiamata la risposta al passaggio . Quindi prendiamo il tempo derivato da quello, che è chiamato la risposta all'impulso . L'output del sistema risultante da qualsiasi campione di input di controllo è semplicemente la risposta all'impulso opportunamente ridimensionata in base alla forza di quel campione di controllo. La risposta del sistema a un'intera storia di campioni di controllo è tutta una serie di risposte all'impulso sommate, ridimensionate e inclinate in tempo per ciascun ingresso di controllo. L'ultima operazione arriva molto e ha il nome speciale di convoluzione .

Controllo della convoluzione

Quindi ora dovresti essere in grado di immaginare che per qualsiasi set desiderato di uscite di sistema, puoi inventare la sequenza di ingressi di controllo per causare quell'uscita. Tuttavia, c'è un gotcha. Se diventi troppo aggressivo con ciò che desideri fuori dal sistema, gli input di controllo da raggiungere richiederanno irrealizzabili con valori alti e bassi. Fondamentalmente, più velocemente ti aspetti che il sistema risponda, più grandi devono essere i valori di controllo, in entrambe le direzioni. Nell'esempio del resistore, puoi matematicamente dire che vuoi che passi immediatamente a una nuova temperatura, ma ciò richiederebbe un segnale di controllo infinito per raggiungere. Più lentamente si consente alla temperatura di cambiare al nuovo valore, minore è la potenza massima necessaria per poter scaricare nel resistore. Un'altra ruga è che a volte anche il potere nel resistore dovrà diminuire. Puoi'

Un modo per far fronte a questo è che il sistema di controllo passa il filtro passa-basso all'ingresso del controllo utente prima di utilizzarlo internamente. Figura utenti fanno quello che gli utenti vogliono fare. Lascia che sbattano rapidamente l'input. Internamente filtri passa-basso che per lisciarlo e rallentarlo al più veloce che sai di poter realizzare data la potenza massima e minima che puoi mettere nel resistore.

Esempio del mondo reale

Ecco un esempio parziale di utilizzo dei dati del mondo reale. Questo da un sistema incorporato in un prodotto reale che tra l'altro deve controllare una dozzina di riscaldatori per mantenere vari serbatoi chimici a temperature specifiche. In questo caso, il cliente ha scelto di eseguire il controllo PID (è quello con cui si sentiva a proprio agio), ma il sistema stesso esiste ancora e può essere misurato. Ecco i dati grezzi dalla guida di uno dei riscaldatori con un input graduale. Il tempo di iterazione del loop è stato di 500 ms, il che è chiaramente un tempo molto breve considerando che il sistema si sta ancora visibilmente stabilizzando su questo grafico di scala dopo 2 ore.

In questo caso puoi vedere che il riscaldatore è stato guidato con un passo di circa 0,35 dimensioni (il valore "Out"). Mettere un passo 1.0 completo per molto tempo avrebbe provocato una temperatura troppo alta. L'offset iniziale può essere rimosso e il risultato ridimensionato per tenere conto del piccolo passo di input per inferire la risposta del passo unitario:

Da questo penseresti che sarebbe solo sottrarre i valori di risposta del gradino successivi per ottenere la risposta all'impulso. In teoria è corretto, ma in pratica si ottiene principalmente il rumore di misurazione e quantizzazione poiché il sistema cambia così poco in 500 ms:

Nota anche la piccola scala dei valori. La risposta all'impulso è mostrata in scala di 10 6 .

Chiaramente grandi variazioni tra singole o anche poche letture sono solo rumore, quindi possiamo passare il filtro passa basso per eliminare le alte frequenze (il rumore casuale), che speriamo ci faccia vedere la risposta sottostante più lenta. Ecco un tentativo:

È meglio e mostra che ci sono davvero dati significativi da avere, ma ancora troppo rumore. Ecco un risultato più utile ottenuto con un filtro passa-basso più basso dei dati di impulso grezzi:

Questo è qualcosa con cui possiamo davvero lavorare. Il rumore rimanente è piccolo rispetto al segnale complessivo, quindi non dovrebbe interferire. Il segnale sembra essere ancora lì praticamente intatto. Un modo per vedere questo è notare che il picco di 240 è circa da un rapido controllo visivo e dal filtro oculare che filtra la trama precedente.

Quindi ora fermati e pensa a cosa significa effettivamente questa risposta all'impulso. Innanzitutto, si noti che viene visualizzato volte 1M, quindi il picco è davvero 0.000240 di fondo scala. Ciò significa che, in teoria, se il sistema fosse guidato con un singolo impulso di fondo scala solo per una delle fasce orarie di 500 ms, questa sarebbe la temperatura risultante rispetto a quella lasciata sola. Il contributo di ogni periodo di 500 ms è molto piccolo, come ha senso intuitivamente. Questo è anche il motivo per cui la misurazione diretta della risposta all'impulso non funziona, poiché 0.000240 di fondo scala (circa 1 parte su 4000) è al di sotto del nostro livello di rumore.

Ora puoi facilmente calcolare la risposta del sistema per qualsiasi segnale di ingresso di controllo. Per ogni campione di output di controllo da 500 ms, aggiungere una di queste risposte all'impulso ridimensionate in base alla dimensione del campione di controllo. Il tempo 0 di quel contributo di risposta all'impulso al segnale di uscita finale del sistema è al momento del suo campione di controllo. Pertanto, il segnale di uscita del sistema è una successione di queste risposte all'impulso compensate di 500 ms l'una dall'altra, ciascuna ridimensionata al livello del campione di controllo in quel momento.

La risposta del sistema è la convoluzione dell'ingresso di controllo con questa risposta all'impulso, calcolata ogni campione di controllo, che in questo esempio è ogni 500 ms. Per farne un sistema di controllo, lo si lavora all'indietro per determinare l'ingresso di controllo che produce l'output di sistema desiderato.

Questa risposta all'impulso è ancora abbastanza utile anche se si desidera eseguire un controller PID classico. L'ottimizzazione di un controller PID richiede molta sperimentazione. Ogni iterazione richiederebbe un'ora o due sul sistema reale, il che renderebbe molto lenta la messa a punto iterativa. Con la risposta all'impulso, è possibile simulare la risposta del sistema su un computer in una frazione di secondo. Ora puoi provare nuovi valori PID più velocemente che puoi modificarli e non devi aspettare un'ora o due affinché il sistema reale ti mostri la sua risposta. Ovviamente i valori finali dovrebbero sempre essere controllati sul sistema reale, ma la maggior parte del lavoro può essere eseguita con la simulazione in una frazione del tempo. Questo è ciò che intendevo con "Puoi usarlo come base di simulazione per trovare i parametri per il controllo PID vecchio stile" nel passaggio che hai citato nella tua domanda.


4
Non. pure. squallido.
NickHalden,

4
Penso che alcuni titoli delle sezioni possano essere davvero preziosi qui. Ma fantastico si applica.
Kortuk,

Sono in ritardo alla festa, ma comunque: risposta impressionante, Olin! :)
bitsmack il

7

I filtri FIR e IIR, come menzionato da Jon, sono filtri digitali che implementano direttamente la convoluzione della risposta all'impulso, come dice il nome (Finite \ Infinite Impulse Response).

Convolgere la risposta all'impulso ad un segnale (nel dominio del tempo) è esattamente lo stesso di moltiplicare la funzione di trasferimento alla trasformazione del segnale (nel dominio della frequenza); e, sostanzialmente, consiste nel moltiplicare la risposta all'impulso del filtro alla versione traslata del segnale (si pensi al fatto che la risposta del filtro è fissa nel tempo, mentre il segnale varia continuamente nel tempo).

Nei filtri digitali, la risposta all'impulso è ridotta a un numero fisso di coefficienti che moltiplicano il segnale in un determinato punto; i punti sono separati da ritardi, ottenendo che a 0 moltiplica il valore istantaneo del segnale, mentre un k moltiplica lo stesso segnale dopo k unità di ritardo.

inserisci qui la descrizione dell'immagine

La figura mostra la risposta all'impulso di un filtro generico (passa-basso in questo caso) in cui si ottengono i coefficienti per un filtro FIR a 13 tocchi (il numero di ritardi).

Per ottenere alcune funzioni di trasferimento, un filtro FIR richiederebbe un numero infinito di coefficienti: in questi casi, viene utilizzato un feedback per ottenere filtri IIR (Infinite Impulse Response). Questi filtri consentono di ottenere migliori funzioni di trasferimento (es. Transizione più stretta tra banda passante e banda soppressa nei filtri) ma possono generare instabilità, mentre i filtri FIR sono stabili per costruzione.

Questo tipo di filtri può essere progettato con circuiti analogici, ma richiede amplificatori accurati adattati ai coefficienti e circuiti di ritardo accurati e ha un enorme aumento dell'hardware quando si aumenta il numero di rubinetti. Più spesso questi filtri sono implementati nei DSP, dove le operazioni vengono eseguite su segnali digitali in un modo molto più semplice.

Quindi, per rispondere direttamente alla tua domanda : la regolazione dei filtri digitali viene effettuata semplicemente impostando i coefficienti sulla risposta all'impulso discretizzata.

Aggiornare

OP ha chiesto informazioni sulla risposta di impulso e passo; bene, come hanno detto Olin e Jon, la risposta all'impulso è la derivata della risposta al gradino, e ovviamente la risposta al gradino è l'integrale della risposta all'impulso.

La risposta al gradino è ampiamente utilizzata nei sistemi di controllo perché mostra le cose più importanti su di essi: la velocità con cui rispondono ai rapidi cambiamenti nell'input e se sono stabili e in grado di minimizzare l'errore nel tempo.

Ma la risposta all'impulso è molto importante perché può essere utilizzata per calcolare ciò che il segnale di ingresso in un determinato istante causerà all'uscita, quindi è possibile ottenere il segnale di uscita completo impilando il risultato della risposta all'impulso moltiplicato per il segnale di ingresso: questo è la convoluzione, ed è lì che accade la magia. Sì, perché la risposta all'impulso non è altro che l'anti-trasformata di Fourier della funzione di trasferimento del regolatore.

Quindi questo è il potere dei filtri digitali: implementano direttamente la risposta all'impulso e, se vogliamo riprodurre una risposta a gradino (nel caso di un sistema di controllo) o una funzione di trasferimento (nel caso di un filtro) dobbiamo solo derivare la risposta all'impulso ed estrarre i coefficienti per la FIR.


Bella risposta! Per completarlo, puoi includere come ottenere la risposta all'impulso dal passaggio? (Lo vedo nella risposta di @ JonWatte.)
tyblu

4

La convoluzione è in genere un filtro FIR, non un IIR come si ottiene con poli e zeri in un filtro ricorsivo tradizionale. Ora, se hai la risposta al passaggio, puoi invertirla e preconvolgere il tuo segnale di risposta. Il risultato finale è che l'intero sistema mostra esattamente una risposta graduale. Tuttavia, nel caso generale, ciò introduce un ritardo di gruppo, poiché è necessario "precaricare" la risposta inversa. In un sistema di controllo, ciò può comportare una latenza indesiderata.


@JohWatte, un esempio?
Kortuk,

1
O quello che ho fatto è applicare un filtro passa basso al segnale di controllo. Idealmente un passo avanti produce un passo fuori, ma ciò non è fisicamente possibile poiché l'output dovrebbe andare infinito. Filtrate l'ingresso di controllo in modo che un input di passo si trasformi in qualcosa che potete realizzare, il che significa che i valori di convoluzione non superano mai ciò che l'azionamento di output è in grado di produrre. In particolare, spesso non sono possibili valori negativi. Ad esempio, se stai regolando la temperatura con un riscaldatore resistivo, non puoi produrre calore negativo (con un Peltier potresti, e quindi i valori possono essere negativi).
Olin Lathrop

Come si inverte la risposta al passaggio? Il "segnale di risposta" è l'uscita desiderata?
tyblu

In breve, se ricordo bene: converti la risposta del passo in risposta all'impulso. Quindi si sottrae la risposta all'impulso (con l'impulso eliminato) contorta con il segnale di ingresso dal segnale di uscita. È questa convoluzione che aggiunge un ritardo di gruppo (latenza). Ricordo di aver visto buone referenze una dozzina di anni fa in relazione alla modellazione di microfoni e stanze nel DSP audio.
Jon Watte,

2

Lo capovolgerei e direi che se hai la capacità di misurare la risposta al gradino del tuo sistema, puoi abbreviare gran parte della teoria e andare avanti con l'ottimizzazione dei parametri di controllo. Invece di misurare la risposta ad anello aperto e provare a calcolare i parametri di controllo ideali (sebbene ciò sia utile per trovare un buon punto di partenza per l'ottimizzazione), è possibile ottimizzare il sistema misurando la risposta ad anello chiuso.

L'idea principale è che misurare la risposta del gradino ti permetterà di vedere (approssimativamente) se il sistema di controllo è sotto-smorzato, sovra-smorzato o smorzato in modo critico (il caso ideale).

Se misurate la risposta del passo e vedete squillare, sapete di essere sotto-smorzati. Se misurate la risposta del passo e l'uscita arriva lentamente al valore finale, sapete di essere sotto-smorzati. Se riesci a sintonizzare il controller mentre misuri ripetutamente la risposta del passo, puoi semplicemente regolarlo per ottenere la risposta più veloce senza squillare e sapere che sei vicino alla risposta del caso migliore.

Puoi iniziare semplicemente usando il termine P. Se i risultati non sono soddisfacenti, aggiungere i termini I e D. Il termine I aiuta a sbarazzarsi di lunghe code nella risposta, o casi in cui l'output non è mai del tutto raggiunge il valore desiderato. Il termine D è utile per accelerare la risposta "prevedendo" dove verrà inserito l'input successivo. (La mia ipotesi, anche se non sono un esperto di controlli, è che il termine P può essere ottimizzato in termini assoluti, ma la scelta migliore dei termini I e D dipenderà non solo dalla risposta del sistema sotto controllo, ma anche da le caratteristiche, come il contenuto di frequenza e l'ampiezza, del segnale di ingresso)

Una volta ottenuta la risposta più veloce che puoi ottenere senza squillare, quindi sintonizzala su un valore leggermente smorzato in modo che un cambiamento di temperatura o qualsiasi altra cosa non regoli il sistema in oscillazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.