IL METODO DEL FATTORE DI SCALA GLOBALE 1.1 – ll metodo del fattore di scala globale Il progetto di un sistema di controllo digitale può avvalersi del cosiddetto metodo del fattore di scala globale (FSG), attraverso il quale è possibile stabilire una corrispondenza biunivoca tra il valore reale delle variabili utilizzate in uno schema a blocchi e la loro rappresentazione interna al microprocessore. Il fattore di scala globale, secondo la definizione, è il numero per il quale è necessario dividere una grandezza rappresentata in un microprocessore al fine di ottenerne il valore espresso nella sua unità di misura naturale. Il suo calcolo è relativamente semplice e dipende sia dalle caratteristiche dei trasduttori che da quelle del microprocessore utilizzato nell’implementazione del controllo. 1.2 – Applicazione ad un azionamento per motore PMSM Il metodo del fattore di scala globale ha validità generale e può essere utilizzato per il progetto di un qualsiasi controllo digitale, ma al fine di spiegarne le peculiarità lo particolarizzeremo ad un caso specifico, ossia al progetto di un azionamento per motore sincrono a magneti permanenti. Di seguito, nella figura (1.2.1), si riporta lo schema a blocchi di un PMSM sincrono, completo degli ingressi e delle uscite fornite dal controllo digitale. Fig.1.2.1 – Schema a blocchi di un PMSM isotropo con ingressi ed uscite del controllo digitale. Come si può facilmente osservare, sia gli ingressi che le uscite del controllo passano attraverso alcune costanti moltiplicative, che vanno a formare proprio i fattori di scala globale, il cui scopo è quello di collegaree il valore naturale con quello utilizzato dal microprocessore. Alcune di queste costanti derivano dalla struttura dell'azionamento; altre vengono introdotte artificialmente per rendere omogenee la rappresentazioni interne delle varie grandezze. Per capire più in dettaglio questa situazione, si analizzano in sequenza gli ingressi del controllo, l’anello di velocità e di corrente del controllo stesso, ed infine le uscite. 1.2.1 – Fattore di scala della corrente di fase Solitamente la misura di una corrente di fase viene effettuata mediante una sonda Hall ed un convertitore analogico/digitale in cascata (figura 1.2.1.1). Fig.1.2.1.1 – Fattore di scala globale della corrente di fase. 1 IL METODO DEL FATTORE DI SCALA GLOBALE La sonda Hall restituisce una tensione proporzionale al valore della corrente misurata, mentre all’uscita del convertitore A/D si ottiene la rappresentazione interna al processore della corrente stessa. Possiamo dunque scrivere: ia [V ] = i a [ A] ⋅ K HALL ia [ µP] = ia [V ] ⋅ K A / D (1.2.1.1) (1.2.1.2) dove KHALL e KA/D sono le costanti moltiplicative associate a ciascun blocco; in generale KHALL dipende dal rapporto di trasferimento della sonda, dalla resistenza di carico e dal numero di spire. Dalla definizione di fattore di scala globale, pertanto, si ricava: ia [V ] = ia [ A] ⋅ K HALL ia [ µP] = ia [V ] ⋅ K A / D i [ µP ] ia [V ] = a ⇒ fsg ia = K HALL ⋅ K A / D fsg ia (1.2.1.3) (1.2.1.4) (1.2.1.5) Come esempio applicativo, supponiamo che la sonda Hall riceva in ingresso una corrente compresa tra 0 e 10 ampere, restituendo in uscita una tensione tra 0 e 5 volt. Se ipotizziamo che l'A/D abbia una risoluzione di 10 bit, si ottiene: 5 10 210 − 1 K A/ D = 5 5 210 − 1 ⇒ fsg ia = ⋅ = 102,3 10 5 K HALL = (1.2.1.6) (1.2.1.7) (1.2.1.8) 1.2.2 – Fattore di scala della posizione meccanico-elettrica La misura della posizione meccanico-elettrica assoluta θ me in un motore PMSM è necessaria per la realizzazione del controllo in orientamento di campo, e viene effettuata mediante un resolver-todigital. Tale sensore ha una risoluzione dipendente dalla velocità del motore: più quest’ultima è elevata, meno bit si hanno disposizione per la rappresentazione digitale (solitamente si utilizzano 12 o 14 bit). Se indichiamo con Nb il numero di bit utilizzati dal resolver, e supponendo che quest’ultimo abbia lo stesso numero di poli del motore, il fattore di scala della posizione meccanico-elettrica risulta pari a (figura 1.2.2.1): fsg ϑme = 2 Nb − 1 2π (1.2.2.1) Fig.1.2.2.1 – Fattore di scala globale della posizione meccanico-elettrica. 2 IL METODO DEL FATTORE DI SCALA GLOBALE Come noto, all’interno dello schema di controllo in orientamento di campo vengono utilizzati anche il seno ed il coseno della posizione meccanico-elettrica. In linea di principio, il resolver fornisce direttamente in uscita questi valori in formato analogico, ma se si vogliono risparmiare due convertitori A/D e c’è sufficiente spazio di memoria nel microprocessore, si può pensare di calcolare tali funzioni a partire dalla misura di θ me. A questo scopo è sufficiente salvare in memoria una tabella contenente i valori di un intero periodo del seno o del coseno; essendo posta a valle del resolver-to-digital, è verosimile pensare che essa sia composta da 2Nb locazioni indirizzabili da θ me [µP] (solitamente 2Nb=212=4096 valori). Ogni singola cella della tabella può avere precisione variabile, dipendente dal numero di bit Nbt da cui è composta; in generale, Nbt deve essere sufficiente a rendere distinguibile ogni locazione dalle altre, senza rischiare di incorrere in overflow (nella pratica è sufficiente imporre Nbt=12 bit). Alla luce di queste considerazioni, anche la tabella introduce un proprio fattore di scala per le grandezze sin(θ me) e cos(θ me), pari a (figura 1.2.2.2): fsg sin (ϑme ) = fsg cos(ϑme ) = 2 Nbt −1 (1.2.2.2) Fig.1.2.2.2 – Fattore di scala globale di sin(θme) e cos(θme). Alla luce di queste considerazioni, siamo già in grado di calcolare il fattore di scala globale delle correnti id ed iq del sistema di riferimento solidale al rotore. Come noto, la trasformazione abc/dq consta di una combinazione lineare delle correnti di fase ia, ib, ic e di sin(θ me) e cos(θ me), per cui si può facilmente ricavare: ( fsg iq = fsg id = K HALL ⋅ K A / D ⋅ 2 Nbt −1 ) (1.2.2.3) 1.2.3 – Fattore di scala della velocità meccanico-elettrica La velocità meccanico-elettrica ω me può essere direttamente letta dall’uscita del resolver oppure, se si intende risparmiare un A/D, calcolata differenziando la misura dell'angolo θ me. Se indichiamo con Tcω il periodo di campionamento per l'angolo θ me (e quindi la durata di un ciclo di controllo della velocità), si ricava: ω me [rad / s] = ϑ me (k )[rad ] − ϑ me (k − 1)[rad ] Tcω = ϑ me (k )[ µP] − ϑ me (k − 1)[ µP] fsg ϑme ⋅ 1 Tcω (1.2.3.1) Se non ci sono problemi di overflow, è opportuno considerare come ωme [µP] solamente la differenza tra la rappresentazione digitale degli angoli. In questo modo la costante Tcω può essere inglobata insieme al fattore fsg θme, evitando di far eseguire al processore una divisione che, come noto, è costosa in termini computazionali. Pertanto si ottiene: 3 IL METODO DEL FATTORE DI SCALA GLOBALE ω me [rad / s] = ω me [ µP] ⋅ ⇒ fsg ωme = fsg ϑme Tcω = 1 (1.2.3.2) fsg ϑmeTcω 2 Nb − 1 Tcω 2π (1.2.3.3) Se si ha qualche dubbio sul calcolo del fattore di scala globale, è possibile operare una verifica dimensionale a posteriori. Dalla formula (1.2.3.3) si ricava che fsgωme ha dimensione [s/rad], e ciò è conforme alla definizione di fattore di scala globale. Più in generale, ogni fattore di scala deve avere dimensioni pari all’inverso di quelle della grandezza a cui si riferisce. 1.2.4 – Anello di controllo della velocità Consideriamo ora l’anello di controllo della velocità di un PMSM isotropo, che come abbiamo visto è composto da un blocco PI nel sistema di riferimento dq solidale al flusso di rotore (figura 1.2.4.1). Fig.1.2.4.1 – Anello di controllo della velocità in un PMSM isotropo. Innanzitutto, bisogna sottolineare che le costanti proporzionale ed integrale del PI, così come calcolate nella fase di progetto “a tavolino”, sono quasi sempre dei numeri reali. Per ovviare al problema della loro memorizzazione in un microprocessore che tratta solo numeri interi, risulta necessario utilizzare un fattore di scala adeguato per ognuno di essi (figura 1.2.4.2). Fig.1.2.4.2 – Fattori di scala globale di Kpω e τiω. Si potrebbe obiettare che al giorno d’oggi sono ormai disponibili processori in grado di manipolare con facilità numeri in formato floating-point. Si ricordi tuttavia che le operazioni su tale formato sono molto costose in termini computazionali, e pertanto il rischio è quello di incorrere in un controllo con prestazioni insufficienti per la dinamica desiderata. Nasce ora il problema di determinare adeguatamente sia fsg Kpω che fsg τiω. Questi fattori di scala devono soddisfare due esigenze contrastanti: in primo luogo, sarebbe auspicabile che permettessero un’adeguata risoluzione di Kpω [µP] e τiω [µP], in modo da facilitare eventuali modifiche e tarature successive. Ciò risulta possibile utilizzando fattori di scala molto grandi, in cui le cifre meno 4 IL METODO DEL FATTORE DI SCALA GLOBALE significative di Kpω e τiω risultano seguite, nella rappresentazione interna al processore, da molti zeri (ad esempio, da Kpω=1,4 a Kpω [µP]=140000 con fsg Kpω=100000). Questa scelta contrasta però con la massima risoluzione interna al processore: il rischio è quello di incorrere in overflow con i risultati che ne conseguono. Per tale motivo, solitamente è prassi scegliere questi fattori di scala globali in modo che ci sia uno zero seguente alla cifra meno significativa di Kpω e τiω (ad esempio, da Kpω=1,4 a Kpω [µP]=140 con fsg Kpω=100). Se è possibile, è utile fare in modo che la rappresentazione interna delle costanti del PI sia una potenza di 2: le moltiplicazioni nell’anello di velocità potrebbero quindi essere eseguite mediante degli shiftamenti, notevolmente più veloci in termini computazionali. Consideriamo ora il ramo integrale dello schema riportato in figura (1.2.4.1). L’equazione generale che, secondo la teoria, permette la generazione di i*q,int (k+1) è la seguente: iq*,int (k + 1)[ A] = iq*,int (k )[ A] + K pω τ iω ⋅ eω [rad / s ] ⋅ Tcω [ s ] (1.2.4.1) Possiamo riscrivere questa formula utilizzando le rappresentazioni interne del processore: i q*,int (k + 1)[ µP] fsg i*q ,int Tcω [ s ] = iq*,int (k )[ µP] fsg i*q ,int Tcω [ s ] + K pω [ µP] fsg Kpω ⋅ fsg τiω eω [ µP] ⋅ τ iω [ µP] fsg ωme (1.2.4.2) Dovendo ottenere termini omogenei nell’equazione, è necessario che sia a sinistra che a destra dell’uguale i fattori di scala siano i medesimi. Pertanto si ottiene: fsg i*q ,int = fsg Kpω fsg ωme (1.2.4.3) fsg τiω Tcω [ s ] Si osservi come la divisione per Tcω [s] rappresenti una sorta di "normalizzazione" del fattore di scala rispetto al periodo di campionamento della velocità. Un analogo fattore di scala sarebbe stato ricavato se, nell’equazione (1.2.4.2), fosse stato introdotto un Tcω [µP]=1 e, quindi, fsgTcω=1/Tcω [s]. Trattiamo ora il ramo proporzionale dello schema di figura (1.2.4.1). L’equazione generale che permette la generazione di i*’q,prop è la seguente: i *'q , prop [ A] = K pω ⋅ eω [rad / s ] (1.2.4.4) Utilizzando le rappresentazioni interne al processore si ottiene: i *'q , prop [ µP ] fsg i*'q , prop = K pω [ µP ] eω [ µP ] ⋅ fsg Kpω fsg ωme (1.2.4.5) E’ quindi facile ricavare: fsg i*'q , prop = fsg Kpω fsg ωme (1.2.4.6) Osservando nuovamente lo schema di figura (1.2.4.1), ci si rende conto che il ramo proporzionale e quello integrale vengono sommati al fine di generare il riferimento di corrente i*q [µP]. Per evitare di sommare termini non coerenti fra loro, è necessario che il ramo integrale o il ramo proporzionale siano moltiplicati per una costante che equalizzi il fattore di scala di entrambi i rami; nella figura (1.2.4.1) si è scelto di porre una costante C1 nel ramo proporzionale, ma la scelta non è ovviamente univoca. 5 IL METODO DEL FATTORE DI SCALA GLOBALE Dai fattori di scala precedentemente calcolati è facile ottenere: C1 = fsg i*q ,int fsg i*'q , prop = 1 fsg τiω Tcω [ s ] (1.2.4.7) Passiamo ora alla parte conclusiva dell’anello di velocità, che prevede la limitazione del riferimento di corrente i*q [µP]. Sappiamo che il massimo riferimento di corrente in uscita non deve superare la corrente nominale IN [A] riportata nel datasheet del motore. Pertanto, fissando un valore iq,REFH [µP] per il limite superiore dell blocco limitatore, si ha: iq ,REFH [ µP ] = I N [ A] ⋅ fsg i*q (1.2.4.8) Attraverso questa formula è possibile ricavare facilmente il valore di fsg i*q. Per quanto riguarda il limitatore posto sul ramo integrale, la sua presenza si giustifica considerando che è utile evitare l’integrazione di parti che sarebbero comunque limitate in uscita. Il suo limite superiore può essere modificato dinamicamente secondo la formula: iq , REFH ,int = i q , REFH [ µP] − i q*, prop [ µP] (1.2.4.9) La sottrazione ha senso perché le grandezze coinvolte sono coerenti; i limiti inferiori dei due limitatori sono esattamente gli opposti dei limiti superiori appena calcolati. 1.2.5 – Anello di controllo della corrente Consideriamo ora l’anello di controllo di corrente di un motore PMSM, costituito da due PI e dai blocchi sommatori che disaccoppiano gli assi dq (figura 1.2.5.1). Fig.1.2.5.1 – Anello di controllo della corrente in un motore PMSM. Innanzitutto è necessario procedere all’equalizzazione del fattore di scala di iq o di i*q, affinché la sottrazione che ci restituisce eiq risulti coerente. Un primo modo, poco dispendioso in termini di risorse, per raggiungere questo obiettivo prevede la modifica di fsg iq, inglobando le opportune costanti moltiplicative nella tabella contenente le codifiche di sin(θ me) e cos(θ me). In altre parole, il fattore di scala delle funzioni trigonometriche non sarebbe più uguale a 2Nbt-1, ma risulterebbe pari a: 6 IL METODO DEL FATTORE DI SCALA GLOBALE fsg sin (ϑme ) = fsg i*q (1.2.5.1) fsg ia Qualora questa operazione risulti impossibile a causa di numeri troppo piccoli, è necessario moltiplicare il riferimento i*q [µP] per una costante C2 il cui valore è pari a: C2 = fsg iq fsg i*q = fsg ia 2 Nbt −1 fsg i*q (1.2.5.2) Alla luce di queste considerazioni, si può ben capire che la scelta dei fattori di scala globale non è, in generale, un’operazione univoca: spesso è necessario ritornare sulle scelte effettuate, al fine di ritoccare alcuni valori ed ottenere prestazioni migliori. Il procedimento per il calcolo dei fattori di scala del ramo integrale e proporzionale è del tutto simile al caso già trattato in precedenza a riguardo dell’anello di velocità. In particolare, i due anelli di figura (1.2.5.1) sono uguali e quindi si può fissare: fsg Kpid = fsg Kpiq (1.2.5.3) fsg τiid = fsg τiiq (1.2.5.4) Fig.1.2.5.2 – Fattori di scala globale di Kpiq e τiiq. La costante C3 che rende omogenei gli apporti dei due rami risulta pari a: C3 = 1 fsg τiiq Tc [ s ] (1.2.5.5) dove Tc [s] è il periodo di campionamento della corrente, coincidente con il periodo di switching della SVM, e che risulta più piccolo (di solito 4 o 5 volte) del Tcω utilizzato in precedenza. Ciò è dovuto al fatto che l’anello di corrente è interno a quello di velocità, per cui in un periodo Tcω è necessario svolgere tutti i calcoli relativi all’anello di velocità ed all’anello di corrente, più ulteriori operazioni per la gestione generale del processore. Passiamo ora all’analisi della parte finale dell’anello di corrente. In primo luogo, si osservi che è conveniente porre i limitatori d’uscita dopo i feedforward ed i disaccoppiamenti d’anello; inoltre, il riferimento Yuq, sulla falsariga di quanto già visto per l’anello di velocità, ha una fattore di scala pari a: fsg Yuq = fsg Kpiq fsg i*q (1.2.5.6) fsg τiiq Tc [ s ] Dal punto di vista numerico, è conveniente mantenere per i disaccoppiamenti il fattore di scala di Yuq. Dato che i termini ωmeLsid e ωmeLsiq hanno già due fattori di scala fissati, l’unico modificabile è quello dell’induttanza sincrona Ls, che risulta necessariamente: 7 IL METODO DEL FATTORE DI SCALA GLOBALE fsg Ls = fsg Yuq (1.2.5.7) fsg ωme fsg iq Ciò risulta fattibile a patto che Ls[H] fsg Ls > 1 in modo significativo, altrimenti occorre moltiplicare tutti gli addendi dei nodi di compensazione per un’ulteriore costante. In modo analogo, per i termini feedforward si ottiene necessariamente: fsg λmg = fsg Yuq (1.2.5.8) fsg ωme Anche in questo caso la condizione da verificare è che λmg [Wb/m2] fsgλmg >1 in modo significativo. Per ultimo, i riferimenti di tensione passano attraverso un limitatore, alla cui uscita sono finalmente pronti u*d e u*q. Per identificare il limite superiore, possiamo pensare che u*d sia limitata superiormente dalla metà della tensione nominale generabile dal modulatore vettoriale (se questa è ovviamente sopportata dal motore). Sappiamo che il massimo vettore spaziale generabile ha un modulo pari a 2/3Udc; dovendo applicare una terna di tensioni sinusoidali, che nel piano αβ corrispondono ad un vettore rotante di modulo costante, la massima tensione nominale generabile UN è data dall’intersezione tra l’esagono prodotto dalla SVM e la circonferenza inscritta internamente all’esagono stesso. Pertanto si ricava: U 2 U N = U dc cos 30 ° = dc 3 3 ( ) (1.2.5.9) A questo punto le limitazioni superiori per u*d e u*q sono facilmente calcolabili: u d , H [ µP ] = 0,5 ⋅ U N ⋅ fsg u*d u q , H [ µP ] = (U fsg u *d ) − (u d , H [ µP ]) 2 N (1.2.5.10) 2 (1.2.5.11) Per quanto riguarda i limitatori della parte integrale, dovrebbe essere sufficiente limitare il segnale al 50% della tensione nominale UN: u d , H int [ µP ] = u d , H [ µP ] (1.2.5.12) u q , H int [ µP ] = u d , H int [ µP ] (1.2.5.13) Come già visto per l’anello di velocità, i limiti inferiori di tutti i blocchi limitatori sono gli inversi dei rispettivi superiori. 1.2.6 – Modulatore vettoriale di tensione Vogliamo ora analizzare i fattori di scala globali della parte di controllo a valle dell’anello di corrente, ossia il modulatore vettoriale che genera i riferimenti temporali per l’applicazione del corretto vettore spaziale (parte più a destra della figura 1.2.5.1). In generale, le uscite del sistema di controllo Tm [QT] e Tm+1 [QT] rappresentano una parte delicata dell’azionamento. Dal punto di vista strettamente realizzativo, il sistema di controllo è interamente digitale, per cui esso genera direttamente gli switching pattern per gli IGBT a valle; solitamente questi pattern sono rappresentati da segnali compresi tra 0 e 5 V, opportunamente amplificati da buffer 8 IL METODO DEL FATTORE DI SCALA GLOBALE esterni e disaccoppiati otticamente. Tralasceremo, in questa sede, le problematiche di compensazione delle non idealità della parte di potenza. Abbiamo già visto che il tempo di applicazione Tm [s] è esprimibile attraverso la seguente equazione: Tm [ s ] = 3 Tc * mπ * mπ uα sin − u β cos U dc [V ] 3 3 (1.2.6.1) dove Tc è il periodo di switching della SVM ed Udc [V] è la tensione disponibile sul DC bus. Per Tm+1 vale una formula del tutto analoga, per cui possiamo concentrare la nostra attenzione sull’equazione appena riportata. E’ inoltre noto, e lo si può riscontrare nella figura 1.2.5.1, che la trasformazione dq/αβ prevede di moltiplicare u*d e u*q per il seno ed il coseno dell’angolo θme. Pertanto il fattore di scala di u*α e u*β è il medesimo e risulta pari a: fsg u *α = fsg u*d fsg ϑme (1.2.6.2) Nei sistemi di controllo più precisi anche la tensione Udc viene misurata, al fine di evitare un calcolo errato di Tm e Tm+1 nel caso di calo della tensione disponibile. Questo significa che anche ad Udc è associato un fattore di scala globale fsg Udc, dovuto al condizionamento del segnale ed alla conversione A/D (figura 1.2.6.1). Fig.1.2.6.1 – Fattore di scala globale di Udc. Possiamo ora riscrivere l’espressione di Tm utilizzando le rappresentazioni interne al processore: mπ mπ sin cos [ µP] [ µP] * * µ u P [ ] Tm [ µP] fsg Udc uα [ µP] 3 β 3 = ⋅ − ⋅ fsg mπ fsg u *β fsg mπ fsg Tm 3Tc [ s ] U dc [ µP] fsg u*α sin cos 3 3 (1.2.6.3) A questo punto il fattore di scala globale di Tm [s] è facilmente ricavabile: fsg u*α fsg fsg Tm = mπ sin 3 (1.2.6.4) 3Tc [ s ] fsg Udc Dobbiamo però porre attenzione che il valore numerico di Tm non può essere casuale. Tutte le tempistiche di un microprocessore sono regolate da un clock interno, la cui frequenza è fissata ed eventualmente può essere scalata; il periodo del clock può essere convenientemente considerato come risoluzione temporale del processore, ed indicato genericamente con QT. Pertanto, come anche riportato nella figura 1.2.5.1, è necessario che Tm e Tm+1 assumano valori multipli del quanto temporale QT: 9 IL METODO DEL FATTORE DI SCALA GLOBALE Tm [QT ] = Tm [ s ] Tm [ µP] 3Tc [ s ] fsg Udc = = Tm [ µP] ⋅ QT fsg Tm QT fsg u*α fsg mπ QT (1.2.6.5) sin 3 La costante C4 dello schema di figura 1.2.5.1 vale pertanto: C4 = 3Tc [ s ] fsg Udc fsg u*α fsg mπ QT (1.2.6.6) sin 3 Una volta calcolato Tm [QT], tale valore può essere memorizzato nei registri interni del processore ed utilizzato per attivare la commutazione degli IGBT. Come già accennato in precedenza, sarebbe auspicabile che C4 fosse una potenza di 2, in modo che la moltiplicazione possa essere calcolata mediante shiftamenti, notevolmente più veloci rispetto all’utilizzo di un moltiplicatore. Per raggiungere tale obiettivo è possibile agire, in linea di principio, su ciascuno dei termini che compongono C4, ma quello più semplice e meno problematico da modificare è fsgsin(mπ/3). 10