Conversin de Continuo a Discreto Controlador PID En esta pgina, consideremos la versin digital del problema de control de velocidad de un motor de CC . Puede obtenerse un modelo digital del motor de CC a partir de la conversin del modelo analgico , como describiremos. El controlador para este ejemplo se disear por un m!todo PID. De la pgina Modelacin: un Motor de CC, la "uncin de trans"erencia a la#o abierto para la velocidad del motor se deriv como: Donde: $resistencia el!ctrica %&' ( ) o*m $inductancia el!ctrica %+' ( ,.- . $constante de "uer#a electromotri# %/e(/t' ( ,.,) 0m12mp $momento de inercia del rotor %3' ( ,.,) 4g$m561s56 $coe"iciente de amortiguamiento del sistema mecnico %b' ( ,.) 0ms $entrada %V': 7uente de 8ensin $salida %t*eta punto': Velocidad de rotacin $9e asume :ue el rotor ; el eje son r<gidos +os re:uerimientos de diseo para entrada escaln de ) rad1seg. son 8iempo de establecimiento: Menor :ue 6 segundos 9obrepico: Menor :ue el -= Error de estado estacionario: Menor :ue el )= Conversin de Continuo a Discreto El primer paso en el diseo de un sistema de control discreto es convertir la "uncin de trans"erencia continua a una "uncin de trans"erencia discreta. El comando Matlab c6dm lo *ar para ud.. c6dm re:uiere los siguiente cuatro argumentos: el polinomio numerador %num', el polinomio denominador %den', el tiempo de muestreo %8s' ; el tipo de mantenedor. En este ejemplo, usaremos el mantenedor de orden cero %>#o*>'. Del re:uerimiento de diseo, *agamos el tiempo de muestreo, Ts igual a ,.)6 segundos, lo cual es )1), de la constante de tiempo de un sistema con un tiempo de establecimiento de 6 segundos. Creemos un nuevo arc*ivo?m e ingrese los siguientes comandos: R=1; L=0.5; Kt=0.01; J=0.01; b=0.1; num = Kt; den = [(J*L) (J*R)+(L*b) (R*b)+(Kt^2)]; Ts = 0.12; [numz,denz] = c2dm(num,den,Ts,z!") +uego de ejecutado este arc*ivo?m debe devolver lo siguiente: numz = 0 0.0092 0.0057 denz = 1.0000 -1.0877 0.2369 De estas matrices, la "uncin de trans"erencia discreta puede escribirse como: Primero, nos gustar<a vea cmo se ve la respuesta del sistema a la#o cerrado sin ning@n control. 9i aprecia la matri# numz arriba, !sta tiene un cero adicional al principio, tenemos :ue librarnos de !l antes de cerrar el la#o con el comando Matlab c#!!$. 2gregue el siguiente cdigo al "inal de su arc*ivo?m: numz = [numz(2) numz(%)]; [numz&c#,denz&c#] = c#!!$(numz,denz); +uego de *acerlo, observemos cmo se ve la respuesta a la#o cerrado al escaln . El comando dstep generar el vector de seales de salida discreto ; el comando stairs las conectar . Pinc*e a:u< para ms in"ormacin. 2gregue el siguiente cdigo de Matlab al "inal del arc*ivo?m anterior ; ejec@telo nuevamente. ['1] = dste$(numz&c#,denz&c#,101); t=0(0.12(12; st)*+s(t,'1) '#)be#(T*em$! (se,und!s)) -#)be#(.e#!c*d)d (+)d/s)) t*t#e(Res$uest) t*$! esc)#e+) (0+*,*n)#) Deber<a verse la "igura siguiente: Controlador PID &ecordemos :ue la "uncin de trans"erencia de tiempo continuo para un controlador PID es: EAisten varias maneras para el mapeo del plano s al plano # . +a ms precisa es . 0o podemos obtener la "uncin de trans"erencia del "iltro PID de este modo por:ue la "uncin de trans"erencia de tiempo discreto tendr<a ms ceros :ue polos, lo cual no es reali#able. En su lugar usaremos la trans"ormacin bilineal , de"inida como sigue: Por lo :ue podemos derivar el controlador PID discreto con el mapeo por la trans"ormacin bilineal. Para una derivacin ms detallada de un controlador PID discreto , vea Controlador PID Discreto . E:uivalentemente, el comando c6dm del Matlab le a;udar para convertir el compensador PID de tiempo continuo al compensador PID de tiempo discreto usando el m!todo BtustinB en este caso. El m!todo BtustinB usar la aproAimacin bilineal para la conversin a tiempo discreto de la derivada. De acuerdo con la pgina M!todo de Diseo del PID para el Motor de CC , Kp ( ),,, Ki ( 6,, ; Kd ( ), satis"acen el re:uerimiento de diseo. 9e usar todas las ganancias en este ejemplo. 2*ora agregue los siguientes comandos Matlab a su arc*ivo?m anterior ; ejec@telo nuevamente en la ventana del Matlab. 1 2!nt+!#)d!+ 345 5*sc+et! c!n )$+!'*m)c*6n b*#*ne)# K$ = 100; K* = 200; Kd = 10; [dencz,numcz]=c2dm([1 0],[Kd K$ K*],Ts,tust*n); 0ote :ue el numerador ; el denominador en el comando c6dm se invirtieron arriba. +a ra#n es por:ue "uncin de trans"erencia PID no es propia. Matlab no permite esto. Intercambiando el numerador ; el denominador el comando c6dm puede ser engaado para devolver la respuesta correcta. Veamos si la per"ormance de la respuesta a la#o cerrado con el compensador PID satis"ace los re:uerimientos de diseo. 2gregue a*ora el cdigo siguiente al "inal de su arc*ivo?m ; ejec@telo nuevamente. Deber<a obtenerse la siguiente respuesta tipo escalera a la#o cerrado. num)z = c!n7(numz,numcz); den)z = c!n7(denz,dencz); [num)z&c#,den)z&c#] = c#!!$(num)z,den)z); ['2] = dste$(num)z&c#,den)z&c#,101); t=0(0.12(12; st)*+s(t,'2) '#)be#(T*em$! (se,und!s)) -#)be#(.e#!c*d)d (+)d/s)) t*t#e(Res$uest) t*$! esc)#e+)( c!n c!nt+!#)d!+ 345 ) como puede ver de la "igura de arriba, la respuesta del sistema a la#o cerrado es inestable. Por lo tanto debe *aber algo mal en el sistema compensado. 2s< :ue ec*emos un vista#o al root locus del sistema compensado. 2greguemos los siguientes comandos Matlab al "inal de su arc*ivo?m ; ejec@telo nuevamente. +#!cus(num)z,den)z) t*t#e(Lu,)+ de R)8ces de# 9*stem) 2!m$ens)d!) De este gr"ico del lugar de ra<ces, vemos :ue el denominador del controlador PID tiene un polo en ?) en el plano # . 9abemos :ue si un polo de un sistema est "uera del c<rculo unitario, el sistema ser inestable. Este sistema compensado siempre ser instable para cual:uier ganancia positiva por:ue *abr un n@mero par de polos ; ceros a la derec*a del polo en ?). Por lo tanto ese polo siempre se mover a la i#:uierda ; a"uera del c<rculo unitario. El polo en ?) viene del compensador, ; podemos cambiar su ubicacin cambiando el diseo del compensador. +o elegimos para cancelar el cero en ?,.C6. Esto *ar el sistema estable para al menos algunas ganancias. 2dems podemos elegir una ganancia apropiada del diagrama del lugar de ra<ces para satis"acer los re:uerimientos de diseo usando rloc"ind.Ingrese el siguiente cdigo de Matlab a su arc*ivo?m. dencz = c!n7([1 :1],[1.; 1]) num)z = c!n7(numz,numcz); den)z = c!n7(denz,dencz); +#!cus(num)z,den)z) t*t#e(Lu,)+ de R)8ces de# 9*stem) 2!m$ens)d!); [K,$!#!s] = +#!c<*nd(num)z,den)z) [num)z&c#,den)z&c#] = c#!!$(K*num)z,den)z); ['%] = dste$(num)z&c#,den)z&c#,101); t=0(0.12(12; st)*+s(t,'%) '#)be#(T*em$! (se,und!s)) -#)be#(.e#!c*d)d (+)d/s)) t*t#e(Res$uest) t*$! esc)#e+)(c!n c!nt+!#)d!+ 345 ) El nuevo denc# tendr un polo en ?,.C6- en lugar de ?), :ue casi cancela al cero del sistema no compensado. En la ventana del Matlab, deber<a ver el comando :ue le solicita elegir el punto en el gr"ico de lugar de ra<ces. Debe pinc*ar en el gr"ico como sigue: Entonces Matlab devolver la ganancia apropiada ; los polos compensados correspondientes, ; se plotear la respuesta a la#o cerrado compensada como sigue. +a "igura muestra :ue el tiempo de establecimiento es menor :ue 6 segundos ; el sobrepico porcentual es alrededor del D=. 2dems, el error de estado estacionario es cero. E tambi!n, la ganancia, /, del lugar de ra<ces es ,.6F6- lo cual es ra#onable. Por lo tanto esta respuesta satis"ace todos los re:uerimientos de diseo.