pract cd alejandro fernández roldán

33
UCLM Informe de Prácticas Control Discreto Alejandro Fernández Entregado 22/05/2015 En este documento se detallará la resolución de los ejercicios propuestos en la asignatura de Control Discreto correspondiente a la parte práctica. Se tratarán en cada práctica correspondiente: comandos básicos de Matlab, análisis en El Lugar de las Raíces, análisis de respuesta en frecuencia y diseño de reguladores haciendo uso de El Lugar de las Raíces

Upload: alejandro-fernandez-roldan

Post on 24-Sep-2015

13 views

Category:

Documents


0 download

DESCRIPTION

Prácticas de Control Discreto

TRANSCRIPT

  • UCLM

    Informe de Prcticas Control Discreto

    Alejandro Fernndez

    Entregado 22/05/2015

    En este documento se detallar la resolucin de los ejercicios propuestos en la asignatura de Control Discreto correspondiente a la parte prctica. Se tratarn en cada prctica correspondiente: comandos bsicos de Matlab, anlisis en El Lugar de las Races, anlisis de respuesta en frecuencia y diseo de reguladores haciendo uso de El Lugar de las Races

  • 1

    Contenido

    Prctica 1

    Problema 1 .................................................................................................................................... 3

    Cdigo Matlab para la resolucin del problema 1 .................................................................... 7

    Ejercicio 1 apartado a - P1Ej1a .............................................................................................. 7

    Ejercicio 1 apartado b P1Ej1b ............................................................................................. 8

    Ejercicio 1 apartado c P1Ej1c.............................................................................................. 9

    Ejercicio 1 apartado d P1Ej1d ............................................................................................. 9

    Problema 2 .................................................................................................................................. 11

    Cdigo Matlab para la resolucin del problema 2 .................................................................. 14

    Ejercicio 2 apartado a P1Ej2a ........................................................................................... 14

    Ejercicio 2 apartado b P1Ej2b ........................................................................................... 14

    Ejercicio 2 apartado c P1Ej2c............................................................................................ 15

    Ejercicio 2 apartado d P1Ej2d ........................................................................................... 15

    Prctica 2

    Problema 1. Anlisis en el Lugar de las Races ............................................................................ 17

    Cdigo Matlab para la resolucin del problema 1 .................................................................. 20

    Ejercicio 1 apartados a y b P2Ej1ab .................................................................................. 20

    Problema 2. Anlisis de la Respuesta en Frecuencia .................................................................. 21

    Cdigo Matlab para la resolucin del problema 2 .................................................................. 24

    Ejercicio 2 apartados a y b P2Ej2ab .................................................................................. 24

    Prctica 3

    Problema 1 .................................................................................................................................. 25

    Cdigo Matlab para la resolucin del problema 1 .................................................................. 28

    Ejercicio 1 apartado b P3Ej1b ........................................................................................... 28

    Problema 2 .................................................................................................................................. 29

    Cdigo Matlab para la resolucin del problema 2 .................................................................. 32

    Ejercicio 2 apartado b P3Ej2b ........................................................................................... 32

  • 2

    Tabla de ilustraciones

    Prctica 1

    ILUSTRACIN 1 SECUENCIA DE SALIDA CALCULADA CON ECUACIN EN DIFERENCIAS 4

    ILUSTRACIN 2 SECUENCIA DE SALIDA GRAFICADA EN DIFERENTES FORMATOS 4

    ILUSTRACIN 3 SECUENCIA DE SALIDA CALCULADA CON EL COMANDO FILTER 5

    ILUSTRACIN 4 SECUENCIA DE SALIDA CALCULADA CON EL COMANDO IMPULSEPLOT 5

    ILUSTRACIN 5 SECUENCIA DE SALIDA PARA UNA ENTRADA ESCALN 6

    ILUSTRACIN 6 SECUENCIA DE SALIDA PARA UNA ENTRADA RAMPA 6

    ILUSTRACIN 7 SECUENCIA DE PONDERACIN GRAFICADA PARA G(Z) Y FDT 11

    ILUSTRACIN 8 RESPUESTA DEL SISTEMA EQUIVALENTE TOTAL A LA SECUENCIA ESCALN UNITARIO 12

    ILUSTRACIN 9 SECUENCIA DE PONDERACIN DEL SISTEMA CON H(S)=1/S 13

    ILUSTRACIN 10 RESPUESTA DE FDT A LA ENTRADA ESCALN CON H(S)=1/S 13

    Prctica 2

    ILUSTRACIN 11 LUGAR DE LAS RACES DEL SISTEMA 18

    ILUSTRACIN 12 RESPUESTA ANTE UNA ENTRADA IMPULSO CON UNA GANANCIA DE 0.2, K=0.2 19

    ILUSTRACIN 13 DIAGRAMA DE NYQUIST DEL SISTEMA 23

    ILUSTRACIN 14 DIAGRAMA DE BODE PARA K=0.4 23

    Prctica 3

    ILUSTRACIN 15 LUGAR DE LAS RACES SIN COMMPENSAR 27

    ILUSTRACIN 16 - LDR CON REGIN DE INTERS 28

    ILUSTRACIN 17 - LDR DEL SISTEMA SIN COMPENSAR 30

    ILUSTRACIN 18 - RESPUESTA AL ESCALN 31

  • 3

    PRCTICA 1. Fundamentos en Matlab

    Problema 1 Dada la funcin de transferencia

    1() =0.4673 0.3393

    2 1.5327 + 0.6607

    Se pide calcular los siguientes apartados:

    a) Obtener la secuencia de salida del sistema programando la ecuacin en diferencias cuando la entrada es una secuencia impulso. Calcular los 200 primeros instantes.

    Adecuamos la funcin que se nos proporciona para poder tratarla como ecuacin en

    diferencias cmodamente

    1() =0.4673 0.3393

    2 1.5327 + 0.6607=

    1 + 022 + 1 + 0

    ()

    ()=

    11 + 0

    2

    2 + 11 + 02

    ()(2 + 11 + 0

    2) = ()(11 + 0

    2) 1

    2() + 1( 1) + 0( 2) = 1( 1) + 0( 2)

    () =1( 1) + 0( 2) (1( 1) + 0( 2))

    2

    sta ser la ecuacin que nosotros tratemos a la hora de calcular con matlab, donde

    1 = 0.4673

    0 = 0.3393

    2 = 1

    1 = 1.5327

    2 = 0.6607

  • 4

    Ilustracin 1 Secuencia de salida calculada con ecuacin en diferencias

    Ilustracin 2 Secuencia de salida graficada en diferentes formatos

  • 5

    b) Obtener la secuencia de salida del sistema aplicando el comando filter de Matlab cuando la entrada es una secuencia impulso. Calcular los 200 primeros instantes.

    Ilustracin 3 Secuencia de salida calculada con el comando filter

    c) Calcular la secuencia de salida de forma general En este apartado hemos optado por utilizar la funcin impulseplot nicamente por

    razones a la hora de la graficacin ya que se permite hacer un ajuste para que se

    grafiquen los 200 puntos deseados.

    Ilustracin 4 Secuencia de salida calculada con el comando impulseplot

  • 6

    d) Calcular los apartados (a)-(c) aplicando ahora como entrada una secuencia escaln unitario.

    Ilustracin 5 Secuencia de salida para una entrada escaln

    e) Calcular los apartados (a)-(c) aplicando ahora como entrada una secuencia rampa unitaria.

    Ilustracin 6 Secuencia de salida para una entrada rampa

  • 7

    Cdigo Matlab para la resolucin del problema 1

    Ejercicio 1 apartado a - P1Ej1a

    %Prctica 1. Problema 1. Apartado a

    % a1*z + a0

    % G(z)=---------------------

    % b2*z^2 + b1*z + b0

    %Inicializacin de parmetros

    a1 = 0.4673;

    a0 = -0.3393;

    b2 = 1;

    b1 = -1.5327;

    b0 = 0.6607;

    %Creacin de seal de entrada, de salida y eje de tiempos

    T = 1;

    r = zeros(1, 200); %seal de entrada r; impulso unitario

    r(3) = 1;

    n = length(r);

    tiempo = -2*T: T: T*(n-3); %eje de tiempos

    y = zeros(1, n); %inicializacin seal de salida

    %Clculo de la ecuacin en diferencias(seal de salida)

    for k=3: 1: n

    y(k) = (a1*r(k-1) + a0*r(k-2) - b1*y(k-1) - b0*y(k-2))/b2;

    end

    %Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    %Dibujamos las grficas correspondientes

    subplot(3, 1, 1);

    stem(tiempo, y,'rx')

    title('Grfico de puntos calculados')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([-0.1 0.6]);

    subplot(3, 1, 2);

    stem(tiempo, y, 'filled', 'g')

    title('Grfico discreto de la salida')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([-0.1 0.6]);

    subplot(3, 1, 3);

    stairs(tiempo, y, 'c')

    title('Grfico de barras de la salida')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([-0.1 0.6]);

  • 8

    Ejercicio 1 apartado b P1Ej1b

    % Prctica 1. Problema 1. Apartado b

    % a1*z + a0

    % G(z)=---------------------

    % b2*z^2 + b1*z + b0

    % Inicializacin de parmetros

    a1 = 0.4673;

    a0 = -0.3393;

    b2 = 1;

    b1 = -1.5327;

    b0 = 0.6607;

    num = [a1 a0];

    den = [b2 b1 b0];

    % Creacin de las seal de entrada impulso en 200 instantes

    r = zeros(1, 200); % seal de entrada r; impulso unitario

    r(3) = 1; % r(3) corresponde con el origen ya que el

    sistema

    % esta desfasado 3 muestras

    y = filter(num, den, r);

    % Eje de tiempos

    T = 1;

    n = length(r);

    tiempo = -2*T: T: T*(n-3);

    %Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    stem(tiempo, y, 'go');

    title('Grfico usando comando filter')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([-0.1 0.6]);

  • 9

    Ejercicio 1 apartado c P1Ej1c

    Ejercicio 1 apartado d P1Ej1d

    %Prctica 1. Problema 1. Apartado d

    % a1*z + a0

    % G(z)=---------------------

    % b2*z^2 + b1*z + b0

    %Inicializacin de parmetros

    a1 = 0.4673;

    a0 = -0.3393;

    b2 = 1;

    b1 = -1.5327;

    b0 = 0.6607;

    %Ajustamos el tamao del figure al tamao del monitor para la

    graficacin

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    %Prctica 1. Problema 1. Apartado c

    % a1*z + a0

    % G(z)=---------------------

    % b2*z^2 + b1*z + b0

    %Inicializacin de parmetros

    a1 = 0.4673;

    a0 = -0.3393;

    b2 = 1;

    b1 = -1.5327;

    b0 = 0.6607;

    num = [a1 a0];

    den = [b2 b1 b0];

    %Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    T=1;

    G = tf(num, den, T);

    %Entrada impulso; se usa el comando impulseplot simplemente

    %por cuestion de graficacin

    impulseplot(G, 200);

  • 10

    %%

    %Creacin de seal de entrada, de salida y eje de tiempos

    T = 1;

    %seal de entrada r; secuencia escaln unitario

    r = [0 0 0 ones(1, 197)];

    n = length(r);

    tiempo = -2*T: T: T*(n-3); %eje de tiempos

    y1 = zeros(1, n); %inicializacin seal de salida

    %%

    %Clculo y graficacin de la ecuacin en diferencias(seal de

    salida)

    for k=3: 1: n

    y1(k) = (a1*r(k-1) + a0*r(k-2) - b1*y1(k-1) - b0*y1(k-2))/b2;

    end

    subplot(3, 1, 1);

    stem(tiempo, y1, 'filled', 'rx')

    title('Clculo de puntos por ecuacin en diferencias')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([0 1.5]);

    %%

    %Clculo y graficacin con el comando filter

    num = [a1 a0];

    den = [b2 b1 b0];

    y2 = filter(num, den, r);

    subplot(3, 1, 2);

    stem(tiempo, y2, 'filled', 'go')

    title('Grfico con el comando filter')

    xlabel('Tiempo')

    ylabel('Salida')

    xlim([-2 198]);

    ylim([0 1.5]);

    %%

    %Clculo y graficacin de forma general

    subplot(3, 1, 3);

    G = tf(num, den, T);

    %Entrada escalon; se usa el comando stepplot simplemente

    %por cuestion de graficacin

    stepplot(G, 200)

  • 11

    Problema 2 En el sistema realimentado de la figura, para un tiempo de muestreo de T = 0.4 segundos, se

    pide:

    a) Calcular la funcin de transferencia equivalente en el caso de que H(s) = 1

    Se nos proporciona un sistema con una funcin G(s) la cual tendremos que discretizar

    para pasar del dominio s al dominio z

    () =1

    2 + 2 + 1

    () = 0()() =0.06155 + 0.04714

    2 1.341 + 0.4493

    La funcin de transferencia del sistema total ser

    =()

    1 + ()()=0.06155 + 0.04714

    2 1.402 + 0.4022

    b) Calcular la secuencia de ponderacin para cada una de las funciones de transferencia

    calculadas en el apartado anterior. Calcular los 100 primeros instantes

    Ilustracin 7 Secuencia de ponderacin graficada para G(z) y fdt

  • 12

    c) Calcular la respuesta del sistema cuando se aplica una secuencia escaln unitario a la

    funcin de transferencia calculada en (a). Calcular los 100 primeros instantes

    Ilustracin 8 Respuesta del sistema equivalente total a la secuencia escaln unitario

    d) Calcular los apartados (a)-(c) considerando un tiempo de muestreo de T=0.8 segundos

    y () =1

    Para poder simular este apartado previamente hemos tenido que discretizar H(s) de

    forma que queda el siguiente sistema. Teniendo en cuenta que T=0.8s

    () =1

    2 + 2 + 1

    () = 0()() =0.1912 + 0.112

    2 0.8987 + 0.2019

    Por otra parte

    () =1

    () =0.8

    1

    =()

    1 + ()()=

    0.19122 0.07918 0.112

    3 1.8992 + 0.9476 0.2915

  • 13

    Los resultados a las entradas secuencia impulso y escaln para los 100 primeros

    instantes son

    Ilustracin 9 Secuencia de ponderacin del sistema con H(s)=1/s

    Ilustracin 10 Respuesta de fdt a la entrada escaln con H(s)=1/s

  • 14

    Cdigo Matlab para la resolucin del problema 2

    Ejercicio 2 apartado a P1Ej2a

    Ejercicio 2 apartado b P1Ej2b

    %Practica 1. Problema 2. Apartado a

    num = [1];

    den = [1 2 1];

    T = 0.4;

    G = tf(num, den) % Planta

    Gz = c2d(G, T, 'zoh') % fdt sin realimentar en dominio z

    z = tf('z');

    H=1;

    fdt = feedback(Gz, H, 1) %funcin de transferencia del sistema

    %Practica 1. Problema 2. Apartado b

    %Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    %%

    %Creacin de seal de entrada (impulso), y eje de tiempos

    T = 0.4;

    r = zeros(1, 100); %seal de entrada r; impulso unitario

    r(3) = 1;

    n = length(r);

    tiempo = -2*T: T: T*(n-3); %eje de tiempos

    %%

    % Usamos comando filter para obtener los puntos la secuencia de

    salida

    % Los puntos calculados se guardan en y_Gz o y_fdt respectivamente

    % si se desean comprobar su valor individualmente

    % Yo he optado por graficarlos en vez de realizar una tabla con

    dichos valores

    num_Gz = [0.06155 0.04714];

    den_Gz = [1 -1.341 0.4493];

    y_Gz = filter(num_Gz, den_Gz, r);

    subplot(2, 1, 1)

    stem(y_Gz, 'ro');

    title('Secuencia de ponderacin del sistema sin realimentar');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

  • 15

    %%

    num_fdt = [0.06155 0.4714];

    den_fdt = [1 -1.402 0.4022];

    y_fdt = filter(num_fdt, den_fdt, r);

    subplot(2, 1, 2)

    stem(y_fdt, 'gx');

    title('Secuencia de ponderacin del sistema realimentado');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

    Ejercicio 2 apartado c P1Ej2c

    Ejercicio 2 apartado d P1Ej2d

    %Practica 1. Problema 2. Apartado c

    %Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    %%

    %Creacin de seal de entrada (escalon), y eje de tiempos

    T = 0.4;

    r = [0 0 0 ones(1, 197)];

    n = length(r);

    tiempo = -2*T: T: T*(n-3); %eje de tiempos

    %%

    num_fdt = [0.06155 0.4714];

    den_fdt = [1 -1.402 0.4022];

    y_fdt = filter(num_fdt, den_fdt, r);

    stem(y_fdt, 'gx');

    title('Repuesta del sistema realimentado a una entrada escalon');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

    %Practica 1. Problema 2. Apartado d

    %%

    % Simulacin apartado a con H(s) = 1/s

    num = [1];

    den = [1 2 1];

    T = 0.8;

    G = tf(num, den)

    Gz = c2d(G, T, 'zoh') %fdt sin realimentar

    num_H = [1];

    den_H = [1 0];

    H = tf(num_H, den_H);

    Hz = c2d(H, T, 'zoh')

    fdt = feedback(Gz, Hz, 1) %funcin de transferencia del sistema

  • 16

    %%

    % Simulacion del apartado b con H(s) = 1/s

    % Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    figure('position', [tam_figure(1) tam_figure(2)-10 tam_figure(3)-10

    tam_figure(4)-10]);

    % Creacin de seal de entrada (impulso), y eje de tiempos

    r_b = zeros(1, 100); % seal de entrada r (impulso unitario) para Gz

    r_b(3) = 1;

    n = length(r_b);

    tiempo = -2*T: T: T*(n-3); %eje de tiempos

    num_Gz = [0.1912 0.112];

    den_Gz = [1 -0.8987 0.2019];

    y_Gz = filter(num_Gz, den_Gz, r_b);

    subplot(2, 1, 1)

    stem(y_Gz, 'ro');

    title('Secuencia de ponderacin del sistema sin realimentar');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

    r_b(3)=0; %Seal de entrada r para fdt, retrasada una unidad ms

    r_b(4)=1;

    num_fdt = [0.1912 -0.07918 -0.112];

    den_fdt = [1 -1.899 0.9476 -0.2915];

    y_fdt = filter(num_fdt, den_fdt, r_b);

    subplot(2, 1, 2)

    stem(y_fdt, 'gx');

    title('Secuencia de ponderacin del sistema realimentado');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

    %% Simulacin apartado c con H(s) = 1/s

    %Creacin de seal de entrada (escalon), y eje de tiempos

    r_c = [0 0 0 0 ones(1, 96)];

    n = length(r_c);

    num_fdt = [0.1912 -0.07918 -0.112];

    den_fdt = [1 -1.899 0.9476 -0.2915];

    y_fdt = filter(num_fdt, den_fdt, r_c);

    figure(2);

    stem(y_fdt, 'gx');

    title('Repuesta del sistema realimentado a una entrada escalon');

    xlabel('Eje de tiempos');

    ylabel('Amplitud de salida');

  • 17

    Prctica 2

    Problema 1. Anlisis en el Lugar de las Races En el sistema de la figura, considerando un tiempo de muestreo T = 0.1s, se pide

    a) Realizar manualmente el trazado del lugar de las races y comprobarlo mediante

    Matlab. Calcular el valor de k que hace el sistema inestable. Utilizar la funcin

    rlocfind(n, d) para comprobar dicho resultado

    Clculo del Lugar de Las Races manualmente

    Nmero de ramas, 3

    Puntos conflictivos en bucle abierto

    () =(2 2 + 1.2)

    3 0.62 + 0.1 0.015

    {

    1 = 0.45222 = 0.0739 + 0.16653 = 0.0739 0.16651 = 1 + 0.44722 = 1 0.4472 }

    Parte real perteneciente al Lugar de las Races, (, 0.4522)

    ngulos de llegada a los ceros

    1 + 2 (1 + 2 + 3) = 180

    1 + 90 (tan1

    0.4

    1 0.4522+ tan1

    0.4

    1 0.074+ tan1

    0.4

    1 0.074) = 180

    1 = 172.76

    Punto de salida (breakaway point)

    1 + 2 (1 + 2 + 3) = 180 donde

    1 = 180 tan11 2 0.4

    1

    2 = 180 tan11 2 + 0.4

    1

  • 18

    1 = tan1

    1 2

    0.074

    2 = tan1

    1 2

    0.074

    3 = tan11 2

    0.45

    Iterando estas ecuaciones obtenemos que

    = 0.85 + 0.43

    Los valores de k donde el sistema es estable son

    =| 0.074|| 0.074|| 0.45|

    | 1 + 0.4|| 1 0.4|= 5.23

    El sistema es estable si 0 < k < 5.23

    Ilustracin 11 Lugar de las Races del sistema

  • 19

    b) Calcular la salida del sistema para k=0.2 y determinar las caractersticas ms

    importantes de su respuesta temporal

    Ilustracin 12 Respuesta ante una entrada impulso con una ganancia de 0.2, k=0.2

  • 20

    Cdigo Matlab para la resolucin del problema 1

    Ejercicio 1 apartados a y b P2Ej1ab

    %Practica 2. Problema 1. Apartado a y b

    % Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    tam = 50; % mayor tam menor tamao de pantalla y viceversa

    % [left bottom width height]

    figure('position', [tam_figure(1)+tam tam_figure(2)+tam

    tam_figure(3)-2*tam tam_figure(4)-3*tam]);

    num = [1 -2 1.2];

    den = [1 -0.6 0.1 -0.015];

    T=0.1;

    GH = tf(num, den, T);

    GH_rlocus = rlocusplot(GH);

    p = getoptions(GH_rlocus);

    p.Title.String = 'Lugar de las Raices del sistema';

    setoptions(GH_rlocus, p);

    hold

    zgrid;

    hold

    figure(2)

    impulse(0.2*GH)

  • 21

    Problema 2. Anlisis de la Respuesta en Frecuencia En el sistema de la figura, considerando un tiempo de muestreo T=2s, se pide:

    a) Calcular manualmente mediante el criterio de Nyquist la estabilidad del sistema de la

    figura indicando los valores de K que lo hacen estable. Calcular manualmente el

    margen de fase y el margen de ganancia para K=0.4. Comprobar los resultados

    mediante Matlab

    b) Calcular manualmente el diagrama de Bode para K=0.4 en el plano . Comprobar

    dichos resultados mediante Matlab con ayuda del comando bode y el comando

    allmargin. Utilizar el comando margin par amostrar los mrgenes de ganancia de fase.

    Finalmente, estudiar la estabilidad del sistema mediante el criterio de Nyquist en el

    plano . Utilizar el comando Nyquist para comprobar visualmente si el sistema es

    estable o no.

    En vez de resolver el problema en dos apartados como se indica se ha divido

    simplemente en clculos manuales y simulaciones con Matlab, comenzaremos con la

    resolucin del ejercicio de forma manual.

    () =( + 0.2)

    ( 0.1)( 1) {

    1 = 12 = 0.11 = 0.2

    =

    () =( + 0.2)

    ( 0.1)( 1)=

    =( + + 0.2)

    ( + 0.1)( + 1)

    |()| =( + 0.2)2 + ()2

    ( 0.1)2 + ()2( 1)2 + ()2

    (()) = tan1

    + 0.2 tan1

    1 tan1

    0.1

  • 22

    Obtenemos tabla de valores

    06

    16

    26

    36

    46

    56

    66

    |()| 2.4866 1.1673 0.7175 0.5022 0.3963 0.3636

    (()) 1.1692 0.8001 3.6299 0.2511 0.0954 -3.1415

    Como tenemos un polo en z=1 tenemos que el camino de Nyquist rodea dicho polo de

    manera que se tiene un tercer contorno

    lim0

    (1 + ) = lim0

    (1 + + 0.2)

    (1 + 1)(1 + 0.1)=

    Obtenemos el valor de kcrit sabiendo que para dicho valor se tiene (()) =

    180 luego en la tabla vemos que se cumple para = con lo cual

    |()| = 1 , podemos ahora despejar dicho valor

    =( 0.1)2 + ()2( 1)2 + ()2

    ( + 0.2)2 + ()2= 2.75

    = + {0 + 2 = 2 [0, 2.75]1 + 2 = 3 > 2.75

    Como Z es el nmero de polos en bucle cerrado, es decir Z=2, tenemos que el sistema

    es estable para 0 < k < 2.75

    Para k=0.4 tenemos que |()| = 0.1454 = que es cuando la imagen

    del diagrama de Nyquist corta el eje real, por tanto

    = 20 log1

    0.1454= 16.74

    Para obtener el margen de fase sabemos que se calcula cuando |()| = 1 dicha

    situacin se da para = 0.3769 para dicho valor tenemos que (()) =

    112.82 luego tenemos que el margen de fase es

    = 180 |112.82| = 67.18

  • 23

    Como vemos ahora en matlab obtenemos los mismos resultados que para los clculos

    realizados anteriormente

    Ilustracin 13 Diagrama de Nyquist del sistema

    Ilustracin 14 Diagrama de Bode para k=0.4

    = 2.7502

    = 0.4 { = 20 log 6.8750 = 16.7

    = 67.1077

  • 24

    Cdigo Matlab para la resolucin del problema 2

    Ejercicio 2 apartados a y b P2Ej2ab

    %Practica 2. Problema 2. Apartado a

    % Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    tam = 50; % mayor tam menor tamao de pantalla y viceversa

    % [left bottom width height]

    figure('position', [tam_figure(1)+tam tam_figure(2)+tam

    tam_figure(3)-2*tam tam_figure(4)-3*tam]);

    T=2;

    num = [1 +0.2];

    den = [1 -1.1 0.1 ];

    G = tf(num, den, T)

    nyquist(G, 'bx')

    [re, im, frec] = nyquist(G);

    % Teniendo los arrays 're' e 'im' buscaremos qu frecuencias cortan

    en el

    % angulo -180 con el fin de hallar los valores de k que determinan

    el

    % numero de veces que se da una vuelta al punto -1 (parmetro N)

    allmargin(G)

    % frecuencia obtenida ---> 1.5708 (parmetro GMFrecuency)

    % valores de 're' y de k para dichas frecuencias

    % ------------------------

    % frecuencia | 1.5708 |

    % ------------------------

    % re | -0.3636 | donde k = 1/re

    % ------------------------

    % k | 2.7502 |

    % ------------------------

    % Tenemos por tanto 2 intervalos donde analizar la estabilidad:

    % 0 < k < 2.7502 ; k > 2.7502

    % Ejecutamos allmargin(k*G) para valores de k comprendidos en esos

    % intervalos y comprobamos la estabilidad del sistema (parmetro

    stable)

    k1 = 0.4;

    k2 = 5;

    k1_param = allmargin(k1*G)

    k2_param = allmargin(k2*G)

    % El sistema es estable para 0 < k < 2.7502

    figure(2)

    margin(k1*G)

  • 25

    Prctica 3. Diseo de reguladores en el Lugar de las Races

    Problema 1 Dado el sistema de la figura

    a) Disear el regulador R(z) mediante el mtodo de discretizacin de un regulador

    continuo real que cumpla simultneamente las siguientes especificaciones: sobrepaso

    10%, tiempo de establecimiento = 0.9 , y error en rgimen permanente

    ante entrada escaln 0.05. Elegir razonadamente el tiempo de muestreo

    Condiciones del sistema 10%, = 0.9 , 0.05

    =

    1 =ln()

    2 + (ln())2= 0.5911

    =

    =

    = 1.8797 /

    Obtenemos por tanto

    12 = + = 1 2

    12 = 1.111 1.5161

    Se emplear un regulador PD donde () =(+)

    + , aplicamos tambin el criterio de

    cancelacin del polo dominante, es decir, = 0.5 = 0.5

    Calculamos ahora la fase que deber aportar el regulador

    () = ()() ((1)) = ((1)) + ((1)) = 180

    Despejando convenientemente se obtiene

    ((1)) = 180 ((1))

  • 26

    ((1)) = 180 ( tan1 (

    1.5161

    1.111 0) tan1

    1.5161

    1.111 (0.5))

    ((1)) = 301.8161 = 58.1839

    Por otro lado se tiene

    ((1)) = 58.1839

    = tan1 (1.5161

    1.111 + 0.5) tan1 (

    1.5161

    1.111 + ) = 1.014717

    =1.5161

    tan(2.2024)+ 1.111 = 2.2204

    Por lo tanto el polo de R(s) es -2.22024

    Calculamos ahora la ganancia del regulador por el criterio del mdulo

    |(1)| = |1 + 0.5|

    |1 + 2.22|

    10

    |1 + 0.5||1|= 1

    =|1 + 2.22||1|

    10=(1.111 + 2.22)2 + 1.51612(1.111)2 + 1.51612

    10

    = 0.35305

    El regulador obtenido es

    () = 0.35305 + 0.5

    + 2.22

    La funcin de transferencia del sistema en bucle abierto es

    ()() =3.5305

    ( + 2.22)

    Comprobamos el error en rgimen permanente

    = lim0

    1

    1 + ()()

    1

    = lim

    0

    1

    1 +3.53054( + 2.22)

    = 0 < 0.05

  • 27

    b) Utilizar Matlab para implementar dicho regulador:

    Trazar el Lugar de las Races sin compensar

    A partir de las especificaciones, calcular y representar la posicin de los polos

    dominantes necesaria. Representar la regin de inters mediante sgrid

    Comparar la respuesta del sistema obtenida mediante el regulador continuo

    R(s) y mediante el regulador R(z) obtenido en el apartado anterior. Se

    considerar una entrada en escaln unitario

    Ilustracin 15 Lugar de las Races sin compensar

  • 28

    Ilustracin 16 - LDR con regin de inters

    Cdigo Matlab para la resolucin del problema 1

    Ejercicio 1 apartado b P3Ej1b

    %Practica 3. Problema 1. Apartado b

    % Ajustamos el tamadel figure al tamadel monitor

    tam_figure = get(0, 'ScreenSize');

    tam = 50; % mayor tam menor tamade pantalla y viceversa

    % [left bottom width height]

    figure('position', [tam_figure(1)+tam tam_figure(2)+tam

    tam_figure(3)-2*tam tam_figure(4)-3*tam]);

    num=10;

    den=conv([1 0], [1 0.5]);

    rlocus(num, den)

    rlocfind(num, den)

    hold

    zgrid('Regulador');

  • 29

    Problema 2 Dado el sistema de la figura

    a) Disear el regulador R(z) que cumpla simultneamente las siguientes especificaciones:

    tiempo de establecimiento = 1 y coeficiente de amortiguamiento = 0.5. El

    tiempo de muestreo empleado es T = 0.2 s

    Obtenemos primero los polos dominantes del sistema

    = 1 =

    =

    = = 2 /

    = 1 2 = 5.4414 /

    Los polos dominantes del sistema son

    1,2 = 1 2 = = 3.14159 5.4414

    Haciendo la transformacin =

    1,2 = 0.2(3.1415925.4414) = 0.2454 0.469

    Aplicamos el criterio del argumento para saber si los polos pertenecen al Lugar de las

    Races

    = tan1

    0.469

    0.2454 + 0.52= 31.62

    1 = tan1

    0.469

    0.2454 0.05= 67.32

    = tan1

    0.469

    0.2454 0.85= 38.11

    = 32.27 72.77 139.79 = 177.54

    Como vemos los polos buscados pertenecen al Lugar de las Races de nuestro sistema,

    por lo que slo nos har falta un regulador proporcional, en el cual ajustando la

  • 30

    ganancia mediante el criterio del mdulo situaremos los polos del sistema en lazo

    cerrado en la posicin del polo dominante

    | + 0.52|

    | + 0.05|| + 0.85|= 1

    Obtenemos que = 0.4351 por tanto tenemos que () = = 0.4351

    b) Utilizar Matlab para implementar dicho regulador:

    Trazar el lugar de las races sin compensar

    A partir de las especificaciones, calcular y representar la posicin de los polos

    dominantes necesaria. Representar la regin de inters mediante sgrid

    Representar la respuesta del sistema cuando la entrada de control es un

    escaln unitario

    Ilustracin 17 - LDR del sistema sin compensar

  • 31

    Ilustracin 18 - Respuesta al escaln

  • 32

    Cdigo Matlab para la resolucin del problema 2

    Ejercicio 2 apartado b P3Ej2b

    %Practica 3. Problema 1. Apartado b

    % Ajustamos el tamao del figure al tamao del monitor

    tam_figure = get(0, 'ScreenSize');

    tam = 50; % mayor tam menor tamao de pantalla y viceversa

    % [left bottom width height]

    figure('position', [tam_figure(1)+tam tam_figure(2)+tam

    tam_figure(3)-2*tam tam_figure(4)-3*tam]);

    num = [1 0.52];

    den = conv([1 -0.05], [1 -0.85]);

    rlocus(num, den)

    rlocfind(num, den)

    hold

    zgrid

    hold

    %Respuesta ante escaln unitario

    figure(2)

    p_dom1 = -pi+pi*(3^(1/2)*1i);

    p_dom2 = -pi-pi*(3^(1/2)*1i);

    z1=exp(0.2*p_dom1);

    z2=exp(0.2*p_dom2);

    K =(abs(z1-0.05)*abs(z1-0.85))/abs(z1+0.52); %ganancia obtenida

    N=K*num;

    Gz=tf(N,den,0.2);

    figure

    dstep(Gz.num{1},Gz.den{1})