Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Controllore PI motore SPM in Simulink

Trasformatori, macchine rotanti ed azionamenti

Moderatori: Foto UtenteSandroCalligaro, Foto Utentemario_maggi, Foto Utentefpalone

0
voti

[11] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 24 dic 2019, 16:49

Qui trovate in allegato gli schemi a blocchi, parte complessiva in cui si vede il controllo della velocità e parte interna riguardante il controllo della corrente.
Allegati
speedControl.jpg
currentControl.jpg
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

2
voti

[12] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto UtenteSandroCalligaro » 25 dic 2019, 9:36

Per prima cosa, nello schema di controllo non c'è il disaccoppiamento della back-EMF (dovuta al magnete, cioè \omega_m p \Lambda_{mg}), che solitamente viene inserito. E' un feed-forward banale, comunque, quindi il suo effetto sulla stabilità è trascurabile, mentre ci sarà un effetto sul valore a regime (corrente costante), sull'asse d, in quanto ci sarà coppia e quindi accelerazione, quindi un "disturbo" quasi a rampa.

Non ho voglia di verificare i conti, ma spero tu possa usare Matlab (o simile), per verificare il margine di fase direttamente sulle funzioni di trasferimento, definendole nel dominio di Laplace. In quel caso, la cosa più semplice è definire
Codice: Seleziona tutto
s = tf('s');
ed usare la variabile s come la useresti nelle formule, per poi ottenere diagrammi di Bode delle varie f.d.t. importanti e/o la risposta al gradino della funzione di anello chiuso.

A spanne (se non altro, per avere un'idea della correttezza della taratura), supponendo che la frequenza di attraversamento sia molto lontana (es. più di 5 volte più piccola) rispetto alla frequenza di switching, puoi trascurare l'effetto del ritardo ed applicare un criterio molto semplice, come la cancellazione zero-polo.
Se ti fai due conti, trovi che, con una banda desiderata pari a \omega_{BW}, i due guadagni devono essere
K_p = \omega_{BW} L
K_i = \omega_{BW} R
In quel caso (trascurando, sempre, l'effetto del ritardo dovuto allo switching), la risposta al gradino è criticamente smorzata (senza sovra-elongazione). Inoltre, la frequenza di attraversamento della funzione di anello aperto corrisponde alla banda in anello chiuso.
Il punto, in questo caso, è scegliere una banda che sia piccola rispetto alla frequenza di switching. Siccome il controllo è anche implementato a tempo discreto, si ha un limite di stabilità che corrisponde a circa 1:6. Nella pratica si cerca di rimanere ancora più in basso, anche per evitare che un errore sul parametro di induttanza (ad esempio, dovuto alla saturazione magnetica) possa portare all'instabilità.

La tua frequenza di attraversamento è, nei due casi, inferiore a 1/10 della frequenza di switching, quindi non ci dovrebbero essere problemi (d'altra parte, hai dimensionato in base al margine di fase!).
Se volessi ottenere una banda pari alla frequenza di attraversamento, applicando la cancellazione zero-polo, avresti:
primo caso
K_p = 9525 \cdot 1.67 \cdot 10^{-3}=15.9
K_p = 9525 \cdot 0.6 = 5715
secondo caso
K_p = 2938 \cdot 1.67 \cdot 10^{-3}=4.9
K_p = 2938 \cdot 0.6=1763
Come vedi, i valori sono molto vicini ai tuoi, pur avendo applicato un metodo molto più semplice. I valori "alti" di K_i li ritengo del tutto normali, anche se il problema della saturazione (e del windup) esiste.

Visto che stai simulando, è meglio che riporti lo schema effettivo della simulazione. Magari c'è qualche differenza rispetto al modello teorico che ti è sfuggita.
Com'è fatto l'anti-windup? A che tensione sono saturati i regolatori?

In generale, ti consiglio di:
- non dare niente per scontato, verificando il comportamento di ogni parte dello schema, prima di metterle assieme e soprattutto prima di chiudere l'anello;
- riutilizza le parti (ad es. i regolatori e la f.d.t. dell'R-L), copiando lo schema che hai validato e cambiando solo i nomi delle variabili, se necessario (nel tuo caso non lo è);
- se stai usando Simulink o PLECS, non riportare numeri nello schema di simulazione, ma solo variabili (i numeri li metti in uno script).


Per curiosità, dove studi? Si tratta di una tesi?

PS: non capisco perché dici che l'anello di corrente d è più critico...
PPS: io userei pedici diversi per k_c ed \omega_c, per evitare confusione, altrimenti si potrebbe confondere la frequenza di attraversamento con quella di switching.
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[13] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 25 dic 2019, 11:19

Grazie mille per l'esaustiva risposta. Studio a Padova. Non è una tesi, è solo legato a delle relazioni per due esperienze per il laboratorio di un corso di azionamenti elettrici. Lo chiedo qua più che altro perché gli assistenti non ci hanno preparato bene per affrontarlo visto che la teoria e la pratica non sono esattamente la stessa cosa.

Ho detto che l'anello di corrente è più critico di mia spontaneità (scusate se ho detto una stupidaggine). E' che per il percorso q è vero che c'è anche un polo in più ma c'è anche uno zero in più e come conseguenza (almeno in questo caso) dava un margine più grande di libertà per la pulsazione di attraversamento in alta frequenza (dai conti che facevo mi ricordo).
G_q(s) \simeq \frac{B}{(3/2)(p\Lambda_{mg})^2}\frac{1+s\tau_m}{(1+s\tau_c)(1+s\tau_e)(1+s\tau_{m1})}

dove \tau_{m1} = \frac{JR}{(3/2)(p\Lambda_{mg})^2} è la costante elettromeccanica mentre le altre le ho già definite nel primo post mi pare.

Bello questo metodo di calcolo cancellazione polo zero, non l'ho mai visto!

Qui trovate i due file MATLAB e Simulink. A me lo schema a blocchi sembra giusto, però se mi dici che le discretizzazioni non avrebbero dovuto sentirsi cosi tanto a queste frequenze allora sicuramente qualche errore c'è.

Più che altro io in precedenza avevo applicato il metodo di Ziegler-Nichols a questo modello simulato accorgendomene che il guadagno critico Ku proporzionale per l'anello di corrente Id viene attorno a 11. Di conseguenza non può essere più grande di questo valore come invece viene a noi per un margine di fase di 60. Se non è il problema della discretizzazione allora il modello simulato o quello matematico che hanno qualche errore. I limitatori li vedi dentro ai blocchi regolatori. Forse li trovi disattivati apposta per i test ma comunque attivandoli cambiava solo il pico della salita e non l'oscillazione in se che comunque persisteva.
LAB.zip
(30.63 KiB) Scaricato 189 volte
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

2
voti

[14] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto UtenteSandroCalligaro » 27 dic 2019, 15:39

Ho dato un'occhiata, e mi ci è voluto un po' prima di capire l'inghippo.
Un errore perdonabile (se sei alle prime armi), ma... se dovessi perseverare, sarebbe diabolico! :D

Ho provato solo il controllo di corrente sui due assi, scollegando il regolatore di velocità ed imponendo un gradino su una delle due correnti (vedi schema).
I risultati non mi tornavano. Davo per scontato (ed è quello, solitamente, il motivo per cui non si trovano gli errori) che tu avessi impostato correttamente i parametri di simulazione, in particolare il passo di simulazione ("Fixed-step size", nel tuo caso). Era invece impostato a Ts, che è il periodo di campionamento e di switching. Avendo una costante di tempo pari a Ts/2, la simulazione perde di senso se non si impone un passo molto più piccolo di Ts (ad es. Ts/10).

Purtroppo, se si imposta un passo diverso da Ts, escono degli errori prima dell'inizio della simulazione.
Devo dire che il modo in cui hai gestito il campionamento nel controllo (usando i "Rate Transition") non è usuale. Solitamente si usano, in ingresso alle parti a tempo discreto, dei blocchi "Zero-Order Hold", oppure si mette tutto il controllo in un sottosistema triggerato, con il trigger esplicitamente generato in precisi istanti da un "Pulse generator" (personalmente preferisco la seconda, ma sono valide entrambe le modalità). L'importante è comunque aver chiaro il comportamento del modello (quindi sapere esattamente cosa fa, nel tuo caso, il "Rate Transition"). In un caso del genere, se si impostano bene le cose, si può simulare anche in "variable-step", cosa che tende ad essere più efficiente, purché il "Max step size" sia sufficientemente piccolo.
schema.png

In generale, per usare un simulatore, bisogna avere cognizione di cosa aspettarsi, specialmente come ordine di grandezza della dinamica. Nell'incertezza, conviene fare una prova con un passo di simulazione più piccolo, per vedere se ci sono variazioni sostanziali nei risultati.


nordest ha scritto:visto che la teoria e la pratica non sono esattamente la stessa cosa.

Il mondo reale è un po' più complicato, ma, soprattutto per questo tipo di problemi, anche i modelli teorici abbastanza semplici funzionano piuttosto bene.
Fai qualche domanda in più agli assistenti, vedrai che sapranno aiutarti! ;-)


PS: mi ha incuriosito il fatto che non usi il feed-forward della tensione dovuta al flusso del magnete. E' molto strano, ho sempre visto applicare il "disaccoppiamento degli assi" completo, in letteratura scientifica, in quella tecnica, nel firmware di esempio e di prodotti commerciali e anche in tutti gli appunti di derivazione padovana che ho studiato ("scuola" del prof. Bolognani).
Analiticamente, la mancanza di quella parte di feed-forward (che ho aggiunto, nello schema, in basso) si riflette nel fatto che la dinamica dell'asse q è diversa da un semplice R-L, esattamente come nel caso del controllo di velocità del motore DC con un solo anello (\tau_{m1} viene di solito definita proprio per quel caso). Questo rende molto più complicato dimensionare il regolatore di corrente di asse q, a causa della dipendenza dai parametri meccanici (ed in particolare dal coefficiente di attrito, grandezza difficile da definire, nella pratica*).

* Effettivamente, l'attrito è una di quelle cose che si modellano in modo semplice, ma sono parecchio diverse, nella realtà. Certo, a voler usare un modello un po' più complicato, si potrebbe fare di meglio... :-)
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[15] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 28 dic 2019, 21:46

Grazie infinite per la dettagliata risposta! Il discorso è che questo modello Simulink non l'ho manco fatto io (ma gli assistenti penso). Io a dire la verità era la prima volta che ho usato Simulink. Purtroppo al momento sono impegnato con altre cose e non posso occuparmene dell'argomento (per quello non ho potuto rispondere subito) ma ci tornerò presto in uno dei prossimi giorni con eventuali dubbi e riproverò il modello nuovo con i test.
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

0
voti

[16] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 29 dic 2019, 20:44

Ho fatto altri nuovi tentativi ma per un margine di 60° vedo che proprio non funziona. Non so proprio perché non voglia farmi simulare a un passo più piccolo del tempo di switching. Forse hanno impostato in qualche modo i regolatori discreti per questo passo. In ogni caso anche se è quella dell'inverter non è un gran problema dato che l'inverter è comunque un componente veloce rispetto al resto del circuito. Certo che più il passo è breve, meno si sente l'effetto della discretizzazione (e meglio funzionano i conti con il dominio Laplace continuo) ma non me lo vuole far modificare. Forse potrei provare a trovare dei nuovi guadagni che tengono conto della discretizzazione ad esempio con il metodo di Tustin magari con un prewraping ma non so quanto mi convenga dato che non è semplicissimo e sto comunque lavorando sul simulatore mentre il circuito in laboratorio non so se usa gli stessi tempi di campionamento.

Qualsiasi Kp venga, se è maggiore di 11 il percorso Id verrà instabile perché si può verificare (con il metodo di Ziegler-Nichols) che quel guadagno è critico quindi i calcoli teorici si possono già scartare per Kp più grandi.
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

1
voti

[17] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto UtenteSandroCalligaro » 30 dic 2019, 1:15

La questione del passo di simulazione non è secondaria, se non altro perché c'è un filtro a tempo continuo (che emula il ritardo dell'inverter) con una costante di tempo pari a Ts/2!
La simulazione, in quelle condizioni, non è per niente fedele. Infatti, riducendo il passo di simulazione, le cose iniziano a tornare...

Ho postato il modello modificato. Non volevo farlo, perché sarebbe stato meglio per te risolvere da solo.
Funziona anche con fixed-step = Ts/5.

PS: con un guadagno di 18 è ancora stabile (anche se con oscillazioni abbastanza importanti).
Allegati
LAB_shorter_simstep.zip
(30.35 KiB) Scaricato 242 volte
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[18] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 30 dic 2019, 14:11

Grazie mille! Ci avevo provato per conto proprio ma mi ero bloccato a causa degli errori che mi dava del passo di campionamento diverso. Ho aggiunto modificato il tuo aggiungendo gli altri blocchi riguardanti la velocità e la cosa che noto è che con un margine di fase del 60 per le correnti, tenendo anche un margine di fase di 60 per la progettazione del regolatore della velocità, l'anello complessivo è instabile. Inoltre anche la corrente Iq di conseguenza non è stabile. Noto tuttavia che partendo dalla seguente combinazione di m.f. (60,60) se porto il margine di fase della corrente a 80 (e rifaccio i conti di tutti i guadagni) risulta stabile anche la velocità. Con 80 per la velocità e 60 per la corrente è di nuovo tutto stabile. Tuttavia da come si comporta la corrente vedo che è meglio tenerlo a 80 per la corrente. La velocità non ha risposte troppo diverse in tutte queste combinazioni, cambia solo nel caso (60,60)

Di solito che considerazioni si fanno? Mi viene da pensare che il loop intern è sempre meglio tenerlo più stabile di quello esterno, o il più stabile necessario.

Caso anello velocità mf= 80°, anello corrente mf=60°:

velocitaMF80i60.png
velocitaMF80i60.png (9.88 KiB) Osservato 9313 volte



Vi mostro il caso critico (60,60) nell'allegato. Ora sono un po' impegnato e devo fare altro ma dopo vi mando anche l'anello del controllo di velocità e la funzione di trasferimento sulla quale si gioca per costruire il regolatore della velocità. Per ora penso sia chiaro a tutti che l'anello di corrente è interno a quello della velocità.
Allegati
correnteMF60i60.png
velocitaMF60i60.png
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

0
voti

[19] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto UtenteEcoTan » 1 gen 2020, 19:07

Presumo che R sia la resistenza dell'avvolgimento ed Rid e Riq cosa sono, puri parametri del regolatore?
Avatar utente
Foto UtenteEcoTan
7.720 4 12 13
Expert EY
Expert EY
 
Messaggi: 5420
Iscritto il: 29 gen 2014, 8:54

0
voti

[20] Re: Controllore PI motore SPM in Simulink

Messaggioda Foto Utentenordest » 1 gen 2020, 22:26

Si, R è la resistenza dello statore (che contiene gli avvolgimenti). Rid e Riq rappresentano proprio le funzioni di trasferimento dei regolatori (sarebbe meglio indicarle Rid(s) e Riq(s)).
Io in questo caso avevo progettato solo Rid perché mi veniva richiesto e successivamente ho notato che posso usarlo anche per il ramo Q, tanto il comportamento attorno ai kHz è molto simile infatti viene pressapoco lo stesso margine di fase.
Avatar utente
Foto Utentenordest
83 1 6
Frequentatore
Frequentatore
 
Messaggi: 108
Iscritto il: 2 nov 2018, 1:00

Precedente

Torna a Macchine elettriche

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti