Vous êtes sur la page 1sur 139

Curso de Teoria de Control

Con Scilab
Simplificacion de bloques

- Bloques en serie (cascada)


- Bloques en paralelo
- Bloques en retroalimentacion
Respuesta en el tiempo de sistemas
La funcion de transferencia
- La funcion de transferencia definida como la
relacion entre la salida C(s) y la entrada R(s)

G(s)=C(s)/R(s)

- La funcion de salida C(s)

C(s)=G(s)*R(s)

En ambas funciones de la izquierda son definidas


si estan definidas previamente las de la derecha
del =.
Tipos de entradas

- Entrada impulso unitario: R(s)=1

- Entrada paso o escalon unitario: R(s)=1/s

- Entrada rampa o velocidad cte. Unitaria:

R(s)=1/s^2
Funciones de Scilab

- csim: y=csim('u',t,sistema) simulacion continua


u=imp(impulse),step
sistema=syslin('c',t,num,den)
- horner(polinomio,valor) evaluacion del polinomio
en valor
- find(A>entero) buscar el indice en A tal que
indice>valor

Buscar en Ayuda de Scilab las sintaxis de estas


funciones
Respuesta en el tiempo de un
Sistema de primer orden

G(s)=5/(s+2)
Simulacion para entrada impulso

s=poly(0,'s')
num=poly([5],'s','c')
den=poly([2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:15;
y=csim('imp',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 5/(s+2) ante un impulso',
'Tiempo(seg)','Amplitud')
Simulacion para entrada impulso...

Teclear codigo en el Scipad y guardar con el


nombre Sist1erOrdImp+siglas del nombre o mote
del alumno en su memoria electronica
Simulacion para entrada paso

s=poly(0,'s')
num=poly([5],'s','c')
den=poly([2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:15;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 5/(s+2) ante un escalon',
'Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist1erOrdPaso+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada rampa

s=poly(0,'s')
num=poly([5],'s','c')
den=poly([2 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s
t=0:0.005:15;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 5/(s+2) ante una rampa',
'Tiempo(seg)','Amplitud')
Simulacion para entrada rampa...

Teclear codigo en el Scipad y guardar con el


nombre Sist1erOrdRampa+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada parabola

s=poly(0,'s')
num=poly([5],'s','c')
den=poly([2 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s^2
t=0:0.005:15;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 5/(s+2) ante una parabola',
'Tiempo(seg)','Amplitud')
Simulacion para entrada parabola...

Teclear codigo en el Scipad y guardar con el


nombre Sist1erOrdParab+siglas del nombre o
mote del alumno en su memoria electronica
Respuesta en el tiempo de un
Sistema de segundo orden

G(s)=0.2/(s^2+s+0.2)
Simulacion para entrada impulso

s=poly(0,'s')
num=poly([0.2],'s','c')
den=poly([0.2 1 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:25;
y=csim('imp',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 0.2/(s^2+s+0.2) ante un
impulso','Tiempo(seg)','Amplitud')
Simulacion para entrada impulso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdImp1+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada paso

s=poly(0,'s')
num=poly([0.2],'s','c')
den=poly([0.2 1 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:35;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 0.2/(s^2+s+0.2) ante un
escalon','Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdPaso1+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada rampa

s=poly(0,'s')
num=poly([0.2],'s','c')
den=poly([0.2 1 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s
t=0:0.005:35;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 0.2/(s^2+s+0.2) ante una
rampa','Tiempo(seg)','Amplitud')
Simulacion para entrada rampa...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdRampa1+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada parabola

s=poly(0,'s')
num=poly([0.2],'s','c')
den=poly([0.2 1 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s^2
t=0:0.005:35;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 0.2/(s^2+s+2) ante una
parabola','Tiempo(seg)','Amplitud')
Simulacion para entrada parabola...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdParab1+siglas del nombre o
mote del alumno en su memoria electronica
Respuesta en el tiempo de un
Sistema estable de segundo orden
criticamente amortiguado

G(s)=2/(s^2+2*s+1)
Simulacion para entrada impulso

s=poly(0,'s')
num=poly([2],'s','c')
den=poly([1 2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:50;
y=csim('imp',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 2/(s^2+2*s+1) ante un
impulso','Tiempo(seg)','Amplitud')
Simulacion para entrada impulso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdImp2+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada paso

s=poly(0,'s')
num=poly([2],'s','c')
den=poly([1 2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 2/(s^2+2*s+1) ante un
escalon','Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdPaso2+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada rampa

s=poly(0,'s')
num=poly([2],'s','c')
den=poly([1 2 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 2/(s^2+2*s+1) ante una
rampa','Tiempo(seg)','Amplitud')
Simulacion para entrada rampa...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdRampa2+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada parabola

s=poly(0,'s')
num=poly([2],'s','c')
den=poly([1 2 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s^2
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 2/(s^2+2*s+1) ante una
parabola','Tiempo(seg)','Amplitud')
Simulacion para entrada parabola...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdParab2+siglas del nombre o
mote del alumno en su memoria electronica
Sistema estable subamortiguado

G(s)=3/(s^2+4*s+20)
Simulacion para entrada impulso

s=poly(0,'s')
num=poly([3],'s','c')
den=poly([20 4 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.0005:6;
y=csim('imp',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 3/(s^2+4*s+20) ante un
impulso','Tiempo(seg)','Amplitud')
Simulacion para entrada impulso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdImp3+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada paso

s=poly(0,'s')
num=poly([3],'s','c')
den=poly([20 4 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.0005:6;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 3/(s^2+4*s+20) ante un
escalon','Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdPaso3+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada rampa

s=poly(0,'s')
num=poly([3],'s','c')
den=poly([20 4 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s
t=0:0.0005:6;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 3/(s^2+4*s+20) ante una
rampa','Tiempo(seg)','Amplitud')
Simulacion para entrada rampa...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdRampa3+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada parabola

s=poly(0,'s')
num=poly([3],'s','c')
den=poly([20 4 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s^2
t=0:0.0005:6;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 3/(s^2+4*s+20) ante una
parabola','Tiempo(seg)','Amplitud')
Simulacion para entrada parabola...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdParab3+siglas del nombre o
mote del alumno en su memoria electronica
Sistema oscilatorio

G(s)=10/(s^2+5)
Simulacion para entrada impulso

s=poly(0,'s')
num=poly([10],'s','c')
den=poly([5 0 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:50;
y=csim('imp',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 10/(s^2+10) ante un
impulso','Tiempo(seg)','Amplitud')
Simulacion para entrada impulso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdImp4+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada paso

s=poly(0,'s')
num=poly([10],'s','c')
den=poly([5 0 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 10/(s^2+5) ante un
escalon','Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdPaso4+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada rampa

s=poly(0,'s')
num=poly([10],'s','c')
den=poly([5 0 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 10/(s^2+5) ante una
rampa','Tiempo(seg)','Amplitud')
Simulacion para entrada rampa...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdRampa4+siglas del nombre o
mote del alumno en su memoria electronica
Simulacion para entrada parabola

s=poly(0,'s')
num=poly([10],'s','c')
den=poly([5 0 1],'s','c')
sist=syslin('c',num,den)
sistema=sist/s^2
t=0:0.005:50;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 3/(s^2+4*s+20) ante una
parabola','Tiempo(seg)','Amplitud')
Simulacion para entrada parabola...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdParab4+siglas del nombre o
mote del alumno en su memoria electronica
Sitema inestable

G(s)=1/(s-1)
Simulacion para entrada paso

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([-1 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:15;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 1/(s-1) ante un
escalon','Tiempo(seg)','Amplitud')
Simulacion para entrada paso...

Teclear codigo en el Scipad y guardar con el


nombre Sist2doOrdPaso5+siglas del nombre o
mote del alumno en su memoria electronica
Especificaciones en el tiempo
de
Un sistema subamortiguado
ante
Una entrada escalon unitario

G(s)=6/(s^2+2*s+5)
G(s)=6/(s^2+2*s+5)

s=poly(0,'s')
num=poly([6],'s','c')
den=poly([5 2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:12;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de 6/(s^2+2*s+5) ante un
escalon','Tiempo(seg)','Amplitud')
...
G(s)=6/(s^2+2*s+5) ...

Vf=horner(num,0)/horner(den,0)
Ymax=max(y)
Mo=(Ymax-Vf)/Vf
P=find(y>=Ymax)
Tp=t(P)
a=find(y>=(Vf*0.1),1)
t1=t(a)
b=find(y>=(Vf*0.9),1)
t2=t(b)
Tr=t2-t1
G(s)=6/(s^2+2*s+5) ...

flag=length(y)
y1=y(flag)
while (y1<(1.05*Vf))&(y1>(0.95*Vf))
flag=flag-0.005;
y1=y(flag);
End
Ts=t(flag)
Especificaciones en el tiempo
de
Un sistema subamortiguado
ante
Una entrada escalon unitario

G(s)=(s+6)/(s^2+2*s+5)
G(s)=(s+6)/(s^2+2*s+5)

s=poly(0,'s')
num=poly([6 1],'s','c')
den=poly([5 2 1],'s','c')
sistema=syslin('c',num,den)
t=0:0.005:12;
y=csim('step',t,sistema);
plot2d(t,y)
xtitle('Respuesta de (s+6)/(s^2+2*s+5) ante un
escalon','Tiempo(seg)','Amplitud')
...
G(s)=(s+6)/(s^2+2*s+5) ...

Vf=horner(num,0)/horner(den,0)
Ymax=max(y)
Mo=(Ymax-Vf)/Vf
P=find(y>=Ymax)
Tp=t(P)
a=find(y>=(Vf*0.1),1)
t1=t(a)
b=find(y>=(Vf*0.9),1)
t2=t(b)
Tr=t2-t1
G(s)=(s+6)/(s^2+2*s+5) ...

flag=length(y)
y1=y(flag)
while (y1<(1.05*Vf))&(y1>(0.95*Vf))
flag=flag-0.005;
y1=y(flag);
End
Ts=t(flag)
Modificacion de Funcion de
Transferencia con reubicacion de
polos y ceros
Sistema original:

G(s)=1/(s^2+2*s+2)

En el camino directo de la configuracion canonica


con retroalimentacion unitaria negativa, en donde

C(s)/R(s)=G(s)*H(s)/(1+G(s)*H(s))

con H(s)=1
Obtener la respuesta en el tiempo
del sistema original sin modificar

C(s)/R(s)=(1/(s^2+2*s+2))/(1+1/(s^2+2*s+2))

=1/(s^2+2*s+3)

Para una entrada paso unitario


Las modificaciones

Las modificaciones se obtienen con un


controlador Gc(s) en serie con la planta G(s):

C(s)/R(s)=(Gc(s)*G(s))/(1+Gc(s)*G(s)*H(s))

con H(s)=1
Obtener la respuesta en el tiempo
anadiendo un polo en el origen

Aqui Gc(s)=1/s, entonces:

C(s)/R(s)=(1/s*1/(s^2+2*s+2))/(1+1/s*1/

(s^2+2*s+2))

=1/(s^3+2*s^2+2*s+1)

Tambien desarrolle el mapa de polos y ceros.


Obtener la respuesta en el tiempo
anadiendo un cero en el origen

Aqui Gc(s)=s, entonces:

C(s)/R(s)=(s*1/(s^2+2*s+2))/(1+s*1/(s^2+2*s+2))

=s/(s^2+3*s+2)

Tambien desarrolle el mapa de polos y ceros.


Obtener la respuesta en el tiempo
anadiendo un cero cercano y un
polo en el origen
Aqui Gc(s)=(s+0.5)/s, entonces:

Gc(s)*G(s)=(s+0.5)/s*1/(s^2+2*s+2)

=(s+0.5)/(s^3+2*s^2+2*s)
Tambien desarrolle el mapa de polos y ceros.

Obtenga C(s)/R(s)=N(s)/D(s) para obtener la

respuesta
Obtener la respuesta en el tiempo
anadiendo un cero alejado y un polo
en el origen
Aqui Gc(s)=(s+5)/s, entonces:

Gc(s)G(s)=(s+5)/s*1/(s^2+2*s+2))/(1+(s+5)/s*1/

(s^2+2*s+2))
Tambien desarrolle el mapa de polos y ceros.

Obtenga C(s)/R(s)=N(s)/D(s) para obtener la

respuesta
Obtener la respuesta en el tiempo
anadiendo un cero en el origen

Aqui Gc(s)=s+5, entonces:

Gc(s)G(s)=(s+5)*1/(s^2+2*s+2)

Tambien desarrolle el mapa de polos y ceros.

Obtenga C(s)/R(s)=N(s)/D(s) para obtener la

respuesta
Criterio de estabilidad de Routh

Lugar geometrico de las raices


Funciones Scilab empleadas

- Tabla de Routh:

routh_t(P) //P=poly()

- Lugar geometrico de las raices:

evans(GH,[K]) //GH es funcion de


transferencia y K es maxima ganancia
Criterio de estabilidad de
Routh-Hurwitz

Para un sistema canonico con funciones de


transferencia:
-en el camino directo con Gc(s)=K y G(s)
-y H(s) en la retroalimentacion negativa

C(s)/R(s)=K*G(s)/(1+K*g(s)*H(s))=N(s)/D(s)

Existen dos condiciones para que el sistema sea


estable:
Criterio de estabilidad de
Routh-Hurwitz...

-La condicion necesaria es que los coeficientes


de D(s) existan y deben tener el mismo signo

-Y la condicion suficiente es que los componentes


de la primera columna de la tabla de Routh han
de ser del misma signo

Si la tabla tiene un renglon de ceros el sistema es


oscilatorio
Ejemplo

Sea: D(s)=s^4+3*s^3+4*s^2+2*s+4k el polinomio


caracteristico. La tabla es:

4 |1 4 4*k
3 |3 2 0
2 |(3*4-1*2)/3=10/3 4*k
1 |(10/3*2-3*4*k)/(10/3) 0
0 | 4*k

Para que el sistema sea marginalmente estable...


Ejemplo...
Es suficiente que el elemento del renglon 1:

20/3-12*k >= 0 o sea k >= 5/9 = 0.555...


Con el valor de k=5/9 el sistema es oscilatorio
con la frecuencia determinada a partir del renglon
2:

10/3*s^2 + 4*5/9=0 o s^2+6/9=0

De donde s=+/-sqrt(-6/9)=+/-j*sqrt(2/9)=+/-wu
En donde wu es la frecuencia de oscilacion para
Que el sistema este en oscilacion permanente
Ejemplo...

Para k=1 se tiene:


D(s)=s^4+3*s^3+4*s^+2*s+4=0
Pruebe el codigo
>poly(0,'s')
>D=poly([4 2 4 3 1],'s','c')
>routh_t(D)
Salve las D y la tabla para k=1
Haga lo mismo para k=5/9 y k=0.5
El sistema es inestable para k>5/9, es estable
para k<5/9 y marginalmente estable para k=5/9
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto

G(s)H(s)=1/(s^2+8*s+22)
Codigo del sistema
G(s)H(s)=1/(s^2+8*s+22)

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,10)
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto con un polo en el
origen

Gc(s)G(s)H(s)=1/(s^3+8*s^2+22*s)
Codigo del sistema
Gc(s)G(s)H(s)=1/(s^3+8*s^2+22*s)

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([0 22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,50)
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto con un cero en el
origen

Gc(s)G(s)H(s)=s/(s^2+8*s+22)
Codigo del sistema
Gc(s)G(s)H(s)=s/(s^2+8*s+22)

s=poly(0,'s')
num=poly([0 1],'s','c')
den=poly([22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,10)
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto con un polo en el
origen y un cero cercano

Gc(s)G(s)H(s)=(s+0.5)/(s^3+8*s^2+22*s))
Codigo del sistema
Gc(s)G(s)H(s)=(s+0.5)/
(s^3+8*s^2+22*s)

s=poly(0,'s')
num=poly([0.5 1],'s','c')
den=poly([0 22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,1000)
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto con un polo en el
origen y un cero lejano

Gc(s)G(s)H(s)=(s+10)/(s^3+8*s^2+22*s))
Codigo del sistema
Gc(s)G(s)H(s)=(s+10)/
(s^3+8*s^2+22*s)

s=poly(0,'s')
num=poly([10 1],'s','c')
den=poly([0 22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,1000)
El lugar geometrico de las raices de
un sistema

Sistema de retroalimentacion con funcion de


Transferencia de lazo abierto con un cero a la
izquierda de los polos

Gc(s)G(s)H(s)=(s+6)/(s^2+8*s+22)
Codigo del sistema
Gc(s)G(s)H(s)=(s+6)/(s^2+8*s+22)

s=poly(0,'s')
num=poly([6 1],'s','c')
den=poly([22 8 1],'s','c')
sistema=syslin('c',num,den)
evans(sistema,25)
Analisis
de la
Respuesta a la Frecuencia
Analisis de la
Respuesta a la Frecuencia
Analisis de la respuesta a la frecuencia
En el libro de texto:
Analisis de Sistemas Dinamicos
K Ogata Ed. PH 1ra. Ed pag. 402
Se demuestra que para un sistema con G(s) con
una entrada senoidal
r(t)=sen(ω0 t)
Entonces
2 2
R(s)=ω0 /(s +ω0 )
...
Analisis de la
Respuesta a la Frecuencia...
Dado que:
C(s)/R(s)=G(s)
Entonces
C(s)=G(s)R(s)
2 2
Y R(jω)=ω0/(ω +ω0 )=R(ω)∟(1)
2 2
=ω0/(ω +ω0 ), ∟(1)=0º
Entonces
C(jω)=G(jω)R(jω)
=|G(jω)|∟((G(jω))|R(jω)|∟(R(jω))
=|C(jω)|∟(C(jω))
...
Analisis de la
Respuesta a la Frecuencia...

De donde
|C(jω)|=|G(jω)||R(jω)|
=|G(jω)|(ω0/(ω2+ω02))
Y
∟(C(jω))=∟((G(jω))+∟(R(jω))
=∟((G(jω))
Tambien:...
Analisis de la
Respuesta a la Frecuencia...

css (t) = |G(jω)|sen(ωt+∟((G(jω))


Formas de Bode
Sea
G(s)H(s)=K(Πi=1 m(s+1/Tzi))/(Πj=1 n(s+1/Tpi))
Entonces
n m m
|G(jω)H(jω)|=KΠj=1 Tpi/Πi=1 Tzi(Πi=1 |
(jTziω+1)|)
/(Πj=1 n|(jTpiω+1)|)
Y
∟(G(jω)H(jω)=KB(Σi=1 m∟(jTziω+1))
- (Σj=1 n∟(jTpiω+1/Tpi))
Formas de Bode
Tambien:
m
|G(jω)H(jω)|dB =KB(Σi=1 |(jTziω+1)|dB
- Σj=1 n|(jTpiω+1)|dB )
En donde

| M |dB = 20log10 | M |
KB=K(Πj=1 nTpi)/(Πi=1 mTzi)
Es la ganancia de Bode
Diagramas de Bode

Son las graficas de:

|G(jω)H(jω)|dB vs. log(ω)


Y
∟(G(jω)H(jω) vs. log(ω)

Vease el libro:
Retroalimentacion y sistemas de control
DiStefano, Stubberud y Williams
Serie Schaums, McGraw-Hill
Terminos simples en las
Formas de Bode

Forma simple: KB

|KB|dB =20log10 | KB |

∟(KB)= 0º si KB > 0
= -180º si KB < 0
Terminos simples en las
Formas de Bode...
Ejemplo: KB = 5:

|KB|dB =20log10 |5|


∟(KB)= 0º

Codigo Scilab:

G=syslin('c',5,1)
bode(G)
Terminos simples en las
Formas de Bode...

Un cero en el origen: s+1 = s=0

| jω |dB = 20log10 (ω)


∟( jω)= 90º
Terminos simples en las
Formas de Bode...

Ejemplo: s

Codigo de Scilab
s=poly(0,'s')
num=poly([0 1],'s','c')
G=syslin('c',num,1)
bode(G)
Terminos simples en las
Formas de Bode...

Un cero negativo: s= -a, a>0;


factor en el numerador: s+a

Formas de Bode:
| jω/a + 1 |dB = 20log10 ((ω/a)2 + 1)1/2
∟( jω/a + 1 )= arctan(ω/a)
Terminos simples en las
Formas de Bode...

Ejemplo: s+50

Codigo de Scilab
s=poly(0,'s')
num=poly([50 1],'s','c')
G=syslin('c',num,1)
bode(G)
Terminos simples en las
Formas de Bode...

Un cero positivo: s= a, a>0;


factor en el numerador: s-a

Formas de Bode:
| jω/(-a) + 1 |dB = 20log10 ((ω/a)2 + 1)1/2
∟( jω/(-a) + 1 )= arctan(ω/(-a))
Terminos simples en las
Formas de Bode...

Ejemplo: s-50

Codigo de Scilab
s=poly(0,'s')
num=poly([-50 1],'s','c')
G=syslin('c',num,1)
bode(G)
Terminos simples en las
Formas de Bode...

Un polo en el origen: s-1 = 1/s

| 1/(jω) |dB = -20log10 (ω)


∟(1/( jω))= -90º
Terminos simples en las
Formas de Bode...

Un cero en el origen: s+1 = s=0

| 1/(jω) |dB = -20log10 (ω)


∟( 1/(jω))= -90º
Terminos simples en las
Formas de Bode...

Un polo negativo: s= -b, b>0;


factor en el denominador: s+b

Formas de Bode:
|1/( jω/b + 1) |dB = -20log10 ((ω/b)2 + 1)1/2
∟(1/( jω/b + 1) )= -arctan(ω/b)
Terminos simples en las
Formas de Bode...

Ejemplo: 1/(s+50)

Codigo de Scilab
s=poly(0,'s')
den=poly([50 1],'s','c')
G=syslin('c',1,den)
bode(G)
Terminos simples en las
Formas de Bode...

Un polo positivo: s= b, b>0;


factor en el denominador: s-b

Formas de Bode:
|1/( jω/(-b) + 1) |dB = -20log10 ((ω/b)2 + 1)1/2
∟(1/( jω/(-b) + 1) )= -arctan(ω/(-b))
Terminos simples en las
Formas de Bode...

Ejemplo: 1/(s-50)

Codigo de Scilab
s=poly(0,'s')
den=poly([-50 1],'s','c')
G=syslin('c',1,den)
bode(G)
Terminos simples en las
Formas de Bode...

Par de ceros complejos conugados en el


semiplano izquierdo: s1,2 = -a +/-jb; a,b >0
Factores en el numerador: ((s+a)2 + b2 )
En donde
2 2 2
ωn = a + b , ωd = b, ζ = a/2ωn
ωd = ωn (1 – ζ2 )1/2
Terminos simples en las
Formas de Bode...

Formas de Bode
2
| 1 - ( ω/ωn ) + j2ζω/ωn |dB =
2 2 2 1/2
20Log10 ((1 - ( ω/ωn ) ) + (2ζω/ωn ) )
∟(1 - ( ω/ωn )2 + j2ζω/ωn ) =
Arctan( (2ζω/ωn ) / (1 - ( ω/ωn )2 )
Terminos simples en las
Formas de Bode...

Par de ceros complejos conjugados en el


semiplano izquierdo:
s2 + 6s + 25

Codigo de Scilab
s=poly(0,'s')
num=poly([25 6 1],'s','c')
G=syslin('c',num,1)
bode(G)
Terminos simples en las
Formas de Bode...

Par de ceros complejos conugados en el


semiplano derecho: s1,2 = a +/-jb; a,b >0
Factores en el numerador: ((s-a)2 + b2 )
En donde
2 2 2
ωn = a + b , ωd = b, ζ = a/2ωn
ωd = ωn (1 – ζ2 )1/2
Terminos simples en las
Formas de Bode...

Formas de Bode
2
| 1 - ( ω/ωn ) - j2ζω/ωn |dB =
2 2 2 1/2
20Log10 ((1 - ( ω/ωn ) ) + (2ζω/ωn ) )
∟(1 - ( ω/ωn )2 - j2ζω/ωn ) =
Arctan( (-2ζω/ωn ) / (1 - ( ω/ωn )2 )
Terminos simples en las
Formas de Bode...
Par de ceros complejos conjugados en el
semiplano derecho
:
s2 - 6s + 25

Codigo de Scilab
s=poly(0,'s')
num=poly([25 -6 1],'s','c')
G=syslin('c',num,1)
bode(G)
Terminos simples en las
Formas de Bode...

Par de polos complejos conugados en el


semiplano izquierdo: s1,2 = -a +/-jb; a,b >0
Factores en el denominador: ((s+a)2 + b2 )
En donde
2 2 2
ωn = a + b , ωd = b, ζ = a/2ωn
ωd = ωn (1 – ζ2 )1/2
Terminos simples en las
Formas de Bode...

Formas de Bode
2 -1
| 1 - ( ω/ωn ) + j2ζω/ωn |dB =
2 2 2 1/2
-20Log10 ((1 - ( ω/ωn ) ) + (2ζω/ωn ) )
∟(1 - ( ω/ωn )2 + j2ζω/ωn )-1 =
-arctan( (2ζω/ωn ) / (1 - ( ω/ωn )2 )
Terminos simples en las
Formas de Bode...
Par de polos complejos conjugados en el
semiplano izquierdo:

(s2 + 6s + 25)-1

Codigo de Scilab
s=poly(0,'s')
den=poly([25 6 1],'s','c')
G=syslin('c',1,den)
bode(G)
Terminos simples en las
Formas de Bode...
Par de polos complejos conugados en el
semiplano derecho:
s1,2 = a +/-jb; a,b >0
Factores en el denominador:
((s-a)2 + b2 )-1
En donde
2 2 2
ωn = a + b , ωd = b, ζ = a/2ωn
ωd = ωn (1 – ζ2 )1/2
Terminos simples en las
Formas de Bode...

Formas de Bode
2 -1
| 1 - ( ω/ωn ) - j2ζω/ωn |dB =
2 2 2 1/2
-20Log10 ((1 - ( ω/ωn ) ) + (2ζω/ωn ) )
∟(1 - ( ω/ωn )2 + j2ζω/ωn )-1 =
-arctan( (-2ζω/ωn ) / (1 - ( ω/ωn )2 )
Terminos simples en las
Formas de Bode...
Par de polos complejos conjugados en el
semiplano derecho:

(s2 - 6s + 25)-1

Codigo de Scilab
s=poly(0,'s')
den=poly([25 -6 1],'s','c')
G=syslin('c',1,den)
bode(G)
Sistema de orden cubico

G(s)=1/(s^3+2s^2+s)

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([0 1 2 1],'s','c')
G=syslin('c',num,den)
bode(G)
Sistema de orden cubico con
retroalimentacion unitaria

G(s)=1/(s^3+2s^2+s)

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([0 1 2 1],'s','c')
G=syslin('c',num,den)
CenR=G/(1+G)
bode(CenR)
Margenes de Ganancia y de Fase

Funciones:
[gm,fr]=g_margin(GH)
[phm,fr]=p_margin(GH)
show_margins(GH,'bode')
En donde:
gm=Margen de ganancia
phm=margen de fase
fr=frecuencia de cruce de fase del eje -180 o
frecuencia de cruce de magnitud del eje 0dB
Margenes de Ganancia y de Fase
Ejemplo

G(s)=70(s+10)/((s-5)(s+50))

s=poly(0,'s')
num=poly([700 7],'s','c')
den=poly([-250 45 1],'s','c')
G=syslin('c',num,den)
show_margins(G,'bode')
[MG,Fcf]=g_margin(G)
[MF,Fcg]=p_margin(G)
Diagrama de Nyquist

El metodo de Nyquist consiste en transformar


todo el semiplano derecho de s al plano G(s)H(S)
por medio de una trayectoria cerrada que encierre
tal semiplano derecho de s. Parte de tal
trayectoria incluye al eje imaginario donde s=jω,
-∞<ω<+∞. La trayectoria que encierra el
semiplano derecho s se llama la trayectoria de
Nyquist, mientras que la trayectoria cerrada
correspondiente en el plano G(s)H(s) se llama
diagrama de estabilidad de Nyquist.
Diagrama de Nyquist

De C(s)/R(s)=G(s)/(1+G(s)H(s)) se trata
determinar los polos de C/R que estan en el
semiplano derecho de s que son los ceros de
1+GH. Entonces se establece el criterio de
estabilidad de Nyquist:

Vease el libro:
Retroalimentacion y Sistemas de Control, 2da Ed.
Cap. 11 Analisis de Nyquist
DiStefano et al. Ed. MacGraw-Hill
Criterio de estabilidad de Nyquist

El sistema de control en lazo cerrado cuya


funcion de transferencia en lazo abierto es
G(s)H(s), es estable si y solo si
N= -P0 ≤ 0
En donde
P0 es el numero de polos de GH en el
semiplano derecho del plano s y
N es el numero de vueltas en el sentido del
reloj del punto (-1,0) de plano G(s)H(s).
Diagrama de Nyquist

Funcion:

nyquist(GH)

Se obtiene la mitad del contorno cerrado de


estabilidad de Nyquist
Diagrama de Nyquist
Ejemplo 1: G=200/(s+1), H=1

s=poly(0,'s')
numG=200
denG=poly([1 1],'s','c')
G=syslin('c',numG,denG)
H=1
GH=G*H
nyquist(GH)
[MG,Fcf]=g_margin(GH)
[MF,Fcg]=p_margin(GH)
Diagrama de Nyquist
Ejemplo 2: G=(s+1)/(s+1)^2, H=1

s=poly(0,'s')
NumG=poly([1 1,'s','c'])
denG=poly([1 2 1],'s','c')
G=syslin('c',numG,denG)
H=1
GH=G*H
nyquist(GH)
[MG,Fcf]=g_margin(GH)
[MF,Fcg]=p_margin(GH)
Diagrama de Nyquist
Ejemplo 3: G=(s^2+3s+228)/(s^2+27s+225), H=1

s=poly(0,'s')
numG=poly([228 3 1],'s','c'])
denG=poly([225 27 1],'s','c')
G=syslin('c',numG,denG)
H=1
GH=G*H
nyquist(GH)
showmargins(GH,'nyquist')
[MG,Fcf]=g_margin(GH)
[MF,Fcg]=p_margin(GH)
Diagrama de Nichols
El diagrama de Nichols es un diagrama que se
obtiene a partir de
|G(jω)H(jω)|dB vs. ∟(G(jω)H(jω))
con ω como parametro.
Antes del uso de las PC se obtenian dos
diagramas de Nichols: 1o. |GH|dB vs. ∟(GH) y
2o.|CenR|dB vs. ∟(CenR) por medio de la
expresion:
C/R=G/(1+GH)=GH/(1+GH)/H
Y los contornos M y α.
Diagrama de Nichols

Funciones:

black(T) realiza el diagrama de Nichols


freson(T) calcula la frecuencia de resonancia
repfreq(T,F) determina el punto (|T|dB ,∟(T),F)
[dB,phi]=dBphi(repf) calcula la magnitud en dB
y el angulo
Diagrama de Nichols

Ejemplo 1: C/R=70/(12s^2+2s+70)

s=poly(0,'s')
den=poly([70 2 12],'s','c')
CenR=syslin('c',70,den)
black(CenR)
bode(CenR)
FR=freson(CenR)
[repf]=repfreq(CenR,FR)
[MR]=dBphi(repf)
Diagrama de Nichols
Ejemplo 2:
C/R=(50s^2+250s)/(s^3+12s^2+85s+250)

s=poly(0,'s')
num=poly([0 250 50],'s','c')
den=poly([250 85 12 1],'s','c')
CenR=syslin('c',num,den)
black(CenR)
bode(CenR)
FR=freson(CenR)
[repf]=repfreq(CenR,FR)
[MR]=dBphi(repf)
Diagrama de Nichols
Ejemplo 3:
C/R=1/(0.5s^3+1.5s^2+s+1)

s=poly(0,'s')
num=poly([1],'s','c')
den=poly([1 1 1.5 0.5],'s','c')
CenR=syslin('c',num,den)
black(CenR)
bode(CenR)
FR=freson(CenR)
[repf]=repfreq(CenR,FR)
[MR]=dBphi(repf)

Vous aimerez peut-être aussi