anexo a: transparencias del personal docente y libro de

153
Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes Pág. 1 RESUMEN En el documento se muestra una guía didáctica de las prácticas de control vectorial de la máquina síncrona de imanes permanentes, la cual puede ser aplicada a cualquier asignatura dentro de la docencia de una ingeniería. Ésta guía debe ser tratada como material de apoyo y estudio para cualquier estudiante que pretenda adquirir unos conocimientos mínimos en el ámbito del control vectorial de la máquina síncrona de imanes permanentes. Además, la guía proporciona todas las herramientas necesarias para el perfecto seguimiento de las prácticas. En particular se exponen las transparencias y el libro de prácticas. Este libro es el camino para los lectores que deseen ampliar el campo de conocimiento de los capítulos tratados durante el desarrollo del proyecto. La estructura del libro es la misma que las transparencias del profesorado, incluidas en este mismo anexo del proyecto, para facilitar la lectura, comprensión y búsqueda de la información. Se tratarán los mismos capítulos de las transparencias del profesorado, extendiendo la información de estas debajo de la copia de las mismas. En términos generales, los capítulos son esencialmente: la descripción de la plataforma, la descripción del motor brushless AC y el diseño de las prácticas. El último capítulo es el más interesante pues es la parte que exige un nivel de entendimiento mayor a la hora de poner en práctica todos los conocimientos previamente adquiridos. Finalmente, aclarar que dicho libro tiene como objetivo poner al alcance de la docencia y de los estudiantes una guía didáctica del control vectorial con un procesador digital de señal (DSP) para un motor síncrono de imanes permanentes. Por lo tanto, se pretende desarrollar una primera metodología que ayudará a entender esta teoría y poner en práctica el control vectorial. Esta metodología se aplicará en la docencia de la carrera universitaria del Ingeniero y será ideal para poder ir enriqueciendo la guía con mejoras sucesivas en un campo tan amplio y reciente como es el del control vectorial. Inmediatamente después de la entrega del proyecto, este anexo será aplicado en la asignatura Control de Máquinas Eléctricas como libro de prácticas para el alumnado de la Escuela Técnica Superior de Ingeniería Industrial de Barcelona (ETSEIB).

Upload: others

Post on 17-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 1

RESUMEN

En el documento se muestra una guía didáctica de las prácticas de control vectorial de la

máquina síncrona de imanes permanentes, la cual puede ser aplicada a cualquier asignatura

dentro de la docencia de una ingeniería. Ésta guía debe ser tratada como material de apoyo y

estudio para cualquier estudiante que pretenda adquirir unos conocimientos mínimos en el

ámbito del control vectorial de la máquina síncrona de imanes permanentes. Además, la guía

proporciona todas las herramientas necesarias para el perfecto seguimiento de las prácticas.

En particular se exponen las transparencias y el libro de prácticas.

Este libro es el camino para los lectores que deseen ampliar el campo de conocimiento de los

capítulos tratados durante el desarrollo del proyecto. La estructura del libro es la misma que

las transparencias del profesorado, incluidas en este mismo anexo del proyecto, para facilitar

la lectura, comprensión y búsqueda de la información. Se tratarán los mismos capítulos de las

transparencias del profesorado, extendiendo la información de estas debajo de la copia de las

mismas.

En términos generales, los capítulos son esencialmente: la descripción de la plataforma, la

descripción del motor brushless AC y el diseño de las prácticas. El último capítulo es el más

interesante pues es la parte que exige un nivel de entendimiento mayor a la hora de poner en

práctica todos los conocimientos previamente adquiridos.

Finalmente, aclarar que dicho libro tiene como objetivo poner al alcance de la docencia y de

los estudiantes una guía didáctica del control vectorial con un procesador digital de señal

(DSP) para un motor síncrono de imanes permanentes. Por lo tanto, se pretende desarrollar

una primera metodología que ayudará a entender esta teoría y poner en práctica el control

vectorial. Esta metodología se aplicará en la docencia de la carrera universitaria del Ingeniero

y será ideal para poder ir enriqueciendo la guía con mejoras sucesivas en un campo tan amplio

y reciente como es el del control vectorial.

Inmediatamente después de la entrega del proyecto, este anexo será aplicado en la asignatura

Control de Máquinas Eléctricas como libro de prácticas para el alumnado de la Escuela

Técnica Superior de Ingeniería Industrial de Barcelona (ETSEIB).

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 3

SUMARIO

RESUMEN........................................................................................................................... 1

SUMARIO ........................................................................................................................... 3

A. ANEXO A..................................................................................................................... 5

A.1. Transparencias del personal docente...................................................................... 5

A.1.1. Introducción previa del motor síncrono de imanes permanentes ...................... 5

A.1.2. Modelado y obtención de las ecuaciones......................................................... 7

A.1.3. CDM2480: La plataforma de trabajo............................................................. 19

A.1.4. La coma fija y el formato Q(x)...................................................................... 22

A.1.5. Code Composer Studio: el entorno de programación..................................... 26

A.1.6. Programación básica..................................................................................... 29

A.1.7. Control V/f en lazo abierto............................................................................ 35

A.1.8. Lazo de par................................................................................................... 51

A.1.9. Medida de la posición y la velocidad ............................................................ 54

A.1.10. Lazo de velocidad......................................................................................... 58

A.2. Libro de prácticas ................................................................................................ 60

A.2.1. Introducción ................................................................................................. 60

A.2.2. Introducción previa del motor síncrono de imanes permanentes .................... 61

A.2.3. Modelado y obtención de las ecuaciones....................................................... 64

A.2.4. CDM2480: la plataforma de trabajo .............................................................. 86

A.2.5. La coma fija y el formato Q(x)...................................................................... 94

Anexo A

Pág. 4

A.2.6. Code Composer Studio: el entorno de programación................................... 100

A.2.7. Programación básica ................................................................................... 106

A.2.8. Control V/f en lazo abierto.......................................................................... 114

A.2.9. Lazo de par ................................................................................................. 138

A.2.10. Medida de la posición y la velocidad: ......................................................... 144

A.2.11. Lazo de velocidad ....................................................................................... 151

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 5

A. ANEXO A

A.1. Transparencias del personal docente

A.1.1. Introducción previa del motor síncrono de imanes permanentes

Clasificación de los motores de imanes permanentes

Máquinas imanes permanentes

Máquinas PMDC Máquinas PMAC

Trapezoidales(BLDCM)

Sinusoidales(PMSM )

De polos lisos(SPMSM )

De polos salientes(IPMSM)

ea, ia

eb, ib

ec, ic

ib t

t

t

ia

ic

ea

eb

ec

t0 t1 t 2 t3 t4 t5

Clasificación de los motores PMSM

qr

dr

N

N

N

N

N

N

N

N

SS

S

S S S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

qr

drN

N

N

N

S

S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos lisos Motor de polos salientes

Anexo A

Pág. 6

Prestaciones de los motores PMSM

•Alta densidad de potencia•Alta eficiencia•Alta relación par/inercia•Facilidad de control•Alta fiabilidad•Su control necesita sincronizar las tensiones del estator con la posición del rotor para producir el par adecuado

PMSM vs Máquina inducción

• No requiere de corriente magnetizante• Menor peso y volumen• Rotor más pequeño. Alta relación par/inercia• Requiere el conocimiento de la posición del rotor

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 7

A.1.2. Modelado y obtención de las ecuaciones

Modelado y obtención de las ecuaciones

• Al ser una máquina síncrona necesita en todo momento que las tensiones del estator estén sincronizadas con el imán del rotor• Esto asegura el par adecuado•El control V/f también necesita conocer la velocidad del rotor

Propiedades del motor• Tres devanados con

distribución sinusoidal• Los tres devanados

están separados 120º• El flujo del imán

induce en el estator tres tensiones sinusoidales desfasadas 120º

bs

as

cs

qr

dr

S

N

a

a’

b’

b

c’

c

ImánRotor

Devanado de la fase a. Distribución sinusoidal

Anexo A

Pág. 8

Ecuaciones del motor

abcs s abcs abcs

dV R I

dtλ= ⋅ +

0 0; 0 0 ; ;

0 0

as s as as

abcs bs s s abcs bs abcs bs

cs s cs cs

v r iV v R r I i

v r i

λλ λ

λ

= = = =

Ecuaciones del motor

( ) ( )abcs abcs s abcs rλ λ λ= +

( )

aas abs acs

abcs s bas bbs bcs abcs

cas cbs ccs

L L LL L L IL L L

λ = ⋅

( )

sin( )2sin( )32sin( )3

r

abcs r m r

r

θπλ λ θ

πθ

= − +

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 9

Ecuaciones del motor

( )( )

cos 2

2cos 2 32cos 2 3

aas ls A B r

bbs ls A B r

ccs ls A B r

L L L L

L L L L

L L L L

θ

πθ

πθ

= + −

= + − +

= + − −

( )( )

1 2cos 2 321 2cos 2 321

cos 22

abs bas A B r

acs cas A B r

bcs cbs A B r

L L L L

L L L L

L L L L

πθ

πθ

θ

= = − − −

= = − − +

= = − −

Ecuaciones del motor

2

0 1

2

0 2

1 2min max min max

2

12 2

1 1 1 1 1 1; 2 2

sA

sB

NL rl

NL rl

g g g g

πµ ε

πµ ε

ε ε

=

=

= + = −

qr

drN

N

N

N

S

S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos salientes

Anexo A

Pág. 10

Ecuaciones del motor

( )( )( )

sin0 020 0 sin - 3

0 0 2sin 3

ras s as aas abs acs as

bs s bs bas bbs bcs bs m r

cs s cs cas cbs ccs csr

v r i L L L id

v r i L L L idt

v r i L L L i

θ

πλ θ

πθ

= ⋅ + ⋅ + +

abcs s abcs abcsd

V R Idt

λ= ⋅ +

Ecuaciones del motor

• Sistema de ecuaciones diferenciales no lineales• Términos que dependen del ángulo• Difícil calcular el par• No apto para el análisis

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 11

Se quiere un par constante

• El flujo del imán gira con el rotor• Para dar par constante, el flujo creado por el

estator también tiene que girarbs

as

cs

Fs

S

N

a

a’

b’

b

c’

c

dr

qr

Fi

Corrientes sinusoidales

•El flujo que hay que crear en el estator es giratorio• Hay que crear tres corrientes sinusoidales

bs

as

cs

i s

r

S

N

a

a’

b’

b

c’

c

iasibs

ics

dr

qr

Anexo A

Pág. 12

Transformaciones matriciales

• is es un vector en el plano->sólo se necesitan dos coordenadas (iα y iβ)

• Esta es la transformación de Clarke

0 0

23

a

b a

i

i i

i ii

α

β

=

=

⋅ +=

0 0

2 1 13 2 2

2 3 33 2 2

a b c

a b c

b c

i i i i

i i i i

i i i

α

β

= + + =

= − ⋅ − ⋅

= ⋅ − ⋅

Transformación de Clarke

•Pasa de un sistema trifásico a 120º en un plano a un sistema trifásico ortogonal• No modifica el módulo del vector (no modifica el valor las tensiones y corrientes transformadas)•Las corrientes transformadas todavía dependen del ángulo

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 13

Transformaciones matriciales

• iα y iβ todavía dependen del ángulo eléctrico del rotor θr

• Para eliminar esta dependencia, los ejes α y β tienen que girar con el rotor

• Los ejes α y β que giran con el rotor los llamamos dr y qr ( )

1 0 00 cos sin

0 sin cosr r r

r r

ρ θ θ θ

θ θ

= −

Transformaciones matriciales

Clarke

Giro

Anexo A

Pág. 14

Transformada de Park

• La combinación de la transformada de Clarke y el giro es la transformada de Park:

• Pasa de un sistema trifásico estacionario a un sistema trifásico ortogonal que gira en sincronismo

• Se puede aplicar a cualquier variable (v y i)

( ) ( )( ) ( )

0 1 2 1 2 1 22

cos cos 2 3 cos 2 33

sin sin 2 3 sin 2 3

as

d r r r bs

q r r r cs

i ii ii i

θ θ π θ πθ θ π θ π

= − + ⋅ − − − − +

( ) 10dq r abcsi P iθ −= ⋅

Aplicación de la transformación de Park a las ecuaciones del motor

( ) ( )( ) ( )

( ) ( )

( ) ( )( ) ( ) ( ) ( )

( ) ( ) ( )( )( )

( )

1 1

1

1( )

1 1 1

1 1

1

abcs s abcs abcs

s abcs abcs abcs abcs r

r abcs r s abcs

r abcs abcs

r abcs r

r abcs r s r r abcs

r abcs r r abcs

r ab

dV R I

dtd d

R I L Idt dt

P V P R I

dP L I

dtd

Pdt

P V P R P P I

dP L P P I

dt

P

λ

λ

θ θ

θ

θ λ

θ θ θ θ

θ θ θ

θ λ

− −

− − −

− −

= ⋅ +

= ⋅ + ⋅ +

⋅ = ⋅ ⋅

+ ⋅ ⋅

+ ⋅

⋅ = ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ &( )cs r

( ) ( )

( ) ( )( )

( ) ( )

( ) ( ) ( )

( ) ( )( )

( ) ( ) ( )

10 0

10

0 ( )

10 0

10

10

10

0 ( )

r rdqs r s r dqs

rr abcs r dqs

rdqs r

r rdqs r s r dqs

rr abcs r dqs

rr abcs r dqs

rr abcs r dqs

rdqs r

V P R P I

dP L P Idt

V P R P I

dP L P I

dtd

P L P Idt

dP L P I

dt

θ θ

θ θ

λ

θ θ

θ θ

θ θ

θ θ

λ

= ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+

= ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+

&

&

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 15

Aplicación de la transformación de Park a las ecuaciones del motor

( ) ( ) ( ) ( ) ( )

( ) ( )( )

( ) ( )

1 1

1

1

0 0 0 0 00 0 ; 0 0 30 0 0 3 0

0 0 0

3 30 02 2

3 30 02 2

0 03 3

02

s

r s r s s r abcs r r B

s r B

A Br abcs r r ls

A Bls

ls

A Br abcs r

rd

P R P R r P L P Ldt

r L

L LdP L P Ldt

L L L

LL L

P L P

θ θ θ θ ωω

θ θ ω

θ θ

− −

⋅ ⋅ = = ⋅ ⋅ =

⋅ ⋅ = ⋅ − + + − +

⋅ ⋅ = + 0 ( )

00 ; 0

23 30 0

2 2

rls dqs r

r mA B

ls

L

L L L

λω λ

+ =

− +

&

Aplicación de la transformación de Park a las ecuaciones del motor

( )

0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0

3 ;

2

s ls

d s d d d r q d

q s q q q r d q r m

d ls A B q

v r i L i iv r i L i L iv r i L i L i

L L L L L L

ωω ω λ

= ⋅ + ⋅ + − ⋅ +

= + + =

&&&

( )32ls A BL L+ −

• Desaparecen los términos que dependen del ángulo• Tensiones y corrientes pasan a ser valores constantes• Sistema de ecuaciones manipulable y analizable• Se puede calcular el par de forma sencilla

Anexo A

Pág. 16

Ecuaciones y circuito equivalente

0 0 0r r rs s s ls s

r r r rds s ds d ds r q qs

r r r rqs s qs q qs r d ds r m

dv r i L i

dtd

v r i L i L idtd

v r i L i L idt

ω

ω ω λ

= +

= + −

= + + +

Ldrs+

-

+-

ΠrLqirqsvr

ds

Lqrs+

-

+ -

ΠrLdirdsvrqs

+

-

ΠrΠm

Obtención de la expresión del par

( )

( ) ( )( ) ( ) ( ) ( )( )( )2 2

2 2

pérdidas en los conductores para conversión variación de la energía almacenada

32

3 3 32 2 2 2 2

r r r re ds ds qs qs

r rds qsr r r r r

e s ds s qs d q r m qs d q ds qs

p v i v i

i id dp r i r i L L i L L i i

dt dtω λ

= +

= + + + + + − 144424443

1444442444443

( )( )( )( )( )

de energía

3;

2 232 2

r r rem rm e r m qs d q ds qs r rm

r r re m qs d q ds qs

np T i L L i i

nT i L L i i

ω ω λ ω ω

λ

= = + − =

= + −

1444442444443

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 17

Expresión del par

• El par sólo depende de los parámetros y de las corrientes de la máquina

• El par es proporcional a las corrientes id y iq

• Hay par creado por el imán y par reluctante

( )( )32 2e m q d q d q

nT i L L i iλ= + −

Particularidades del motor SPMSM

( ) ( )

2

0 1

2

0 2

1 2min max min max

2

12 2

1 1 1 1 1 1; 0

2 2

3 3 ;

2 2

sA

sB

d ls A B q ls A B

NL rl

NL rl

g g g g

L L L L L L L L

πµ ε

πµ ε

ε ε

=

=

= + = − =

= + + = + −

qr

dr

N

N

N

N

N

N

N

N

SS

S

S S S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos lisos

Anexo A

Pág. 18

Particularidades del motor SPMSM

• En un motor SPMSM Ld=Lq.

• La estrategia de control es controlar iq, para controlar el par, y controlar id=0

• No hay par reluctante• Si id>0 se debilita el campo del imán y se puede

aumentar la velocidad de giro por encima de la nominal

( )32 2e m q

nT iλ=

El control vectorial del motor PMSM

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 19

A.1.3. CDM2480: La plataforma de trabajo

CDM2480: la plataforma de trabajo

Necesidades para el control

• Puente trifásico, con su respectivo driver• Medida de las tres corrientes de fase• Medida de la velocidad y posición con encoder

incremental con señal de índice

Con

desn

ador

es b

us D

C

Medida de corriente Motor Encoder

Driver

Driver

Driver

Driver

Driver

Driver

Anexo A

Pág. 20

Medida de la corriente

•La medida del corriente de fase se hace con shunt• Shunt: resistencia de muy bajo valor óhmico (0.05 ohm)•La caída de tensión en bornes del shunt es proporcional a la corriente

DSP TMS320F2812

•Procesador digital de señal (DSP) de 32 bits coma fija•Opera a 150 MHz•Capaz de multiplicar y acumular en un único ciclo• Incorpora periféricos específicos para el control de motores (PWM, QEP, ADC) y para comunicaciones (SPI, SCI, CAN)

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 21

Arquitectura TMS320F2812

Memory Bus

128Kw Flash+ 2Kw OTP

4Kw Boot ROM

18Kw RAM

Code security

XINTF

32-bitRegister

FileReal-Time

JTAG

32-bitTimers (3)

C28xTM 32-bit DSP

32x32-bitMultiplier

R M WAtomic

ALU

Interrupt Management

Event Mgr A

Event Mgr B

12-Bit ADC

Watchdog

GPIO

McBSP

CAN 2.0B

SCI-UART A

SCI-UART B

SPI

Perip

heral B

us

CDM2480: la plataforma de trabajo

Anexo A

Pág. 22

A.1.4. La coma fija y el formato Q(x)

La coma fija y el formato Q(x)•Los DSPs usan representación en coma fija por varios motivos:- Menor complejidad del procesador- Rapidez en los cálculos- Bajo coste

•Presenta algunos problemas a tener en cuenta:-Overflow- Errores de cuantificación- Tiene un rango limitado. No es posible representar números grandes y pequeños con la misma representación

Representación binaria coma fija

• Complemento a uno

Rango: [0,16]• Complemento a dos. Números con signo

Rango: [-8,7]

91008212020211001 0123 =+++=⋅+⋅+⋅+⋅⇒

71008212020211001 0123 −=+++−=⋅+⋅+⋅+⋅−⇒

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 23

Complemento a dos

• Normalmente se usa la representación en complemento a dos• Proporciona la capacidad de operar los números con signo• La ALU del DSP puede operar con números en complemento a dos

Formato Q(x)•Permite la representación de números pequeños, incluso decimales• Se basa en desplazar la coma binaria hacia la izquierda• Es un simple reescalado de los números para entenderlos mejor• Permite trabajar en p.u.

Anexo A

Pág. 24

Rango en Q(x)

• Siempre se tienen el mismo número de bits pero en rango distinto

• No se aumenta la precisión de los números

]875.0,1[)3(]75.1,2[)2(

]5.3,4[)1(]7,8[)0(

bits 4

−⇒−⇒−⇒−⇒

QQQQ

Representación en Q(x)

• La misma secuencia representa varios números en función de la posición de la coma binaria

875.0100,1

75.110,01

5.31,001

7,1001

)3(

)2(

)1(

)0(

−⇒

−⇒

−⇒

−⇒

Q

Q

Q

Q

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 25

Operaciones en formato Q(x)

• Al hacer las operaciones (suma, producto,…) hay que tener en cuenta donde tenemos la coma binaria• Suma: la coma binaria tiene que estar en la misma posición en los dos operandos

(2)

(1)

1 0, 0 11.75 1 0, 0 1

0 0, 1 0 1.250.5 0 0 0, 1 1 0, 1 1

Q

Q

− ⇒⇒ + ⇒ −

Operaciones en formato Q(x)• Multiplicación: el formato Q es la suma de las

dos x• Para representar el número en su totalidad

hacen falta el doble de bits

(2)

(1)

1 0, 0 11.75 1 0, 0 1

0 0 0, 1 0.8750.5 0 0 0, 1 1, 0 0 1

Q

Q

− ⇒⇒ × ⇒ −

Anexo A

Pág. 26

A.1.5. Code Composer Studio: el entorno de programación

Code Composer Studio: entorno de programación

• El Code Composer Studio es un entorno integrado de trabajo que permite:- Editar, compilar y grabar el código (en C y en ensamblador)- Permite analizar y depurar el código mediante puntos de detención (breakpoints)- Permite la visualización y modificación de variables internas en tiempo real y sin detener la CPU. Hace mucho más sencillo la sintonización de los controladores

Ventana principal CCS

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 27

Acceso a los registros• Existe un conjunto de archivos que permite el acceso fácil a los registros: DSP281x Header File Package• NombrePeriférico.NombreRegistro.all

// Acceso a todo el registro (16 o 32 bits)•NombrePeriférico.NombreRegistro.bit.NombreBit

// Acceso a un bit del registro•Ejemplo:

AdcRegs.ADCTRL2.bit.RST_SEQ2 = 1;AdcRegs.ADCTRL2.all = 0x9000;

Librerías

• Texas Instruments proporciona numerosas librerías que implementan ya los módulos necesarios para multitud de aplicaciones• Librerías de cálculo matemático, para el control de motores, para análisis de la señal (FFT),...• Permiten programar una aplicación en forma de bloques modulares• El uso de estas librerías simplifica enormemente el tiempo de desarrollo

Anexo A

Pág. 28

Estructura de los módulos

• Cada módulo está concebido como un objeto• Los módulos definen una estructura, que contiene las variables de entrada, las variables de salida, los parámetros del módulo, la llamada a la función de inicialización, y la llamada a la función de ejecución del módulo• Los parámetros están ya inicializados, pero pueden ser modificados• Esta estructura de programación orientada a objetos permite instanciar varias veces un mismo módulo y usarlos en tareas distintas (p.e. tres controladores PI en el control vectorial)

IQMath Library

• Librería proporcionada por Texas Instrumentscon numerosas funciones matemáticas• Proporciona un entorno de trabajo casi como si estuviéramos trabajando en coma flotante• Funciones: sin, cos, atan, conversiones de tipo (de float a int), división, función inversa...

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 29

DMC library

• Librerías proporcionadas por Texas Instrumentscon funciones específicas para el control de motores• Algunos módulos son sólo cálculos (SVPWM, PID, Park, Park inversa, Clarke, Cálculo de la velocidad), pero otros configuran y gestionan los periféricos del DSP (QEP, PWM Driver, medidas analógicas)

A.1.6. Programación básica

Programación básica

• Encender y apagar un LED en función del valor de una variable• Estructura del programa

Inicializar el sistemaConfigurar entradas/salidasConfigurar interrupcionesEjecutar bucle infinito

Modificar el estado del LED en función de una variable (activa)

• La variable la modificaremos con el CodeComposer Studio

Anexo A

Pág. 30

Práctica LED variable

• El código a poner en el bucle infinito es:if(activa)

GpioDataRegs.GPFSET.bit.GPIOF14 = 1;else

GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1;

• Declaración y inicialización de variables:Dec_Ini_Vars.c

• Declaración global de las variables y lasestructuras:

CITCEA.h

Procedimiento de la práctica

1. Enchufar sólo la fuente de 5 V2. Arrancar el Code Composer Studio con el icono3. Abrir el workspace GPIO.wks: des de la barra de

menús ir a File->Workspace->LoadWorkspace-> GPIO.wks

4. Compilar y cargar el programa con el botón Rebuild All5. Ejecutar el programa con el botón Run6. Cambiar el valor de la variable activa de 0 a 1 para

apagar y encender el LED

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 31

Concepto de interrupción• Rutina que interrumpe la

ejecución del bucle principal• Un evento (Timer, fin de

conversión, externo,…) provoca el salto a la rutina de la interrupción

• El bucle principal se interrumpe, pero no se perturba los resultados del código implementado

• Las interrupciones pueden ser síncronas o asíncronas

Inicializaciones

Bucle principal Interrupción

Evento

Retorno al punto del bucle principal donde se produjo

la interrupción

Aplicaciones de las interrupciones

• Permite reaccionar de forma rápida a eventos internos y externos• Permite la ejecución de una rutina de forma periódica (Timer) y sincronizada• Posibilita la implementación de rutinas de control en tiempo real

Anexo A

Pág. 32

Práctica LED variable con interrupciones

• Encender y apagar un LED a una frecuencia fija• Estructura del programa

Inicializar el sistemaConfigurar entradas/salidasConfigurar interrupcionesConfigurar temporizadores del sistema (Timer0)Ejecutar bucle infinito

Modificar el estado del LED en función del valor de un contador

Rutina de interrupciónIncrementar el contador

Especificaciones, rutinas y variables

• El LED tiene que estar 500 ms encendido y 500 ms apagado• La rutina de interrupción interrupcio_Timer0 se ejecuta a 1 kHz. Se usa esta interrupción como base de tiempo•Un contador (cont_T0) se incrementa dentro de la rutina

1 _ 0 1000s cont T⇒ =

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 33

Evolución del Timer0 y del LED

1000 = Periode

0

cont_T0

500 = Ton

LED on LED off

Código a implementar en el bucle principal

if (cont_T0 < Ton){

GpioDataRegs.GPFSET.bit.GPIOF14 = 1;}else{

GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1;if (cont_T0 >= Periode){

cont_T0 = 0;}

}

Anexo A

Pág. 34

Código a implementar en la interrupción

Sólo hace falta incrementar el contador cont_T0

cont_T0++;

Procedimiento de la práctica

1. Enchufar sólo la fuente de 5 V2. Arrancar el Code Composer Studio con el icono3. Abrir el workspace LEDInt.wks: des de la barra de

menús ir a File->Workspace->LoadWorkspace-> LEDInt.wks

4. Compilar y cargar el programa con el botón RebuildAll

5. Ejecutar el programa con el botón Run6. Cambiar el valor de las variables Periode, y Ton

para variar la frecuencia y el tiempo de encendido del LED

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 35

A.1.7. Control V/f en lazo abierto

Control V/f en lazo abierto

Módulo Park inversa• Transforma las variables de la referencia en

sincronismo a la referencia estacionaria

cos sin

sin cosd r q r

d r q r

f f f

f f fα

β

θ θ

θ θ

= ⋅ − ⋅

= ⋅ + ⋅

Anexo A

Pág. 36

Módulo Park inversa

Entradas• de: componente del

eje d• qe: componente del

eje q• ang: ángulo de fase

entre la referencia estacionaria y la que gira en sincronismo

Salidas• ds: componente del

eje α• qs: componente del

eje β

Módulo SVPWM

• SVPWM: Método de modulación basado en los 8 estados posibles de los seis interruptores del puente• Genera menos harmónicos y usa de forma más eficiente la tensión del bus DC• Las entradas son las tensiones vα y vβ, y las salidas los ciclos de trabajo de las tres fases

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 37

El convertidor y sus posibles estados

• Los pares de interruptores son complementarios: si el de arriba está cerrado, el de abajo está abierto

• Cada una de las ramas tiene dos estados posibles• El convertidor tiene un total de 23=8 estados posibles

a

a’

b c

b’ c’

AB

C

vavbvcn

VDC/2

VDC/2

Estados y tensiones del convertidor

00000V7111

0-VDCVDCV6101

VDC-VDC0V5100

VDC0-VDC0V4110

0VDC-VDCV3010

-VDCVDC0V2011

-VDC0VDC0V1001

00000V0000

vcavbcvabvcnvbnvanvβvαVectorcba

2DCV− 2

DCV− 2DCV−

0 0

2 1 13 2 2

2 3 33 2 2

a b c

a b c

b c

v v v v

v v v v

v v v

α

β

= + + =

= − ⋅ − ⋅

= ⋅ − ⋅

2DCV

2DCV− 2

DCV−23 DCV

2DCV

2DCV

2DCV−3

DCV3

DCV

2DCV− 2

DCV2

DCV−3DCV− 3

DCV

2DCV− 2

DCV2

DCV23 DCV−

2DCV− 2

DCV− 2DCV

3DCV− 3

DCV−

2DCV

2DCV− 2

DCV3

DCV3

DCV−

2DCV

2DCV

2DCV

a

a’

b c

b’ c’

AB

C

vavbvcn

VDC/2

VDC/2

Anexo A

Pág. 38

Hexágono de tensiones

Crear la tensión deseada• El SVPWM consiste en sintetizar el vector tensión que se desea aplicar al motor usando únicamente los ocho estados del convertidor• Para ello se usan los dos vectores adyacentes y los dos vectores nulos

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 39

Crear la tensión deseada

T/2 T/2

0 0,V t 1 1,V t 2 2,V t 7 7,V t 7 7,V t 2 2,V t 1 1,V t 0 0,V t

a

b

c

Módulo SVPWMEntradas• Ualfa: componente

del eje α• Ubeta: componente

del eje β

Salidas• Ta: ciclo de trabajo

de la fase a• Tb: ciclo de trabajo

de la fase b• Tc: ciclo de trabajo

de la fase c

Anexo A

Pág. 40

Pulse Width Modulation• PWM es una forma de representar una señal como una secuencia de pulsos- Frecuencia portadora fija- Amplitud de pulso fijo- Anchura de pulso proporcional a la

amplitud de la señal que se quiere representar

- Energía del PWM ≈ Energía del señal

Pulse Width Modulation

Tt

RepresentaciRepresentacióónn PWMPWM

tSeSeññalal originaloriginal

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 41

Comparadores PWM• Este módulo calcula los valores a poner en los comparadores a partir de los ciclos de trabajo calculados anteriormente• Hace de interfaz entre la parte software y la parte hardware. Genera las señales que van a parar a los drivers

Comparadores PWMEntradas• Mfunc_1: ciclo de trabajo

de las salidas PWM 1 y 2 (fase a)

• Mfunc_2: ciclo de trabajo de las salidas PWM 3 y 4 (fase b)

• Mfunc_3: ciclo de trabajo de las salidas PWM 5 y 6 (fase c)

Salidas• PWM1/PWM2: señales de

excitación de los transistores de la fase a

• PWM3/PWM4: señales de excitación de los transistores de la fase b

• PWM5/PWM6: señales de excitación de los transistores de la fase c

Anexo A

Pág. 42

Medida de corrientes y tensión de bus

• Este módulo realiza la conversión analógica-digital de dos corrientes de fase y la tensión del bus de continua• Se pueden programar las ganancias y el offset de cada una de las medidas

Medida de corrientes• Los pines del ADC aceptan tensiones de 0V a

3V• Hay que ajustar externamente la señal

analógica a este rango

0+

-

0 V

1.5 V

3 V

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 43

Medida de corrientes• El conversor de 12 bits devuelve un número

justificado a la izquierda (0000h-FFF0h)• Este valor es convertido a un número en Q15

0.0 V

FFF0h

0000h 8000h

0000h

7FF0h3.0 V

8000hXOR #8000h

Medida de tensión de bus• La tensión de bus sólo es de signo positivo. No

hace falta sumar un offset analógico a la señal• La tensión del bus también es un número en

Q15

0.0 V

FFF0h3.0 V

8000h

SFR(SXM=0)

0000h

7FF8h

4000h

0000h

Anexo A

Pág. 44

Medida de corriente y tensión de bus

Entradas• ia: corriente de la fase a• ib: corriente de la fase b• Vdc: tensión del bus de

continua

Salidas• Imeas_a: valor medido

de la corriente de la fase a

• Imeas_b: valor medido de la corriente de la fase b

• Vdc_meas: valor medido de la tensión del bus de continua

Módulo Clarke• Transforma las tres corrientes

de fase estacionarias a un sistema trifásico ortogonal también estacionario

0

00

23

a b c

a

b a

i i iii i

i ii

α

β

+ + ===

⋅ +=

Clarke

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 45

Módulo ClarkeEntradas• as: medida de fase a• bs: medida de fase b

Salidas• ds: componente del

eje α• qs: componente del

eje β

Módulo Park• Aplica un giro de ángulo θr al sistema trifásico ortogonal

entorno al eje 0.• Transforma las variables de la referencia estacionaria a

la referencia en sincronismo con el rotor

cos sin

sin cosd r r

q r r

f f f

f f fα β

α β

θ θ

θ θ

= ⋅ + ⋅

= − ⋅ + ⋅

Anexo A

Pág. 46

Módulo ParkEntradas• ds: componente del

eje α• qs: componente del

eje β• ang: ángulo de fase

entre la referencia estacionaria y la que gira en sincronismo

Salidas• de: componente del

eje d• qe: componente del

eje q

Control y generación del ángulo

• Genera una rampa que simula el ángulo del rotor (de 0º a 360º, 0000h a FFFFh)• De esta rampa se puede variar su frecuencia, o sea, la velocidad del motor• La consigna de velocidad se modifica en forma de rampa, y no bruscamente

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 47

Plataforma para el control de motores

Puerto paralelo

Encoder

PC

Fuente alimentación 24V

(PSU)

CDM2480+ DSK

Fuente alimentación 5V

Procedimiento práctica 11. Mantener la PSU apagada2. Enchufar sólo la fuente de 5 V3. Arrancar el Code Composer Studio con

el icono4. Abrir el workspace pmsm.wks: des de la

barra de menús ir a File->Workspace->Load Workspace-> pmsm.wks

Anexo A

Pág. 48

Procedimiento práctica 15. Compilar y cargar el programa con el botón

Rebuild All6. Activar el Real Time Monitor: Debug > Real-

time Mode. Pulse Sí cuando aparezca la ventana:

Procedimiento práctica 17. Ejecutar el programa con el botón Run8. Seleccionar la pestaña BUILD2 en la

ventana Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 49

Procedimiento práctica 1

9. Activar el Continous Refresh también para las tres ventanas gráficas

10. Encender la fuente de alimentación PSU11. Poner la variable enable_flag a 1. Y el

motor empieza a girar

Código implementado

rc1.target_value = _ IQ(speed_ref); // target_value is in IQrc1.calc(&rc1);

rg1.rmp_freq = rc1.setpt_value;rg1.calc(&rg1);

ilg2_vdc_vcon1.read(&ilg2_vdc_vcon1);ilg2_vdc_vcon1.Imeas_a = ilg2_vdc_vcon1.Imeas_a - ilg2_vdc_vcon1.Imeas_a_offset;ilg2_vdc_vcon1.Imeas_b = ilg2_vdc_vcon1.Imeas_b - ilg2_vdc_vcon1.Imeas_b_offset;

clarke1.as = _IQ15toIQ((long)ilg2_vdc_vcon1.Imeas_a);clarke1.bs = _IQ15toIQ((long)ilg2_vdc_vcon1.Imeas_b);clarke1.calc(&clarke1);

park1.ds = clarke1.ds;park1.qs = clarke1.qs;park1.ang = rg1.rmp_out;park1.calc(&park1);

Anexo A

Pág. 50

Código implementado

ipark1.de = _IQ(Vd_testing);ipark1.qe = _IQ(Vq_testing);ipark1.ang = rg1.rmp_out;ipark1.calc(&ipark1);

svgen_dq1.Ualfa = ipark1.ds;svgen_dq1.Ubeta = ipark1.qs;svgen_dq1.calc(&svgen_dq1);

pwm1.Mfunc_c1 = (int)_IQtoIQ15(svgen_dq1.Ta); // Mfunc_c1 is in Q15pwm1.Mfunc_c2 = (int)_IQtoIQ15(svgen_dq1.Tb); // Mfunc_c2 is in Q15 pwm1.Mfunc_c3 = (int)_IQtoIQ15(svgen_dq1.Tc); // Mfunc_c3 is in Q15pwm1.update(&pwm1);

Variables importantes

• La variable speed_ref modifica la velocidad de giro del motor (Rango: -0.4 a 0.4)

• La variable rc1.rmp_dly_max modifica la rampa de aceleración y desaceleración (Rango: 0 a 100)

• Las variables Vd_testing y Vq_testing son las tensiones en ejes d y q que se impone

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 51

Procedimiento práctica 1

Procedimiento de parada del sistema de forma adecuada

12. Parar la fuente de alimentación PSU13. Parar el DSP con el botón 14. Parar el Real Time Monitor: Debug >

Real-time Mode15. Hacer un reset de la CPU: Debug >

Reset CPU

A.1.8. Lazo de par

Lazo de par

Anexo A

Pág. 52

Módulo PID

• Este módulo implementa un controlador PID con una precisión de 32 bits• Se puede usar como PI, PD o PID con sólo hacer cero la constante adecuada• Además incorpora anti-windup para evitar la saturación del integrador

Módulo PID

+

-

Ref

Fdb

eKp

1

iTdt∫

Tdddt

+

+

Kc

+

+

++

usat

-+

u

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 53

Módulo PIDEntradas• pid_ref_reg3: valor de

referencia• pid_fdb_reg3: valor de

realimentación

Salidas• pid_out_reg3: salida del

controlador PIDParámetros• Kp_reg3: constante

proporcional• Ki_reg3: constante integral• Kd_reg3: constante derivativa• Kc_reg3: constante de

corrección del integrador (anti-windup)

Procedimiento práctica 2

• Incluir el código necesario para cerrar el lazo de par

• El procedimiento de arranque es el mismo que el caso anterior

• Seleccionar la pestaña BUILD3 en la ventana Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

Anexo A

Pág. 54

A.1.9. Medida de la posición y la velocidad

Módulo QEP y medida del ángulo

• Este módulo procesa las señales del encoder y devuelve la posición y el sentido de giro del rotor• Es la interfaz entre la parte hardware del capturador y el programa

Funcionamiento del encoder

QEP_AQEP_B

Una vuelta(360º mecánicos)

QEP_index

QEP_CLK

QEP_DIR

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 55

Determinación del sentido de giro

Ch. A

Ch. B

(00)

(10)

(11)

(01)

00

10

11

01

Decodificador de sentido de giro

Incrementa el contador

Decrementa el contador

Módulo QEPEntradas• QEP_A: señal del

canal A del encoder• QEP_B: señal del

canal B del encoder• QEP_index: señal de

índice del encoder

Salidas• theta_elec: ángulo

eléctrico del rotor• dir_QEP: sentido de

giro del rotor

Anexo A

Pág. 56

Cálculo de la velocidad

• La medida de la velocidad se realiza a partir de la información del ángulo y del sentido de rotación proporcionada por el encoder• El cálculo de la velocidad se realiza derivando el ángulo • Después se aplica un filtro pasa bajos para eliminar el ruido introducido en el cálculo de la derivada

r rddt

ω θ=

Módulo de Cálculo de la velocidad

Entradas• theta_elec: ángulo

eléctrico del rotor• dir_QEP: sendito de

rotación del rotor

Salidas• speed_frq:

velocidad de rotación del rotor

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 57

Ajuste del ángulo inicial• Como sólo se cierra el lazo de velocidad, hay que decirle al control en qué posición del rotor se da el ángulo cero• Para eso hay que ajustar la variable cal_angleen la ventana Watch Window hasta que el ángulo medido con el encoder esté retrasado 90ºrespecto al ángulo creado internamente• Después abrir el archivo f28xqep.h y modificar el valor por defecto del parámetro cal_angle

Ajuste del ángulo inicial• El ángulo varia entre 0 y

1 en Q15 (0-360º)• 90º es 0.25• Ajustar la variable cal_angle hasta que el ángulo medido esté 90ºgrados retrasado respecto el ángulo creado internamente

Anexo A

Pág. 58

Ajuste del ángulo inicial• Incluir el código necesario para medir la

posición y calcular la velocidad de giro• El procedimiento de arranque es el mismo que

el caso anterior• Seleccionar la pestaña BUILD4 en la ventana

Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

A.1.10. Lazo de velocidad

Lazo de velocidad

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 59

Cerrar el lazo de velocidad• Incluir el código necesario para cerrar el lazo

de velocidad• El procedimiento de arranque es el mismo que

el caso anterior• Seleccionar la pestaña BUILD5 en la ventana

Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

Ajuste PI velocidad

• Hacer Ki_s=0• Ver el error en régimen permanente. Observar que si se aumenta Kp_s, este error disminuye• Con un valor razonable de Kp_s, aumentar poco a poco Ki_s y observar, al provocar un escalón de consigna, el sobrepico, las oscilaciones, y el error estacionario

Anexo A

Pág. 60

A.2. Libro de prácticas

A.2.1. Introducción

Objetivo

El objetivo de esta guía es desarrollar un manual de prácticas para facilitar el seguimiento del

enseñamiento del control vectorial de la maquina síncrona de imanes permanentes. Para el

desarrollo del manual se utilizarán conceptos teóricos del control vectorial y para el desarrollo

de la parte práctica se utilizará una plataforma de control de motores con DSP. La plataforma

de control de motores con DSP en las prácticas de la asignatura de Control de Maquinas

Eléctricas para controlar un motor Brushless AC.

La presente guía irá mostrando progresivamente el análisis del control de par y velocidad, así

como todo lo necesario para entenderlo desde el punto de vista teórico y practico, y así poder

se aplicado a la docencia de la asignatura de Control de Máquinas Eléctricas.

Alcance

Este proyecto contempla la resolución de los siguientes aspectos:

- Clasificación y descripción del motor síncrono de imanes permanentes.

- Modelado, tratamiento y análisis de las ecuaciones del motor.

- Descripción de la plataforma de trabajo así como del DSP.

- Descripción del entorno de programación y de conceptos teóricos previos.

- Descripción e implementación del control V/f en lazo abierto.

- Introducción del control de par.

- Medida de la posición y la velocidad.

- Introducción del último control, el control de velocidad.

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 61

A.2.2. Introducción previa del motor síncrono de imanes permanentes

A continuación se muestran las transparencias incluidas en este capítulo, seguidas de sus

explicaciones, comentarios y ayudas convenientes. Se recuerda que el orden de las

transparencias es el mismo que el seguido en clase por el profesorado.

Se muestra en la transparencia anterior la clasificación de los motores de imanes permanentes

para poder situar el tipo de motor que se usará dentro de la gama de los motores de imanes

permanentes. La primera clasificación como es evidente se encuentra en si el motor es de

corriente continua o corriente alterna.

Se puede apreciar que existen dos tipos de motores con nomenclaturas diferentes, los PMDC

y los PMAC. Las siglas PM significan “permanent magnet” que como bien se supondrá

significa imanes permanentes, y las ultimas siglas DC y AC indican el tipo de corriente

utilizada. La clasificación se centra en los PMAC, ya que son los que interesan en el tipo de

control que se aplicará, pues aparece otra subdivisión llamada BLDCM y PMSM.

Clasificación de los motores de imanes permanentes

Máquinas imanes permanentes

Máquinas PMDC Máquinas PMAC

Trapezoidales(BLDCM)

Sinusoidales(PMSM )

De polos lisos(SPMSM)

De polos salientes(IPMSM)

ea, ia

eb, ib

ec, ic

ib t

t

t

ia

ic

ea

eb

ec

t0 t1 t2 t3 t4 t5

Anexo A

Pág. 62

Los motores BLDCM son los llamados Brusless DC Motors, motivo de sus siglas, o como se

diría en nuestro idioma, motor sin escobillas. También se les suele clasificar por la forma

trapezoidal de la fuerza contraelectromotriz que se genera en los devanados del estator cuando

el rotor gira, tan solo se ha de observar la figura izquierda de la transparencia para entender lo

mencionado.

Los motores PMSM o Permanent Magnet Synchronous Motor, son los que interesan para el

control vectorial que se aplicará. También se les conoce como motores sinusoidales, ya que la

forma de onda de la fuerza contraelectromotriz que se genera en los devanados del estator

cuando el rotor gira, es sinusoidal. Observar la figura de la derecha para completar la

comprensión de la forma sinusoidal de las tensiones.

Los PMSM se subdividen en los SPMSM y los IPMSM. El SPMSM o Surface Permanent

Magnet Synchronous Motor es conocido como motor de polos lisos y el IPMSM o Interior

Permanent Magnet Synchronous Motor es conocido como motor de polos salientes. El motor

que se modelará con ecuaciones es de polos salientes ya que el motor de polos lisos es un caso

particular de éste. El control vectorial se puede aplicar tanto al motor de polos lisos como al

motor de polos salientes, tan solo se ha de adaptar el control a las particularidades de cada

motor. El motor al que se le aplicará el control vectorial es de tipo SPMSM.

Clasificación de los motores PMSM

qr

dr

N

N

N

N

N

N

N

N

SS

S

S S S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

qr

drN

N

N

N

S

S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos lisos Motor de polos salientes

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 63

En la anterior transparencia se pueden apreciar las diferencias constructivas entre el motor de

polos lisos y el motor de polos salientes. El motor de polos lisos tiene los imanes permanentes

montados en la superficie del rotor mientras que el motor de polos salientes tiene los imanes

montados en el interior del rotor, de aquí proviene el nombre de polos salientes.

La elección del motor PMSM, al que se le aplicará el control vectorial, y no otro tipo de

motor es justificado por las prestaciones que ofrecen los motores PMSM, resumidas en la

transparencia anterior. La alta densidad de potencia viene inducida gracias a que los motores

PMSM tienen una relación tamaño potencia muy buena, es decir son motores muy pequeños

para la potencia desarrollada. También es gratificante e ideal la relación par/inercia que

proporcionan, la cual es muy elevada en comparación con otros motores de mayor tamaño.

Todo esto se consigue gracias al diseño de este motor, diseño que ha cuidado todos los

detalles necesarios para obtener una alta eficiencia en un motor tan pequeño y tan difícil de

conseguir que tenga una alta eficiencia.

Los PMSM son motores ideales para el control, ya que presentan una facilidad de control en

todos los aspectos que otros no presentan, además de la gran fiabilidad. Un detalle a tener en

cuenta es que el control vectorial usado, hace que el motor sea síncrono debido a que

Prestaciones de los motores PMSM

•Alta densidad de potencia•Alta eficiencia•Alta relación par/inercia•Facilidad de control•Alta fiabilidad•Su control necesita sincronizar las tensiones del estator con la posición del rotor para producir el par adecuado

Anexo A

Pág. 64

sincroniza las tensiones del estator con la posición del rotor consiguiendo de esta forma el par

deseado en todo momento.

Si se comparan los motores PMSM frente a la Máquina de inducción, se encuentran

prestaciones a favor de los PMSM y alguna que no los favorece tanto. Los motores PMSM no

requieren corriente magnetizante gracias a que tienen imanes permanentes, por lo tanto

presentan un peso menor y un volumen mas reducido. Aún siendo el rotor más pequeño que

en otras máquinas, como la de inducción, se consigue una relación alta par/inercia, y esta es

una de las prestaciones más importantes a tener en cuenta.

El único inconveniente es que el control vectorial aplicado sobre los motores PMSM requiere

el conocimiento de la posición del rotor en todo momento. Se verá mas adelante que este

hecho tan solo complica la implementación del control, pero como todo control, es algo que

ya tiene solución y tan solo se ha de saber resolver, tarea abordada en esta guía didáctica.

A.2.3. Modelado y obtención de las ecuaciones

En el siguiente apartado se abordan todas las ecuaciones necesarias para modelar el motor y

poder analizarlas, para así obtener el sistema, el cual será susceptible para aplicarse el control

vectorial que más adelante se detallará. Se recuerda que se seguirá la misma metodología

PMSM vs Máquina inducción

• No requiere de corriente magnetizante• Menor peso y volumen• Rotor más pequeño. Alta relación par/inercia• Requiere el conocimiento de la posición del rotor

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 65

empleada hasta el momento, la cual era exponer la transparencia expuesta en clase junto con

las explicaciones, comentarios y aclaraciones pertinentes.

En esta transparencia se intenta explicar muy resumidamente donde recae la complejidad del

control y el posterior desarrollo de las ecuaciones. Ya que se trabaja con una máquina

síncrona se necesita en todo momento que las tensiones del estator estén sincronizadas con el

imán del rotor. Este proceso es denominado control V/f (tensión- fase), el cual también

necesita la velocidad del rotor para poder realizar el control adecuado que asegure el par

adecuado en cada momento. Justamente todo esto es lo que se pretende demostrar y explicar

con el desarrollo de ecuaciones mostrado a continuación.

Modelado y obtención de las ecuaciones

• Al ser una máquina síncrona necesita en todo momento que las tensiones del estator estén sincronizadas con el imán del rotor• Esto asegura el par adecuado•El control V/f también necesita conocer la velocidad del rotor

Anexo A

Pág. 66

Con este simple esquema del rotor y del estator del motor se empiezan a deducir propiedades

del motor. En el estator el motor, tiene tres devanados con distribución sinusoidal, esta

distribución significa que están separados 120º eléctricamente. La distribución de los

devanados permite que el flujo del imán induzca en el estator tres tensiones sinusoidales

desfasadas 120º entre si. En el grafico esta esquematizado el devanado de la fase a (o el

sentido del campo magnético) con su distribución sinusoidal con respecto a los otros

devanados y además as, bs y cs corresponden a los ejes magnéticos del estator de sus

respectivas fases. Los ejes dr y qr corresponden a los ejes magnéticos del rotor.

A continuación se muestran todas las transparencias que contienen las ecuaciones del motor y

a posteriori se harán los comentarios pertinentes y necesarios para hacer más amena la

interpretación de dichas ecuaciones.

Propiedades del motor• Tres devanados con

distribución sinusoidal• Los tres devanados

están separados 120º• El flujo del imán

induce en el estator tres tensiones sinusoidales desfasadas 120º

bs

as

cs

qr

dr

S

N

a

a’

b’

b

c’

c

ImánRotor

Devanado de la fase a. Distribución sinusoidal

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 67

Ecuaciones del motor

abcs s abcs abcs

dV R I

dtλ= ⋅ +

0 0; 0 0 ; ;

0 0

as s as as

abcs bs s s abcs bs abcs bs

cs s cs cs

v r iV v R r I i

v r i

λλ λ

λ

= = = =

Ecuaciones del motor

( ) ( )abcs abcs s abcs rλ λ λ= +

( )

aas abs acs

abcs s bas bbs bcs abcs

cas cbs ccs

L L LL L L IL L L

λ = ⋅

( )

sin( )2sin( )32sin( )3

r

abcs r m r

r

θπλ λ θ

πθ

= − +

Anexo A

Pág. 68

Ecuaciones del motor

( )( )

cos 2

2cos 2 32cos 2 3

aas ls A B r

bbs ls A B r

ccs ls A B r

L L L L

L L L L

L L L L

θ

πθ

πθ

= + −

= + − +

= + − −

( )( )

1 2cos 2 321 2cos 2 321

cos 22

abs bas A B r

acs cas A B r

bcs cbs A B r

L L L L

L L L L

L L L L

πθ

πθ

θ

= = − − −

= = − − +

= = − −

Ecuaciones del motor

2

0 1

2

0 2

1 2min max min max

2

12 2

1 1 1 1 1 1;

2 2

sA

sB

NL rl

NL rl

g g g g

πµ ε

πµ ε

ε ε

=

=

= + = −

qr

drN

N

N

N

S

S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos salientes

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 69

En las cuatro transparencias anteriores se ha mostrado el desarrollo seguido para calcular las

ecuaciones del motor. Las ecuaciones del motor se deducen bajo las siguientes suposiciones:

- La distribución espacial de los devanados por fase del estator se asume que es

sinusoidal, por lo tanto la fuerza magnetomotriz producida por el estator se considera

sinusoidal

- No existe ningún efecto térmico sobre las resistencias del estator ni sobre el flujo

magnético permanente.

- El material magnético se supone lineal y que no existe efecto de saturación.

- No existen perdidas en el hierro de la máquina.

La primera transparencia de las cuatro últimas transparencias, muestra la ecuación general de

los voltajes del estator, la cual tiene el subíndice s porque se refiere al estator. Es evidente que

la matriz Rs hace referencia a las resistencias de cada una de las bobinas del estator.

La segunda transparencia muestra el vector del flujo estatorico, pues el flujo del estator en

parte es creado por el mismo flujo del estator y en parte por el flujo de los imanes

permanentes del rotor. Por este motivo existen dos subíndices diferentes, el r (rotor) y el s

(estator). El flujo creado por el estator se obtiene de la matriz de inductancias de las bobinas

del estator, y el flujo creado por el rotor se obtiene de un vector que contempla el ángulo

eléctrico del rotor (θr) y la amplitud del flujo vista desde el estator que es creada por los

imanes del rotor (λm).

La tercera transparencia expresa los valores de las inductancias de la matriz λ del estator.

Estos valores dependen de tres términos bien diferentes. El primer termino Lls es la

inductancia de dispersión (las líneas de flujo que se cierran sin pasar por otra bobina, perdidas

desde el punto de vista del flujo) igual para cada una de las tres fases del estator, el segundo

término LA y LB son las inductancias de las bobinas, y el tercer termino corresponde a θr que

es el ángulo eléctrico del rotor o el mecánico siempre y cuando el número de polos sea el

mismo.

La cuarta transparencia indica como se han cálculado la inductancias de las bobinas, las

cuales contemplan parámetros para su calculo como el número de vueltas en las bobinas (Ns),

Anexo A

Pág. 70

el radio desde el centro hasta la circunferencia interior del estator (r), la longitud axial del

entrehierro (l), µ0 corresponde a la permeabilidad del aire, y las e son definidas con el grosor

máximo y mínimo del entrehierro.

Finalmente lo que se obtiene, viene mostrado a continuación en la transparencia. Es de notar

una fuerte presencia del ángulo del rotor θr en las ecuaciones, pues esta presencia hará

plantear un cambio en la forma de analizar las ecuaciones que a posteriori se explicará.

Ecuaciones del motor

( )( )( )

sin0 020 0 sin - 3

0 0 2sin 3

ras s as aas abs acs as

bs s bs bas bbs bcs bs m r

cs s cs cas cbs ccs csr

v r i L L L id

v r i L L L idt

v r i L L L i

θ

πλ θ

πθ

= ⋅ + ⋅ + +

abcs s abcs abcs

dV R I

dtλ= ⋅ +

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 71

Las conclusiones obtenidas en el análisis de las ecuaciones del motor son las mostradas en la

transparencia anterior. A partir de estas se ha de obtener una vía alternativa para solventar las

complicaciones, como por ejemplo la dependencia de las ecuaciones del ángulo θr que impide

un análisis y un control fácil. También el par presenta una dificultad de cálculo que será

solventada con el procedimiento explicado a continuación.

Resumiendo, existen dos complicaciones que se han de solventar antes de proseguir con el

desarrollo práctico del control. Las dos complicaciones son resumidas en: cálculo de la

expresión del par y dependencia de las ecuaciones del ángulo θr. A continuación es explicada

la solución al problema de la obtención de la ecuación del par.

Ecuaciones del motor

• Sistema de ecuaciones diferenciales no lineales• Términos que dependen del ángulo• Difícil calcular el par• No apto para el análisis

Anexo A

Pág. 72

El problema reside en el par, el cual no es constante si se utilizan las ecuaciones expuestas

anteriormente. Debido a que el flujo del imán gira con el rotor, es necesario que el flujo del

estator también gire con la misma velocidad que el flujo del imán y así conseguir el par

constante en el motor. A continuación se explica como se puede crear un flujo giratorio en el

estator.

Se quiere un par constante

• El flujo del imán gira con el rotor• Para dar par constante, el flujo creado por el

estator también tiene que girarbs

as

cs

Fs

S

N

a

a’

b’

b

c’

c

dr

qr

Fi

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 73

Para poder crear un flujo en el estator que sea giratorio se han de inyectar en el estator tres

corrientes sinusoidales desfasadas 120º entre ellas. A partir del análisis de las ecuaciones

básicas el motor se ha podido determinar la forma que han de tener las corrientes en el estator.

Inyectando tres corrientes sinusoidales, el flujo del estator pasa a ser giratorio y finalmente el

par que se obtiene es constante según lo anteriormente analizado.

Como bien se sabrá la complicación estará en crear tres corrientes sinusoidales, cosa que no

es fácil en cualquier tipo de control. En el control vectorial que será aplicado, la clave está en

crear estas tres corrientes sinusoidales en el tiempo exacto y con la amplitud justa, pues como

ya se verá mas adelante estas tres corrientes serán obtenidas mediante el método PWM (Pulse

Width Modulation) el cual utiliza seis transistores encargados de proporcionar el voltaje

necesario en el tiempo de ciclo preciso para cada uno de los vectores Ia, Ib y Ic que forman Is

ó bien como se ha llamado anteriormente Iabcs.

Corrientes sinusoidales

•El flujo que hay que crear en el estator es giratorio• Hay que crear tres corrientes sinusoidales

bs

as

cs

i s

0r

S

N

a

a’

b’

b

c’

c

iasibs

ics

dr

qr

Anexo A

Pág. 74

El vector Is de corrientes obtenido en la transparencia anterior, es un vector formado por tres

componentes sinusoidales, las cuales están englobadas dentro de un plano, por lo tanto se

puede apreciar que los ejes a, b y c no son ortogonales. Con objetivo de simplificar las

ecuaciones del motor, se realiza una transformación, llamada Clarke, que transforma un

sistema no ortogonal a un sistema ortogonal. En el caso tratado se transforma el vector Iabcs

de tres componentes en un vector que tan solo tiene dos componentes, α y β, ya que la

tercera componentes es cero.

Como conclusión se ha transformado el vector is en un vector iαβ que solo necesita dos

coordenadas y que pertenece a un sistema ortogonal. En la transparencia superior se

encuentran las ecuaciones y un pequeño gráfico que ayudan a entender el proceso explicado

Transformaciones matriciales

• is es un vector en el plano->sólo se necesitan dos coordenadas (iα y iβ)

• Esta es la transformación de Clarke

0 0

23

a

b a

i

i i

i ii

α

β

=

=

⋅ +=

0 0

2 1 13 2 2

2 3 33 2 2

a b c

a b c

b c

i i i i

i i i i

i i i

α

β

= + + =

= − ⋅ − ⋅

= ⋅ − ⋅

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 75

A continuación se explican algunas características de la transformación de Clarke, la cual es

capaz de convertir un sistema trifásico a 120º a un sistema trifásico ortogonal. Otra propiedad

importante es que no modifica el valor de las tensiones y las corrientes transformadas ya que

no varia el modulo del vector. Pero no hay que dejar de lado que esta transformación no ha

evitado el problema de que las corrientes transformadas aún dependen del ángulo que se

comentaba anteriormente (θr). Por lo tanto es obvio que aún queda pendiente otra

transformación que se verá a continuación.

Transformación de Clarke

•Pasa de un sistema trifásico a 120º en un plano a un sistema trifásico ortogonal• No modifica el módulo del vector (no modifica el valor las tensiones y corrientes transformadas)•Las corrientes transformadas todavía dependen del ángulo

Anexo A

Pág. 76

Como bien se ha comentado anteriormente aún queda un último paso, para obtener unas

ecuaciones del motor que cumplan los dos objetivos a conseguir, el cual es eliminar la

dependencia del ángulo θr. Se elimina la dependencia haciendo girar todo el sistema de

referencia de las corrientes y tensiones con el ángulo θr. Para realizar esto tan solo se ha de

conseguir que los ejes de referencia α y β giren con este valor de ángulo θr, y es tan fácil

como aplicar la matriz de un giro, pues a partir de ahora se trabajará con los eje dr y qr que son

los ejes siempre representados en los dibujos de las primeras transparencias ya que son los

ejes que tienen interés a la hora de analizar las ecuaciones del motor y la distribución de las

corrientes, y además se recuerda que representan a los ejes magnéticos del rotor.

Se recuerda que el ángulo θr corresponde al ángulo eléctrico del rotor, el cual coincide con el

ángulo mecánico del rotor siempre y cuando el motor tan solo tenga un par de polos. Préstese

atención a este comentario ya que induce a error en muchas ocasiones.

Transformaciones matriciales

• iα y iβ todavía dependen del ángulo eléctrico del rotor θr

• Para eliminar esta dependencia, los ejes α y β tienen que girar con el rotor

• Los ejes α y β que giran con el rotor los llamamos dr y qr ( )

1 0 00 cos sin

0 sin cosr r r

r r

ρ θ θ θ

θ θ

= −

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 77

Resumidamente y para que quede claro lo mejor es mostrar un gráfico donde quede

esquematizado el proceso realizado. Se puede observar con la transformación de Clarke se

pasa de un sistema trifásico de ondas sinusoidales a un sistema en el plano de ondas

sinusoidales y finalmente con el giro se consigue que estas ondas se conviertan en rectas y

valores constantes, pues ahora resulta mucho más fácil el trabajar y poder analizar los valores

obtenidos. Siempre que se trabaja con valores constantes ya que es mucho más fácil realizar

un control digital que con valores que varían en el tiempo.

Transformaciones matriciales

Clarke

Giro

Anexo A

Pág. 78

En resumen de todo lo expuesto anteriormente, se obtiene una transformada de Park que es la

combinación de la transformada de Clarke y el giro. Esta transformada convierte un sistema

trifásico estacionario en un sistema trifásico ortogonal que gira en sincronismo con la θr del

rotor. Además esta transformación se aplica en forma de matriz, tal y como se indica en la

transparencia anterior, a cualquier variable v y i. Obsérvese el cambio de nomenclatura de las

tensiones y las corrientes, pues tan solo viene a ser un cambio de ejes y un giro, sencillas

operaciones algebraicas y geométricas pero con un claro significado físico.

A continuación se aplica la transformada de Park a las ecuaciones del motor originales y se

muestra todo el desarrollo matricial seguido y obtenido. Es conveniente perder unos minutos

en hacer el seguimiento de las transformaciones que se realizarán a continuación y sobretodo

entender todo lo realizado anteriormente ya que es la base mínima para un perfecto

seguimiento de las prácticas que se realizarán como última instancia.

Transformada de Park

• La combinación de la transformada de Clarke y el giro es la transformada de Park:

• Pasa de un sistema trifásico estacionario a un sistema trifásico ortogonal que gira en sincronismo

• Se puede aplicar a cualquier variable (v y i)

( ) ( )( ) ( )

0 1 2 1 2 1 22

cos cos 2 3 cos 2 33

sin sin 2 3 sin 2 3

as

d r r r bs

q r r r cs

i i

i ii i

θ θ π θ πθ θ π θ π

= − + ⋅ − − − − +

( ) 10dq r abcsi P iθ

−= ⋅

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 79

Aplicación de la transformación de Park a las ecuaciones del motor

( ) ( )( ) ( )

( ) ( )

( ) ( )( ) ( ) ( ) ( )

( ) ( ) ( )( )( )

( )

1 1

1

1( )

1 1 1

1 1

1

abcs s abcs abcs

s abcs abcs abcs abcs r

r abcs r s abcs

r abcs abcs

r abcs r

r abcs r s r r abcs

r abcs r r abcs

r ab

dV R I

dtd d

R I L Idt dt

P V P R I

dP L I

dtd

Pdt

P V P R P P I

dP L P P I

dt

P

λ

λ

θ θ

θ

θ λ

θ θ θ θ

θ θ θ

θ λ

− −

− − −

− −

= ⋅ +

= ⋅ + ⋅ +

⋅ = ⋅ ⋅

+ ⋅ ⋅

+ ⋅

⋅ = ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ &( )cs r

( ) ( )

( ) ( )( )

( ) ( )

( ) ( ) ( )

( ) ( )( )

( ) ( ) ( )

10 0

10

0 ( )

10 0

10

10

10

0 ( )

r rdqs r s r dqs

rr abcs r dqs

rdqs r

r rdqs r s r dqs

rr abcs r dqs

rr abcs r dqs

rr abcs r dqs

rdqs r

V P R P I

dP L P I

dt

V P R P I

dP L P I

dtd

P L P Idt

dP L P I

dt

θ θ

θ θ

λ

θ θ

θ θ

θ θ

θ θ

λ

= ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+

= ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅

+

&

&

Aplicación de la transformación de Park a las ecuaciones del motor

( ) ( ) ( ) ( ) ( )

( ) ( )( )

( ) ( )

1 1

1

1

0 0 0 0 00 0 ; 0 0 30 0 0 3 0

0 0 0

3 30 0

2 23 3

0 02 2

0 03 3

02

s

r s r s s r abcs r r B

s r B

A Br abcs r r ls

A Bls

ls

A Br abcs r

rd

P R P R r P L P Ldt

r L

L LdP L P L

dtL L

L

LL L

P L P

θ θ θ θ ωω

θ θ ω

θ θ

− −

⋅ ⋅ = = ⋅ ⋅ =

⋅ ⋅ = ⋅ − + + − +

⋅ ⋅ = + 0 ( )

00 ; 0

23 3

0 02 2

rls dqs r

r mA B

ls

L

L LL

λω λ

+ =

− +

&

Anexo A

Pág. 80

Finalmente se obtiene un sistema de ecuaciones con las propiedades deseadas, las cuales eran:

hacer desparecer los términos que dependen del ángulo θr (que es variable en el tiempo), los

valores de las tensiones y las corrientes son constantes y no variables, el sistema de

ecuaciones pasa a ser lineal por lo tanto más manipulable. En definitiva se cumplen los dos

objetivos principales que eran encontrar un sistema de ecuaciones lineal y sobretodo obtener

una ecuación del par con forma sencilla, ya que el problema del par constante ya se analizó y

quedó resuelto. Obsérvese que el único término que no había aparecido hasta el momento es

? r, éste término tan solo es la derivada de θr.

A partir de ahora se trabajará con todas las variables referidas a los nuevos ejes 0, d y q que

son los ejes que permiten la simplificación de todo el análisis, pero toda transformación

necesita de una antitransformada para obtener los valores reales de las variables, más adelante

se verá de que se trata esta antitransformada.

Aplicación de la transformación de Park a las ecuaciones del motor

( )

0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0

3 ;

2

s ls

d s d d d r q d

q s q q q r d q r m

d ls A B q

v r i L i iv r i L i L iv r i L i L i

L L L L L L

ωω ω λ

= ⋅ + ⋅ + − ⋅ +

= + + =

&&&

( )32ls A BL L+ −

• Desaparecen los términos que dependen del ángulo• Tensiones y corrientes pasan a ser valores constantes• Sistema de ecuaciones manipulable y analizable• Se puede calcular el par de forma sencilla

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 81

Con el sistema de ecuaciones tan sencillo que queda se pueden obtener tres ecuaciones bien

sencillas de analizar, por lo tanto ya no hemos de trabajar con matrices, que como ya se ha

comentado anteriormente facilita las tareas en diferentes ámbitos. Además estas ecuaciones

representan un circuito equivalente muy sencillo de analizar. Los subíndices s indican que las

Ecuaciones y circuito equivalente

0 0 0r r rs s s ls s

r r r rds s ds d ds r q qs

r r r rqs s qs q qs r d ds r m

dv r i L i

dtd

v r i L i L idtd

v r i L i L idt

ω

ω ω λ

= +

= + −

= + + +

Ldrs+

-

+-

ηrLqirqsvr

ds

Lqrs+

-

+ -

ηrLdirdsvrqs

+

-

ηrηm

Obtención de la expresión del par

( )

( ) ( )( ) ( ) ( ) ( )( )( )2 2

2 2

pérdidas en los conductores para conversión variación de la energía almacenada

32

3 3 32 2 2 2 2

r r r re ds ds qs qs

r rds qsr r r r r

e s ds s qs d q r m qs d q ds qs

p v i v i

i id dp r i r i L L i L L i i

dt dtω λ

= +

= + + + + + − 144424443

1444442444443

( )( )( )( )( )

de energía

3;

2 232 2

r r rem rm e r m qs d q ds qs r rm

r r re m qs d q ds qs

np T i L L i i

nT i L L i i

ω ω λ ω ω

λ

= = + − =

= + −

1444442444443

Anexo A

Pág. 82

tensiones y corrientes son del estator, y los superíndices r quieren decir que todo está

referenciado al rotor (θr) o con la transformación de Park aplicada.

En la transparencia anterior se ha mostrado el desarrollo de la expresión del par. Como bien se

sabe el par se obtiene a partir de la potencia, por lo tanto el primer término obtenido es la

potencia desarrollada la cual se calcula multiplicando cada corriente y cada tensión de cada

fase; la corriente en el eje 0 vale cero por este motivo no aparece en la expresión.

Después de analizar a que corresponde cada término se llega a la conclusión de que el término

que no contempla la potencia debida a las resistencias, pues son perdidas, y el que no

contempla la variación temporal de las intensidades con el tiempo, pues es la variación de la

energía magnética almacenada, resulta ser el término de la conversión de la energía eléctrica

en energía mecánica.

Finalmente tan solo se ha de escoger la última parte de la expresión de la potencia y dividirla

por la velocidad angular mecánica del motor y de esta forma se obtiene la expresión del par

Te. Se recuerda la ? rm es la velocidad mecánica del rotor, la ? r es la omega eléctrica del

rotor o estator, ya que es un motor sincrono, y la n es el número de polos (no el de pares de

polos) que relaciona estas dos ? . El valor de 3/2 se obtiene por los cálculos numéricos

realizados en la transformación de Park la cual no es ortonormal, por lo tanto no se conserva

Expresión del par

• El par sólo depende de los parámetros y de las corrientes de la máquina

• El par es proporcional a las corrientes id y iq• Hay par creado por el imán y par reluctante

( )( )32 2e m q d q d q

nT i L L i iλ= + −

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 83

la potencia pero si que se conserva el módulo de los vectores tensión y corriente ya que la

matriz de la transformación es ortogonal.

Analizando la expresión del par se puede apreciar que el par tan solo depende de parámetros

físicos del motor y de las corrientes del mismo, además de ser proporcional a éstas. Pues se

tiene par creado por el imán y par creado por la reluctancia, denominado reluctante. La parte

correspondiente a λm es la parte del par creado por el imán, y la demás es la parte del par

reluctante.

Todo el análisis de las ecuaciones se ha realizado para el motor de polos salientes, que es un

caso general. Se particularizará el análisis al motor de polos lisos, caso particular del motor de

polos salientes, y además es el motor que se utilizará en el control vectorial durante las

sesiones de prácticas. El motor de polos salientes resulta que físicamente tiene unas

características constructivas muy concretas que desvelaran las claves del control. Pues en este

tipo de motor resulta ser que e2 es cero, por lo tanto Ld = Lq.

Particularidades del motor SPMSM

( ) ( )

2

0 1

2

0 2

1 2min max min max

2

12 2

1 1 1 1 1 1; 02 2

3 3 ;

2 2

sA

sB

d ls A B q ls A B

NL rl

NL rl

g g g g

L L L L L L L L

πµ ε

πµ ε

ε ε

=

=

= + = − =

= + + = + −

qr

dr

N

N

N

N

N

N

N

N

SS

S

S S S

S

S

Estator

Rotor

Imanes permanentes

Ranuras para los devanados

Motor de polos lisos

Anexo A

Pág. 84

En un motor de polos lisos ya se ha explicado que se cumple que Ld=Lq, por lo tanto según la

nueva expresión del par los parámetros a controlar serán iq y id. Tan solo se tiene que

controlar que id sea cero y que el valor de iq sea el adecuado para obtener el valor deseado del

par. El valor de id tan solo interesa que sea mayor que cero en casos donde interese que la

velocidad de giro del motor esté por encima de la nominal, pero para realizar esto también es

necesario debilitar el campo del imán. Obsérvese que en la nueva ecuación de par no hay par

reluctante, justamente es la parte que diferencia esta ecuación con la ecuación de par obtenida

en el caso genérico.

Después de todo el desarrollo de las ecuaciones se ha logrado definir una estrategia de control

o al menos se sabe que variables se han de controlar en el control de este motor. A

continuación esquematizaremos el control a aplicado sobre este motor que se desarrollará en

las prácticas.

Particularidades del motor SPMSM

• En un motor SPMSM Ld=Lq.

• La estrategia de control es controlar iq, para controlar el par, y controlar id=0

• No hay par reluctante• Si id>0 se debilita el campo del imán y se puede

aumentar la velocidad de giro por encima de la nominal

( )32 2e m q

nT iλ=

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 85

En esta transparencia se puede observar el control implementado en forma de esquema de

bloques. Los niveles indican el progreso del control, ya que se irán implementando diferentes

controles, empezando desde el sistema en lazo abierto (nivel 1) y acabando con un control

total de velocidad y posición (nivel 5).

El modulo SVPWM es el encargado de calcular y proporcionar los tiempos de obertura de los

transistores para crear las tensiones que se le han de aplicar al motor en cada una de las fases

(a, b, c). Se puede observar que del valor de estar tensiones se pueden obtener los valores de

las corrientes y tratarlas mediante las ecuaciones y las transformaciones de park y clarke para

obtener las corrientes que se han de controlar mediante módulos PID. Mediante este proceso

se puede controlar el par proporcionado, el cual se ha de adecuar al ángulo θr impuesto. Como

último paso del control, se añade al motor un encoder que medirá el valor exacto de θr y de la

velocidad, pues con esta medida se podrá realizar un control de la velocidad al igual que del

par mucho más preciso ya que se trabaja con el ángulo real medido.

Es recomendable que llegados a este nivel se reflexione y se vuelva a leer todo lo anterior,

pensando aquellos puntos que no hayan quedado claros, pues proseguir sin tener claro todo

podría crear aún más confusión. Aquella persona que comprenda el desarrollo realizado

deberá entender perfectamente el esquema del control mostrado en est

El control vectorial del motor PMSM

Anexo A

Pág. 86

A.2.4. CDM2480: la plataforma de trabajo

En el siguiente apartado se presenta la plataforma de trabajo con la que se realiza el control

vectorial. A continuación tan solo se presenta la fotografía de una parte del testbed, pues en si

se trata de la plataforma con que se trabajará. Es la parte más importante de todo el testbed, y

esta compuesta por la placa CDM2480 (Control De Motores 24 V 80 W) y la placa DSK

TMS320F2812 (starter kit).

La fotografía muestra la parte más importante y tangible de la plataforma, que va a realizar el

control del motor que se encuentra situado en la parte inferior derecha de la fotografía. El

motor de la casa Maxon es del tipo brushless. Al lado derecho del este según la fotografía se

situa el enconder incremental mencionado anteriormente.

También se pude distinguir en la fotografía dos partes muy diferenciadas del testbed: el

circuito impreso inferior que es la parte de potencia (CDM2480) y el circuito impreso

inmediatamente superior a éste que es la parte del control (DSK TMS320F2812). Claramente

se puede apreciar que el circuito inferior es la interfaz de potencia entre el DSP y el motor.

Dispone de la circuiteria necesaria para completar la plataforma integral del control de

motores. La placa CDM2480 está dividida básicamente en dos partes: la primera es la

encargada de suministrar la tensión y corriente necesaria al motor para que este gire de forma

CDM2480: la plataforma de trabajo

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 87

adecuada, y la segunda es la encargada de medir tensiones y corrientes en los bornes del

motor y suministrar estos datos de forma correcta para que el DSP los pueda entender bien.

La primera parte, la de potencia, tiene tres elementos básicos: el bus de continua, los drivers y

el puente trifásico de transistores. El bus de continua está formado básicamente por una

batería de condensadores electrolíticos, capaces de suministrar los picos de corriente que el

puente trifásico demande y que la fuente de alimentación no pueda aportar. Además, dispone

de algunos elementos de autoprotección para hacer más robusto el sistema. El puente trifásico

está formado por seis transistores MOSFET a forma de puente trifásico normal y corriente.

Los drivers son los encargados de adaptar las señales de conmutación provenientes del DSP,

con niveles lógicos, a niveles entendibles por los transistores.

Por lo que respecta a las medidas, hay que decir que se miden gran cantidad de variables, para

poder implementar los algoritmos más dispares. Se mide tensión y corriente del bus de

continua, y tensión y corriente de cada fase del motor. Además, la medida de la corriente del

bus de continua tiene una función de protección. Cuando la corriente del bus de continua

supera un límite, automáticamente los drivers abren todos los transistores, y se informa al

DSP de lo ocurrido. Esto previene de cortocircuitos en las fases, que podrían destruir los

condensadores del bus y los transistores.

Para la medida de tensiones se han escogido simples divisores resistivos, que es un método

muy simple de medir la tensión, así como barato. Para las corrientes, tanto de fase como de

bus, se han escogido shunts, resistencias de pequeño valor óhmico en serie con la corriente

que se quiere medir.

El circuito superior (DSK TMS320F2812) es donde se ubica el procesador, es decir el DSP,

por lo tanto se pude observar que el zócalo que es donde se ubica dicho DSP es la parte que

ocupa más superficie de la placa. Además, se ha de prestar atención al puerto paralelo que

será el que proporcione el camino para la comunicación entre el ordenador y el DSP, y así

poder introducir el código deseado.

La placa incorpora todos los elementos auxiliares que necesita el dispositivo DSP para

funcionar, como por ejemplo el oscilador y las fuentes de alimentación, con la estabilización y

secuenciación necesaria en el arranque. Además, incluye la electrónica necesaria para el

depurado en tiempo real del programa. Esta electrónica incluye memoria RAM para la carga

Anexo A

Pág. 88

rápida del código y una CPLD (Complex Programable Logic Device) que implementa las

funciones lógicas necesarias para la comunicación entre el DSP y el PC, que servirá como

estación de trabajo para las tareas de programación y depuración.

Otros componentes del testbed no incluidos en la fotografía, pero que juegan un papel

secundario e imprescindible para el control son los siguientes: el PC, las fuentes de

alimentación y el software.

El PC es un ordenador personal con las prestaciones de cualquier ordenador actual que

disponga de un puerto paralelo mediante el cual se transmitirá el código programado al DSP y

se visualizará la información recibida de la plataforma.

En la plataforma se utilizarán dos alimentaciones bien diferenciadas. La primera corresponde

a la alimentación de la parte del control, tiene un valor constante de 5 voltios. La segunda es

la alimentación de la parte de potencia, que se efectúa con una fuente de tensión variable de 0

a 24 voltios, la cual dispone también de un limitador de corriente necesario durante la

realización de cualquier práctica sobre la plataforma.

El software utilizado es el Code Composer que será el entorno de programación utilizado por

nuestro DSP para poder programar, depurar y visualizar en tiempo real las variables del

control vectorial implementado.

En esta transparencia se han introducido muchos elementos, conceptos y palabras que

sobresalen de toda la teoría expuesta hasta el momento, por ello se intentarán aclarar lo

máximo posible todos aquellos términos nuevos Es evidente que el objetivo del libro de

prácticas es aclarar en todo lo posible los conceptos mínimos para no ir sin ningún

conocimiento al laboratorio, pues de esta forma el rendimiento es mayor en el limitado

número de horas disponibles.

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 89

Necesidades para el control

• Puente trifásico, con su respectivo driver• Medida de las tres corrientes de fase• Medida de la velocidad y posición con encoder

incremental con señal de índice

Con

desn

ador

es b

us D

C

Medida de corriente Motor Encoder

Driver

Driver

Driver

Driver

Driver

Driver

Medida de la corriente

•La medida del corriente de fase se hace con shunt• Shunt: resistencia de muy bajo valor óhmico (0.05 ohm)•La caída de tensión en bornes del shunt es proporcional a la corriente

Anexo A

Pág. 90

En las dos transparencias anteriores se puede encontrar resumida la función de la placa

inferior de la fotografía de la plataforma de trabajo. Básicamente la placa inferior es la que

realiza la parte más directa del control. El control se realiza con un puente trifásico que

aplicará las tensiones necesarias a cada fase. Cada conjunto transistor MOSFET y diodo del

puente trifásico dispone de un driver que se encarga de aplicar en el MOSFET una tensión

entre 0 y 15 voltios entre la puerta y el surtidor de cada transistor. Ésta es la complicada tarea

del driver ya que el DSP tan solo proporciona una tensión de salida entre 0 y 3,3 voltios,

tensión que se ha de convertir al rango del motor.

Para que el control vectorial sea satisfactorio, ya se sabe que no tan solo se han de aplicar las

tensiones adecuadas al motor, sino que hay que realizar otros pasos para completar el control.

Como por ejemplo las medidas de las corrientes de las tres fases y la medida de la posición y

la velocidad del rotor. Llegado a este punto ya es debería de saber y entender el porque es

necesario estas medidas, sino es así, se recomienda volver a leer todo el desarrollo de las

ecuaciones del motor.

La medida de las tres corrientes se realiza con un shunt, que es una resistencia de un valor

óhmico muy bajo. La caída de tensión en bornes del shunt es proporcional a la corriente. La

medida de la posición del rotor y la velocidad se realiza con un enconder incremental con

señal de índice, que más adelante se verá como funciona.

A continuación se explicará uno de los elementos más importantes en el control, se trata del

DSP o Procesador Digital de señal. Este elemento, como bien se puede deducir, viene a ser el

cerebro de todas las operaciones. Si se compara con un ordenador sería como la CPU, pero en

este caso es una CPU especifica y diseñada para múltiples aplicaciones, dentro de las cuales

esta el control vectorial de los motores. El DSP se encuentra situado, si se observa la

fotografía de la plataforma de trabajo, dentro del zócalo o habitáculo que está en la placa

superior de la plataforma. Éste habitáculo es de color negro y ocupa un gran volumen pero

permite, gracias al zócalo que incorpora, extraer el DSP siempre que se desee. En definitiva el

DSP que se utilizará es un chip no integrado en la placa, sino un chip extraíble.

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 91

DSP TMS320F2812

•Procesador digital de señal (DSP) de 32 bits coma fija•Opera a 150 MHz•Capaz de multiplicar y acumular en un único ciclo• Incorpora periféricos específicos para el control de motores (PWM, QEP, ADC) y para comunicaciones (SPI, SCI, CAN)

Arquitectura TMS320F2812

Memory Bus

128Kw Flash+ 2Kw OTP

4Kw Boot ROM

18Kw RAM

Code security

XINTF

32-bitRegister

FileReal-Time

JTAG

32-bitTimers (3)

C28xTM 32-bit DSP

32x32-bitMultiplier

R M WAtomic

ALU

Interrupt Management

Event Mgr A

Event Mgr B

12-Bit ADC

Watchdog

GPIO

McBSP

CAN 2.0B

SCI-UART A

SCI-UART B

SPI

Peripheral B

us

Anexo A

Pág. 92

En las dos transparencias anteriores se explican todas las características importantes del DSP.

El DSP TMS320F2812 es el dispositivo más potente de la familia C2000 de Texas

Instruments de DSP orientados al control de procesos. Incorpora un núcleo de arquitectura

Harvard de 32 bits a 150 MHz, capaz de ejecutar funciones MAC (Multiply and Acumúlate)

en un solo ciclo de trabajo. Además, incorpora todos los periféricos necesarios para el control

de motores: generadores de señales PWM (Pulse Width Modulation) con tiempo muerto,

conversores A/D (Analogic to Digital converter) y capturadotes para encoder, además de

algunas funciones de protección para el convertidor.

Incorpora memoria Flash para el código y memoria RAM (Random Acces Memory) para las

variables. También incorpora una pequeña memoria ROM (Read Only Memory) donde se

albergan los modos de arranque y unas tablas para el cálculo matemático de algunas funciones

mediante interpolación numérica.

Como periféricos de comunicación incorpora controladores para distintos estándares de

comunicación, como puede ser UART (Universal Asynchronous Receive and Transmit),

CAN ( Controller Area Network) y McBSP (Multichannel Buffered Serial Port). En este

dispositivo concreto, además, el bus de direcciones y de datos es accesible, con lo que se

pueden ampliar sus recursos de forma casi infinita.

Pero los periféricos que interesan más en este caso, como ya se ha dicho antes, son tres: los

generadores de señales PWM, los conversores A/D y los capturadores para encoder. Los

generadores de señales PWM y los capturadores para encoder están englobados en lo que se

llaman Event Manager. El TMS320F2812 dispone de dos Event Manager, el A y el B. Cada

uno de ellos funciona como una unidad independiente, capaz de generar sus interrupciones, y

gestionar todos sus recursos. Tanto el A como el B funcionan de la misma manera, con lo que

con un solo DSP es posible controlar dos motores a la vez. Los Event Managers disponen de

dos Timers de 16 bits, con los que se generan las bases de tiempo, tanto para los registros de

comparación como para el capturador del encoder.

Tres registros de entrada (CMPR1, CMPR2 y CMPR3) generan las seis señales

complementarias 2 a 2 y se añade un tiempo muerto totalmente programable, desde 0 µs hasta

12 µs. Además, dispone de una señal de entrada de fallo del convertidor que

automáticamente, y sin uso de la CPU, pone en alta impedancia las seis salidas PWM y

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 93

genera una interrupción software, que permite gestionar el fallo de forma rápida y segura para

el entorno.

El capturador para el encoder funciona de forma muy sencilla. Se limita a medir el tiempo

entre dos pulsos consecutivos provenientes del encoder. Dispone de una lógica interna para

descodificar el sentido de giro.

El conversor A/D es de 12 bits y dispone de dos S/H (Simple and Hold). La entrada analógica

tiene un margen dinámico de 0.0 V a 3.0 V, y es capaz de operar a 12.5 MSPS

(MegaSamplesPerSecond, millones de muestras por segundo) , velocidad suficiente para esta

y muchas aplicaciones de control de procesos industriales. Tiene varios modos de

funcionamiento y de sincronización con otros periféricos, en especial los Event Managers,

con lo cual se pueden muestrear las señales en el instante adecuado sin necesidad de usar la

CPU para nada.

Anexo A

Pág. 94

A.2.5. La coma fija y el formato Q(x)

El objetivo de este apartado es aprender los conocimientos básicos del modo de trabajo

interno del procesador DSP. Se explicarán las herramientas básicas con las que agilizar la

comprensión del funcionamiento de la plataforma y en particular del DSP y sus perifericos.

Los DSPs utilizan la coma fija por razones tan concretas como: menor complejidad de la

arquitectura del procesador, cálculos más rápidos y un bajo coste en la fabricación de los

DSP. Pero los DSPs tienen problemas a tener en cuenta como son: el overflow (exceso del

rango de bits disponibles al realizar una operación matemática), errores de cuantificación

(imposibilidad de tener un rango de valores con la precisión deseada debido al limite del

número de bits), tiene un rango limitado pues no es posible representar números grandes y

pequeños con la misma representación (al operar un número grande con otro pequeño, el

pequeño siempre se considera despreciable).

Éste último problema planteado es resuelto con el formato Q(x). En las próximas

transparencias será descrito el proceso que resuelve el problema que plantea la utilización de

DSP como procesador de cálculo.

La coma fija y el formato Q(x)•Los DSPs usan representación en coma fija por varios motivos:- Menor complejidad del procesador- Rapidez en los cálculos- Bajo coste

•Presenta algunos problemas a tener en cuenta:-Overflow- Errores de cuantificación- Tiene un rango limitado. No es posible representar números grandes y pequeños con la misma representación

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 95

Representación binaria coma fija

• Complemento a uno

Rango: [0,16]• Complemento a dos. Números con signo

Rango: [-8,7]

91008212020211001 0123 =+++=⋅+⋅+⋅+⋅⇒

71008212020211001 0123 −=+++−=⋅+⋅+⋅+⋅−⇒

Complemento a dos

• Normalmente se usa la representación en complemento a dos• Proporciona la capacidad de operar los números con signo• La ALU del DSP puede operar con números en complemento a dos

Anexo A

Pág. 96

En la primera transparencia de la página anterior se presentan dos ejemplos de la

representación binaria en coma fija. La diferencia entre los dos recae en el rango de datos

obtenido. Si se utiliza complemento a uno el rango tan solo engloba números positivos y si se

utiliza complemento a dos se obtiene un rango con números positivos y negativos. La longitud

del rango tan solo depende del número de bits, en el caso de los ejemplos el número de bits es

de 4, y la longitud del rango consta de 16 números naturales en complemento a uno.

En la segunda transparencia, se indica la elección de una de las dos representaciones, la cual

es complemento a dos. Esta representación permite operar los números con signo y la ALU

del DSP es capaz de operar números en complemento a dos.

Formato Q(x)•Permite la representación de números pequeños, incluso decimales• Se basa en desplazar la coma binaria hacia la izquierda• Es un simple reescalado de los números para entenderlos mejor• Permite trabajar en p.u.

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 97

El formato Q(x) es una herramienta que solventa el problema planteado, al inicio de este

apartado, utilizando la técnica de desplazar la coma binaria hacia la izquierda. Normalmente

se dispone de un número de bits concreto y limitado, por ejemplo el DSP utiliza 32 bits. La

limitación del número de bits puede ser compensada con esta herramienta ya que permite la

creación de diferentes rangos de números en función de donde se introduzca la coma binaria.

Con el formato Q(x) se pueden representar números pequeños, incluso decimales, ya que lo

único que realiza es un reescalado dentro del rango de bits disponible. La técnica Q(x)

permite trabajar en p.u. ya que ahora se pueden representar valores pequeños sin sufrir los

problemas presentados anteriormente.

Con un ejemplo se entenderá mejor el procedimiento del formato Q(x). Si se dispone de 4

bits, se pueden obtener 4 rangos distintos en función de la posición de la coma binaria. Por lo

tanto el valor de la x tan solo indica la posición de la coma binaria. Se recuerda que siempre

se trabaja en complemento a dos.

De esta forma se ha conseguido tener diferentes rangos pero con el mismo número de bits,

permitiendo elegir en que rango se incluirá un número decimal para que su precisión sea la

mejor. El formato Q(x) no aumenta la precisión de los números de cada rango, sino que

obtiene diferentes rangos que permite ser más preciso al elegir un rango que represente un

número decimal con el menor error posible.

Rango en Q(x)

• Siempre se tienen el mismo número de bits pero en rango distinto

• No se aumenta la precisión de los números

]875.0,1[)3(]75.1,2[)2(

]5.3,4[)1(]7,8[)0(

bits 4

−⇒−⇒−⇒−⇒

QQQQ

Anexo A

Pág. 98

Como bien se mencionaba anteriormente, la x tan solo indica la posición de la coma binaria.

Se observa en la transparencia que la misma secuencia de bits representa diferentes números

en función del formato Q(x) elegido.

Representación en Q(x)

• La misma secuencia representa varios números en función de la posición de la coma binaria

875.0100,1

75.110,01

5.31,001

7,1001

)3(

)2(

)1(

)0(

−⇒

−⇒

−⇒

−⇒

Q

Q

Q

Q

Operaciones en formato Q(x)

• Al hacer las operaciones (suma, producto,…) hay que tener en cuenta donde tenemos la coma binaria• Suma: la coma binaria tiene que estar en la misma posición en los dos operandos

(2)

(1)

1 0, 0 11.75 1 0, 0 1

0 0, 1 0 1.250.5 0 0 0, 1 1 0, 1 1

Q

Q

− ⇒⇒ + ⇒ −

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 99

Las operaciones en formato Q(x) tan solo necesitan un requisito el cual es tener en cuenta

donde esta la coma binaria de cada número, antes de operar con otro número. Tan solo se

pueden operar (sumar, restar, multiplicar,…) los números que tengan el mismo formato Q(x).

En la suma se tiene que transformar el número que esté en el formato Q(x), de inferior valor x

que el resto, al formato Q(x) de valor más alto, consiguiendo que la coma binaria este en la

misma posición en todos los operandos.

En la multiplicación no se ha de realizar la misma transformación que en la suma, pero el

resultado de la operación tendrá el formato Q(x), suma de las dos x de los operandos. La

multiplicación necesita el doble de bits para representar el resultado de la operación entre dos

operandos, tal que la suma de sus x sea mayor que el número de bits disponibles.

El formato Q(x) utiliza la misma filosofía a la hora de operar que cuando se hace con números

decimales, la única diferencia es el concepto utilizado en la representación de la coma y de los

números. Por lo tanto la comprensión del modo de operar no presenta ninguna dificultad

adicional una vez se ha conocido.

Operaciones en formato Q(x)• Multiplicación: el formato Q es la suma de las

dos x• Para representar el número en su totalidad

hacen falta el doble de bits

(2)

(1)

1 0, 0 11.75 1 0, 0 1

0 0 0, 1 0.8750.5 0 0 0, 1 1, 0 0 1

Q

Q

− ⇒⇒ × ⇒ −

Anexo A

Pág. 100

A.2.6. Code Composer Studio: el entorno de programación

El software que proporciona el fabricante para interaccionar con el DSP es el Code Composer

Studio. El mismo programa sirve para todas las familias de DSPs de Texas Instruments. El

Code Composer Studio forma lo que se llama un sistema integrado de desarrollo (IDE), ya

que desde él se puede escribir, compilar y cargar el código al DSP en C y en ensamblador.

Además, es una potente herramienta para el análisis y el depurado del código en tiempo real

mediante puntos de detención (breakpoints o interrupciones). Permite visualizar y modificar

variables internas en tiempo real sin detener la CPU.

Las funciones permitidas por el entorno tienen como objetivo facilitar la sintonización de los

valores influyentes en el control y el ajuste de los valores de los PID en tiempo real de la

forma más eficaz.

A continuación se muestra una imagen de la ventana del programa Code Composer, la cual a

su vez está dividida en diferentes ventanas que muestran la información necesaria para un

perfecto seguimiento del control. Se ruega prestar rigurosa atención a la ventana del programa

y a la explicación de la funcionalidad de cada una de ellas ya que será con el elemento que

más se interactúe durante la realización de las prácticas.

Code Composer Studio: entorno de programación

• El Code Composer Studio es un entorno integrado de trabajo que permite:- Editar, compilar y grabar el código (en C y en ensamblador)- Permite analizar y depurar el código mediante puntos de detención (breakpoints)- Permite la visualización y modificación de variables internas en tiempo real y sin detener la CPU. Hace mucho más sencillo la sintonización de los controladores

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 101

En la transparencia se puede ver el aspecto de la pantalla del CCS. Como se puede ver en la

parte de más a la izquierda de la transparencia, el CCS trabaja en entorno proyecto, con lo que

se puede dividir el código necesario en distintos archivos para una mayor claridad.

En la parte central hay tres ventanas que proporcionan tres tipos de información distinta. La

de más arriba es un archivo con el código que ha escrito el usuario, en este caso el programa

principal. La ventana del medio permite visualizar y modificar el valor de cualquier variable o

registro del DSP. De esta manera se pueden cambiar valores de referencia o sintonizar

controladores sin tener que compilar y grabar el código cada vez que se cambia el valor de la

constante. La ventana de más abajo muestra el código en lenguaje ensamblador y máquina, así

como la dirección en la memoria del programa donde está guardado el código. Esta ventana es

útil de cara a depurar un poco más el programa o para entender como trabaja el compilador de

C.

A la derecha hay tres ventanas con el fondo de color amarillo. En estas ventanas podemos ver

seis variables internas del DSP a tiempo real, con una frecuencia de muestreo de 20 kHz. En

la ventana central se puede ver el ángulo eléctrico de las tensiones del estator y el ciclo de

trabajo que se aplica a los transistores de la fase a. En la ventana de más abajo se pueden ver

las corrientes de las fases a y b. Además de estas funcionalidades básicas, el CCS presenta

Ventana principal CCS

Anexo A

Pág. 102

muchas más características que hacen de él uno de los entornos de desarrollo DSP más

completos del mercado.Todos estos elementos conforman la parte inteligente de la

plataforma. El estudiante debe conocer como funciona el propio DSP y también el entorno de

trabajo.

El programa Code Composer proporciona unas funciones concretas para poder acceder al

valor de cada uno de los registros. Como se indica en la transparencia, se ha de escribir dentro

del programa la secuencia en un orden, para acceder a los valores y leerlos o modificarlos. Se

pueden obtener los 32 o 16 valores de bits de todo el registro o un bit en concreto.

Acceso a los registros• Existe un conjunto de archivos que permite el acceso fácil a los registros: DSP281x Header File Package• NombrePeriférico.NombreRegistro.all

// Acceso a todo el registro (16 o 32 bits)•NombrePeriférico.NombreRegistro.bit.NombreBit

// Acceso a un bit del registro•Ejemplo:

AdcRegs.ADCTRL2.bit.RST_SEQ2 = 1;AdcRegs.ADCTRL2.all = 0x9000;

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 103

Librerías

• Texas Instruments proporciona numerosas librerías que implementan ya los módulos necesarios para multitud de aplicaciones• Librerías de cálculo matemático, para el control de motores, para análisis de la señal (FFT),...• Permiten programar una aplicación en forma de bloques modulares• El uso de estas librerías simplifica enormemente el tiempo de desarrollo

Estructura de los módulos

• Cada módulo está concebido como un objeto• Los módulos definen una estructura, que contiene las variables de entrada, las variables de salida, los parámetros del módulo, la llamada a la función de inicialización, y la llamada a la función de ejecución del módulo• Los parámetros están ya inicializados, pero pueden ser modificados• Esta estructura de programación orientada a objetos permite instanciar varias veces un mismo módulo y usarlos en tareas distintas (p.e. tres controladores PI en el control vectorial)

Anexo A

Pág. 104

Todas estas librerías están implementadas en lenguaje ensamblador o en C optimizado para el

compilador de forma que ocupe el mínimo espacio posible, y minimice el tiempo de

ejecución. El uso de estas librerías es muy sencillo, y aligera la carga de trabajo del estudiante

programador. Sólo hay que tener en cuenta que se trabaja en coma fija, y que hay que tener

cuidado con el escalado del número que se pasa a las funciones.

El contenido de las librerías son módulos o funciones, concebidos por el programa como

objetos que disponen de variables de entrada, de salida, los parámetros del módulo y la

función inicialización de este, así como la función ejecución. Cada módulo tiene los

parámetros ya inicializados pero se pueden modificar. La programación bajo estructuras como

las descritas permite utilizar un módulo repetidas veces en un mismo programa.

La librería llamada IQMath realiza cálculos matemáticos complejos, como atan, sin, cos, sqrt,

y conversiones de tipos de datos (por ejemplo: de float a int). Básicamente la librería esta

compuesta por funciones matemáticas que proporcionan un entorno de trabajo casi como si se

estuviera trabajando en coma flotante, esto muestra el grado de optimización de las funciones

proporcionadas por Texas Instruments.

IQMath Library

• Librería proporcionada por Texas Instrumentscon numerosas funciones matemáticas• Proporciona un entorno de trabajo casi como si estuviéramos trabajando en coma flotante• Funciones: sin, cos, atan, conversiones de tipo (de float a int), división, función inversa...

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 105

La librería llamada DMC, aporta las funciones básicas para el control de motores. Dentro de

estas funciones cabe destacar la transformada de Park, la inversa de Park y Clarke, los

controladores PI con anti wind-up, los generadores SVPWM, la medición de la velocidad a

partir de la señal proporcionada por el encoder, y otras, como por ejemplo generadores de

rampas, para ayudar al desarrollo de la aplicación final, sin olvidar las funciones que

gestionan los periféricos del DSP. El fabricante proporciona otras librerías con funciones

adicionales, pero que en este caso no interesan para la aplicación desarrollada.

DMC library

• Librerías proporcionadas por Texas Instrumentscon funciones específicas para el control de motores• Algunos módulos son sólo cálculos (SVPWM, PID, Park, Park inversa, Clarke, Cálculo de la velocidad), pero otros configuran y gestionan los periféricos del DSP (QEP, PWM Driver, medidas analógicas)

Anexo A

Pág. 106

A.2.7. Programación básica

Se realizará una práctica muy sencilla en la que se realizará una programación básica. El

objetivo de la práctica es ayudar a consolidar todos los conceptos adquiridos en el apartado

anterior.

La programación básica consiste en programar el encendido y apagado de un LED en función

del valor de una variable. El valor de la variable se modificará con el programa Code

Composer Studio en tiempo real para comprobar que la estructura del programa realiza

correctamente su funcionamiento.

La estructura del programa es la expuesta en la transparencia anterior. El único elemento

diferente a cualquier otra estructura de programación, es la configuración de interrupciones, la

cual se analizará durante la exposición de este apartado ya que es una de las partes más

importantes de cualquier programa que trabaje en tiempo real.

Programación básica

• Encender y apagar un LED en función del valor de una variable• Estructura del programa

Inicializar el sistemaConfigurar entradas/salidasConfigurar interrupcionesEjecutar bucle infinito

Modificar el estado del LED en función de una variable (activa)

• La variable la modificaremos con el CodeComposer Studio

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 107

El código del bucle tan solo modifica el valor del bit que controla el LED según el valor de la

variable activa. Si activa vale 1 el bit set se pondrá a valor 1 y el LED se encenderá, pero si

activa es cero el bit clear se activará y el LED se apagará.

Práctica LED variable

• El código a poner en el bucle infinito es:if(activa)

GpioDataRegs.GPFSET.bit.GPIOF14 = 1;else

GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1;

• Declaración y inicialización de variables:Dec_Ini_Vars.c

• Declaración global de las variables y lasestructuras:

CITCEA.h

Procedimiento de la práctica

1. Enchufar sólo la fuente de 5 V2. Arrancar el Code Composer Studio con el icono3. Abrir el workspace GPIO.wks: des de la barra de

menús ir a File->Workspace->LoadWorkspace-> GPIO.wks

4. Compilar y cargar el programa con el botón Rebuild All5. Ejecutar el programa con el botón Run6. Cambiar el valor de la variable activa de 0 a 1 para

apagar y encender el LED

Anexo A

Pág. 108

Para realizar la práctica del LED Variable se han de seguir los pasos especificados en la

transparencia anterior. Los dibujos de los iconos ayudan a localizar dentro del programa el

botón apropiado para realizar cada acción. Finalmente se ha de ir cambiando el valor de la

variable de 0 a 1 para apagar y encender el LED.

Una interrupción es una rutina que interrumpe la ejecución del bucle principal (acciones no

prioritarias y sin frecuencia fija) para realizar otra acción que se considera prioritaria. Una vez

la interrupción ha acabado su tarea, se vuelve al programa principal para continuar

aplicándolo desde el punto donde se había dejado. Las interrupciones son provocadas por

eventos, que normalmente son timers, es decir, cada cierto tiempo se programa el

lanzamiento de la interrupción. En el caso del control vectorial que se realizará en la

plataforma, la interrupción que lanza todos los pasos del control se realiza cada 50 µs (a una

frecuencia de 20 kHz). Las interrupciones pueden ser programadas síncronas o asíncronas.

Para entender mejor el proceso de la interrupción basta con observar el diagrama de bloques

representado en la transparencia e imaginarse el control que se realizará sobre la plataforma,

el cual está dentro del bloque de interrupción. Dentro del bloque bucle principal no habrá

nada, ya que tan solo se está programando el control, aunque si se deseara se podrían

programar tareas concretas a realizar por el motor.

Concepto de interrupción• Rutina que interrumpe la

ejecución del bucle principal• Un evento (Timer, fin de

conversión, externo,…) provoca el salto a la rutina de la interrupción

• El bucle principal se interrumpe, pero no se perturba los resultados del código implementado

• Las interrupciones pueden ser síncronas o asíncronas

Inicializaciones

Bucle principal Interrupción

Evento

Retorno al punto del bucle principal donde se produjo

la interrupción

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 109

La aplicación de la interrupción permite reaccionar rápidamente sobre posibles alteraciones

sobre el sistema, ya sea por causa de eventos internos, como externos. La interrupción se

puede programar de forma periódica y sincronizada para realizar las tareas del control

consideradas importantes. Además posibilita la implementación de rutinas de control en

tiempo real.

A continuación se describirá como aplicar el concepto de interrupción a la práctica del LED

realizada anteriormente. Con la modificación introducida se facilitará la comprensión de lo

explicado, por lo tanto se ruega prestar atención a este apartado, así como volver a repasar el

concepto de interrupción, ya que el control explicado en las prácticas se basa principalmente

en las interrupciones, pues son las que se encargan de aplicar el control. Si existe algún

problema en el control, se deberá revisar la interrupción.

Aplicaciones de las interrupciones

• Permite reaccionar de forma rápida a eventos internos y externos• Permite la ejecución de una rutina de forma periódica (Timer) y sincronizada• Posibilita la implementación de rutinas de control en tiempo real

Anexo A

Pág. 110

El objetivo de la nueva configuración de la práctica del LED, es hacer que el LED se apague y

se encienda a una frecuencia fija. Se consigue realizar este proceso con una interrupción que

incrementará el valor de un contador, a partir del cual se decida el estado del LED.

Se pretende que el LED esté encendido 500 ms y 500 ms apagado. Para realizar esta acción se

Práctica LED variable con interrupciones

• Encender y apagar un LED a una frecuencia fija• Estructura del programa

Inicializar el sistemaConfigurar entradas/salidasConfigurar interrupcionesConfigurar temporizadores del sistema (Timer0)Ejecutar bucle infinito

Modificar el estado del LED en función del valor de un contador

Rutina de interrupciónIncrementar el contador

Especificaciones, rutinas y variables

• El LED tiene que estar 500 ms encendido y 500 ms apagado• La rutina de interrupción interrupcio_Timer0 se ejecuta a 1 kHz. Se usa esta interrupción como base de tiempo•Un contador (cont_T0) se incrementa dentro de la rutina

1 _ 0 1000s cont T⇒ =

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 111

dispone de un contador que será incrementado cada vez que la interrupción se ejecute. La

interrupción se ejecuta a 1 kHz, por lo tanto cada 1 ms el contador se incrementará en 1 ms

hasta llegar a 1 segundo, que es cuando se volverá a poner a cero el contador. La interrupción

se usa como base de tiempo, es decir como timer.

En los gráficos mostrados en la transparencia se observa la evolución del LED en función de

la evolución del contador. Mientras Cont_T0 (contador) sea inferior a un valor de 500 ms, el

LED permanecerá encendido, y a partir de 500 ms el LED, permanecerá apagado. Al llegar a

1000 ms, es decir al segundo, el proceso volverá a comenzar de nuevo. De esta forma se crea

la intermitencia del LED.

Se observan los nombres de tres variables usadas en el cuerpo de la programación: Ton que es

una constante de valor 500 ms, Periode que es una constante de valor 1000 ms y cont_T0 que

es el contador que varía entre el valor de 0 ms y 1000 ms.

Evolución del Timer0 y del LED

1000 = Periode

0

cont_T0

500 = Ton

LED on LED off

Anexo A

Pág. 112

Código a implementar en el bucle principal

if (cont_T0 < Ton){

GpioDataRegs.GPFSET.bit.GPIOF14 = 1;}else{

GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1;if (cont_T0 >= Periode){

cont_T0 = 0;}

}

Código a implementar en la interrupción

Sólo hace falta incrementar el contador cont_T0

cont_T0++;

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 113

Como se muestra en las transparencias, el cuerpo del programa es muy sencillo y similar al

inicial, la única diferencia es que en este caso la interrupción controla la variable que hará

encender el LED. Cada 1kHz se ejecutará el código de la interrupción que incrementará la

variable contador (cont_T0) en 1 ms. En el bucle principal del programa es donde se realiza la

acción de poner en activo el bit que controla el LED. Mientras cont_T0 sea menor que 500 ms

la función set continuará con valor 1 y en el momento que se supere el valor de 500 ms se

ejecutará la función clear que pondrá el valor del bit a cero, apagando el LED. Además en el

cuerpo principal se realiza la puesta a cero del contador al llegar al valor 1000 ms. Con este

ejercicio tan sencillo se ha creado un LED intermitente utilizando el concepto de interrupción.

Finalmente, tan solo queda aplicar el programa explicado para comprobar que realmente

funciona. Los pasos a seguir son los mismos que en la práctica anterior del LED, pero se

recuerdan en la transparencia. La única variación es el nombre del archivo donde está

almacenado el programa. Es aconsejable realizar las modificaciones propuestas en el punto 6

para entender mejor el funcionamiento de la interrupción.

Procedimiento de la práctica

1. Enchufar sólo la fuente de 5 V2. Arrancar el Code Composer Studio con el icono3. Abrir el workspace LEDInt.wks: des de la barra de

menús ir a File->Workspace->LoadWorkspace-> LEDInt.wks

4. Compilar y cargar el programa con el botón RebuildAll

5. Ejecutar el programa con el botón Run6. Cambiar el valor de las variables Periode, y Ton

para variar la frecuencia y el tiempo de encendido del LED

Anexo A

Pág. 114

A.2.8. Control V/f en lazo abierto

Llegados a este punto ya se puede empezar a programar el control vectorial. Se empezará por

hacer girar el motor en lazo abierto y por experimentar los efectos de las tensiones

transformadas sobre el motor.

Comparando el esquema de bloques de este apartado, con el esquema de bloques presentado

en el apartado de las ecuaciones del motor, se observa que el lazo de control aún no está

cerrado. Con ésta práctica se pretende explicar y entender cual es la función de cada uno de

los módulos que representa el esquema, para finalmente poder cerrar el lazo.

En este punto hay que hacer notar que el motor brushless es autopilotado y que, por tanto, a

medida que aumenta la velocidad se pierde el sincronismo y el motor deja de girar. Este hecho

hace necesario medir la posición del rotor para no perder el sincronismo y que el rotor pueda

girar a cualquier velocidad.

A continuación se analizará cada uno de los módulos, tanto de la parte software como de la

parte hardware, y se explicará lo necesario para entender el control vectorial aplicado sobre el

motor, así como los parámetros con los que se puede interactuar en el control utilizando el

Control V/f en lazo abierto

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 115

programa Code Composer Studio. No se dejarán de lado las explicaciones de puesta en

marcha y parada de la plataforma de trabajo.

Módulo Park inversa• Transforma las variables de la referencia en

sincronismo a la referencia estacionaria

cos sin

sin cosd r q r

d r q r

f f f

f f fα

β

θ θ

θ θ

= ⋅ − ⋅

= ⋅ + ⋅

Módulo Park inversa

Entradas• de: componente del

eje d• qe: componente del

eje q• ang: ángulo de fase

entre la referencia estacionaria y la que gira en sincronismo

Salidas• ds: componente del

eje α• qs: componente del

eje β

Anexo A

Pág. 116

El módulo Park inversa es el primer módulo que se encuentra en el esquema de bloques del

control mirando la primera línea en sentido de izquierda a derecha. Este módulo es una

función que realiza en parte el paso inverso a la transformada de Park, ya que tan solo se

invierte el giro realizado con la transformada de Park (si no se recuerda el funcionamiento de

la transformada de Park se aconseja consultar el apartado de Ecuaciones del Motor).

Dentro del código implementado con el software, la función se llama ipark. Ésta transforma

las variables (las tensiones Vd i Vq según el esquema del control) de la referencia en

sincronismo con el rotor a la referencia estacionaria (ejes α y β).

El módulo Park inversa además de la función ipark dispone de las variables de entrada y

salida necesarias. Las de entrada son: las componentes de la variable en ejes d y q junto con el

ángulo entre la referencia estacionaria y la que gira en sincronismo (recordar que era θr). Las

de salida son: las componentes de la variables en los ejes de la referencia estacionaria α y β.

Se recuerda que las tensiones Vα y Vβ, que serán la salida de éste módulo, corresponden a

dos ondas de tensión sinusoidales que se han de transformar en un nuevo sistema trifásico de

tensiones que se adapte a la nuevas condiciones calculadas por el control para hacer girar el

motor de la forma adecuada.

Módulo SVPWM

• SVPWM: Método de modulación basado en los 8 estados posibles de los seis interruptores del puente• Genera menos harmónicos y usa de forma más eficiente la tensión del bus DC• Las entradas son las tensiones vα y vβ, y las salidas los ciclos de trabajo de las tres fases

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 117

El siguiente módulo es el denominado Space Vector Pulse Width Modulation (SVPWM).

Calcula los ciclos de trabajo de los interruptores de cada fase (Ta, Tb, Tc), que se utilizarán en

el siguiente módulo para poder calcular la onda sinusoidal, que se ha de aplicar en cada una

de las fases del motor. Es un método de modulación basado en los 8 estados de los seis

interruptores del puente. La innovación que presenta frente otras técnicas es que genera

menos harmónicos y usa de forma más eficiente la tensión de bus DC.

A continuación se explica en detalle el funcionamiento interno del módulo. Se recuerda que

las variables de entrada son las de salida del módulo anterior (Park Inversa), es decir, las

tensiones Vα y Vβ. Y las variables de salida los ciclos de trabajo de los interruptores.

En la transparencia anterior se esquematiza el convertidor con los interruptores. Cada rama de

cada tensión dispone de dos interruptores complementarios entre sí, por lo tanto, tiene dos

estados posibles. En global se deduce que el convertidor tiene 8 estados posibles.

Obsérvese la situación de las diferentes tensiones Va, Vb, Vc y la tensión VDC así como el

punto neutro y la nomenclatura de los interruptores. Se recuerda que el módulo SVPWM tan

solo calcula el tiempo de obertura y cierre (ciclos de trabajo) de cada uno de los interruptores

del siguiente módulo.

El convertidor y sus posibles estados

• Los pares de interruptores son complementarios: si el de arriba está cerrado, el de abajo está abierto

• Cada una de las ramas tiene dos estados posibles• El convertidor tiene un total de 23=8 estados posibles

a

a’

b c

b’ c’

AB

C

vavbvcn

VDC/2

VDC/2

Anexo A

Pág. 118

Estados y tensiones del convertidor

00000V7111

0-VDCVDCV6101

VDC-VDC0V5100

VDC0-VDC0V4110

0VDC-VDCV3010

-VDCVDC0V2011

-VDC0VDC0V1001

00000V0000

vcavbcvabvcnvbnvanvβvαVectorcba

2DCV− 2

DCV− 2DCV−

0 0

2 1 13 2 2

2 3 33 2 2

a b c

a b c

b c

v v v v

v v v v

v v v

α

β

= + + =

= − ⋅ − ⋅

= ⋅ − ⋅

2DCV

2DCV− 2

DCV−23 DCV

2DCV

2DCV

2DCV−3

DCV3

DCV

2DCV− 2

DCV2

DCV−3DCV−

3DCV

2DCV− 2

DCV2

DCV23 DCV−

2DCV− 2

DCV− 2DCV

3DCV− 3

DCV−

2DCV

2DCV− 2

DCV3

DCV3

DCV−

2DCV

2DCV

2DCV

a

a’

b c

b’ c’

AB

C

vavbvcn

VDC/2

VDC/2

Hexágono de tensiones

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 119

Las dos transparencias anteriores exponen el concepto con el que trabaja el módulo SVPWM.

La primera transparencia muestra una tabla divida en diferentes grupos de datos. El primer

grupo de datos muestra el estado lógico de cada interruptor a, b, c y evidentemente de su

complementario. El siguiente grupo tan solo da nomenclatura a cada fila de la tabla para

relacionar cada estado del convertidor con un vector en concreto. El grupo de valores Vα y

Vβ se obtiene a través de las fórmulas de la transformada de Clarke ya conocidas y expuestas

en el lateral de la transparencia.

El resto de la tabla es el cálculo del conjunto de tensiones Van, Vbn, Vcn y el conjunto Vab,

Vbc, Vca. Este cálculo se obtiene mirando el estado del convertidor y la tensión de bus que

recibe cada fase respecto el neutro o fase-fase.

La segunda transparencia es una representación gráfica de los diferentes vectores V0 a V7 en

el plano. Para poder dibujar el hexágono de tensiones tan solo hay que representar los valores

Vα y Vβ en los ejes α y β y en el plano. En el gráfico se ha añadido al lado de cada vector el

valor lógico del estado de cada par de interruptores.

Con el análisis realizado en la tabla se ha conseguido relacionar las tensiones Vα y Vβ con las

tensiones Va, Vb y Vc, en los 8 estados del convertidor. El módulo SVPWM a partir de

cualquier valor de las tensiones Vα y Vβ puede obtener una combinación de interruptores que

creen las tensiones Va, Vb y Vc correctas. El objetivo del módulo es calcular el tiempo de

apertura y cierre de cada uno de los interruptores para poder crear Va, Vb y Vc conociendo

Vα y Vβ y utilizando tan solo los vectores del V0 al V7 que son los únicos que se pueden

obtener con un valor exacto.

La forma de calcular el tiempo de apertura y cierre es ponderando el valor de las tensiones V0

a V7 con el tiempo de apertura y el total del ciclo de tal forma que el vector Va, Vb y Vc

obtenido al transformarlo en el vector Vα y Vβ sea igual que el vector obtenido en el módulo

Park Inversa.

Anexo A

Pág. 120

Crear la tensión deseada• El SVPWM consiste en sintetizar el vector tensión que se desea aplicar al motor usando únicamente los ocho estados del convertidor• Para ello se usan los dos vectores adyacentes y los dos vectores nulos

Crear la tensión deseada

T/2 T/2

0 0,V t 1 1,V t 2 2,V t 7 7,V t 7 7,V t 2 2,V t 1 1,V t 0 0,V t

a

b

c

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 121

En definitiva el vector tensión que se desea aplicar al motor se ha de obtener a partir de los

ocho estados del convertidor.. Para crear un vector V con componentes Vα y Vβ se utilizarán

los dos vectores adyacentes y los dos vectores nulos. Los vectores adyacentes serán aquellos

vectores que rodeen al vector V en el dibujo del hexágono de tensiones, por lo tanto, serán de

V1 a V6. Y los vectores nulos serán V0 y V7.

En la última transparencia expuesta, se representa un vector V que tiene V1 y V2 como

vectores adyacentes, por lo tanto se utilizarán junto con los vectores nulos para obtener V. El

trabajo del módulo SVPWM es calcular los tiempos t0, t1, t2 y t7 tal que la media ponderada

de las tensiones V0, V1, V2 y V7, con sus respectivos tiempos, y el tiempo de ciclo T, den

como resultado la tensión V. Si se analiza gráficamente la última transparencia se observa que

una vez calculados los tiempos t0, t1, t2 y t7, si se dividen estos tiempos entre el periodo y se

multiplican por los vectores correspondientes V0, V1, V2 y V7, se obtienen unos vectores que

sumados gráficamente dan como resultado el vector V.

El gráfico que muestra el estado de los interruptores y el tiempo de cada estado está divido en

la mitad del periodo, pues así se consigue reducir los harmónicos y gastar menos energía, ya

que tan solo cambia de estado un interruptor en cada cambio de t.

Módulo SVPWMEntradas• Ualfa: componente

del eje α• Ubeta: componente

del eje β

Salidas• Ta: ciclo de trabajo

de la fase a• Tb: ciclo de trabajo

de la fase b• Tc: ciclo de trabajo

de la fase c

Anexo A

Pág. 122

El módulo SVPWM tiene como entradas los componentes de los ejes α y β del vector V y

como salidas los ciclos Ta, Tb y Tc de trabajo de cada una de las fases. Ta, Tb y Tc

corresponden al tiempo total que están abiertos los interruptores de cada fase respecto al

tiempo de ciclo T, por lo tanto Ta, Tb y Tc se obtienen de la suma de los diferentes ti.

Pulse Width Modulation• PWM es una forma de representar una señal como una secuencia de pulsos- Frecuencia portadora fija- Amplitud de pulso fijo- Anchura de pulso proporcional a la

amplitud de la señal que se quiere representar

- Energía del PWM ≈ Energía del señal

Pulse Width Modulation

Tt

RepresentaciRepresentacióónn PWMPWM

tSeSeññalal originaloriginal

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 123

El siguiente módulo es el denominado Pulse Width Modulation (PWM) y se encarga de crear

las tensiones sinusoidales Va, Vb y Vc que se aplicarán al motor. PWM significa representar

una señal como una secuencia de pulsos que tienen las siguientes características: frecuencia

portadora del pulso fija (cada periodo T se aplica un pulso), amplitud del pulso fija, anchura

del pulso proporcional a la amplitud que se quiere representar y la energía del PWM es

aproximadamente igual a la energía de la señal.

En la última transparencia presentada se muestra un esquema del proceso que realiza el

módulo PWM. El objetivo es obtener una señal sinusoidal a partir de una secuencia de pulsos

con las características mencionadas anteriormente. Para hacer la modulación por amplitud de

pulso (PWM) de una señal, se compara esta señal con un señal triangular de frecuencia fija, la

portadora. El resultado de esta comparación es la señal PWM.

En realidad, el módulo PWM está basado en comparadores, ya que calcula los valores a poner

en los comparadores a partir de los ciclos de trabajo ya calculados. Éste módulo hace de

interfaz entre la parte software y hardware, ya que genera las señales que van a parar a los

drivers, los cuales adaptan la tensión a aplicar en cada transistor MOSFET.

Comparadores PWM• Este módulo calcula los valores a poner en los comparadores a partir de los ciclos de trabajo calculados anteriormente• Hace de interfaz entre la parte software y la parte hardware. Genera las señales que van a parar a los drivers

Anexo A

Pág. 124

El módulo comparadores PWM tiene como entradas los ciclos de trabajo de cada transistor

obtenidos en el módulo SVPWM y como salidas proporciona las señales de excitación de

cada uno de los seis transistores MOSFET que aplicarán las tensiones Va, Vb y Vc al motor.

Comparadores PWMEntradas• Mfunc_1: ciclo de trabajo

de las salidas PWM 1 y 2 (fase a)

• Mfunc_2: ciclo de trabajo de las salidas PWM 3 y 4 (fase b)

• Mfunc_3: ciclo de trabajo de las salidas PWM 5 y 6 (fase c)

Salidas• PWM1/PWM2: señales de

excitación de los transistores de la fase a

• PWM3/PWM4: señales de excitación de los transistores de la fase b

• PWM5/PWM6: señales de excitación de los transistores de la fase c

Medida de corrientes y tensión de bus

• Este módulo realiza la conversión analógica-digital de dos corrientes de fase y la tensión del bus de continua• Se pueden programar las ganancias y el offset de cada una de las medidas

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 125

El módulo de medidas de corriente y tensión de bus permite obtener el valor en digital de las

corrientes ia e ib, además del valor de la tensión de bus, gracias a que realiza la conversión

analógica-digital. Físicamente es el módulo ADC. Además se pueden programar las ganancias

(permite reescalar pero en este caso no se utiliza) y el offset (valor que devuelve el ADC

cuando sabe que pasan 0 A, normalmente se ha de corregir este valor) de cada una de las

medidas.

Para realizar la medida de corriente es necesario ajustar externamente la señal analógica de la

tensión medida por el shunt al rango de 0 a 3 V, ya que los pines del ADC tan solo aceptan

este rango positivo de trabajo. La tensión en bornes del shunt es muy pequeña y además puede

ser positiva y negativa, por este motivo se ha de ajustar. El conversor de 12 bits que dispone

el ADC devuelve un número justificado a la izquierda. Al devolverlo justificado a la izquierda

se obtiene un valor de 16 bits que tan solo hay que convertirlo a formato Q(15) con la función

XOR para tener la misma escala (mitad negativos y mitad positivos) que todos los números

con los que se trabaja en el control implementado. El registro donde el ADC guarda el valor

de corriente convertido es de 16 bits pero luego el programa lo convierte a 32 bits para poder

ser tratado en el DSP.

Medida de corrientes• Los pines del ADC aceptan tensiones de 0V a

3V• Hay que ajustar externamente la señal

analógica a este rango

0+

-

0 V

1.5 V

3 V

Anexo A

Pág. 126

Medida de corrientes• El conversor de 12 bits devuelve un número

justificado a la izquierda (0000h-FFF0h)• Este valor es convertido a un número en Q15

0.0 V

FFF0h

0000h 8000h

0000h

7FF0h3.0 V

8000hXOR #8000h

Medida de tensión de bus• La tensión de bus sólo es de signo positivo. No

hace falta sumar un offset analógico a la señal• La tensión del bus también es un número en

Q15

0.0 V

FFF0h3.0 V

8000h

SFR(SXM=0)

0000h

7FF8h

4000 h

0000 h

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 127

A diferencia de la medida de la corriente, en la medida de la tensión de bus no hace falta

sumar a la señal analógica ningún offset ya que la tensión de bus siempre es positiva, y por lo

tanto, está adaptada al rango positivo de tensiones de los pines del ADC. Como la tensión de

bus también es un número en formato Q(15) es necesario transformarlo al igual que la

corriente.

El módulo medida de corriente y tensión de bus como entradas tiene las señales analógicas de

corriente de cada fase y tensión de bus, y como salidas proporciona el valor medido en

formato digital de cada una de las señales anteriores.

Medida de corriente y tensión de bus

Entradas• ia: corriente de la fase a• ib: corriente de la fase b• Vdc: tensión del bus de

continua

Salidas• Imeas_a: valor medido

de la corriente de la fase a

• Imeas_b: valor medido de la corriente de la fase b

• Vdc_meas: valor medido de la tensión del bus de continua

Anexo A

Pág. 128

El módulo Clarke aplica la transformada de Clarke a las corrientes medidas con el módulo

anterior. La tarea del módulo es transformar las tres corrientes de fases estacionarias a un

sistema trifásico ortogonal también estacionario.

Módulo ClarkeEntradas• as: medida de fase a• bs: medida de fase b

Salidas• ds: componente del

eje α• qs: componente del

eje β

Módulo Clarke• Transforma las tres corrientes

de fase estacionarias a un sistema trifásico ortogonal también estacionario

0

00

23

a b c

a

b a

i i ii

i ii i

i

α

β

+ + ===

⋅ +=

Clarke

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 129

Las entradas del módulo son las corrientes medidas de la fase a y b, ya que la fase c se puede

obtener a partir de la fase a y b según la teoría, y las salidas que proporciona son dos

corrientes sinusoidales con componentes en los ejes α y β para cada una de ellas.

Módulo Park• Aplica un giro de ángulo θr al sistema trifásico ortogonal

entorno al eje 0.• Transforma las variables de la referencia estacionaria a

la referencia en sincronismo con el rotor

cos sin

sin cosd r r

q r r

f f f

f f fα β

α β

θ θ

θ θ

= ⋅ + ⋅

= − ⋅ + ⋅

Módulo ParkEntradas• ds: componente del

eje α• qs: componente del

eje β• ang: ángulo de fase

entre la referencia estacionaria y la que gira en sincronismo

Salidas• de: componente del

eje d• qe: componente del

eje q

Anexo A

Pág. 130

El módulo Park es el encargado en aplicar el giro con ángulo θr entorno al eje 0 (eje

perpendicular al papel) al sistema de vectores resultante del módulo Clarke. Con el giro

transforma las variables de la referencia estacionaria a la referencia en sincronismo con el

rotor. Las entradas son los componentes del eje α y β de la variable y el ángulo de fase entre

la referencia estacionaria y la que gira en sincronismo. Las salidas son las componentes d y q

de la variable.

El módulo Ángulo es el que se encarga del control y generación del ángulo θr. Al estar en

lazo abierto se ha de proporcionar un ángulo manualmente, ya que es necesario para que el

sistema y el control funcionen. Cuando el lazo se cierre, este ángulo será el ángulo real leído

del rotor.

Mediante una rampa se simula el ángulo del rotor que va de cero a 360 grados. Si se varía la

frecuencia de la rampa de la consigna velocidad se variará la velocidad del motor. La

consigna velocidad también tiene forma de rampa para que no varíe bruscamente.

Control y generación del ángulo

• Genera una rampa que simula el ángulo del rotor (de 0º a 360º, 0000h a FFFFh)• De esta rampa se puede variar su frecuencia, o sea, la velocidad del motor• La consigna de velocidad se modifica en forma de rampa, y no bruscamente

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 131

Con este esquema se recuerdan los elementos del testbed con los que se tratará a

continuación, ya que a partir de este momento se describen los pasos para poner en

funcionamiento la plataforma de trabajo y empezar a utilizar el control en lazo abierto.

Plataforma para el control de motores

Puerto paralelo

Encoder

PC

Fuente alimentación 24V

(PSU)

CDM2480+ DSK

Fuente alimentación 5V

Procedimiento práctica 11. Mantener la PSU apagada2. Enchufar sólo la fuente de 5 V3. Arrancar el Code Composer Studio con

el icono4. Abrir el workspace pmsm.wks: des de la

barra de menús ir a File->Workspace->Load Workspace-> pmsm.wks

Anexo A

Pág. 132

Procedimiento práctica 15. Compilar y cargar el programa con el botón

Rebuild All6. Activar el Real Time Monitor: Debug > Real-

time Mode. Pulse Sí cuando aparezca la ventana:

Procedimiento práctica 17. Ejecutar el programa con el botón Run8. Seleccionar la pestaña BUILD2 en la

ventana Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 133

El procedimiento descrito se ha de realizar de la misma forma en cada práctica en la que se

trabaje con la plataforma y no es recomendable alterar el orden de los pasos. A continuación

se detallan otros aspectos del uso del programa que pueden ser útiles:

No olvidar de conectar el cable de puerto paralelo.

En el paso número 4 se ha de prestar antención al código que aparece en este archivo,

ya que es el código de control, expuesto en las dos transparencias siguientes, que mas

adelante se tendrá que modificar.

Para compilar todo el programa se puede hacer desde el menú siguiendo: Menu >

Project > Rebuild All, o se puede compilar tan solo la parte que ha sido cambiada

desde la ultima compilación siguiendo: Menu > Project > Build o con el icono

Incremental Build.

Para activar el funcionamiento del DSP (ejecutar el programa) seguir los siguientes

pasos desde el menú: Menu > Debug > Run o pulsar la tecla F5.

Procedimiento práctica 1

9. Activar el Continous Refresh también para las tres ventanas gráficas

10. Encender la fuente de alimentación PSU11. Poner la variable enable_flag a 1. Y el

motor empieza a girar

Anexo A

Pág. 134

La Power Supply Unit (PSU) es la fuente de alimentació regulable de 0 a 30 V y

con limitación de corriente. El valor de uso en el CDM2480 es de 24 Voltios y ha de

estar limitada a 1 A para proteger el motor y la plataforma.

Código implementado

rc1.target_value = _IQ(speed_ref); // target_value is in IQrc1.calc(&rc1);

rg1.rmp_freq = rc1.setpt_value;rg1.calc(&rg1);

ilg2_vdc_vcon1.read(&ilg2_vdc_vcon1);ilg2_vdc_vcon1.Imeas_a = ilg2_vdc_vcon1.Imeas_a - ilg2_vdc_vcon1.Imeas_a_offset;ilg2_vdc_vcon1.Imeas_b = ilg2_vdc_vcon1.Imeas_b - ilg2_vdc_vcon1.Imeas_b_offset;

clarke1.as = _IQ15toIQ((long)ilg2_vdc_vcon1.Imeas_a);clarke1.bs = _IQ15toIQ((long)ilg2_vdc_vcon1.Imeas_b);clarke1.calc(&clarke1);

park1.ds = clarke1.ds;park1.qs = clarke1.qs;park1.ang = rg1.rmp_out;park1.calc(&park1);

Código implementado

ipark1.de = _IQ(Vd_testing);ipark1.qe = _IQ(Vq_testing);ipark1.ang = rg1.rmp_out;ipark1.calc(&ipark1);

svgen_dq1.Ualfa = ipark1.ds;svgen_dq1.Ubeta = ipark1.qs;svgen_dq1.calc(&svgen_dq1);

pwm1.Mfunc_c1 = (int)_IQtoIQ15(svgen_dq1.Ta); // Mfunc_c1 is in Q15pwm1.Mfunc_c2 = (int)_IQtoIQ15(svgen_dq1.Tb); // Mfunc_c2 is in Q15 pwm1.Mfunc_c3 = (int)_IQtoIQ15(svgen_dq1.Tc); // Mfunc_c3 is in Q15pwm1.update(&pwm1);

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 135

En las transparencias anteriores se ha expuesto el código del control. Se han de observar las

diferentes variables de entrada y salida, así como las llamadas a las funciones de los diferentes

módulos explicados durante la descripción de este apartado.

El código implementado ha sido incluido para habituar al lector al entorno de programación

utilizado en el control y para situar las variables importantes que se modificarán y se

estudiarán su comportamiento durante la realización de la práctica.

Las variables importantes son las que se deberán modificar, a fin de comprobar la tarea que

realizan y el efecto que crean sobre el motor. Las observaciones a realizar en la ventana

Watch Window cuando se modifiquen las variables importantes son las siguientes:

La variable speed_ref modifica la velocidad de giro del motor, por lo tanto se debe modificar

dentro del rango suministrado cada vez que se quiera cambiar la velocidad del motor.

La variable rc1.rmp_dly_max modifica el pendiente de la rampa de aceleración y

desaceleración. Su rango de valores va desde 0 a 100, siendo el 0 el valor que provoca el

cambio de velocidad más rápido, por el contrario el 100 es el más lento. El efecto de

modificar esta variable se aprecia al modificar la variable speed_ref, porque se observará

como la velocidad varia más rápidamente o lentamente.

Variables importantes

• La variable speed_ref modifica la velocidad de giro del motor (Rango: -0.4 a 0.4)

• La variable rc1.rmp_dly_max modifica la rampa de aceleración y desaceleración (Rango: 0 a 100)

• Las variables Vd_testing y Vq_testing son las tensiones en ejes d y q que se impone

Anexo A

Pág. 136

Las variables Vd_testing y Vq_testing indican el valor de la tensión de los ejes d y q. Éstos

son valores que se imponen y por defecto Vd vale cero, ya que con el valor de la tensión

directa no se consigue par, y por lo tanto, si se quiere conseguir el par máximo el valor Vd ha

de ser nulo. Por otro lado se puede comprobar que si se aumenta el valor de Vq, el par

efectuado por el motor aumenta y por lo tanto parar el eje del motor con la mano cuesta más.

Es tarea del alumno, una vez conoce todas las variables, observar como el motor pierde

sincronismo, por lo tanto se vuelve inestable, al variar la velocidad angular, es decir la

speed_ref. Claro esta que esto sucede de esta forma y se cumple, siempre y cuando se realice

el cambio de speed_ref para una misma tensión y una misma carga. Lo interesante es poder

conseguir variar la velocidad y que el motor se inestabilice.

Una vez finalizada toda la sesión de prácticas es necesario desconectar el sistema siguiendo

los puntos especificados anteriormente. Se ruega seguir el procedimiento descrito para no

perjudicar ningún elemento de la plataforma. También se puede seguir este camino en el paso

de parar el DSP: Menú > Debug >Halt o pulsar MAYUS + F5.

Como conclusión, se recuerda que el objetivo de esta práctica era observar que el motor

brushless es autopilotado y que, por tanto, a medida que aumenta la velocidad, se pierde el

Procedimiento práctica 1

Procedimiento de parada del sistema de forma adecuada

12. Parar la fuente de alimentación PSU13. Parar el DSP con el botón 14. Parar el Real Time Monitor: Debug >

Real-time Mode15. Hacer un reset de la CPU: Debug >

Reset CPU

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 137

sincronismo y el motor deja de girar, debido a que es inestable. Este hecho hace necesario

medir la posición del rotor para no perder el sincronismo y que el rotor pueda girar a cualquier

velocidad.

Anexo A

Pág. 138

A.2.9. Lazo de par

Una vez hecho ya el primer contacto con el motor, en la sesión cuarta ya se debe poder cerrar

el lazo de par del control del motor, finalizando la primera etapa del control vectorial. El

ajuste de los controladores para ambas corrientes transformadas es el centro de esta sesión

práctica.

El siguiente paso del control es cerrar el lazo de par o de corriente, para ello se ha introducido

el módulo PID, que se encargará de comparar las corrientes medidas en la placa con el valor

de corriente de referencia.

Una vez hechas las pruebas necesarias para ver la diferencia entre el lazo abierto y el lazo

cerrado, se realizará el ajuste de los módulos PID siguiendo los pasos y consejos indicados en

el desarrollo de la práctica.

Lazo de par

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 139

Módulo PID

• Este módulo implementa un controlador PID con una precisión de 32 bits• Se puede usar como PI, PD o PID con sólo hacer cero la constante adecuada• Además incorpora anti-windup para evitar la saturación del integrador

Módulo PID

+

-

Ref

Fdb

eKp

1

iTdt∫

Tdddt

+

+

Kc

+

+

++

usat

-+

u

Anexo A

Pág. 140

El módulo PID implementa un controlador PID con precisión de 32 bits. Además permite

utilizarlo como PI, PD o PID, con tan solo hacer cero las constantes apropiadas. Incorpora un

elemento llamado anti-windup para evitar la saturación del integrador compensando más

rápidamente el error que va cometiendo y acumulando el integrador, de esta forma se

consigue un transitorio más rápido. Éste elemento se puede observar en la parte derecha del

diagrama de bloques del módulo PID.

Las variables de entrada del PID son el valor de referencia y el valor de realimentación, los

cuales se compararán para realizar el control. De salida proporciona la señal corregida a partir

de la comparación y los parámetros Kp, Ki y Kd junto con el Kc que corresponde al anti-

windup.

Módulo PIDEntradas• pid_ref_reg3: valor de

referencia• pid_fdb_reg3: valor de

realimentación

Salidas• pid_out_reg3: salida del

controlador PIDParámetros• Kp_reg3: constante

proporcional• Ki_reg3: constante integral• Kd_reg3: constante derivativa• Kc_reg3: constante de

corrección del integrador (anti-windup)

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 141

Para realizar esta práctica se ha de tener previamente el código necesario para cerrar el lazo de

par. Es tarea del alumno pensar el código necesario a partir del código utilizado en el lazo

abierto. Después tan solo se tiene que introducir el código mediante el programa Code

Composer.

El procedimiento de arranque a seguir es el mismo que la práctica anterior pero en el punto

donde se ha de seleccionar la pestaña Build2 en este caso ha de ser la pestaña build3. Una vez

puesto en funcionamiento todo el sistema, las pruebas que se pueden realizar son las

siguientes:

En este build también se puede cambiar el valor de las variables speed_ref y

Rc1.rmp_dly_max, al igual que en la práctica anterior. Siguen significando lo

mismo. Es interesante volver a cambiarlos para recordar su funcionamiento y ver

las diferencias, así como comprobar si aún hay pérdida de sincronismo. Nótese que

aún se sigue simulando el ángulo θr.

El valor de la corriente se podrá variar utilizando las variables Id_ref y Iq_ref, los

cuales se pueden variar desde 0 hasta 0,3. En este caso el valor de la corriente es

proporcional al par que suministra el motor, por lo tanto Id_ref será cero al igual que

en la práctica anterior lo era la Vd_testing ya que la componente directa no

Procedimiento práctica 2

• Incluir el código necesario para cerrar el lazo de par

• El procedimiento de arranque es el mismo que el caso anterior

• Seleccionar la pestaña BUILD3 en la ventana Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

Anexo A

Pág. 142

proporciona par. Por el contrario si se aumenta el valor Iq_ref, se observa que el par

proporcionado por el motor aumenta, y por lo tanto cuesta más parar el eje del

motor. Se ha de jugar con los valores de Iref para comprobar los efectos explicados.

Ahora queda analizar los valores del módulo PID. Antes de empezar a ajustar los

valores del PID, se tienen que recordar algunos conceptos que vendrán bien a la hora

de decidir el camino para ajustar. La constante proporcional hace que el error del

sistema tienda a cero, se ha de intentar poner el valor más grande posible para hacer

rápida la respuesta, pero con precaución, ya que esto inestabiliza el sistema. La

constante integradora da idea de la evolución del error, es decir, cuánto se ha alejado

de la referencia. Sirve para eliminar el error en estado estacionario, pero puede

inestabilizar el sistema si acumula mucho error. La constante derivativa indica la

tendencia del sistema, pero si existe ruido de alta frecuencia puede inducir a errores.

En ámbitos industriales con aplicaciones de alta frecuencia, como el control vectorial,

hay que evitar ese ruido.

Por último, se recuerda que en este apartado se está modificando el PID para ver como

cambia la respuesta frente a una alteración externa o interna del par, así que se

recomienda ir modificando iq_ref o bloqueando el par, para ver si la respuesta del

sistema mejora con los nuevos valores del PID.

Finalmente, queda realizar el sintonizado de los PID o lo que habitualmente se conoce como

PID tuning. Actualmente existen varias técnicas para realizar el sintonizado, pero

desafortunadamente en la actualidad aún hay una técnica que predomina por encima de las

otras. Esa técnica es la denominada prueba y error, que como se supone consiste en ir

probando diferentes valores e ir descartándolos o mejorándolos según los resultados obtenidos

por pantalla con el programa de análisis, como puede ser el Code Composer. Ésta técnica es

poco científica y requiere mucho tiempo, pero es la que más se usa debido a la poca

documentación y enseñanza que existe sobre el PID tuning. Además de ser una técnica lenta,

requiere de una alta experiencia en el tratamiento con diferentes sistemas, ya que la única

herramienta en este caso es el conocimiento adquirido con la práctica.

Las demás técnicas son más científicas o lo intentan, ya que no siempre dan resultado. Hay

dos grupos principales que dividen las técnicas científicas: Open loop methods y Closed loop

methods. De los dos grupos, el primero es el más utilizado ya que es el más sencillo. Dentro

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 143

de este grupo se encuentran métodos como el Haalman o el Cohen-Coon, y dentro del

segundo grupo se encuentran métodos como el Ziegler-Nichols. Ninguno de los métodos

expresados aseguran que el resultado obtenido sea el óptimo o el correcto, por ello existen

programas o técnicas que se basan en utilizar más de 20 métodos a la vez para evaluar cual es

el mejor. Uno de estas técnicas es la denominada TOPAS que utiliza métodos como: Astrom,

Cohen-Coon, Chien-Hrones-Reswick, IMC, ITAE, etc.

Para concluir, tan solo decir que como se puede observar en la actualidad, no existe ningún

proceso concreto para el sintonizado del PID, así que se aconseja utilizar todos los caminos

presentados anteriormente. Se recomienda documentarse sobre el procedimiento seguido por

los métodos mencionados y utilizar la prueba y error de un modo más científico, buscando la

vía que reduzca el tiempo invertido en el PID tuning. En definitiva, se habla del PID tuning

como un arte y una ciencia, donde solo se puede usar como herramienta de batalla el

conocimiento y la experiencia si se tiene.

Anexo A

Pág. 144

A.2.10. Medida de la posición y la velocidad:

Módulo QEP y medida del ángulo

• Este módulo procesa las señales del encoder y devuelve la posición y el sentido de giro del rotor• Es la interfaz entre la parte hardware del capturador y el programa

Funcionamiento del encoder

QEP_AQEP_B

Una vuelta(360º mecánicos)

QEP_index

QEP_CLK

QEP_DIR

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 145

Para cerrar el lazo de velocidad es necesario utilizar un encoder y un módulo más para poder

medir el ángulo de giro y así calcular la velocidad. El módulo QEP (Quadrature Encoder

Pulse) del DSP se encarga de procesar las señales provenientes del encoder y proporcionar la

posición mecánica del rotor o ángulo de giro θ, junto con el sentido de giro. El módulo es el

nexo entre la parte hardware del capturador y el programa, ya que convierte las señales en

datos útiles para ser tratados digitalmente.

El encoder incremental (de impulsos) dispone de dos canales que permiten determinar la

posición del rotor de una forma más precisa, además de facilitar la determinación del sentido

de giro, ya que con un solo canal no se podría saber el sentido de giro. También proporciona

otros datos, como una señal índice que indica cuando se ha dado una vuelta entera. Se

recuerda que la posición eléctrica del rotor está relacionada con la mecánica a través del

número de polos.

La determinación del giro se realizará mediante un contador que se incrementará o no según

el grafo mostrado. Si el motor gira en un sentido la secuencia del grafo es diferente a si el

motor gira en el sentido contrario. La posición del canal B respecto del Canal A indica el

sentido de giro y hace variar la distribución de los estados indicados.

Determinación del sentido de giro

Ch. A

Ch. B

(00)

(10)

(11)

(01)

00

10

11

01

Decodificador de sentido de giro

Incrementa el contador

Decrementa el contador

Anexo A

Pág. 146

El módulo QEP tiene como entradas los dos canales de información (A y B) que suministra el

encoder, así como la señal de índice del encoder. Como salidas proporciona el ángulo

eléctrico del rotor y el sentido de giro del rotor en formato digital.

Módulo QEPEntradas• QEP_A: señal del

canal A del encoder• QEP_B: señal del

canal B del encoder• QEP_index: señal de

índice del encoder

Salidas• theta_elec: ángulo

eléctrico del rotor• dir_QEP: sentido de

giro del rotor

Cálculo de la velocidad

• La medida de la velocidad se realiza a partir de la información del ángulo y del sentido de rotación proporcionada por el encoder• El cálculo de la velocidad se realiza derivando el ángulo • Después se aplica un filtro pasa bajos para eliminar el ruido introducido en el cálculo de la derivada

r r

ddt

ω θ=

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 147

La velocidad se mide mediante la información del ángulo de giro que proporciona el encoder

junto con el módulo QEP y el sentido de giro. Derivando la posición del rotor se obtiene la

velocidad, y al final se aplica un filtro pasa bajos, para eliminar el ruido introducido por el

cálculo de la derivada.

El módulo de cálculo de velocidad necesita como entrada el ángulo del rotor, obtenido a partir

del módulo QEP, y además el sentido de rotación. Como salida proporciona la velocidad de

rotación del rotor.

Módulo de Cálculo de la velocidad

Entradas• theta_elec: ángulo

eléctrico del rotor• dir_QEP: sendito de

rotación del rotor

Salidas• speed_frq:

velocidad de rotación del rotor

Anexo A

Pág. 148

Ajuste del ángulo inicial• Como sólo se cierra el lazo de velocidad, hay que decirle al control en qué posición del rotor se da el ángulo cero• Para eso hay que ajustar la variable cal_angleen la ventana Watch Window hasta que el ángulo medido con el encoder esté retrasado 90ºrespecto al ángulo creado internamente• Después abrir el archivo f28xqep.h y modificar el valor por defecto del parámetro cal_angle

Ajuste del ángulo inicial• El ángulo varia entre 0 y

1 en Q15 (0-360º)• 90º es 0.25• Ajustar la variable cal_angle hasta que el ángulo medido esté 90ºgrados retrasado respecto el ángulo creado internamente

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 149

Si solo se cierra el lazo de velocidad, se tiene un problema ya que el control no sabe en que

posición del rotor se da el ángulo cero, pero si se cerrara el lazo de posición también, no

existiría este problema. Para solventarlo hay que ajustar la variable cal_angle hasta que el

ángulo medido con el encoder esté retrasado 90º respecto al ángulo creado internamente (el

ángulo magnético del rotor) , de esta forma se estará en la condición de par máximo. Una vez

se tiene el valor de la variable cal_angle, se debe modificar el archivo indicado en la

transparencia. En la ventana del Code Composer la gráfica mostrada ha de ser igual a la

representada en la transparencia para llegar a determinar el valor de cal_angle.

La explicación de este ajuste es la siguiente: hasta ahora, el campo magnético del motor se ha

generado sin tener en cuenta la posición real del eje de este, ya que se conseguía al arrancar

que el rotor se sincronizara con el campo magnético sin problemas. Pero si no se desea perder

sincronismo se debe medir la posición del rotor. Si ahora lo que se quiere es cerrar el lazo de

velocidad, se necesitará saber en todo momento la posición real del eje del motor. Esta

posición se leerá con el encoder, pero hará falta alinear la posición inicial medida en el

encoder con la posición real del eje magnético del imán del rotor. De esta forma se conseguirá

aplicar la iq con el ángulo correcto para que esté sobre el eje q.

Para sincronizar el ángulo medido con la posición real, será necesario desfasar 90º el ángulo

del rotor y del campo magnético del estator. En una de las ventanas se muestra la evolución

en el tiempo de las variables rmp_out (que es el ángulo que se impone para crear el campo

magnético en el estator) en el buff1 y la variable theta_elec (ángulo medido por el encoder del

eje del motor) en el buff2. Entonces, cambiando el valor de la variable cal_angle en la ventana

Watch Window, se podrá ir modificando el desfase entre los dos ángulos, hasta conseguir que

el ángulo medido en el encoder esté a 90º (0,25 en pu) avanzado respecto el ángulo del campo

magnético del estator. Una vez encontrado este valor de la variable cal_angle, solo se tendrá

que modificar su valor en el archivo include f28xqep.h, línea 64 parámetro 8:

#define QEP_DEFAULTS { 0x0, 0x0,0x0,0x0,0x0,0x00020C4A,4,1584,0x0,

Anexo A

Pág. 150

Antes de cerrar el lazo de velocidad, como ya se ha comentado se ha de realizar el ajuste del

ángulo inicial. Los pasos a seguir son los descritos en la transparencia anterior. Se recuerda

que la fuente de alimentación PSU se ha de poner a 24 V y con el limitador de corriente a un

amperio.

Éste era el paso previo a realizar antes de cerrar el lazo de velocidad. Claro está que este paso

se ha realizado con el mismo esquema que la última práctica, solo que se ha introducido la

parte del código necesaria para medir la posición y calcular el ángulo. Por lo tanto, en todo

momento el lazo de velocidad ha estado abierto, mientras que el de par cerrado. Ahora ya se

puede pasar a cerrar el lazo de velocidad.

Ajuste del ángulo inicial• Incluir el código necesario para medir la

posición y calcular la velocidad de giro• El procedimiento de arranque es el mismo que

el caso anterior• Seleccionar la pestaña BUILD4 en la ventana

Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 151

A.2.11. Lazo de velocidad

Lazo de velocidad

Cerrar el lazo de velocidad• Incluir el código necesario para cerrar el lazo

de velocidad• El procedimiento de arranque es el mismo que

el caso anterior• Seleccionar la pestaña BUILD5 en la ventana

Watch Window. Y con el botón derecho del mouse habilitar el Continous Refresh

• Seguir el mismo procedimiento también para parar la plataforma

Anexo A

Pág. 152

Una vez entendido el funcionamiento del encoder y realizado el ajuste del ángulo inicial, se

puede pasar a cerrar el lazo de velocidad. El procedimiento a seguir es el mismo que en las

prácticas anteriores.

Este build level permite cambiar, igual que en los anteriores, la velocidad y aceleración el

motor a partir de los cambios de las variables Speed_ref y Rc1.rmp_dly_max desde la ventana

Watch Window.

Si el controlador de velocidad está ajustado correctamente, se aprecia como ahora el motor

tiene un comportamiento mucho más bueno y es más difícil pararlo, ya que se esta aplicando

un controlador de velocidad que intentará mantener la velocidad del motor igual que la

velocidad de referencia. Para conseguirlo, la fuente dará corriente hasta conseguir igualar las

velocidades consigna y real o hasta que se llegue al limite de corriente impuesto por la fuente.

No hace falta añadir un segundo controlar para obtener el valor de Id_ref ya que se considera

cero durante todo el control para conseguir un par máximo.

Otro de los objetivos de esta práctica es realizar un calibrado del controlador PID de

velocidad. El controlador comparará la velocidad de referencia que se desee obtener con la

velocidad real del eje obtenida con el encoder. El controlador obtendrá el valor de Iq que se

Ajuste PI velocidad

• Hacer Ki_s=0• Ver el error en régimen permanente. Observar que si se aumenta Kp_s, este error disminuye• Con un valor razonable de Kp_s, aumentar poco a poco Ki_s y observar, al provocar un escalón de consigna, el sobrepico, las oscilaciones, y el error estacionario

Metodología para la docencia del control vectorial de la máquina síncrona de imanes permanentes

Pág. 153

hade aplicar para obtener la velocidad deseada. Para realizar el calibrado se tienen que seguir

los pasos indicados en la transparencia anterior. Para modificar las constantes se tienen que

añadir al Watch Window.