Taller de Electrónica - Unidad II - 2022 - Parte - 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Implementación Simple de un PID en forma

Digital – Algoritmo para micro-controladores o


DSP
Sabemos que la ecuación estándar en un libro te texto
de un PID (en su forma paralela) es:

 1
t
de(t ) 
u (t ) =  K p e(t ) + ki  e( )d + K d 
 Ti 0 dt 

Si realizamos su transformada de laplace, tenemos:

 Ki 
U ( s) =  K p + + sK d  E ( s )
 s 
Implementación Simple de un PID en forma
Digital – Algoritmo para micro-controladores o
DSP
Conocemos 3 posibles formas de dicretizar un sistema
continuo como
 Ki 
U ( s) =  K p + + sK d  E ( s )
 s 

z −1
Usando Euler (hacia adelante) s
T
z −1
Me todo de Diferencias (hacia atrás)
s
zT

2 z −1
Me todo Trapezoidal o aproximación de Tustin (hacia atrás) s
T z +1
Implementación Simple de un PID en forma
Digital – Algoritmo para micro-controladores o
DSP
Usando la forma mas simple de discretización
(considerando T=1)
 −1 
d ( )
Ki
U ( z) =  K p + −1
+ K 1 − z  E( z)
 1− z 

Si reordenamos tenemos:

 K p + Ki + K d + ( − K p − 2 K d ) z −1 + K d ( z −2 ) 
U ( z) =  −1
 E( z)
 1− z 
Implementación Simple de un PID en forma
Digital – Algoritmo para micro-controladores o
DSP
Si definimos: K1 = K p + K i + K d
K2 = − K p − 2Kd
K3 = K d

Entonces podemos reescribir:


U ( z ) − z −1U ( z ) =  K1 + K 2 z −1 + K 3 z −2  E ( z )

Pasando al plano discreto temporal entonces tenemos el


siguiente algoritmo:
u (k ) = u (k − 1) + K1e(k ) + K 2e(k − 1) + K 3e(k − 2)
Implementación Simple de un PID en forma
Digital – Algoritmo para micro-controladores o
DSP
Para su correcta implementación en un dispositivo programable en C considerar el siguiente
código:

double e,e1,e2,u, delta u;


double k1=??, k2=??,k3=??; // donde k1=kp+kí+kd , k2=-(kp+2kd) y k3=kd
double setpoint=??;

void pid_tallereln()
{
e2=e1; // actualiza la variable de error ante-anterior
e1=e; //actualiza la variable de error anterior
y = leerADC(); lee la variable del sensor en el canal análogo digital
e=setpoint-y;
u=u+k1*e+k2*e1+k3*e2; // algortimo del PID discreto

if (u>UMAX) u=UMAX; // limita rango del DAC


if (u<UMIN) u=UMIN;
escribir_DAC(); // escribe en sistema digital análogo.
}
Anti-Windup en el Algoritmo PI o PID
Un problema que existe en la implementación real de un controlador PI
o PID, ya sea para una solución industrial o para un producto tiene que
ver con la existencia de limitaciones en los actuadores. Estas
limitaciones podrían ser:
• Los rangos máximos o mínimos de actuación ó
• Los rangos máximos o mínimos de la velocidad del actuador.
Ignorando estas limitaciones, el desempeño real del sistema de control
puede ser horrible respecto a lo esperado, si la señal de control alcanza
sus límites.
Hay dos formas de hacer frente a este problema:
(a) Reducir los requerimientos en el desempeño deseado, de modo que el
controlador lineal nunca supere sus límites, ó
(b) Modificar el diseño para tener en cuenta las limitaciones de actuación.
Como futuros ingenieros en mecatrónica, siempre esperaremos el mejor
desempeño en nuestros sistemas controlados, por lo que el enfoque
correcto que debemos considerar es el (b).
Wind-up
Uno de los principales efectos no deseables de la saturación en la
actuación, es que cualquier integrador del controlador (PI o PID)
continuará integrando aún cuando la entrada se encuentra saturada.
Así, el estado del integrador en cuestión puede alcanzar valores
excesivos, que deteriorarán la respuesta transitoria del sistema,
generalmente produciendo grandes sobrevalores.
Este efecto se denomina “integrator wind-up” (“enrollamiento” o
“embalaje” del integrador en español).
Para evitar el win-up, es
necesario aplicar una
protección anti-windup

En la Fig. es posible ver el


efecto en un proceso
controlado que conlleva la
aplicación o no de una
protección anti-windup.
Anti-Windup Básico
Existen muchas alternativas, sin embargo una de estas, es de fácil
implementación digital. Esta alternativa es el tracking anti-windup.

Tracking anti-wind-up
Implementación Simple de un PID en forma
Digital – Algoritmo para micro-controladores o
DSP
Para su correcta implementación en un dispositivo programable en C considerar el siguiente
código:

float Val_ssat=10000; //(por ejemplo )
void pid_tallereln()
{
e2=e1; // actualiza la variable de error ante-anterior
e1=e; //actualiza la variable de error anterior
y = leerADC(); lee la variable del sensor en el canal análogo digital
e=setpoint-y;
if (u<Val_ssat && u>-Val_ssat)
{
u=u+k1*e+k2*e1+k3*e2; // algortimo del PID discreto
} Anti-Windup
else
{u=k1*e;}
if (u>UMAX) u=UMAX; // limita rango del DAC
if (u<UMIN) u=UMIN;
escribir_DAC(); // escribe en sistema digital análogo.
}
Control Proporcional Resonante
• Las estrategias de seguimiento sinusoidal basadas en el control
proporcional resonante (PR) son conocidas desde hace menos de dos
décadas. La idea principal del control PR, es emular esa ganancia infinita
que puede proporcionar por un PI en sistemas con variables continuas,
sólo que el PR lo hace en sistemas con variables AC. Esto, ya que el PR
introduce una ganancia casi infinita a una frecuencia de resonancia
específica permitiendo eliminar un error en estado estacionario en esa
frecuencia.
En el plano de la frecuencia el control resonante se puede escribir como:

s
CPR (s ) = K P + K r
s 2 + 02
Donde KP es la ganancia proporcional y Kr es la ganancia resonante del
controlador. La parte resonante del controlador, puede ser considerada como
un integrador generalizado en AC
Control Proporcional Resonante
vo voref s vo
E s E K P + Kr 1
K P + Kr 1 +
s + 02
2
s − s 2 + 02 s

Bode Diagram – Open Loop Bode Diagram – Closed Loop


350 0.4

300 0.2
Magnitude (dB)

250 0

Magnitude (dB)
200 -0.2

150 -0.4

100 -0.6

50 -0.8

0 -1
0 0

-5
-45
Phase (deg)

Phase (deg)
-10

-90 -15

-20
-135
-25

-180 -30
10 20 30 40 50 60 70 80 90 100 200 300 10 20 30 40 50 60 70 80 90 100 200 300
Frequency (Hz) Frequency (Hz)
(a) (b)

• Si se decide controlar un sistema (por ejemplo un sistema integrador ) con un


controlador PR. Podemos darnos cuenta a través de los diagramas de bode del
modelo, tanto del sistema en lazo abierto como el sistema en lazo cerrado,
que el controlador introduce una ganancia muy elevada, en el sistema en lazo
abierto, justo cuando la frecuencia es 50Hz (ver Fig.). En tanto en el diagrama
de bode del sistema en lazo cerrado, es posible observar que el efecto del
control PR en el sistema, es mantener una ganancia unitaria en la salida y una
fase cero respecto de la entrada (ver Fig.9(b)), lo cual indica que el control en
esa frecuencia tendrá un perfecto seguimiento respecto la ganancia y la fase.
Control Proporcional Resonante
s
• Si el control CPR (s ) = K P + K r
s 2 + 02

Es discretizado, usando el método de impulso invariante el


controlador discretizado queda como:

u(z) 1 − z −1cos ( 0TS )


CPR ( z ) = = K P + K rTS
e( z) 1 − 2 z −1cos ( 0TS ) + z −2

u k = ( K P + K rTs ) ek − ek −1 (2 K p + K rTs )cos(oTs ) + ek − 2 K p + uk −1 2cos(oTs ) − uk − 2


Control Predictivo
Como funciona:

• El convertidor es modelado como un sistema con estados finitos

• El modelo de la carga puede ser usado para predecir el comportamiento


de cada estado posible

• Una función de costo debe ser definida, la cual representa el comportamiento


deseado del sistema.

• El estado de switcheo que minimiza la función de costo es seleccionada

Esto es todo!!
Control Predictivo
Ejemplo de predicción en una inductancia
Control Predictivo
Ejemplo: Para un control predictivo del voltaje en un inversor fuente de corriente:

dio 1
= ( vo − rLio )
dt L

dvo 1
= ( S AC iDC − io )
dt Co
• Los estados de la función de switcheo SAC pueden ser

• S AC = 1, 0, −1 donde 1 = s1ON , s2OFF , s3OFF , s4ON 

0 = s1ON , s2ON , s3OFF , s4OFF  ó s1OFF , s2OFF , s3ON , s4ON 

−1 = s1OFF , s2ON , s3ON , s4OFF 


Control Predictivo
Ejemplo: Para un control predictivo (con compensación del retardo) del voltaje en un inversor fuente
de corriente:
Adquiere
vo

Se aplica
Sac

Se hace una primera


vok +1 =
Ts
Co
( S AC iDC − iok ) + vok
T
( )
estimación del voltaje Vo y la
dio 1 iok +1 = s vok +1 − rLiok + iok
= ( vo − rLio )
corriente io (de carga)
L
dt L
Se comienza g = 1000
considerando un
valor g (función de for s AC − 1: 0 :1
costo) elevado

Se calcula el voltaje futuro de carga Vo


para cada estado de switcheo - se
vok + 2 =
Ts
Co
( S AC iDC − iok +1 ) + vok +1
evalúa la función de costo de cada
estado g = vref − vok + 2

Se elige el estado de switcheo cuya


g = g min
función de costo g sea la mínima
S AC

También podría gustarte