05 Reporte, Reducción de diagrama de bloques con Matlab

Embed Size (px)

DESCRIPTION

Fernando Ramos Albarrán

Citation preview

14/Octubre/2011

Instituto Tecnolgico de Morelia Jos Mara Morelos y Pavn

Alumno:

09120782 Ramos Albarrn Fernando

Asesor: Dr. Osvaldo Gutirrez Snchez

Control I

[REPORTE DE LA PRCTICA #5: REDUCCIN DE DIAGRAMAS DE BLOQUES CON MATLAB.]Divisin de Estudios Profesionales: Ingeniera Elctrica

RESUMEN Este documento pretende explicar algunas formas de reducir diagramas de bloques con las utileras de MATLAB. Se plantearn diferentes diagramas de bloques y primeramente se usaran los comandos Series, y , despus por medio de operaciones algebraicas, luego por los comandos y , por ltimo se ver una forma general para resolver cualquier sistema con n diagramas de bloques. INTRODUCCINMATLAB dispone en la actualidad de un amplio abanico de programas de apoyo especializados, Adicionalmente, existen comandos en MATLAB que facilitan la labor, tediosa en ocasiones, de reducir una representacin en diagramas de bloques. Se puede utilizar MATLAB para la reduccin de diagrama de bloques. Se dispone de tres mtodos 1) Solucin a travs de los comandos series, paralelo y 2) Solucin mediante operaciones algebraicas y 3) Solucin mediante los comandos y . ,

DESARROLLOMATLAB tiene rdenes tiles para la reduccin de sistemas de control en diagramas de bloques, las instrucciones de MATLAB que se vern en el transcurso de esta prctica son:

%Conexin en cascada de G1(s) y G2(s). %Conexin en paralelo de G1(s) y G2(s). %Conexiones de lazo cerrado. G(s) en la trayectoria directa y %H(s) como realimentacin y (signo) es -1 para %realimentacin negativa o +1 para retroalimentacin positiva. %Agregacin de sistemas (juntar varios sistemas). %Interconexin de los argumentos donde G es la matriz de %agregacin, Q es una matriz de conexin de elementos, inputs %son las entradas del sistema y outputs son las salidas del %sistema.

Para mejor entendimiento de cada una de las funciones utilizadas en la prctica se recomienda utilizar la ayuda de MATLAB.

Ejemplo: Teniendo el diagrama de bloques de la figura se quiere reducir.

1. Solucin a travs de los comandos Series,

y

.

'Solucin a travs de los comandos Series, Parallel, & Feedback'

numg1=[-1] % Define numerador de G1(s). numg1 = -1 deng1=[1] % Define denominador de G1(s). deng1 = 1 numg2=[0 2] % Define numerador de G2(s). numg2 = 0 2 deng2=[1 2] % Define denominador de G2(s). deng2 = 1 2 numg3=-0.125*[1 0.435]% Define numerador de G3(s). numg3 = -0.1250 -0.0544 deng3=conv([1 1.23],[1 0.226 0.0169]) % Define denominador de %G3(s). deng3 = 1.0000 1.4560 0.2949 0.0208 numh1=[-1 0] % Define numerador de H1(s). numh1 = -1 0 denh1=[0 1] % Define denominador de H1(s). denh1 = 0 1 G1=tf(numg1,deng1) % Crea funcin de Transferencia G1(s). Transfer function: -1

G2=tf(numg2,deng2) % Crea funcin de Transferencia G2(s). Transfer function: 2 ----s + 2 G3=tf(numg3,deng3) % Crea funcin de Transferencia G3(s). Transfer function: -0.125 s - 0.05438 -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 H1=tf(numh1,denh1) % Crea funcin de Transferencia H1(s). Transfer function: -s G4=series(G2,G3) % Calcula el producto de G2 y G3 Transfer function: -0.25 s - 0.1088 -----------------------------------------------s^4 + 3.456 s^3 + 3.207 s^2 + 0.6105 s + 0.04157 G5=feedback(G4,H1) % Calcula retroalimentacin Transfer function: -0.25 s - 0.1088 -----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.7193 s + 0.04157 Ge=series(G1,G5) % Calcula producto de G1 con G5 Transfer function: 0.25 s + 0.1088 -----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.7193 s + 0.04157 'T(s) a travs de los comandos Series, Parallel, & Feedback' T=feedback(Ge,1) % Calcula retroalimentacin Transfer function: 0.25 s + 0.1088 ----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503

2. Solucin a travs de operaciones algebraicas.' Solucin a travs de operaciones algebraicas ' clear numg1=[-1] numg1 = -1 deng1=[1] deng1 = 1 % Define denominador de G1(s). % Limpia variables. % Define numerador de G1(s).

numg2=[0 2] numg2 = 0 deng2 = 1 numg3 = -0.1250 -0.0544 2 2 deng2=[1 2]

% Define numerador de G2(s).

% Define denominador de G2(s).

numg3=-0.125*[1 0.435] % Define numerador de G3(s).

deng3=conv([1 1.23],[1 0.226 0.0169]) % Define denominador de %G3(s). deng3 = 1.0000 numh1=[-1 0] numh1 = -1 denh1 = 0 1 % Crea funcin de Transferencia G1(s). G1=tf(numg1,deng1) Transfer function: -1 G2=tf(numg2,deng2) Transfer function: 2 ----s + 2 G3=tf(numg3,deng3) Transfer function: -0.125 s - 0.05438 -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 % Crea funcin de Transferencia G3(s). % Crea funcin de Transferencia G2(s). 0 % Define denominador de H1(s). denh1=[0 1] 1.4560 0.2949 0.0208 % Define numerador de H1(s).

H1=tf(numh1,denh1) Transfer function: -s G4=G3*G2 Transfer function:

% Crea funcin de Transferencia H1(s).

% Calcula producto. -0.25 s - 0.1088

-----------------------------------------------s^4 + 3.456 s^3 + 3.207 s^2 + 0.6105 s + 0.04157 G5=G4/(1+G4*H1)Transfer function: -0.25 s^5 - 0.9728 s^4 - 1.178 s^3 - 0.5014 s^2 - 0.07679 s - 0.004521 --------------------------------------------------------------------------------------------------s^8 + 6.912 s^7 + 18.61 s^6 + 24.36 s^5 + 15.76 s^4 + 4.705 s^3 + 0.7162 s^2 + 0.05529 s + 0.001728

% Calcula realimentacin.

G5=minreal(G5) Transfer function:

% Cancela trminos comunes. -0.25 s - 0.1088

-----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.7193 s + 0.04157 Ge=G5*G1 Transfer function: 0.25 s + 0.1088 -----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.7193 s + 0.04157 'T(s) a travs de operaciones algebraicas' T=Ge/(1+Ge) Transfer function:0.25 s^5 + 0.9727 s^4 + 1.24 s^3 + 0.5558 s^2 + 0.08862 s + 0.004521 ---------------------------------------------------------------------------------------------s^8 + 6.912 s^7 + 18.86 s^6 + 25.58 s^5 + 17.98 s^4 + 6.5 s^3 + 1.361 s^2 + 0.1484 s + 0.00625

% Multiplica las F.T. de los lazos internos.

% F.T. de lazo cerrado.

T=minreal(T) Transfer function:

% Cancela trminos comunes. 0.25 s + 0.1088

----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503

2.1 Solucin por medio del programa general de resolucin diagramas de bloques (transferfunction)>> transferfunction Introduce el nmero de bloques que tiene el sistema5 Al definir los bloques debes introducir primero la entrada y al final la salida Introduce los coeficientes del numerador: 1 Indroduce los coeficientes del denominador: 1 Transfer function: 1 Q = 1 Cuantas entradas tiene el subsistema: 1 Introduce la entrada del subsistema: 0 Q = 1 0 Introduce los coeficientes del numerador: -1 Introduce los coeficientes del denominador: 1 Transfer function from input 1 to output... #1: 1 #2: 0

Transfer function from input 2 to output... #1: 0 #2: -1

Q = 1 2 0 0

Cuantas entradas tiene el subsistema: 2 Introduce la entrada del subsistema: -4 Q = 1 2 0 -4

Introduce la entrada del subsistema: 1 Q = 1 2 0 -4 0 1

Introduce los coeficientes del numerador: 2 Indroduce los coeficientes del denominador: [1 2] Transfer function from input 1 to output... #1: 1 #2: #3: 0 0

Transfer function from input 2 to output... #1: 0 #2: #3: -1 0

Transfer function from input 3 to output... #1: 0 #2: 0 2 ----s + 2

#3:

Q = 1 2 3 0 -4 0 0 1 0

Cuantas entradas tiene el subsistema: 2 Introduce la entrada del subsistema: 2 Q = 1 0 0 2 -4 1 3 2 0 Introduce la entrada del subsistema: -5

Q = 1 2 3 0 -4 2 0 1 -5

Introduce los coeficientes del numerador: -0.125*[1 0.435] Indroduce los coeficientes del denominador: conv([1 1.23],[1 0.226 0.0169]) Transfer function from input 1 to output... #1: 1 #2: #3: #4: 0 0 0

Transfer function from input 2 to output... #1: 0 #2: #3: #4: -1 0 0

Transfer function from input 3 to output... #1: 0 #2: 0 2 ----s + 2 0

#3:

#4:

Transfer function from input 4 to output... #1: 0 #2: #3: 0 0

#4:

-0.125 s - 0.05438 -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079

Q = 1 2 3 4 0 -4 2 0 0 1 -5 0

Cuantas entradas tiene el subsistema: 1 Introduce la entrada del subsistema: 3 Q = 1 2 3 4 0 -4 2 3 0 1 -5 0

Introduce los coeficientes del numerador: [-1 0] Indroduce los coeficientes del denominador: 1 Transfer function from input 1 to output... #1: 1 #2: #3: #4: #5: 0 0 0 0

Transfer function from input 2 to output... #1: 0 #2: #3: #4: #5: -1 0 0 0

Transfer function from input 3 to output... #1: 0 #2: 0 2 ----s + 2 0 0

#3:

#4: #5:

Transfer function from input 4 to output... #1: 0 #2: #3: 0 0 -0.125 s - 0.05438 -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 0

#4:

#5:

Transfer function from input 5 to output... #1: 0 #2: #3: #4: #5: Q = 1 2 3 4 5 0 -4 2 3 0 0 1 -5 0 0 0 0 0 -s

Cuantas entradas tiene el subsistema: 1 Introduce la entrada del subsistema: 4 Q = 1 2 3 4 5 0 -4 2 3 4 0 1 -5 0 0

Define las entradas: 1 Define las salidas: 4 Transfer function: 0.25 s + 0.1087 ----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503

3. Solucin de otro problema diferente con los comandos Append y Connect.' Solucin a travs de los comandos Append y Connect' 'G1(s) = (-K1)*(1/(-K2s)) = 1/s' % Imprime etiqueta. G1(s) = (-K1)*(1/(-K2s)) = 1/s numg1=[-1] numg1 = -1 deng1=[1 0] deng1 = 1 0 % Crea funcin de Transferencia G1(s). G1=tf(numg1,deng1) Transfer function: -1 -s 'G2(s) = (-K2s)*(2/(s+2)' G2(s) = (-K2s)*(2/(s+2) numg2=[-2 0] % Define numerador de G2(s). % Imprime etiqueta. % Define denominador de G1(s). % Define numerador de G1(s).

numg2 = -2 deng2 = 1 2 % Crea funcin de Transferencia G2(s). G2=tf(numg2,deng2) Transfer function: -2 s ----s + 2 'G3(s) = -0.125(s+0.435)/((s+1.23)(s^2+0.226s+0.0169))' % Imprime G3(s) = -0.125(s+0.435)/((s+1.23)(s^2+0.226s+0.0169)) numg3= - 0.125*[1 0.435] numg3 = -0.1250 -0.0544 % Define numerador de G3(s). 0 % Define denominador de G2(s). deng2=[1 2]

deng3=conv([1 1.23],[1 0.226 0.0169]) % Define denominador de %G3(s). deng3 = 1.0000 1.4560 0.2949 0.0208 G3=tf(numg3,deng3) Transfer function: -0.125 s - 0.05438 -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 System=append(G1,G2,G3) -1 #1: -s #2: #3: 0 0 % Unir todos los subsistemas. Transfer function from input 1 to output... % Crea funcin de Transferencia G3(s).

Transfer function from input 2 to output... #1: 0 -2 s #2: ----s + 2 #3: #1: #2: 0 0 0 -0.125 s - 0.05438 #3: -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 input=1 input = 1 output=3 output = 3 Q=[1 -3 0 % Subsistema 1, G1(s), obtiene su entrada del % negative de la salida del subsistema 3, %G3(s). 2 1 -3 % Subsistema 2, G2(s), obtiene su entrada del % subsistema 1, G1(s), y el negativo de la %salida % del subsistema 3, G3(s). 3 2 0]; Q = 1 2 3 -3 1 2 0 -3 0 % Subsistema 3, G3(s), obtiene su entrada del % subsistema 2, G2(s). % La salida es el tercer subsistema, G3(s). % La entrada es el primer subsistema G1(s).

Transfer function from input 3 to output...

T=connect(System,Q,input,output) % Conecta los subsistemas. Transfer function: -0.25 s^2 - 0.1088 s - 5.81e-017 ----------------------------------------------------------------s^5 + 3.456 s^4 + 3.457 s^3 + 0.4693 s^2 - 0.06718 s + 1.331e-017 'T(s) a travs de los comandos Append & Connect' T(s) a travs de los comandos Append & Connect T=tf(T) Transfer function: -0.25 s^2 - 0.1088 s - 5.81e-017 ----------------------------------------------------------------s^5 + 3.456 s^4 + 3.457 s^3 + 0.4693 s^2 - 0.06718 s + 1.331e-017 % Crea F.T. de lazo cerrado.

T=minreal(T) Transfer function:

% Cancela trminos comunes. -0.25 s - 0.1088

-----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.4693 s - 0.06718

3.1 Solucin por medio del programa general de resolucin diagramas de bloques (transferfunction)>> transferfunction Introduce el nmero de bloques del sistema: 3 Al definir los bloques debes introducir primero la entrada y al final la salida Introduce los coeficientes del numerador: [-1] Indroduce los coeficientes del denominador: [1 0]

Transfer function: -1 -s

Q= 1

Cuantas entradas tiene el subsistema: 2 Introduce la entrada del subsistema: -3

Q= 1 -3

Introduce la entrada del subsistema: 0 Q= 1 -3 0

Introduce los coeficientes del numerador: [-2 0] Indroduce los coeficientes del denominador: [1 2]

Transfer function from input 1 to output... -1 #1: -s

#2: 0

Transfer function from input 2 to output... #1: 0

-2 s #2: ----s+2 Q= 1 -3 2 0 0 0

Cuantas entradas tiene el subsistema: 2 Introduce la entrada del subsistema: 1 Q= 1 -3 2 1 0 0

Introduce la entrada del subsistema-3 Q= 1 -3 2 0

1 -3

Introduce los coeficientes del numerador: -0.125*[1 0.435] Indroduce los coeficientes del denominador: conv([1 1.23],[1 0.226 0.0169]) Transfer function from input 1 to output... -1 #1: -s #2: 0 #3: 0 Transfer function from input 2 to output... #1: 0 -2 s #2: ----s+2

#3: 0

Transfer function from input 3 to output... #1: 0 #2: 0

-0.125 s - 0.05438 #3: -----------------------------------s^3 + 1.456 s^2 + 0.2949 s + 0.02079 Q= 1 -3 2 3 0

1 -3 0 0

Cuantas entradas tiene el subsistema: 2 Introduce la entrada del subsistema: 2 Q= 1 -3 2 3 0

1 -3 2 0

Introduce la entrada del subsistema: 0 Q= 1 -3 2 3 0

1 -3 2 0

Define las entradas:1 Define las salidas: 3 Transfer function: -0.25 s - 0.1088 -----------------------------------------------s^4 + 3.456 s^3 + 3.457 s^2 + 0.4693 s - 0.06718

EJERCICIOS: Hacer un programa general que funcione para resolver diferentes diagramas de bloques y probarlo con la reduccin de los diagrama de bloques de las figuras, adems de utilizar otros dos diagramas de bloques complejos para probarlo.function T= transferfunction( system, Q ) %Obtiene la funcin de transferencia de un sistema %de diagrama de bloques numbloq=input('Introduce el nmero de bloques del sistema: ');%Define el %numero de bloques y lo almacena en numbloq disp('Al definir los bloques debes introducir primero la entrada'); disp('y al final la salida'); for i=1:1:numbloq %En cada bucle entra a un bloque diferente numg=input('Introduce los coeficientes del numerador: '); deng=input('Indroduce los coeficientes del denominador: '); G=tf(numg,deng); %Crea la funcin de transferencia y la va almacenando system(i,i)=G %en forma de diagonal en una mtriz system Q(i,1)=i %Define la primera columna de la matriz Q para cada bloque numentr=input('Cuantas entradas tiene el subsistema: '); suma=1; for j=1:1:numentr suma=suma+j;%En cada bucle se le suma 1 a j para que se no se tome %en cuenta la columna 1 definida previamente Q(i,suma)=[input('Introduce la entrada del subsistema: ')]%Se guardan %datos en la matriz aumentando el nmero de columnas %hasta que termine el bucle suma=1; %Se asigna 1 a suma nuevamente, para que entre al ciclo end end x=input('Define las entradas: '); y=input('Define las salidas: '); T=connect(system,Q,x,y);%Se conectan los subsistemas T=tf(T); %Crea la funcin de transferencia T=minreal(T); %Cancela trminos comunes end

Ejercicio 1 Reducir el siguiente diagrama de bloques por el mtodo analtico y utilizando la funcin transferfunction de Matlab.

Reduciendo el lazo cerrado que conforman

y

, tenemos:

Ahora se desplazar el primer punto de toma a la posicin entre

y

, pero esto nos altera la con , por lo

funcin tanto:

y ahora ser

, entonces podemos sacar el paralelo de

Ahora

est en serie con

y reducindolos tenemos:

Ahora nos queda

en lazo cerrado con

y reducindolos nos queda:

Por ultimo

est en serie con (

y reducindolos tenemos: )( )

Ahora le asignaremos valores a cada funcin esto con la finalidad de llegar a una funcin de transferencia en forma no simblica y poder comparar los resultados con los que arroga matlab cuando se introduce el mismo diagrama de bloques.

Sustituyendo los valores de las funciones de transferencia en , tenemos:

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

) ( )( ) ) )

)

( )

( (

) )

(

)

Ejercicio 1, resuelto con transferfunction >> transferfunction Introduce el nmero de bloques que tiene el sistema = 8 Al definir los bloques debes introducir primero la entrada y al final la salida Q = 1 2 3 4 0 6 2 3 0 -7 0 0 0 1 0 0

5 6 7 8

2 2 3 4

0 0 0 5

0 0 0 0

Define las entradas = 1 Define las salidas = 8

Transfer function: s ------------------------------------------------s^4 + 0.3333 s^3 + 0.3333 s^2 - 0.3333 s - 0.3333

Ejercicio 2

Si movemos el tercer punto de suma hacia la entrada del sistema con el sumador 2, el bloque se ve afectado, por lo que cambia a . Entonces y estn en serie, se tiene entonces que:

Con el bloque

y el

se tiene una retroalimentacin. Se aplica la frmula:

El bloque

queda en serie con

Ahora se tiene una retroalimentacin con los bloques frmula:

y

. Se aplica nuevamente la

(

)(

)

El bloque

queda en serie con

Por ltimo

est en retroalimentacin con

Como transferfunction no trabaja con variables simblicas, nos daremos la tarea de definir un valor numrico para cada bloque de los sistemas dados, para al momento de introducirlos a MATLAB comprobar la correcta programacin de la funcin as como la comprobacin de nuestros resultados, mediante la funcin de transferencia obtenida.

( ) ( ) ( ) ( )

Ejercicio 2, resuelto con transferfunctionComo la salida del programa es muy extensa, solo se mostrar cmo se llen la matriz de conexiones, al igual el diagrama de cmo se renombraron dichos diagramas. Q= 1 2 3 4 5 6 7 8

0 0 1 -7 2 -8 3 6 4 0 5 0 5 0 4 0

Define las entradas: 1 Define las salidas: 5 Transfer function: s^2 + 1.494e-016 s + 5.678e-016 ------------------------------s^3 + s^2 - s + 6 El resultado es correcto ya que las expresiones estn elevadas a las -16, lo cual es prcticamente cero, por lo tanto el termino del numerador es s^2

Ejercicio 3 Reducir el siguiente diagrama de bloques por el mtodo analtico y utilizando la funcin transferfunction de Matlab.

(

)(

)

Ejercicio 3, resuelto con transferfunctionComo la salida del programa es muy extensa, solo se mostrar cmo se llen la matriz de conexiones, al igual el diagrama de cmo se renombraron dichos diagramas.

>> transferfunction Introduce el nmero de bloques que tiene el sistema = 6 Al definir los bloques debes introducir primero la entrada y al final la salida

Q = 1 2 3 4 5 6 0 1 2 3 6 4 0 -5 0 0 0 0 0 -3 0 0 0 0 0 -2 0 0 0 0

Define las entradas = 1 Define las salidas = 6

Transfer function: s + 1 --------------------------s^4 + 2 s^3 + 2 s^2 + s + 1 Ejercicio 4

Si movemos el tercer punto de suma hacia la entrada del sistema junto al segundo punto de suma, el bloque se ve afectado y se divide entre :

De la misma forma, el punto de toma que alimenta modificndose como

se mueve, pero hacia la salida,

Por lo tanto los bloques

quedan en serie

Y nos quedan dos retroalimentaciones, primero hacemos la retroalimentacin con

Ahora la retroalimentacin con

(

)(

)

Por ltimo queda una retroalimentacin con 1.

Ahora le damos valores numricos a las variables

Ejercicio 4, resuelto con transferfunction Q= 1 0 0 2 1 -4 3 -5 2 4 3 0 5 4 0 6 3 0 0 6 0 0 0 0

Define las entradas: 1 Define las salidas: 4 Transfer function: 0.6667 s^2 + 0.6667 s --------------------s^2 + s + 0.3333 CONCLUSIONES Para la programacin de transferfunction, se requiri nicamente el comando , ya que dentro del bucle se cre un vector que realizar la misma matriz que realiza el comando , este no fue necesario, porque se ser as se tendra que introducir una condicin para cada caso, y as poder dar valores especficos al , ya que no se puede cambiar su sintaxis. Se analiz durante el desarrollo de la prctica, que es posible realizar una funcin que admita a un vector con n elementos y a partir de dicho vector crear una matriz que ponga todos sus elementos en la diagonal principal, sera un caso parecido a la instruccin utilizada en transferfunction como usando un es decir, se puede crear una funcin que reconozca a un vector como su entrada

BIBLIOGRAFA[1] Dr. Osvaldo Gutirrez Snchez, Control I, Instituto Tecnolgico de Morelia, Departamento de Ingeniera Elctrica. [2] David Bez Lpez, MATLAB con Aplicaciones a la Ingeniera, Fsica y Finanzas, 1ra. Edicin, Editorial Alfaomega, septiembre 2006. [3] Javier Garca de Jaln, Jos Ignacio Rodrguez, Alfonso Brazlez, Aprenda Matlab 5.3 como si estuviera en primero, Perteneciente a la coleccin: Aprenda, como si estuviera en primero, San Sebastin, Agosto 1999.