Manual de Simulacion
Manual de Simulacion
TRABAJO DE RECOPILACIÓN.
EN LA CARRERA DE
Que presenta:
Prefacio.
En este trabajo se presenta una descripción de las principales herramientas en Matlab y Scilab,
para analizar y simular sistemas lineales, vistos en los últimos semestres de la carrera de
Ingeniería Mecánica Eléctrica.
La Ingeniería de Control es sin duda una disciplina en la que los alumnos encuentran
problemas para asimilar los conceptos teóricos explicados en clase. En parte, esta situación
está motivada por la necesidad de introducir un número elevado de conceptos. Esto hace que
en ocasiones la motivación del alumno descienda. En esta situación se hace muy importante el
disponer de una herramienta de simulación, y cómo ésta constituye uno de los pilares en el
aprendizaje de la materia de sistemas de control, este trabajo pretende ser una herramienta de
fácil manejo y permitir al estudiante ejercitar los conceptos teóricos vistos en clase. Mediante
la simulación se pretende que el alumno ponga en práctica los conceptos teóricos estudiados.
El objetivo es poder plantear diferentes experiencias y obtener resultados de forma rápida para
poder contrastarlos con lo que predice la teoría.
Para lograr esta simulación se cuenta con el rápido desarrollo que se tiene en las
computadoras, lo que ha conducido a que aparezcan en el mercado los más diversos
programas adaptados al cálculo y la simulación, ejemplos de estos tenemos a Matlab el cual ha
sido utilizado por años cómo una gran herramienta en el análisis matemático, pero con el
inconveniente de traer consigo un costo comercial, en la otra parte tenemos el caso de Scilab
que por ser un producto de software ‘libre’ de recién empleo en los sistemas de control,
carece de documentación sencilla y en nuestro idioma.
Este trabajo también esta motivado cómo una opción para que el estudiante logre reforzar los
conceptos visto en clase durante la carrera de Ingeniería Mecánica Eléctrica y con una base
firme en Sistemas de Control pueda tener un buen comienzo en cursar alguna maestría
relacionada con la materia.
Introducción:
Una vez que el estudiante se encentra familiarizado con Scilab se comienza con la creación de
los diagramas de bloques a partir del simulador de Scilab, al cual esta dedicado el Capítulo VI
llamado ‘Scicos’, en este se muestra las diferentes tipos de paletas con que dispone Scicos y se
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
muestra la realización de simulación de un sistema mecánico compuesto por una masa,
amortiguador y resorte.
Para finalizar se presentan los Capítulos VII ‘Caso de estudio con Matlab’ y CapituloVIII
‘Caso de estudio con Scilab’ correspondiendo ambos, al estudio de un circuito eléctrico de
tercer orden integrado por resistencias y capacitores, el cual es analizado y desarrollado por
medio del método de Ziegler y Nichols para obtener un controlador PID y mejorar su
respuesta ante una entrada escalón, una vez obtenidos los valores de las constantes del
controlador PID es simulado en Simulink y Scicos con el objetivo de mostrar que es posible
obtener el mismo resultado en cualquiera de los dos simuladores.
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
ÍNDICE:
Capítulo I.- Introducción a Matlab …………………….………….….1
Inicio de Matlab……………………………………..……………..4
Uso de variables y escalares………………………….……………7
Matrices……………………………………………….…………...9
Operaciones con polinomios………………………….………….13
Graficando con Matlab……………………………….…………..14
Bibliografía………………………………………………………………...……….123
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Introducción a MATLAB
Él nombre de Matlab proviene de la abreviación inglesa Matrix Laboratory, (Laboratorio de
Matrices) y su código en principio fue escrito para proporcionar un fácil acceso al software de
matrices desarrollado en los años 70’s, dentro de los proyectos Linpack y Eispack, que fueron
librerías desarrolladas en Fortran [2].
Lo podemos considerar como un lenguaje de programación interpretado. Éstos lenguajes
interpretados o “scripting“no deben ser compilados. Un script es una serie de órdenes que se
pasan a un intérprete para que las ejecute. Estas órdenes están escritas en un lenguaje de
programación propio del intérprete que ejecuta lo pedido en una línea y no ejecuta la siguiente
hasta que haya terminado la anterior, siempre que esta sea correcta. Difiere de un archivo de
código fuente por él hecho que no tiene que ser compilado, es decir es ejecutable por sí mismo
siempre que se llame con él intérprete adecuado.
De este modo podemos diferenciar los lenguajes basados en código fuente de los lenguajes de
scripting. Los primeros son, por ejemplo, C++, Fortran, Cobol, Pascal...
En ellos se genera un código fuente y un programa llamado compilador que a su vez lo
convierte en un archivo que él sistema operativo es capaz de ejecutar. Este ejecutable es a su
1
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
vez dependiente del sistema operativo, con lo que no distribuimos él ejecutable sino él código
fuente sabiendo que la máquina a la que migramos él código dispone de tal compilador. Entre
los lenguajes de scripting más conocidos tenemos por ejemplo los lenguajes de uso general,
como Java.
Existe una gran variedad en los lenguajes de scripting orientado a fines matemáticos. Como
son Matlab, Maple, Mathematica, Scilab, etc.
De éstos los más conocidos son Matlab y Mathematica, en parte debido a que son programas
comérciales. No debemos considerar a Matlab como único lenguaje sujeto a un fin. El
scripting científico es una gran herramienta que nos puede ser de mucha ayuda en la solución
de problemas científicos y la visualización de resultados. Una vez que hayamos aprendido a
usar él entorno de Matlab nos será más fácil aprender a utilizar Scilab por la similitud en su
ejecución de órdenes.
La sintaxis de Matlab es muy simple y cuenta con una gran biblioteca de funciones
matemáticas. Es un lenguaje muy cómodo si deseamos escribir pequeños programas no muy
complejos o para guardar instrucciones y después ejecutarlas en secuencia con el fin de
mostrar los resultados sobre algún problema complejo. Matlab es ante todo un lenguaje, más
que un programa en sí. Y como mencionamos anteriormente casi todo lo que aprendamos en
él, lo podemos realizar en Scilab...
Desde sus inicios, Matlab ha estado renovándose. Producto del interés en distintas áreas han
surgido gran cantidad de funciones específicas para cada área que vienen agrupadas en
paquetes denominados toolbox. Estas “toolboxes” o “cajas de herramientas” consisten en ser
colecciones de funciones para Matlab desarrolladas para resolver problemas de un tipo
particular. De entre esa área podemos citar, sistemas de control, estadística, procesamiento de
imágenes, realidad virtual, economía, adquisión de datos, desarrollo de algoritmos entre otros
[4].
2
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Sistema de Gráficos: Nos brinda la posibilidad de visualizar los datos en una gran cantidad de
representaciones distintas. Gracias a los comandos podemos visualizar gráficos bi-
dimensionales y tri-dimensionales, procesamiento de imágenes, animación y presentación de
gráficos etc.
Análisis matemáticos.
Simulaciones y Modelado.
Cálculo simbólico.
Desarrollo de algoritmos.
Modelado.
Exploración, visualización y análisis de datos.
Creación de gráficas.
Estas características que hemos comentado hacen de Matlab una herramienta de trabajo muy
extendida entre nosotros los estudiantes como entre técnicos e investigadores. [3]
3
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Inicio de Matlab
Unas vez que hayamos instalado Matlab en nuestra PC, se creara un icono como el mostrado
en la figura, procedemos a localizarlo y hacemos doble- clic en él.
A continuación debe abrirse una ventana como la siguiente figura. En ella se pueden
identificar dos columnas de ventanas.
A la izquierda tenemos él “Workspace” el cual nos mostrara cuales son las variables que
vamos a declarar y almacenar hasta ese momento.
El Command History nos lleva un historial de los comandos que hemos usado. Y “Current
Directory” nos muestra cuál es él directorio de trabajo actual. A la derecha tenemos el
“Command Window” o Ventana Principal, que emplearemos para transmitir las órdenes a
Matlab. La ayuda en Matlab se muestra tecleando help en la Ventana Principal o pulsando el
icono del signo de interrogación. En cualquier caso, si no incluimos ninguna palabra sobre la
que solicitamos la ayuda, Matlab devolverá una lista con los temas existentes tal como esta...
help
HELP topics:
Matlab\general -General purpose commands.
Matlab\ops -Operators and special characters.
Matlab\lang -Programming language constructs.
Matlab\elmat -Elementary matrices and matrix manipulation.
Matlab\elfun -Elementary math functions.
Matlab\specfun -Specialized math functions.
4
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si ahora queremos obtener ayuda acerca de algún tópico en particular, por ej. El primero de la
lista anterior, tecleamos
help Matlab\general
Y obtenemos otra lista de ayudas para este tópico:
Ahora que sabemos buscar un cierto comando, por ejemplo “sin” en el conjunto de ficheros
m-files. Si queremos buscar una cadena completa la especificamos delimitándola entre
comillas por Ej.: help ‘matrix arithmetic’.
Una vez que hemos arrancado Matlab, si deseamos terminar podemos bien teclear exit en la
ventana de comando, pulsar la secuencia
ctrl.+Q o ir al menú File > Exit Matlab.
En Matlab disponemos de aproximadamente 500 comandos, los cuales tienen ciertos formatos
de escritura. Este distingue entre mayúsculas y minúsculas por lo que casi siempre los
comandos e instrucciones se escriben con minúsculas.
Por ejemplo, no es lo mismo pi que Pi. Podemos teclear ambas expresiones y descubrir que la
primera funciona perfectamente mientras que la segunda causa un error al ser ejecutada. La
precisión utilizada de aproximadamente 16 dígitos [4]. La presiciòn con la que deseamos
trabajar puede ser modificada por los siguientes comandos:
Para esto utilizaremos la fracción 4/3
5
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Comando Exhibición Ejemplo
format short Por omisión 1.3333
format short e 4 decimales 1.3333e+000
format long 14 decimales 1.33333333333333
format long e 15 decimales 1.333333333333333e+000
format bank 2 decimales 2.33
format hex Exp. hexadecimal 3ff5555555555555
Format rat Cociente de entero 4/3
El uso de los paréntesis “( )” y los corchetes “[ ]” tienen significados y utilidades distintas. Los
primeros los utilizamos para evaluar funciones, ej. (sin(pi/5)) y para cambiar el orden básico
de las operaciones, por ejemplo (4*(26+5*(2+2))), mientras que los segundos sirven como
delimitadores de vectores por ejemplo [1,2,3,4] o de matrices por ejemplo [5,6,7;8,9,10].
Matlab no permite utilizar las llaves “{ }” con la finalidad de cambiar el orden de las
operaciones yen ningún otro caso.
Es habitual cometer un error al escribir una cierta expresión, sobre todo si ésta es larga y
complicada, y no darnos cuenta hasta ejecutarla y comprobar él mensaje de error!!!, esto será
algo normal si estamos empezando a conocer Matlab, mediante las teclas de los cursores
podemos editar las instrucciones escritas anteriormente y así corregirlas.
6
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Determinación de la fecha y hora
Matlab dispone de funciones que nos muestran información sobre la fecha y la hora actual.
Las funciones más importantes relacionadas con la fecha y la hora son las siguientes.
Clock: Nos devuelve un vector fila de seis elementos que representan el año, el mes, el día, la
hora, los minutos y los segundos, según él reloj interno de nuestra computadora. Los cinco
primeros son valores enteros, pero la cifra correspondiente a los segundos contiene
información hasta las milésimas de segundo.
Date: Devuelve la fecha actual como cadena de caracteres (por ejemplo: 24-Aug-2007)
Calendar: devuelve una matriz 6×7 con él calendario del mes actual, o del mes y año que
se especifique como argumento.
Para asignar un valor a una variable, por ejemplo x, usamos el signo “=”.
Por ejemplo: x=20
Notemos que este comando se ejecuta en la ventana Command Window, en forma “ruidosa”.
Para poder ejecutar este en forma silenciosa, utilizamos; “;”después de cada comando. Por
ejemplo: x=20; en general, las variables en Matlab serán matrices, pero al asignarle a cualquier
variable sólo un número, él programa se da cuenta de que estamos declarando una matriz de 1
por 1. Las variables pueden tener cualquier nombre escrito sean largos o cortos, con letras y
números. La excepción son algunos nombres de comandos ya utilizados por Matlab, por
ejemplo sin, cos, tf, etc.
Si deseamos trabajar con símbolos, hemos de indicarle al programa que se trata de símbolos.
Para esto utilizamos el comando “sym” por ejemplo, si escribimos: 2/3
El programa responde: 0.6667
En cambio, si queremos que 2 y 3 se consideren como símbolos (de forma que sólo se opere
de forma exacta con ellos), deberemos escribir:
sym(2/(3)
ans =
2/3
7
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Análogamente se pueden definir variables; por ejemplo, para definir la variable x podríamos
escribir:
x= sym('x')
Una vez definida la variable x, podremos realizar operaciones simbólicas con ella:
x+3*x
ans =
4*x
Si tenemos que utilizar varios símbolos es recomendable definirlos todos simultáneamente,
Esta instrucción va seguida de los símbolos a definir, separados por espacios; Ej.:
syms t s x y
Eps: Es él igual a 2.2204*10^-16, que es él número real de valor absoluto más pequeño que se
utiliza en Matlab. Todos los cálculos se encuentran realizados con una precisión dada por
“eps”, es decir cualquiera de dos números o mas que difieran en eps o menos serán iguales.
pi: 3.14159...
inf: infinito (en valor absoluto)
NaN: Not a number. Es el resultado que se proporciona si durante una operación se produce
0
una indeterminación, por ejemplo, 0, inf/inf.
Después de declarar varias variables es común que olvidemos algunas, para esto contamos con
el comando “who“que nos mostrara las variables declaradas hasta ese momento o para una
lista un poco más detallada sobre las características de cada variable utilizamos “whos” [3]
además de la lista proporcionara información acerca del tipo de datos en cada variable y el
tamaño que ocupa en memoria.
Si por el contrario deseamos salvar todas la variables en un archivo llamado por ejemplo
“variables”, en él directorio c: /Matlab/work/, usamos:
save variables
8
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para guardar un conjunto de variables, por ejemplo x e y, en un archivo por ejemplo
“algunas”, en el directorio c: /Matlab/work/, usamos:
save algunas x y z
Para llamar un conjunto de variables de un archivo, por ejemplo x, del archivo “algunas”:
load algunas x
Además podemos agregar variables a un archivo ya existente sin borrar las que ya hemos
grabado. Por ejemplo para grabarle la variable “otra” al archivo algunas:
save algunas otra -append
Matrices:
Para definir una matriz utilizamos "[ ]" para determinar él principio y fin de la matriz,
respectivamente. Para separar valores dentro de la matriz usamos "," para separar valores de la
fila utilizamos ";” Por ejemplo:
A= [1,2,3;4,5,6;7,8,9]
La misma matriz se puede producir usando "," para separar valores dentro de la fila y
tecleando enter para separar las filas, por ejemplo:
a=[1,2,3
4,5,6
7,8,9]
9
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para poder referirnos a un valor específico dentro de la matriz utilizamos "(,)" por ejemplo el
valor de la matriz en la fila 2 y la columna 1, seria:
Nos podemos referir a toda una columna o fila según sea el caso utilizando ":" en la posición
de las filas o columnas, indicando que hablamos de todos los valores. Una columna o fila
puede ser llamado de la siguiente manera:
a(2,:)
ans =
4 5 6
Otro comando de mucha utilidad es “det” él cual nos permite calcular el determinante de una
matriz, por ejemplo para la siguiente matriz:
3 5 2
2 3 4 3 4 2
a = 4 2 3 = 3* − 5* +2 = 3 * 2 − 5 *19 + 2 *10 = −69
2 4 −1 4 −1 2
−1 2 4
En Matlab la orden para poder obtener el determinante de esta matriz será:
a=[3 5 2;4 2 3;-1 2 4]
a=
3 5 2
4 2 3
-1 2 4
det(a)
ans =
-69
10
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para obtener el tamaño de la matriz B, usamos el comando “size”, el cual regresa el número de
renglones y columnas, Ej.:
El comando “bar”, nos muestra los valores de las matrices en forma de barras.
2 x1 + 4 x 2 + 6 x3 = 18
4 x1 + 5 x 2 + 6 x3 = 24
3x1 + x 2 − 2 x3 = 4
11
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
ans =
1 0 0 4
0 1 0 -2
0 0 1 3
De donde podemos observar que 4, -2 y son soluciones del sistema, otra forma de resolver este
sistema es por medio de si inversa:
A=[2 4 6 ; 4 5 6 ; 3 1 -2 ];
b=[18 ;24; 4];
c=inv(A)*b
c=
4.0000
-2.0000
3.0000
Suma + b+c
Resta - b-c
Producto * b*c'
Potencia ^ c^2
De la misma forma que los escalares, las matrices pueden tener poseer cualquier nombre largo
alfanumérico [5].
12
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Generando Argumentos
Podemos generar argumentos de números muy fácilmente, utilizando el operador ":"
Este operador nos genera una serie de números, que comienza en "principio", que avanza de
elemento en elemento en, "incremento", hasta que se alcanza valor "final".
Si deseamos una serie que tenga 5 elementos, comience en 1 y termine 10,
La forma de declararla es la siguiente:
1:2:10
ans =
1 3 5 7 9
Podemos realizar diversas operaciones sobre el, como por ejemplo evaluarlo para un
determinado valor de x (función polyval ()) y calcular las raíces (función roots()):
pol=[1 0 -8 6 -10]
roots(pol)
ans =
-3.2800
2.6748
0.3026 + 1.0238i
0.3026 - 1.0238i
polyval(pol,1)
ans =
-11
Para calcular producto de polinomios utilizamos una función llamada conv() ( producto de
convolución). En el siguiente ejemplo vamos a observar cómo podemos multiplicar un
polinomio de segundo grado por otro de tercer grado:
pol1=[1 -2 4]
pol1 =
1 -2 4
pol2=[1 0 3 -4]
pol2 =
1 0 3 -4
pol3=conv(pol1,pol2)
pol3 =
1 -2 7 -10 20 -16
Para dividir polinomios existe el comando llamado deconv(). Los comandos orientados al
cálculo con polinomios son las siguientes:
13
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
polyval(pol,x) : Evaluamos el polinomio pol para él valor de x. Si x es un vector, pol se
evalúa para cada elemento de x
polyvalm(pol,A): Evaluamos el polinomio pol para la matriz A
conv(p1,p2) producto de convolución de dos polinomios p1 y p2
[c,r]=deconv(p,q) división del polinomio p entre el polinomio q. En c se devuelve el cociente
y en r él residuo de la división
residue(p1,p2) descompone él cociente entre p1 y p2 en suma de fracciones simples
polyder(pol) calcula la derivada de un polinomio
polyder(p1,p2) calcula la derivada de producto de los polinomios
Graficando en Matlab:
Las gráficas son producidas por él comando “plot”, aunque se pueden generar gráficas de otras
maneras, en este caso mostraremos el uso del comando “plot”[7]. Para vamos a crear una serie
de incrementos que hemos definido anteriormente, éstos iniciaran con un valor -4 hasta +4,
con incrementos de 0.1.
El comando plot nos da la opción de cambiar la representación de los puntos en la gráfica la
forma más habitual es:
. Punto * asterisco -- segmento
o círculo - sólido
x marca : punteado
+ más -. segmento punto
Pero usaremos '.' (puntos) con lo que crearemos una gráfica de puntos.
Los tipos de color los obtenemos introduciendo la letra de cada color:
m magenta r rojo w blanco b negro
c cyan (azul g verde b azul
claro)
El comando “loglog” crea un dibujo usando escalas logarítmicas para ambos ejes, el comando
“semilogx” crea un dibujo usando una escala logarítmica para él eje x, y una escala lineal para
el eje y “semilogy” crea un dibujo usando una escala logarítmica para el eje y, y una escala
lineal para él eje x, además el comando “logspace” crea una escala para un determinado eje
Ej.:
x=logspace(-1,3); %Crea un eje x de 10^-1 a 10^3
loglog(x,exp(x)); %Grafica la función e^x
El comando “fplot” nos permite dibujar la gráfica de una función con la siguiente sintaxis[6]:
a)fplot(`función',[inicio,final])
b)fplot(`función',[inicio,final],#de puntos)
Ejemplo.
fplot('sin',[0,10],20 )
14
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para que la serie tenga una leyenda para distinguir las series gráficadas, ubicada abajo a la
derecha del gráfico:
legend('Arg','Bra',4)
Para incluirle al gráfico una rejilla y ejes, usamos:
grid on ;axis
Un comando muy útil también es “[ejes]=ginput(#)” con él que podemos señalar varios puntos
(#) en la gráfica y Matlab los desplegara en él Command Windows
Ejemplo :
x=-4:0.1:4; %Creamos él argumento
y=sin(x);
z=cos(x);
plot(x,z,'-',x,y,'.')
xlabel('Valores del tiempo');
ylabel('Funciones del tiempo');
title('Graficando con Matlab');
grid on ;axis;
% Ahora crearemos un mensaje en la pantalla;
legend(... %Creamos un mensaje que describa un poco la curva...
{'Grafica de sin','Grafica de cos'},...
'Color',[0.2078 0.6902 0.6784],...Definimos él color de fondo combinando rojo,verde,azul
'LineWidth',2,...%Definimos él ancho del borde
'XColor',[1 0 0.502],...%Él color del borde con intensidades de 0 a 1
'YColor',[1 0 0.502],...
'FontName','Technic',...%Definimos él estilo de las letras
'Location','NorthWestOutside',...%Definimos la localizacion.
'EdgeColor',[1 0 0.502]);
[x,y]=ginput(3); [x,y]
15
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para la cual debemos de definir primero el numerador Y(s) y el denominador U(s) los cuales
serán los coeficientes de los polinomios del numerador y del denominador en potencias
decrecientes de ‘s’. Por ejemplo, si deseamos definir la función de transferencia:
Y (s) 1
sistema1 = = 2
U ( s ) s + 10 s + 20
y=[1];
u=[1 10 20];
sistema1=tf(y,u)
Transfer function:
1
---------------
s^2 + 10 s + 20
Otro ejemplo seria calcular los ceros y los polos de la siguiente función de transferencia:
s +5
G( s) =
s + 2 s 2 + 3s + 1
3
Para esto calculamos las raíces del polinomio del denominador usando la instrucción:
roots(num). De manera análoga las raíces o polos del polinomio del denominador se evalúan
usando la instrucción: roots (den) [2]
16
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
num=[1 5];
den=[1 2 3 1];
sistema2=tf(num,den);
roots(num)
roots(den)
ans =
-5
ans =
-0.7849 + 1.3071i
-0.7849 - 1.3071i
-0.4302
Con lo cual podemos observar que obtenemos como resultado -5,-0.7849 ± 1.3071i,, -0.4302
sistema3=zpk(sistema1)
Zero/pole/gain:
1
-------------------
(s+7.236) (s+2.764)
Feedback
feedback(sistema1,1,-1)
Transfer function:
1
---------------
s^2 + 10 s + 21
17
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Series.
Este comando nos brinda la posibilidad de poder multiplicar dos funciones de trasferencias o
ser manipuladas como bloque que se encuentran en serie y que pueden ser unidas originando
una sola.
s+3 4
s+5 s2 +2s
También lo podríamos haber realizado usando dos veces él comando “conv” que permite la
multiplicación de polinomios.
Para obtener el lugar de las raíces, Matlab dispone del comando “rlocus”. Las diferentes
sintaxis para utilizar este comando son[10]:
rlocus(num,den): calcula y dibuja el lugar de las raíces donde ‘num’ y ‘den’ son los vectores
de los coeficientes en potencia decrecientes de ‘s’ de los polinomios del numerador y
denominador de la función de transferencia.
rlocus(num,den,k): calcula y dibuja el lugar de las raíces cuando se trabaja con la función de
transferencia y ha sido previamente definido el rango de valores de K, ganancia del sistema.
Por ejemplo de 0 a 100 con incrementos de 10: k=0:10:100
num=[1];
den=[1 10 20];
sistema1=tf(num,den)
rlocus(sistema1);
v=[-10 10 -10 10];
axis(v);
title('Lugar Geometrico de las Raices')
18
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
En Matlab disponemos del comando rlocfind el cual permite determinar los polos del sistema
para una valor determinado de k. Su sintaxis es: [k,poles] = rlocfind(num,den) que permite
determinar los polos para un valor determinado de k.
En el plano complejo seleccionamos una localización y Matlab retornará el valor de k para
esta localización y los polos asociados a esta ganancia [11].
[Ganancia,Polos]=rlocfind(sistema1)
Select a point in the graphics window
selected_point =
-5.0000 + 7.9193i
Ganancia =
67.7146
Polos =
-5.0000 + 7.9193i
-5.0000 - 7.9193i
19
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Entrada Escalón.
Para determinar la respuesta en el tiempo ante una entrada escalón unitario de algún sistema
usamos él comando ‘step’ indicando el vector del numerador y del denominador con sus
respectivos paréntesis. step(num,den) o en haciendo uso de la función transferencia,
previamente declarada step(nombre de la función transferencia)[12].
num=[1];
den=[1 0.25 1];
sistema1=tf(num,den);
step(sistema1)
step(5*sistema1,0:0.1:100)
20
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si deseamos tener una apreciación más amplia sobre cómo se comporta nuestro sistema en
una visión más panorámica, lo podemos hacer introduciendo la letra “t” en la sintaxis del
comando la cual nos mostrara la gráfica extendida según sean los segundos asignados por
t[14].
Definimos a “t” como un vector con argumentos, con elemento inicial 0, su elemento final es
100 existiendo elementos que van incrementándose de 0.1 en 0.1.
Nótese que se usamos “;” en la línea de “t”, para evitar el eco de la pantalla.
Al ejecutar el comando ‘step’ para el sistema1 se obtiene en la ventana de figuras la respuesta
escalón para los primeros 100 segundos.
21
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Entrada Impulso.
Si deseamos obtener la respuesta en el tiempo para una entrada impulso unitario se usa el
comando ‘impulse’, con la sintaxis idéntica a la que anteriormente habíamos utilizado con el
comando ‘step’[11], Definimos en Matlab los polinomios del numerador y denominador de la
función de transferencia, por ejemplo:
num=[1];
den=[1 0.25 1];
sistema1=tf(y,u);
impulse(sistema1)
Como hemos visto en Matlab podemos obtener la respuesta en el tiempo para una entrada
escalón o impulso, también podemos obtener respuesta para otras entradas como rampas o
sinusoides. El comando “lsim” permite obtener la respuesta en el tiempo para un sistema con
una entrada ‘u’, donde ‘u’ se define como una función del tiempo. La sintaxis de este comando
es: lsim(num,den,u,t) donde ‘num’ y ‘den’ son correspondientes a la función de transferencia.
Para obtener la respuesta en el tiempo para una función rampa, definimos ‘u’ de la siguiente
manera:
22
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
t=0:0.1:10;
u=t;
num=[1];
den=[1 0.25 1];
y=lsim(num,den,u,t);
plot(t,y,t,u);
Al hacer u=t se está definiendo la función rampa. t es el vector de tiempo variando desde 0
hasta 10 seg. num y den son los vectores de los coeficientes decrecientes en potencia de ‘s’ de
los polinomios del numerador y del denominador respectivamente. En la variable “y” se
almacena la salida del sistema en función del tiempo “t”. El comando plot permite desplegar
en la ventana de figuras la variable y (salida) y la entrada u (rampa) en función del tiempo, en
donde la gráfica de color verde representa la entrada y la azul la salida, obteniéndose:
t=0:0.1:10;
u=sin(t);
num=[1];
den=[1 0.25 1];
y=lsim(num,den,u,t);
plot(t,y,t,u);
23
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Diagrama de Bode.
Para obtener el diagrama de Bode, Matlab dispone del comando Bode. La sintaxis para utilizar
este comando son: [magnitud,fase,w]=bode(num,den,w) en la que Bode no muestra ninguna
gráfica en pantalla, sino que devuelve la respuesta en frecuencia del sistema en tres matrices
magnitud, fase y w. Estas matrices contienen las magnitudes y los ángulos de fase de la
respuesta en frecuencia del sistema, evaluados en los puntos de frecuencia que hayamos
especificado. El ángulo de fase se devuelve en grados.
También podemos usar la sintaxis bode(num,den) con el argumento adicional "w" para
especificar manualmente los rangos de frecuencia, de la forma: Bode(num,den,w)
24
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
num=[1];
den=[1 0.25 1];
sistema3=tf(num,den);
bode(sistema3)
25
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Simulink.
Simulink es una extensión de Matlab que nos permite realizar simulaciones y análisis de
sistemas dinámicos. Nos permite construir diagramas de bloques de manera gráfica, evaluar el
desempeño del sistema y hacer modificaciones en su diseño. En un nuestro caso estudiaremos
el paquete de Simulink para el análisis de Sistemas de Control, por lo tanto entendamos que
Simulink no es completamente un programa separado de Matlab, sino una herramienta de el.
La ventana de Matlab estará siempre disponible mientras ejecutemos una simulación en
Simulink.
Tiene un entorno parecido a las demás herramientas de Matlab, en la forma que se ejecuta de
una manera independiente de la ventana principal de comandos, pero sigue siendo la mejor
herramienta para aprovechar toda la potencia de Matlab [2].
Existen dos fases importantes en la simulación, la construcción del sistema y su análisis de
este.
Simulink posee una amplia gama de bloques, fuentes, componentes lineales y no lineales y
conectores. Nos da la opción de poder personalizar y crear nuestros propios bloques.
Podemos crear bloques de una manera jerárquica en donde un solo bloque (superbloks o
subsistemas) pueda contener dentro de si, más de un block de esta forma podemos ver un
sistema desde un nivel superior y entrando en los bloques podemos ir descendiendo a través de
los niveles para ver con más detalle.
26
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Display (indicador numérico)
To workspace (envío de datos a Matlab)
Continuous: Representan sistemas continuos por su relación entrada-salida
Derivative(bloque derivador: la salida es la derivada de la entrada)
Integrator (bloque integrador: la salida es la integral de la entrada)
Transfer Fcn (función de transferencia en s expresada como cociente de
polinomios)
Zero Pole (función de transferencia en s expresada en forma factorizada)
Math operators: Operaciones matemáticas sobre señales
Sum (sumador de señales)
Gain (ganancia o multiplicación de una señal por una constante)
Signal Routing: Permite realizar conexiones especiales entre señales
Mux: (multiplexor: agrupa distintas señales en un vector o bus)
27
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Una vez en Simulink, nos encontramos con la ventana de la librería principal de bloques.
Para que podamos realizar un diagrama de simulación debemos primero de conocer algunos
pasos básicos como, por ejemplo:
Inserción de bloques
Se trata un sistema en donde la señal de entrada es una onda senoidal, para después ser
integrada. El bloque multiplexor forma una señal vectorizada (uniendo las dos señales) que
visualizaremos en él bloque Scope (Osciloscopio).
Para construir el modelo, comenzaremos por llamar los bloques que lo integran. Los bloques
los podemos encontrar en las siguientes librerías:
Bloque Librería
Sine Wave (Onda
Sources
Senoidal)
Integrador Continuous
Mux (Multiplexor) Signal Routing
Scope (Osciloscopio) Sinks
28
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
En la librería principal elegimos el bloque ‘Sources’, donde encontramos las señales que
podemos elegir como fuentes para nuestro modelo, y realizamos lo mismo para los demás
blocas[26].
29
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
construyendo podemos ajustar el tamaño de las ventanas de forma que queden bien
distribuidas en la pantalla y nos facilite el trabajo. Después que hayamos situado todos los
bloques del sistema, él aspecto de la pantalla será él siguiente:
En general, las entradas para un bloque se encuentran en el lado izquierdo, con un símbolo >
apuntando al bloque. De la misma forma, las salidas se encuentran normalmente en el lado
derecho, con él símbolo > apuntando hacia afuera del bloque. En ocasiones por comodidad se
requiere que la dirección de las entradas sea invertido para esto lo que debemos realizar es, en
el menú ‘Format → Rotate Block’. Con lo que la estaremos girando 90 grados También
podemos girar 180 grados de una vez con la opción ‘Format → Flip Block’).
1
Left
2 to
Rotate
Right
Rotate
3
1 2 3
Up Flip Down
1 2 3
1 Rotate
Rotate Left
to 2
Right
3
30
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Podemos observar que el bloque multiplexor esta compuesto por tres entradas, de las cuales
sólo utilizaremos dos. Para modificar el número de entradas situamos el puntero del ratón
sobre el bloque y hacemos doble clic[25]. Nos mostrara el cuadro de diálogo siguiente:
Solo tenemos que cambiar el número de entradas de 3 a 2, y aplicar los cambios. Este es el
método que usaremos para cambiar los parámetros de cualquier bloque.
Para los demás bloques del modelo, no es necesario definir ningún parámetro.
Ahora que ya tenemos los bloques situados, ha llegado el momento de conectarlos. Vamos a
empezar conectando la salida del bloque de Onda Senoidal a la primera entrada del
multiplexor. Si situamos el puntero del ratón sobre la salida de la onda senoidal podremos
observar que el cursor del ratón pasa de ser la típica flecha a convertirse en una cruz. Esta es la
forma en que Simulink nos manifiesta que vamos a realizar una conexión. Cuando nos
aparezca este símbolo presionamos el botón izquierdo del ratón y lo arrastramos hasta el
puerto de entrada del multiplexor. Veremos como va apareciendo la línea de conexión, en el
momento que estemos sobre el símbolo de entrada volverá cambiar de aspecto, y apareciendo
ahora como una cruz doble, esto nos indicara que podemos terminar la conexión. Si soltamos
el botón del ratón observamos que el extremo de la conexión que acabamos de realizar cambia
para convertirse en una flecha.
31
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si por error o prueba soltamos la conexión antes del llegar al bloque de destino, la línea se
quedará flotando sin llegar a ningún sitio, podemos volver a presionarla sobre ella y alargarla
hasta donde queramos.
Haremos lo mismo para conectar el bloque multiplexor al bloque ’Scope’
También podemos realizar líneas que partan de otras líneas y lleven su misma información,
pero debemos de tener en cuenta que no podemos insertar la información de una línea en otra
línea.
Para hacer que una línea parta de otra línea picamos con el ratón en la línea mientras
mantenemos presionada la tecla ‘ctrl.’. Si nos lo hacemos así, sucederá que la línea
simplemente se moverá.
Para completar las conexiones, unimos la salida del integrador a la entrada libre del
multiplexor. Y nuestro diagrama de simulación nos quedara así:
32
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Añadir Etiquetas al sistema
En Simulink podemos escribir anotaciones en cualquier parte del diagrama de bloques. Para
escribir una anotación sólo hay que dar doble clic con el ratón en el lugar donde deseemos que
aparezca. A continuación se nos mostrara un pequeño rectángulo y él cursor se transformará
en una pequeña barra vertical. Podemos escribir varias líneas presionando la tecla ‘enter’.
Cada línea que escribamos es automáticamente centrada en el rectángulo de escritura. Para
terminar la anotación, picamos con el ratón cualquier otra parte de la ventana
Las etiquetas, podemos moverlas a cualquier parte del dibujo arrastrándolas con el ratón. Para
cambiar el tipo y tamaño de la letra, seleccionamos la anotación y en el menú "Format − Font"
haciendo los cambios necesarios.
Etiquetas de línea
Podemos incluir etiquetas a las líneas del diagrama para hacerlo más sencillo de interpretar.
Para esto hacemos doble click sobre la línea que deseamos e insertamos el comentario.
Existen otras operaciones a realizar con los bloques y líneas de Simulink, que no hemos usado
en este primer ejemplo debido a su sencillez. Algunas de estas operaciones son:
33
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
sobre el con el ratón, y cualquier objeto que estuviera seleccionado anteriormente dejará de
estarlo [2].
Si queremos seleccionar más de un objeto podemos hacerlo de dos formas. Una es haciendo
una ventana con el ratón que comprenda todos los objetos que queremos seleccionar. La otra
es ir seleccionándolos de uno en uno mientras mantenemos pulsada la tecla ‘shift’.
Si queremos seleccionar todos los elementos de la ventana activa podemos hacerlo desde el
menú ‘Edit’ con la opción: ‘Edit − Select All’.
Copiar y mover bloques de una ventana a otra: Para copiar y mover bloques de una ventana a
otra se hace de la misma forma que si los tomamos de las librerías. Para mover objetos,
seleccionamos y arrastramos con el ratón. Para copiarlos, córtalos pegarlos o borrarlos, los
seleccionamos y operamos desde el menú ‘Edit’. Además, siempre podemos utilizar las teclas
de de acceso rápido (‘ctrl.+C’=copiar, ‘ctrl.+V’=pegar, ‘ctrl.+X’=cortar, ‘delete’=borrar...).
Podemos duplicar objetos pulsando y arrastrando con el botón derecho del ratón.
Especificación de los parámetros del bloque: Para ver o modificar los parámetros de cada
bloque, hacemos doble click con él ratón sobre el bloque y nos aparece un cuadro de diálogo.
Este cuadro será distinto según cual sea el tipo de bloque que estemos tratando
Desconectar bloques: Para desconectar un bloque del modelo sin suprimirlo, mantenemos
pulsada la tecla ‘shift’ y seleccionamos y arrastramos el bloque desde su posición original en
él modelo. Esta técnica es útil, por ejemplo, para desconectar bloques.
Manipulación de los nombres de los bloques: Los nombres de bloques en Simulink deben ser
únicos y contener al menos un carácter. Si picamos con el ratón en el nombre del bloque
podemos editarlo, y si lo arrastramos podemos cambiarlo de posición. Para ocultar el nombre
de un bloque vamos al menú ‘Format → Hide name’, y para situarlo en la posición opuesta a
la que está (si está arriba ponerlo abajo, o cambiarlo de izquierda a derecha) lo hacemos desde
el menú ‘Format → Flip name’.
Mover segmentos de línea: Si deseamos mover un segmento de línea pulsamos con él ratón el
segmento y lo arrastramos hasta la nueva posición. No se pueden mover los segmentos de
líneas que están en contacto directo con los puertos de entrada y salida de los bloques.
Dividir una línea en segmentos: Podemos dividir una línea en dos segmentos dejando fijos los
extremos en sus posiciones originales. Para ello seleccionamos la línea y picamos con él ratón,
al mismo tiempo que mantenemos pulsada la tecla ‘shift’ (también podemos hacerlo pulsando
al mismo tiempo los dos botones del ratón).
34
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Mover vértices: Podemos mover los vértices de línea en cualquier dirección pulsando y
arrastrando con el ratón, excepto los vértices que están en los extremos de línea.
Visualizar señales
Simulink dispone de varios bloques distintos para la visualización de señales. Para nuestro
ejemplo arrancaremos nuestro diagrama desde el menú Simulation → Start, y comenzara a ser
simulado, para obtener las señales de salida bastara con hacer doble clic en él block Scope
para que se nos muestre la ventana de visualización [20].
En color rosa podemos ver la señal que genera él bloque integrador, mientras que en color
amarillo vemos la onda senoidal de la que partíamos.
Con él botón podemos ajustar la escala del visualizador de forma automática.
Además, mediante el botón con el dibujo de la lupa podemos acercar o alejar la escala de la
gráfica según pulsemos con él botón derecho del ratón (acercar), o con él izquierdo (alejar).
Guardar un modelo
Para guardar un modelo vamos al menú ‘File − Save’, si él modelo ya tiene un nombre
asignado, o ‘File − Save As...’, cuando es la primera vez que vamos a guardarlo.
El modelo se guardará con extensión .mdl.
Subsistemas
Como mencionamos al principio de este capitulo la creación de subsistemas puede simplificar
bastante nuestro diagrama de bloques, ya que consiste en agrupar varios bloques como si
fueran uno solo. Para acceder a los elementos que forman el subsistema basta con hacer doble
clic con el ratón sobre el bloque subsistema.
35
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Uso de subsistemas.
36
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Una vez que tenemos creado el modelo, para crear el subsistema seleccionamos con el ratón
todos los bloques del modelo, y en el menú Edit seleccionamos la opción 'Create Subsystem':
Vemos que él subsistema se representa como un bloque en el que solo vemos las entradas y las
salidas:
37
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si queremos ver otra vez el contenido del subsistema y acceder a sus bloques, hacemos doble
clic con el puntero del ratón y veremos lo que hay en su interior.
Ejemplos de Simulink
Ejemplo 1
Respuesta transitoria a una entrada escalón
Si deseamos visualizar la repuesta del sistema G(s) ante una entrada escalón, del siguiente
sistema [26]:
25
G( s) = 2
s + 4s + 25
Para ello, los bloques los obtendremos de las siguientes librerías:
BLOQUE LIBRERÍA
Step Sources
Transfer Fcn Continuos
Mux Signal Routing
Scope Sinks
El modelo que construiremos con Simulink es el siguiente:
38
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
39
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para ver la respuesta del sistema a la entrada en escalón comenzamos la simulación, con la
opción ‘Start’ del menú Simulación. Antes ajustamos él tiempo de simulación. Un valor
pequeño de tiempo será suficiente para ver la respuesta (3.5 sg)
40
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si abrimos el bloque scope, vemos la repuesta del sistema ante la entrada escalón (pulsar para
ampliar)
Ejemplo 2
Respuesta transitoria a una entrada rampa [26].
Igual que el ejercicio anterior, pero queremos visualizar la repuesta del sistema G(s) ante una
entrada rampa:
1
G( s) = 2
s + s +1
El modelo que construiremos con Simulink es él siguiente:
41
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para esto, los bloques los obtendremos de las siguientes librerías:
BLOQUE LIBRERÍA
Ramp Sources
Transfer Fcn Continuos
Mux Signal Routing
Scope Sinks
42
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
En el bloque Mux pondremos el número de entradas a 2
Para ver la respuesta del sistema a la entrada en escalón comenzamos la simulación, con la
opción ‘Start’ del menú Simulación:
43
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si abrimos él bloque ‘scope’, la repuesta del sistema ante una entrada rampa (pulsar para
ampliar)
Ejemplo 3
Curvas de Respuesta ante una entrada escalón de un sistema de segundo orden [26]
Consideramos un sistema de segundo orden:
C (s) ωn s 2
= 2
R (s) s + 2 ςω n + 1
44
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Vamos a considerar cinco valores diferentes de zeta: ς=0.1, 0.3, 0.5, 0.7, 1.0, y vamos a
obtener las curvas de respuesta al escalón unitario para cada zeta con Simulink. Para construir
él modelo, vamos a utilizar 5 funciones de transferencia, una para cada uno de los
denominadores que obtendremos para cada valor de zeta. Por ejemplo, la primera FDT será:
s s
FDT 1 = 2 = 2
1s + 2 ∗ 0.1* s + 1 1s + 0.2 s + 1
El modelo que construiremos con Simulink es el siguiente:
BLOQUE LIBRERÍA
Step Sources
Transfer Fcn Continuos
Mux Signal Routing
Scope Sinks
45
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Los únicos bloques en que hay que definir parámetros son el bloque ‘Mux’ y el bloque
‘Transfer Func’.
En el bloque ‘Mux’ pondremos el número de entradas a 5
En cada bloque Transfer Func pondremos cada uno de las cinco funciones de transferencia,
una para cada valor de zeta
Para ver la respuesta del sistema a la entrada en escalón comenzamos la simulación, con la
opción ‘Start’ del menú Simulación:
En el bloque scope podemos ver las cinco curvas que se forman, según el valor de zeta: (pulsar
para ampliar)
46
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Introducción a SCILAB.
Si tú tienes una manzana, yo tengo una manzana y
las intercambiamos, seguiremos teniendo una
manzana cada uno. Pero si tú tienes una idea, yo
tengo una idea, y las intercambiamos, cada uno de
nosotros tendrá dos ideas [15].
Scilab está concebido como un software libre, como usuarios podemos modificarlo y
distribuirlo. Emplea un entorno de ventanas amigable que recuerda mucho a Matlab, Maple,
Mathematica, etc.
Se encuentra registrado y avalado ante la “Fundación para el Software Libre”, organización
creada por Richard Stallman con el propósito de difundir el software libre, ésta enfocada a
eliminar las restricciones sobre el copiado, redistribución, entendimiento y modificación de
programas de computadoras, esto con el fin de que se propicie el desarrollo y uso del software
libre en todas las áreas de la computación.
Según la enciclopedia libre Wikipedia. Software libre es el software que, una vez obtenido,
puede ser usado, copiado, estudiado, modificado y redistribuido libremente. El software libre
suele estar disponible gratuitamente en Internet, o a precio del costo de la distribución a través
de otros medios; sin embargo no es obligatorio que sea así y, aunque conserve su carácter de
libre, puede ser vendido comercialmente. Análogamente, el software gratuito (denominado
usualmente Freeware) incluye en algunas ocasiones el código fuente; sin embargo, este tipo de
software no es libre en el mismo sentido que el software libre, a excepción que se permitan
modificaciones y redistribuciones de dichas versiones modificadas del programa [17].
48
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
"libertad 0" Ejecutar el programa con cualquier propósito (privado, educativo, público,
comercial, etc.)
"libertad 1", Estudiar y Modificar el programa (para lo cuál es necesario poder acceder al
código fuente)
"libertad 2", Copiar el programa de manera que se pueda distribuir a cualquiera persona.
"libertad 3", Mejorar el programa, y hacer Públicas las mejoras, de forma que nos
beneficiemos toda la comunidad.
Es importante señalar que las libertades 1 y 3 obligan a que se tenga acceso al código fuente.
La "libertad 2" hace referencia a la libertad de redistribuir el software libremente bajo algún
tipo de licencia de software libre que beneficie a la comunidad a la cual pertenecemos todos
los usuarios [18]...
El término software no libre se emplea para referirse al software distribuido bajo una licencia
de software más restrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad
intelectual reservan la mayoría de los derechos de modificación, duplicación y redistribución
para el dueño del copyright; el software dispuesto bajo una licencia de software libre permite
específicamente la mayoría de estos derechos reservados.
La definición de software libre contempla el asunto del precio; un eslogan frecuentemente
usado es "libre como en libertad de expresión no como en cerveza gratis" aludiendo a la
ambigüedad del término inglés "free", es habitual ver a la venta CD’s de software libre como
distribuciones. Sin embargo, en esta situación, como compradores del CD tenemos el derecho
de copiarlo y redistribuirlo.
Para evitar la confusión, algunas personas utilizan los términos "libre" (Libre software) y
"gratis" (Gratis software) para evitar la ambigüedad de la palabra inglesa "free". Sin embargo,
estos términos alternativos son usados únicamente dentro del movimiento del software libre,
aunque están extendiéndose lentamente hacia el resto del mundo [15].
Ejemplos y evolución
Existe una gran cantidad de software, cada vez mayor, disponible bajo licencias de software
libre. Los observadores (y adeptos) a menudo interpretan este fenómeno como el movimiento
del software libre., el servidor de transporte de correo Sendmail, el Servidor web Apache, , el
sistema X Window, la suite de ofimática OpenOffice.org, el navegador Mozilla son algunos
ejemplos.
49
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Significación Política
Una vez que un producto de software libre ha empezado a circular, rápidamente está
disponible a un costo muy bajo o sin costo. Al mismo tiempo, su utilidad no decrece. Esto
significa que el software libre se puede caracterizar como un bien público en lugar de un bien
privado. Aunque realmente no lo es en ningún momento.
Puesto que el software libre permite el libre uso, modificación y redistribución, a menudo
encuentra un hogar en los países del tercer mundo para los cuales el costo del software no libre
es a veces prohibitivo. También es sencillo modificarlo localmente, lo que permite que sean
posibles los esfuerzos de traducción a idiomas que no son necesariamente rentables
comercialmente. La mayoría del software libre se produce por equipos internacionales que
cooperan a través de la libre asociación. Los equipos están típicamente compuestos por
individuos con una amplia variedad de motivaciones. Existen muchas posturas acerca de la
relación entre el software libre y el actual sistema económico capitalista.
Algunos consideran el software libre como un competidor del capitalismo, una forma de
anarquismo práctico. Algunos más consideran el software libre como otra forma de
competición en el mercado libre, y que el copyright es una restricción gubernamental sobre el
mercado.
Otros comparan el software libre a una economía del regalo, donde el valor de una persona
está basado en lo que ésta da a los demás.
Grupos como Oekonux e Hipatia consideran que todo debería producirse de ésta forma y que
este modelo de producción no se limita a reemplazar el modelo no libre de desarrollo del
software. La cooperación basada en la libre asociación puede usarse y se usa para otros
propósitos (tales como escribir enciclopedias, por ejemplo).
Seguridad Relativa
Existe una cierta controversia sobre la seguridad del software libre frente al software
comercial. Un método usado de forma habitual para determinar la seguridad relativa de los
productos es determinar cuántos fallos de seguridad no corregidos existen en cada uno de los
productos involucrados. Por lo general los usuarios de este método recomiendan que cuando
un producto no proporcione un método de corregir los fallos de seguridad, no se use dicho
producto, al menos hasta que no esté disponible un arreglo.
A fecha de Diciembre de 2005 el sitio de seguridad “Secunia” cuenta cero fallos de seguridad
no parcheados (no arreglados aún) para los productos software libre más usados para
navegación de Internet, productividad de oficina y e-mail -Mozilla Firefox, OpenOffice.org y
Mozilla Thunderbird-, en comparación con los varios fallos de seguridad aún no corregidos
para cada uno de los tres principales productos no libres equivalentes (hechos por Microsoft) -
Internet Explorer, Microsoft Office y Outlook Express.
50
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Introducción a Scilab.
Fue desarrollado en el INRIA, “Institut National de Recherche en Informatique et
Automatique”, un excelente instituto francés de investigación. Posteriormente colaboro la
escuela de ingenieros aeronáuticos ENPC, “Ecole Nationale de Ponts et Chaussées”.
Actualmente hay un gran consorcio con empresas como Renault, Peugeot-Citroen, CEA
“Commissariat á l’Energie Atomique”, CNES “Centre National d'Etudes spatiales”, Dassault
Aviation, EDF “Electricité de France”, [8]...
Es un software libre (free), similar a Matlab y a otros paquetes comerciales existentes, Utiliza
un ambiente gráfico interactivo combinado con un lenguaje de programación de alto nivel.
Una vez descargado e instalado, ocupará alrededor de 120 MB en el disco duro de nuestras
computadoras. Un paquete como Scilab puede satisfacer nuestras necesidades de estudiantes y
futuros profesionales de ingeniería y ciencias cuando no se dispone de software comercial,
como por ejemplo Matlab, dado el alto costo de las licencias comerciales académicas y
profesionales y la dificultad de adquirir versiones estudiantiles del software comercial en
algunos países.
51
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Una vez ubicados en la página de Scilab, nos dirigimos al recuadro de la izquierda donde se
aprecia una columna y en la sexta fila de arriba hacia abajo hacemos un doble clic en
“DOWNLANDS” en donde nos abrirá una ventana como la que se muestra a continuación:
52
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Una vez mostrada la ventana de arriba, hacemos doble clic en el recuadro de abajo en donde
se lee “NEW SINCE SCILAB 3.1.1 y se elige por el sistema operativo que se deseé como la
mayoría de nosotros tiene instalada en sus computadoras un sistema operativo Windows
elegimos el archivo exe.file, nuevamente hacemos doble clic y nos aparecerá el cuadro de
descarga de Windows donde nos indicara si deseamos abrir, guardar o cancelar, en guardar
damos doble clic y empezara la descarga, ésta toma aproximadamente 5 a 15 minutos
dependiendo de la velocidad de conexión que se tenga, una vez que se haya descargado, nos
aparecerá el lugar donde lo hayamos descargado el archivo ejecutable. A continuación el
archivo se ejecutara como cualquier programa que hayamos instalado en Windows.
Es importante decir que www.Scilab.org va actualizando con frecuencia la versión,
corrigiendo errores e implementando nuevas funciones [12].
Inicio de Scilab.
Una vez instalado Scilab correctamente en nuestra PC, se creara una icono con su logo en
nuestro escritorio en la siguiente figura se puede apreciar como aparecerá, a continuación
procedemos a hacer doble clic para ejecutarlo, o también podemos dirigirnos al menú INICIO
dentro del menú programas y buscar la carpeta de Scilab. Procedemos hacer doble clic en
Scilab 3.1.1
Una vez arrancado nos aparecerá la primera ventana de Scilab con el siguiente encabezado y
el signo del Prompt -- >, el signo del Prompt indica que Scilab ésta listo para recibir y ejecutar
los comandos que le indiquemos.
53
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Sci. Files
Los Sci.Files son programas que podemos crear en el editor de Scilab, llamado SciPad,
podemos acceder a el desde el menú Editor para después ser guardados en C:\Documents and
Settings\Mis Documentos podemos cambiar ésta ubicación a nuestro modo más sencillo de
trabajo, para ejecutar el programa deseado debemos de hacerlo con el comando “exec”, de la
siguiente manera exec (`nombre_del_archivo.sci’)
Líneas de comentario.
El entorno de Scilab es muy parecido a los demás programas es por eso que para mantener el
orden de las líneas de código es recomendable usar comentarios en Scilab empiezan con //,
mientras que en Matlab empiezan con %.
Variables Booleanas.
Las variables booleanas en Scilab son %T y %F, mientras que en Matlab son 0 y 1.
Polinomios.
En Scilab los polinomios y matrices polinómicas son definidas por la función poly, mientras
que en Matlab son considerados como vectores de coeficientes [12].
La forma de declarar el orden de los polinomios es inversa a la manera de hacerlo con Matlab.
Gráficos.
Son muy similares, con el comando plot.
54
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
La ayuda en Scilab se muestra tecleando help en la Ventana Principal o pulsando el icono del
signo de interrogación. En cualquier caso, si no incluimos ninguna palabra sobre la que
solicitamos la ayuda, Scilab devolverá una lista con los temas existentes tal como ésta...
Si deseamos tener información mas detallada sobre alguna función basta con escribir ‘help’ y
a continuación el nombre de la función o de la orden. Por ejemplo
‘help evans’. Para esto se requiere que la función “evans” exista.
Al usar la orden who, Scilab muestra las variables que estamos usando en ese momento.
Scilab dispone también de aproximadamente 500 comandos [29], los cuales tienen ciertos
formatos de escritura. En primer lugar, vamos a descubrir que también Scilab distingue entre
mayúsculas y minúsculas por lo que casi siempre los comandos e instrucciones básicas se
escriben con minúsculas.
Por ejemplo, no es lo mismo %pi que %Pi. Podemos teclear ambas expresiones y descubrir
que la primera funciona perfectamente mientras que la segunda causa un error al ser ejecutada.
La precisión utilizada es aproximadamente 10 dígitos. La presición con que deseamos trabajar
puede ser modificada por la siguiente sintaxis:
format ([type], [long]) de donde
55
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
La presición con que deseamos trabajar puede ser modificada por los siguientes comandos:
Para regresar al formato inicial, el formato “variable" (el predefinido por Scilab) se usa format
('v'), por ejemplo:
format('v', 10)
Para los Números decimales Scilab solo realiza conversiones entre estos por medio del
comando “dec2hex” [27]. Ejemplo:
dec2hex([10 11 12 13 14 15 16])
ans =
!A B C D E F 10 !
56
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Uso de Variables y Escalares.
Para asignar un valor a una variable, que llamaremos por ejemplo x, se usa el signo “=”. Por
ejemplo:
>> x=20
Notemos que este comando se ejecuta, en forma “ruidosa”. Para que un comando se ejecute
forma silenciosa, utilizamos; “;”después de cada comando. Por ejemplo: x=20; en general, las
variables en Scilab serán matrices, pero al asignarle a cualquier variable sólo un número, el
programa se da cuenta de que estamos hablando de una matriz de 1x1, es decir, un escalar. Las
variables pueden tener cualquier nombre escrito sean largos o cortos, con letras y números. La
excepción son algunos nombres ya utilizados por el lenguaje, por ejemplo sin, cos, evans etc.
Para Scilab, como se ha indicado anteriormente, todos los objetos son matrices numéricas. Si
deseamos trabajar con símbolos, hemos de indicarle al programa que se trata de símbolos.
Para ello se utiliza la función ldivf; por ejemplo, si escribimos: 2/3
El programa responde: 0.6667
En cambio, si queremos que 2 y 3 se consideren como símbolos (de forma que sólo se opere
de forma exacta con ellos), deberemos escribir:
ldivf('5','4')
ans =
5\4
Análogamente se pueden definir variables; por ejemplo, para definir la variable x podríamos
escribir:
x=poly(0,'x')
Una vez que hallamos definida la variable x, podemos realizar operaciones simbólicas con
ella:
x+3*x
ans =
4x
Scilab ya tiene asignada algunas variables que solo son necesarias llamarlas seguidas de el
signo de %, algunas variables predefinidas por Scilab son, %i, raíz cuadrada de -1 ( − 1 ), %pi
que representa 3.1416 y %e que represénta 2.7182…. Ej.
%pi %e
%pi = %e =
3.1415927 2.7182818
57
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Otras constantes especiales usadas por Scilab son:
nan, ésta singular constante significa que no es un número, lo podemos comprobar asiendo la
siguiente operación, donde la operación que se efectúa tendrá siempre como resultado un nan,
Ej.:
1+%nan
ans =
Nan
Expresiones y funciones.
Como en todos los programas las expresiones matemáticas elementales se construyen
empleando los símbolos = (igual), + (suma), - (sustracción),* (multiplicación) / (división), ^
(potenciación) el orden jerárquico de operación es el mismo. Los paréntesis tienen la misma
jerarquía que en Matlab la cual sigue siendo para organizar adecuadamente expresiones
complejas [24]. Una forma en que podemos decirle al programa que una instrucción
demasiado larga no ha terminado y que continúa en la siguiente línea es situar tres puntos al
final de la línea.
Manejo de Escalares:
Si deseamos declarar una variable de tipo escalar introducimos el nombre de la variable que va
a interpretarla en este caso el nombre es “c” y se iguala con el valor que tendrá dándole a
continuación enter, Las sentencias pueden acabar en punto y coma o no, según queramos que
aparezca o no reflejado el resultado de comando. Esto es útil en muchos casos, para eliminar el
innecesario "ruido" en la pantalla de sentencias.
// c tendrá un valor de 20
c=20
c =
20.
Las variables en Scilab pueden tener cualquier nombre largos escritos con letras. La excepción
son algunas variables ya asignadas automáticamente por Scilab.
58
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
El cual tiene la característica de ser un programa Caps-sensitive igual que Matlab, es decir,
para el programa Scilab, la variable es distinta si tiene mayúscula o no. Por ejemplo: C es
distinto de c, o A es distinto de a. Esto lo podemos comprobar asignándole un valor a la
variable C y después volviéndola a llamar para comprobar que su valor es diferente a la
variable que anteriormente habíamos declarado (sistema), Ej.:
C=3
C =
3.
Operaciones Básicas:
C/c
ans =
0.15
Como todos sabemos la división por cero ésta indefinida por lo tanto si intentamos realizar
ésta operación Scilab nos devolverá un mensaje así:
c/0
!--error 27
división by zero...
Potencia:
Para elevar a una determinada potencia basta con usar el signo de “^” o en su defecto el doble
signo de la multiplicación
“**” Ej.:
2**3 2^3
ans = ans =
8. 8.
Raíces:
Para obtener la raíz cuadrada podemos utilizar el comando “sqrt” seguido de un par de
paréntesis con los que encerramos la variable a la cual le queremos substraer la raíz. Para esto
crearemos la variable “l” con el resultado de elevar al cuadrado c
l=20;,c=2; sqrt(l)
l=c^2 ans =
l = 400. 20.
59
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Función Exponencial ex
Para obtener ésta función usamos el comando “exp”
exp(C)
ans =
20.085537
Logaritmo:
Para obtener el logaritmo usamos el comando log para hallar el logaritmo natural y log10 para
hallar el logaritmo en base 10, aunque también podemos obtener el logaritmo en base 5 o 2
usando el comando “log5” o “log2”
log(2.7182818) log10(10000)
ans = ans =
1.0000000 4.
Eliminación de Variables:
Para seccionarnos que ésta ha quedado eliminado la podemos llamar nuevamente y observar lo
que Scilab nos muestra:
r
!--error 4
undefined variable : r
Funciones Trigonométricas:
En Scilab podemos obtener las funciones trigonometrícas a las variables declaradas, aunque
debemos de tener precaución por que Scilab trabaja en RADIANES y no en grados como
normalmente lo hacemos así que para introducir un valor y esperar obtener el valor en grados
previamente habremos de convertir de grados a radianes[29].
Por ejemplo para obtener el seno de un ángulo de 30º debemos de convertir a radianes:
30º*π
a=
180º
l=(30*%pi)/180;
sin(l)
ans =
0.5
60
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Algunas de las funciones trigonometrìcas más usuales en Scilab son:
Matrices:
Para crear una matriz basta dar sus valores entre corchetes separando por espacios blancos los
elementos de una misma fila y por punto y coma las distintas filas Scilab las creara
automáticamente, así mismo la sintaxis es la misma que en Matlab por ejemplo declaremos la
siguiente matriz:
v=[4 2 3 6; 1 0 3 2 ]
v =
! 4. 2. 3. 6. !
! 1. 0 3. 2 !
Si deseamos localizar elemento, una fila o una columna particular se especifica con la
notación (<fila>,<columna>), v(:,<columna>), v(<fila>,:) por ejemplo
61
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
También existen las funciones propias del tratamiento matricial. De la misma manera que en
Matlab, tenemos la inversa "inv()", determinante "det()", etc. La operación denominada
transposición que consiste en convertir las filas en columnas y las columnas en filas de un
vector o matriz (v') se realiza situando el apóstrofe " ' " a la derecha del vector, por ejemplo v' .
Para realizar las operaciones básicas como son el producto, potencia, división y división
inversa en formato "punto a punto" debemos anteponer "." a la primera variable sujeta a la
operación. Esto hace que dicha operación se realice elemento por elemento dentro de la
matriz. Podemos darnos cuenta que la suma y resta son operaciones elemento por elemento en
matrices y, por lo tanto, no necesitamos usar "." Por ejemplo, declaramos las siguientes
matrices de 1x3:
v1=[1,2,3]; v2=[4,5,6];
Operación
Producto
v1.*v2
ans =
! 4. 10. 18. !
Potencia
v1.^2
ans =
! 1. 4. 9. !
División
v1./v2
ans =
! 0.25 0.4 0.5 !
Multiplicación
v1.*v2
ans =
! 4. 10. 18. !
62
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
De la misma forma que los escalares, las matrices pueden tener poseer cualquier nombre largo
alfanumérico.
Generando Argumentos
Existen también otros vectores útiles como el vector nulo formado por N ceros y el vector
constante igual a 1 formado por N unos, esto se consigue con las sentencias: zeros (1: N), por
ejemplo para una matriz de ceros, que se valle incrementado por ceros a partir de 1 hasta
llegar a 5 columnas nos quedaría de la siguiente forma.
zeros(1:5)
ans =
! 0. 0. 0. 0. 0. !
ones(1:5)
ans =
! 1. 1. 1. 1. 1. !
ones(4:5)
ans =
! 1. 1. !
63
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
− E1 + E 2 + ( R1 + R 2) * I1 − R 2 * I 2 − R1* I 3 = 0
− E 2 − R 2 * I 1 + ( R 2 + R 3 + R 4) * I 2 − R 3 * I 3 = 0
E 3 − R1* I1 − R3 * I 2 + ( R1 + R3 + R5) * I 3 = 0
( R1 + R 2) * I1 − R2 * I 2 * R1* I 3 = E1 − E 2
− R 2 * I1 + ( R 2 + R 3 + R 4) * I " − R3 * I 3 = E2
− R1* I1 − R3 * I 2 + ( R1 + R3 + R5) * I 3 = − E3
Suponiendo que los vales de las resistencias y las fuentes de voltaje son:
R1 = 4Ω R 2 = 8Ω R3 = 7Ω R 4 = 9Ω R 5 = 2Ω
E1 = 9V E 2 = 6V E 3 = 8V
12 − 8 − 4 I1 3
− 8 24 7 I 2 = 6
4 − 7 13 I 3 − 8
64
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Ahora nos queda simplemente, resolver este sistemas de ecuaciones lineales en Scilab para la
cual vamos a declarar la matriz de las resistencias y la matriz de los voltajes, procedemos a
resolverla y obtendremos los valores de las corrientes de nuestro circuito.
A=[12 -8 -4; -8 24 7;4 -7 13]
V=[3;6;-8]
I=inv(A)*V
I =
! 0.4525611 !
! 0.5366705 !
! - 0.4656577 !
Solución:
I1 = 0.4525611
I 2 = 0.5366705
I 3 = −0.4656577
a) Especificando las raíces del polinomio compuesto por p = 2 - 3x + x2 , las cuales son 1 y 2.
La instrucción es la siguiente:
p = poly( [1 2 ], 'x')
p =
2
2 - 3x + x
Para hallar la raíz de un polinomio basta con utilizar el comando roots ( ) el cual nos devolverá
las raíces del polinomio por ejemplo para obtener las raíces del polinomio anteriormente
creado:
roots(p)
ans =
! 1. !
! 2. !
b)Otra forma de crear polinomios es a través de sus coeficientes en este caso también se usa el
comando “poly”, en comillas simples la variable base del polinomio seguida de coma “,” en
comillas simples la letra ‘c’ que significa coeficientes y se cierran paréntesis.
root(q)
ans = -0.5
q = poly( [1 2 ], 'x', 'c')
q = 1+ 2x
65
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Las operaciones algebraicas elementales suma, resta, producto y cociente las realizamos con
los operadores habituales p+q, p-q, p*q, p/q.
Graficando en Scilab.
-3D Rot.: Permite aplicar rotaciones a los gráficos tridimensionales empleando el ratón.
-2D Zoom: Amplia un gráfico 2D. Este comando puede ser ejecutado recursivamente.
-UnZoom: Recupera el gráfico inicial.
-File: Abre un panel que permite imprimir el gráfico, exportarlo a un formato específico y
salvarlo como gráfico Scilab para después recuperarlo.
El comando plot nos permite elaborar gráficos simples siguiendo la siguiente sintaxis.
Plot(x,y,”titulo del eje x”,”titulo del eje y”, titulo grafico,
En donde x e y son vectores del mismo tamaño y la gráfica a realizar es y con respecto a x.
Cabe mencionar que una gráfica entre más puntos tenga mejor resolución se tendrá, por
ejemplo si graficamos el coseno tendríamos:
Clf
;x=[1:0.05:10];
plot(x, cos(x),'b.>');//la letra "b" indica color azul y el signo los puntos de la grafica;
xtitle(“Números de 1 a 10","coseno de x","coseno")
66
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Otro comando que utilizar es el plot2d, el cual permite elaborar gráficos con mejores
características de la siguiente manera:
Plot2d( variable independiente, variable dependiente), “argumentos”
Clf;
x=[-4:0.05:4];
plot2d(x,sin(2*x))
67
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para la cual debemos definir primero el numerador Y(s) y el denominador U(s) como vectores,
cuyos elementos serán son los coeficientes de los polinomios del numerador y del
denominador en potencias decrecientes de la variable compleja “S”
Función de Transferencia
El primer paso para crear una función transferencia en Scilab, es conocer el comando “syslin”,
cual nos permitirá convertir los polinomios del numerador y denominador en función de
transferencia.
Y (s) 1
H ( s) = = 2
U ( s ) S + 0.25S + 1
s=poly(0,'s')
s =
s
68
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
num=poly([1],'s','c'),
den=poly([ 1 0.25 1 ],'s','c')
num =
1
den =
2
1 + 0.25s + s
Recordemos que Scilab trabaja los polinomios contrarios al modo de Matlab, declarándolos de
derecha a izquierda. La función transferencia creada por medio del comando “syslin”, que
define nuestro sistema lineal, quedándonos de la siguiente manera:
sistema=syslin('c',num,den)
sistema =
1
-------------
2
1 + 0.25s + s
Nota: En este caso la 'c' nos indica que el sistema se ésta especificando en un dominio del
tiempo continuo
Otro ejemplo sería calcular los ceros y los polos de la siguiente función de transferencia:
s +5
G( s) =
s + 2 s 2 + 3s + 1
3
Para calcular las raíces del polinomio del denominador usamos la sintaxis:
roots(num) lo cual produce -5 como resultado. De manera análoga los polos del polinomio se
evalúan usando la instrucción: roots(den)
num=poly([5 1],'s','c');
den=poly([ 1 3 2 1],'s','c');
sistema=syslin('c',num,den);
roots(num)
roots(den)
ans =
- 5.
ans =
! - 0.4301597 !
! - 0.7849201 + 1.3071413i !
! - 0.7849201 - 1.3071413i !
69
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Con lo cual podemos observar que tenemos un cero en -5, polos en -0.7849 ± 1.3071i y
-0.4302
Retroalimentación:
En Scilab el manejo de los diagramas de bloques se realiza de la misma manera que en Matlab
con los comandos “Feedback” y “Series”, En un sistema compensado, es decir, dentro de un
lazo de retroalimentación negativa, podemos emplear en lugar de los comandos anteriores el
operador “/.[-1]” que representa una retroalimentación negativa igual a uno y el operador “*”
que representa el comando “Series” el cual multiplica dos o mas funciones de transferencia.
Por ejemplo:
1
s2 +10s+20
s=poly(0,'s');
num=poly([1],'s','c');
den=poly([20 10 1],'s','c');
g=syslin('c',num,den)
ft=g/.[1]
ft =
1
-----------
2
21 + 10s + s
Un ejemplo más de reducción sería le siguiente diagrama, el cual reduciremos a una sola
función de transferencia:
2
H2
1 s2 +1
1
s+1 s2 +4s+4
s+10
G2 G3
G1
H3
70
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
s=poly(0,'s');
G1=syslin('c',poly([1],'s','c'),poly([10 1],'s','c'));
G2=syslin('c',poly([1],'s','c'),poly([1 1],'s','c'));
G3=syslin('c',poly([1 0 1],'s','c'),poly([4 4 1],'s','c'));
H2=syslin('c',poly([2],'s','c'),poly([1],'s','c'));
H3=syslin('c',poly([1],'s','c'),poly([1],'s','c'));
w1=G2*G3;
w1=G2*G3 ;
w2=w1/.[H2];
w3=w2*G1;
tf=w3/.[1]
tf =
2
1+s
---------------------------------
2 3 4
61 + 86s + 79s + 17s + s
s2+1
s4+17s3+79s2+86s+61
ft
Para el lugar geométrico de las raíces, Scilab dispone del comando “evans”. El cual es análogo
al comando “rlocus, la sintaxis para utilizar el comando “evans” es la siguiente: evans(nombre
de la función transferencia, ganancia máxima que se desea). Por ejemplo:
1
D( s) = 1 + k
S + 10 S + 20
2
s=poly(0,'s');
num=poly([1],’s’,’c’)
den=poly([20 10 1],’s’,’c’)
sistema5=syslin(‘c’,num,den)
instante=0:0.05:45;
evans(sistema5,60)
71
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Donde podemos observar los polos ubicados en -7.25 ,0 y -3.125, 0 y el recorrido que tiene
hasta -5,0 en donde se unen y se separan en ese mismo punto hasta finalizar su recorrido.
Entrada Escalón.
1
G (s) =
s + 0.25 * s + 1
2
s=poly(0,'s');
num=poly([1],’s’,’c’)
den=poly([1 0.25 1],’s’,’c’)
sistema6=syslin(‘c’,num,den)
instante=0:0.05:45;
y=csim('step',instante,sistema6);
plot2d(instante',y')
72
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
A continuación, Scilab despliega la respuesta para una entrada escalón para la función de
transferencia:
Si deseamos tener una apreciación amplia de cómo se comporta nuestro sistema en una mejor
vista, lo podemos hacer incrementando el valor final de “instante” en la sintaxis del comando
la cual nos dará una ampliación en la gráfica extendiéndola según sean los segundos
asignados;
instante=0:0.05:100;
y=csim('step',instante,sistema6);
plot2d(instante',y')
Nótese que se usamos “;” en la línea de “t” para evitar el eco de la pantalla.
73
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Entrada Impulso.
Si deseamos obtener la respuesta en el tiempo para una entrada impulso la sintaxis es igual a la
que anteriormente habíamos utilizado con el comando “step”[12]. Definimos en Scilab los
polinomios del numerador y denominador de la función de transferencia, por ejemplo:
s=poly(0,'s');
sistema7=syslin('c',(s^2+5*s+4),(s**3+6*s**2+11*s+6))
sistema7 =
2
4 + 5s + s
----------------
2 3
6 + 11s + 6s + s
instante=0:0.0001:3;
y=csim('imp',instante,sistema2);
plot2d(instante',y')
74
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Diagrama de Bode.
El comando Bode calcula las magnitudes y los ángulos de fase de la respuesta en frecuencia de
sistemas continuos, lineales e invariantes en el tiempo. Los diagramas de Bode se utilizan
frecuentemente para analizar y diseñar sistemas de control. Estos diagramas indican el margen
de ganancia, al margen de fase.
Para obtener el diagrama de Bode de una función de transferencia, debemos de declarar dos
vectores cuyos elementos son los coeficientes de los polinomios del numerador y del
denominador en potencias decrecientes de S. Estos vectores son usados en el comando bode
con la siguiente sintaxis: bode(num,den) o bode(función transferencia)
Para obtener el diagrama de Bode de una función de transferencia, debemos de declarar dos
vectores cuyos elementos son los coeficientes de los polinomios del numerador y del
denominador en potencias decrecientes de S. Estos vectores son usados en el comando bode
con la siguiente sintaxis: bode (num, den). Definimos la función de transferencia:
Y ( s) 1
H ( s) = = 2
U ( s ) s + 0.25s + 1.0
75
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
sistema8=syslin('c',(1),(s**2+0.25*s+1))
sistema8 =
1
-------------
2
1 + 0.25s + s
bode(sistema8);
76
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Scicos
Scicos es una herramienta para el modelado y simulación de los sistemas de control del
software Scilab desarrollado en INRIA (Intitute National de Recherche en Informatique et en
Automatique), al igual que Scilab
Con la interfaz gráfica de usuario (GUI), podemos usar los diagramas de bloques para
construir los modelos de los sistemas, los blocks pueden ser obtenidos desde varias paletas,
además maneja un ambiente similar a Windows y se pueden grabar, cargar, salvar, compilar y
simular usando las interfaces gráficas de Scicos.
Antes de tener nuestra primera experiencia con Scicos vamos a tomar en cuenta algunas
sugerencias para realizar nuestros modelos:
2.-Utilicemos sistemas jerárquicos, siempre que sea posible procuremos estandarizar y realizar
modelos sencillos de comprender, esto con el fin de que la persona que los interprete pueda
realizar mejor su estudio y nos facilite nuestra tarea, los modelos complejos los podemos
incorporar de jerarquías haciendo uso de los subsistemas o superblocks.
3.- Realicemos modelos claros, bien organizados y documentados que serán fáciles de
entender. Para lo anterior, vamos a utilizar etiquetas para las señales y anotaciones sobre el
modelo.
Iniciar en la ventana principal de Scicos y que ésta se encuentre vacía sin ningún archivo de
Scicos cargado.
Abrir una o varias paletas
Copiar los blocks desde las paletas para después pegarlos en nuestro diagrama
Cambiar el parámetro de los blocks de acuerdo a nuestro sistema.
Conectar las entradas y las salidas de los blocks.
77
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Compilar y Simular unl Diagrama.
Para empezar con Scicos desde la ventana principal de Scilab debemos escribir el comando
Scicos; con lo que se nos abrirá la ventana del editor de Scicos:
En donde podremos construir nuestros diagramas para que sean modelados mediante la
interconexión de bloques o subsistemas; los subsistemas son también llamados súper bloques
(superblocks) que forman un único bloque partiendo de un conjunto de bloques simples de la
misma manera que en Matlab.
Para abrir la ventana principal de Scicos debo teclear Scicos () en Scilab, Una vez ejecutado
este comando se nos mostrara una ventana como la siguiente:
El primer paso para construir un nuevo modelo es abrir una o más paletas de bloques, usando
el botón ‘Palettes’ que se encuentra dentro del menú ‘Edit’ se mostrara un cuadro de dialogo
en donde están las paletas que se tienen para construir un diagrama de simulación
78
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Las opciones hacen referencia a las distintas formas en como están agrupadas los blocks, las
principales son:
Sources: Entradas o fuentes de señales
Sinks: Salidas o dispositivos de visualización/almacenamiento de variables
Del sistema
Linear: Características de los sistemas lineales.
Eventos: Álgebra Booleana.
La copia de bloques en la ventana principal de Scicos desde las paletas, se realiza haciendo
click en el botón copy del menú Edit. Vamos a construir un modelo como ejemplo, para copiar
hacemos click con el botón izquierdo del ratón y arrastramos hasta la ventana principal de
Scicos; volviendo a hacer click con el botón izquierdo.
79
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para esto el primer paso será abrir el menú Edit y seleccionar Palettes, como se hizo
anteriormente, a continuación encontramos el block del generador de ondas (sinusoid
generador) y el reloj de activación.
El block integrador lo encontramos en la paleta lineal, y el block “mscope” en la paleta
oldblock. Los copiamos con el botón derecho del Mouse y después los pegamos en la ventana
de Scicos, quedándonos:
80
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Procedemos a unir los blocks, conectando las entradas y salidas de los bloques, seleccionando
primero el botón Link del menú Edit.
Una vez hecho click en el botón Link, hacemos click sobre la salida de un bloque y luego
sobre la entrada del siguiente, quedándonos ambos conectados. También podemos partir o
terminar en puntos intermedios en los enlaces, o sea hacemos click sobre el botón Link y
pinchamos en un punto de un enlace a partir del cual podemos obtener las bifurcaciones que
deseemos [12].
El proceso de enlazado puede ser detenido cuando deseemos simplemente haciendo click en el
botón de derecho del ratón. El arreglo que nos deberá de quedar será el mostrado al principio,
a continuación una vez completo el modelo podemos realizar la simulación usando Run del
menú Simulate. Una vez seleccionado el botón Run se realiza la compilación del modelo (si
no ha sido ya compilado) y después la simulación. La simulación puede ser detenida en
cualquier momento simplemente haciendo click sobre el botón Stop en la ventana principal de
Scicos.
Si la compilación resulta correcta, se simulara en muy poco tiempo, mostrando una gráfica
como la siguiente:
Como podemos ver en las gráficas anteriores hemos obtenido una simulación con los
parámetros que incluían los bloques por defecto. Con una simple visualizaciones podemos
observar que las escalas no están acordes con las señales, por lo que los parámetros de los
bloques pueden ser modificados abriendo los menús de dialogo, simplemente seleccionando el
botón Open/set del menú Object. Ahora vamos a modificar los parámetros de los bloques de
nuestro ejemplo, con el único fin de obtener una salida gráfica en buenas condiciones.
81
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Como decíamos la gráfica no ésta adecuada para los valores de la onda senoidal mostrada,
dado que el eje “Y” solo llega hasta el valor de 1, esto lo podemos modificar haciendo doble
clic en el block del MScope, y se nos mostrara una ventana como la siguiente donde
modificaremos los valores mínimos de “Y”, vamos a cambiar los de valores de 0 y -1, por
valores de “Y” de 1 y 2, el cambio de periodo “Refresh Period” le damos un valor de 50.
82
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
En este caso vamos a representar un sistema físico formado por una masa M unida a un muelle
de constante elástica K, y con un rozamiento viscoso B, representado como un amortiguador
tal y como se describe en la figura:
K
f(t)
M
B
El objetivo será ver cómo afecta la fuerza aplicada f (t) al movimiento de la masa, descrito por
x (t). La ecuación diferencial que rige el comportamiento de este sistema es:
d 2 x(t ) dx(t )
f (t ) = M * 2
+B + K * x(t )
dt dt
Para representar este sistema en Scicos, veremos a continuación unos ejemplos de utilización
de los bloques integrador, sumador y multiplicador por una constante [11].
Bloque integrador: permite obtener a partir de d2x (t)/dt2 sus integrales d.C. (t)/d.C. y x (t):
Bloque sumador: permite sumar/restar señales
Bloque multiplicador o ganancia: permite multiplicar un bloque por una constante:
Una vez vistos esto, pasaremos a representar la ecuación diferencial propuesta. Para ello
Despejaremos de la ecuación inicial el término d2x (t)/dt2, obteniendo:
83
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
d 2 x(t ) 1 dx(t )
= * f (t ) − B * − K * x(t )
dt 2 M dt
dx (t )
1 dx (t ) d x (t )
2
f (t ) * f (t ) − B * − K * x (t ) = dt x (t )
M dt dt 2
1
K = 10 B =1 =1
Se han elegido los siguientes valores para las M
constantes:
K=10 B=1
M=1 F(t)=Función escalón
Nota: en el diagrama que se muestra alguno de los bloques se encuentran girados para que sea
más fácil realizar las conexiones.
84
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Una vez que hemos creado el esquema que permite simular un determinado sistema físico,
podemos comprobar hasta qué punto es útil disponer de una simulación para comprobar el
funcionamiento de cualquier sistema.
A continuación vamos a modelar la siguiente ecuación diferencial de segundo orden con
coeficientes constantes.
y”+1.2y’+16.36y=100
La modificamos para poder conectar los bloques de acuerdo a las ecuaciones, para ello
hacemos:
y”= 100-1.2y’-16.36y
Observamos que hay tres sumados en el segundo miembro de la última ecuación, por lo tanto
conectamos tres entradas al sumador compuesto, rotulando cada entrada con el sumando
correspondiente del segundo miembro de la ecuación, la salida y’’ se aplica al integrador
obteniéndose y’,si se integra nuevamente se obtiene y ,la variable y’ se la multiplica por 1.2 y
se aplica a una entrada del sumador el cual modifica su signo y a la variable y se la multiplica
por 16.36 y se la aplica al sumador,
85
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Subsistemas
86
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Ejemplo 1
Respuesta transitoria a una entrada escalón
Si deseamos visualizar la repuesta del sistema G(s) ante una entrada escalón, del siguiente
sistema:
25
G( s) = 2
s + 4s + 25
Para ello, los bloques los obtendremos de las siguientes librerías o paletas:
BLOQUE PALETAS
Step Sources
Función de
Linear
Transferencia
Mux OldBlocks
Set clock Sources
Sumador OldBlocks
Scope OldBlocks
87
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para ver la respuesta del sistema a la entrada en escalón comenzamos la simulación, con la
opción “Simulate”. Antes ajustamos el tiempo de simulación. Un valor pequeño de tiempo
será suficiente para ver la respuesta (3.5 sg)
88
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
89
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Vi I1 C1 I2 C2
I3 C3 Vo
Para el circuito anterior, tomemos los valores para modelo matemático de resistencias y las
capacitancías, como R1, R2, R3 = R = 1 mΩ C1, C2, C3 = C = 100 nF
Z 1 = R1 Z 2 = C1 Z 3 = R2 Z 4 = C2 Z 5 = R3 Z 6 = C3
vi − vA vA vA − vB
= +
Z1 Z2 Z3
z1 z1 z1
vi = vA + vA − vB + vA
z2 z3 z3 ................................................(1)
vA − vB vB − vC vB
= +
Z3 Z5 Z4
z3 z3 z3
vA = vB − vC + vB + vB
z5 z5 z4 ...................................(2)
vB − vC vC
=
Z5 Z6
z5
vB = vC + vC
z6 ...........(3)
90
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
R1 R2 R3 Rn = 1 MΩ
C1 C2 C3 Cn, = 100 nF
91
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Ahora sustituimos los valores de las resistencias, pasados al dominio de la variable compleja,
para ser tratados como operaciones algebraicas, quedándonos:
Z1 R1
= = SC 3 R1 = (1mΩ)(100nF ) S = 0.1S
Z 6 1 SC 3
Z1 Z 5 R1 R3
= 2
= S 2 R1 R3 C 2 C 3 = (1mΩ) 2 (100nF ) 2 S 2 = 0.01S 2
Z 4 Z 6 1 S C 2 C3
Z1 R1
= = SC 2 R1 = (1mΩ)(100nF ) S = 0.1S
Z 4 1 SC 2
Z 3 Z1 R1 R2
= 2
= S 2 R1 R2 C1C 3 = (1mΩ) 2 (100nF ) 2 = 0.01S 2
Z 6 Z 2 1 S C1C 3
Z 3 Z 5 Z1 R1 R2 R3
= = S 3 R1 R2 R3C1C 2 C 3 = (1mΩ) 3 (100nF ) 3 S 2 = 0.001S 3
Z 4 Z 6 Z 2 1 S 3 C1C 2 C 3
Z 3 Z1 R1 R2
= = S 2 R1 R2 C1C 3 = (1mΩ) 2 (100nF ) 2 S 2 = 0.01S 2
Z 4 Z 2 1 S 2 C1C 3
Z 5 Z1 R1 R3
= 2
= S 2 R1 R3C1C 3 = (1mΩ) 2 (100nF ) 2 S 2 = 0.01S 2
Z 6 Z 2 1 S C1C 3
Z1 R1
= = SC1 R1 = (1mΩ)(100nF ) S = 0.1S
Z 2 1 SC1
Z5 R3
= = SC 3 R3 = (1mΩ)(100nF ) S = 0.1S
Z 6 1 SC 3
Z3 R2
= = SC 3 R2 = (1mΩ)(100nF ) S = 0.1S
Z 6 1 SC 3
Z3Z5 R2 R3
= = S 2 R2 R3C 2 C 3 = (1mΩ) 2 (100nF ) 2 S 2 = 0.01S 2
Z 4 Z 6 1 S 2 C 2 C3
Z3 R2
= = SC 2 R2 = (1mΩ)(100nF ) S = 0.1S
Z 4 1 SC 2
Z5 R3
= = SC 3 R3 = (1mΩ)(100nF ) S = 0.1S
Z 6 1 SC 3
92
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Ordenando los coeficientes:
V i = [ 0 . 1 S + 0 . 01 S 2 + 0 . 1 S + 0 . 01 S 2 + 0 . 001 S 3 + 0 . 01 S 2 + 0 . 01 S 2
+ 0 . 1 S + 0 . 1 S + 0 . 01 S 2 + 0 . 1 S + 0 . 1 S + 1]V C
V i = [ 0 . 001 S 3 + 0 . 05 S 2 + 0 . 6 S + 1]V C
Vo( s ) 1
=
V i( s ) 0 . 001 S + 0 . 05 S 2 + 0 . 6 S + 1
3
Todas las operaciones algebraicas y aritméticas realizadas anteriormente las podemos realizar
en Matlab declarando los valores de los parámetros del circuito e introduciendo la ecuación
(4), quedándonos de la siguiente manera:
93
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
1
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon
Visualizacion
Funcion de Transferencia
Circuito RC3
94
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Con la gráfica mostrada arriba observamos que existe un tiempo de asentamiento, de 2
segundos con un respuesta de 0.977 volts del sistema, con lo que podemos decir que se acerca
demasiado a la entrada de un valor de1 volts.
En general los sistemas físicos reales que forman parte del sistema de control poseen inercias
que le impiden seguir la señal de entrada de manera instantánea, esto implica la existencia de
un período transitorio que es necesario que conozcamos el tiempo requerido para llegar al
estado estacionario.
1
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon
Visualizacion
Funcion de Transferencia
Circuito RC3
La gráfica nos muestra que la respuesta del sistema aumenta si velocidad de respuesta también
lo hace, con un tiempo de establecimiento de unos 0.9 segundos En contra, la respuesta del
sistema ha disminuido significativamente, aproximadamente 0.5 V.
95
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Realizando un análisis de las respuestas de las gráficas observamos que en lazo abierto y lazo
cerrado la respuesta cayo de 1 volt a 0.5 volt, esto sucede debido a que el tiempo tiende a
infinito en el dominio de Laplace, esto es lo mismo que la variable compleja tienda a cero.
1
sistema _ RC 3 =
0.001s + 0.05s 2 + 0.6 s + 1
3
1
sistema _ RC 3 =
0.001s + 0.05s 2 + 0.6 s + 2
3
1
5
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon Control
Proporcional Visualizacion
Funcion de Transferencia
Circuito RC3
Variamos experimentalmente los valores de la ganancia desde cero hasta lograr que los polos
traspasen al semiplano derecho y con esto se consiga la inestabilidad del circuito o sistema
pudiendo observar los diferentes tipos de respuestas que se obtiene,
96
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=3
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
k=5
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
97
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=10
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
k=17
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
98
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=29
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
k=30
sistema=tf([1],[0.001 0.05 0.6 1]);%FT del circuito
ganancia=tf([k],[1]);%Control Proporcional, valores de K
a=series(sistema,ganancia);%Multiplicacion de los bloques
b=feedback(a,1,-1);%Lazo Abierto
step(b)%Analsis con entrada escalón
%%Analizando la grafica observamos que el sistema se vuelve mas rapido
Analizando cada una de las graficas observamos como cambia su respuesta al variar la
ganancia con valores de 3 a 30.
99
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
A la vista de las gráficas anteriores podemos concretar unos rangos de ganancias a los que les
corresponden distintas respuestas.
Obtenemos respuestas sobre amortiguadas con ganancias inferiores a 3.
La respuesta es críticamente estable con una ganancia de 29.
La respuesta es subamortiguada. En el rango de valores de la ganancia entre 3 y 29
La respuesta es inestable con valores mayores a 29
1
3
0.001s3 +0.05s2 +0.6s+1
"k=3"
Funcion de Transferencia
Circuito RC3, K=3
1
10
0.001s3 +0.05s2 +0.6s+1
Mux
Entrada Escalon
Visualizacion.
1
17
0.001s3 +0.05s2 +0.6s+1
"k=17"
Funcion de Transferencia
Circuito RC3, K=17
1
29
0.001s3 +0.05s2 +0.6s+1
1
30
0.001s3 +0.05s2 +0.6s+1
100
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
101
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Controlador PID.
Un controlador PID dispone de un componente proporcional (Kp), un componente integrativo
(Ti) y un componente derivativo (Td), de tal manera que produce una señal de control igual a
Donde la acción integrativa del controlador tiene su mayor efecto sobre la respuesta
estacionaria del sistema (tratando de minimizar el valor de ess) y la acción derivativa tiene su
mayor efecto sobre la parte transitoria de la respuesta.
Para obtener el control PID vamos a utilizar el método de la ganancia crítica, desarrollado por
Ziegler y Nichols quienes propusieron reglas para determinar los valores de la ganancia
proporcional Kp, del tiempo integral Ti y del tiempo derivativo Td, basándose en las
características de la respuesta transitoria de un sistema dado. Existen dos métodos
desarrollado el primero se basa en obtener la respuesta del sistema a una entrada escalón
unitario de manera experimental en donde si el sistema no contiene integradores ni polos
dominantes complejos conjugados la curva de respuesta tendrá la forma de S, a partir de estas
curvas podemos obtener parámetros como el tiempo de retardo y la constante del tiempo del
sistema en donde aplicando los valores de la tabla de Ziegler y Nichols se obtiene el
controlador PID.
El segundo método es el que utilizaremos para modelar nuestro sistema RC de tercer orden, se
basa en dar un valor infinito al tiempo de integración y un valor nulo al tiempo de derivación.
Usando solo la acción del control proporcional e ir incrementando los valores de la ganancia
proporcional desde cero hasta un valor crítico, donde la respuesta del sistema se nos vuelva
inestable, pasando por oscilaciones sostenidas cabe mencionar que si para cualquier valor
que pueda tomar k no se presentan las oscilaciones sostenidas este método no aplica, en
nuestro caso esto sí existen los periodos sostenidos y sí podremos obtener el la ganancia
critica y el periodo critico correspondiente.
Para comenzar vamos a determinar primero el valor de K hasta que el sistema se encuentre en
la estabilidad marginal. Es decir cuando la salida muestre oscilaciones estables.
En este punto vamos a medir el valor de la ganancia crítica el cual ya hemos obtenido
previamente y corresponde a un valor de 29 y el periodo de oscilación al cual llamaremos
periodo crítico, este lo obtenemos aplicando el método de Routh Hurwitz el cual representa un
procedimiento para evaluar la estabilidad absoluta de un sistema lineal e invariante en el
tiempo donde por medio de la inspección del polinomio formado por la ecuación
característica.
Vo ( s) 1
=
Vi ( s ) 0.001S + 0.05S 2 + 0.6S + 1
3
102
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
De donde la ecuación característica tiene la forma de:
S3 1 600
S2 50 1000+1000K
S1 580-20K
S0 1000+1000K
1 1
Tcr = = = 0.256seg .
f 3.9
Con estos valores obtenidos usaremos la tabla desarrollada por Zieglers y Nichols:
Tipo de Kp 1
controlador T1 Td
P 0.5* K c
PI 0.45* K c Tu
1.2
PID 0.6 * K c Tcr 2 Tcr 2
Kp 1 Ti Td
PID = 0 .6 * K u Tcr 2 Tcr 2
Podemos observar que el controlador PID sintonizado mediante el segundo método de Ziegler
y Nichols nos produce la siguiente ecuación:
103
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
1 1
Gc ( S ) = K p 1 + + Td S ⇒ 0.6 K cr 1 + + 0.125Pcr S
Ti S 0.5Pcr S
2
⇒ 0.6 K cr 1 + + 0.125Pcr S
Pcr S Sacando a S como factor común:
2 K
0.6 K cr 0.125Pcr S 2 + S + 0.075K cr Pcr S 2 + 0.6 K cr S + 1.2 cr
Pcr Pcr
⇒
S ⇒ S
S 16
0.075K cr Pcr ( S 2 + 8 + 2 )
⇒ Pcr P cr
S
Obtenemos:
2
4
0.075K cr Pcr S +
⇒ Pcr
S
Podemos observar que el controlador contiene un polo en el origen y un cero doble en − 4 Pcr
Ahora con los valores que anteriormente habíamos obtenido de la ganancia y el periodo crítico
los sustituimos en el controlador PID de Ziegler y Nichols, quedándonos de la siguiente
forma:
2
4
2
0.075K cr Pcr S + 4
0.075 * 30 * 0.256 S +
Pcr ⇒ 0.256
S S
104
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Controlador Ssistema
1000
PID
s3 +50s2 +600s+1000
Escalon Controlador Mux
sistema
Osciloscopio
Una vez obtenido nuestro diagrama de bloques, procedemos a pasarlo a Matlab para simular la
respuesta ante una entrada escalón unitario, quedándonos de la siguiente manera:
La siguiente figura nos muestra la curva de la respuesta escalón unitario resultante, el sobre
impulso es de aproximadamente un 54%. Este sobre impulso es excesivo y se puede reducir
mediante una sintonización muy fina a los parámetros del controlador que hemos diseñado
105
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Para lograr una mejor respuesta del controlador la podemos obtener haciendo que el efecto del
doble cero moviéndolo de -15.625 a -7.8125 y mantenido la ganancia K p obtenida por la tabla
de Ziegler y Nichols con el mismo valor de 18,
1 1
Gc ( S ) = K p 1 + + Td S = 0.6 K cr 1 + + 0.125 Pcr S
Ti S 0.5 Pcr S
2
4
0.075K cr Pcr S +
Pcr 4
de donde = 7.8125 ⇒ Pcr = 0.512
S Pcr
Obtenemos la siguiente figura en donde podemos observar que el sobre impulso se ha dismi-
nuido hasta un 18%, lo cual esta por debajo del criterio de Ziegler y Nichols que establece un
sobre impulso de un 25% aprox., nuestra figura para el controlador anterior es la siguiente:
106
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si incrementamos la ganancia proporcional al doble sin modificar la localización del doble
cero (S= -7.8125), así como incrementando el valor de la ganancia critica: Kp = 0.6 * Kc
entonces tendremos que para un doble valor Kp= 36
2
4
2
Kp 36 4
0.075 Pcr S + 0.075 * * 0.512 S +
0.6 Pcr ⇒ 0.6 0.512
S S
Con lo que obtenemos una sobre impulso bastante cercana a un 25% y la respuesta del sistema
es aun más rápida:
107
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
PID Sistema
108
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Caso de Estudio resuelto con Scilab.
Circuito Eléctrico:
R1 VA R2 VB R3
Vi I1 C1 I2 C2
I3 C3 Vo
Vo ( s) 1
=
Vi ( s ) 0.001S + 0.05S 2 + 0.6S + 1
3
Todas las operaciones algebraicas y aritméticas realizadas anteriormente las podemos realizar
en Scilab declarando los valores de los parámetros del circuito e introduciendo la ecuación (4),
quedándonos de la siguiente manera:
109
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
1
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon
Visualizacion
Funcion de Transferencia
Circuito RC3
s=poly(0,'s'); instante=0:0.05:3;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
y=csim('step',instante,sistema_RC3);
plot2d(instante',y')
110
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Con la grafica mostrada arriba observamos que existe un tiempo de asentamiento, de 2
segundos con una respuesta de 0.977 volts del sistema, con lo que podemos decir que se
acerca demasiado a la entrada de un valor de 1 volts.
En general los sistemas físicos reales que poseen inercias que le impiden seguir la señal de
entrada de manera instantánea, esto implica la existencia de un período transitorio que es
necesario que conozcamos el tiempo requerido para llegar al estado estacionario.
1
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon
Visualizacion
Funcion de Transferencia
Circuito RC3
s=poly(0,'s'); ;instante=0:0.05:1;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
sistema=sistema_RC3/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
La grafica nos muestra que la respuesta del sistema aumenta si velocidad de respuesta tambíen
lo hace, con un tiempo de establecimiento de unos 0.9 segundos En contra, la respuesta del
sistema ha disminuido significativamente, aproximadamente 0.5 V.
111
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Realizando un análisis de las respuestas de las graficas observamos que en lazo abierto y lazo
cerrado la respuesta cayo de 1 volt a 0.5 volt, esto sucede debido a que el tiempo tiende a
infinito en el dominio de Laplace, esto es lo mismo que la variable compleja tienda a cero.
1
sistema _ RC 3 =
0.001s + 0.05s 2 + 0.6 s + 1
3
1
sistema _ RC 3 =
0.001s + 0.05s 2 + 0.6 s + 2
3
1
5
0.001s3 +0.05s2 +0.6s+1 Mux
Entrada Escalon Control
Proporcional Visualizacion
Funcion de Transferencia
Circuito RC3
Variamos experimentalmente los valores de la ganancia desde cero hasta lograr que los polos
traspasen al semiplano derecho y con esto se consiga la inestabilidad del circuito o sistema
pudiendo observar los diferentes tipos de respuestas que se obtiene,
112
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=3;
s=poly(0,'s'); ;instante=0:0.05:0.9;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
k=5;
s=poly(0,'s'); ;instante=0:0.05:1;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
113
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=10;
s=poly(0,'s'); ;instante=0:0.01:1.5;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
k=17;
s=poly(0,'s'); ;instante=0:0.01:1.5;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
114
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
k=29;
s=poly(0,'s'); ;instante=0:0.01:3;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
k=30;
s=poly(0,'s'); ;instante=0:0.01:3;
sistema_RC3=syslin('c',1/(0.001*s^3+0.05*s^2+0.6*s+1))
ganancia=k
a=sistema_RC3*ganancia;//multiplicacion de los bloques
sistema=a/.[1]
y=csim('step',instante,sistema);plot2d(instante',y')
115
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Analizando cada una de las graficas observamos como cambia su respuesta al variar su
ganancia con valores de 3 a 30.
A la vista de las gráficas anteriores podemos concretar unos rangos de ganancias a los que les
corresponden distintas respuestas.
116
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
117
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
De los parámetros que anteriormente obtuvimos con la tabla de Ziegler y Nichols, obtuvimos
el siguiente controlador:
Controlador Sistema
Una vez obtenido nuestro diagrama de bloques, procedemos a pasarlo a Scilab para simular la
respuesta ante una entrada escalón unitario, quedándonos de la siguiente manera:
s=poly(0,'s'); ;instante=0:0.01:1.2;
num=poly([1000],'s','c'),
den=poly([ 1000 600 50 1],'s','c')
sistema=syslin('c',num,den)
num_con=poly([140.6246 18 0.576],'s','c'),
den_con=poly([0 1],'s','c')
controlador_PID =syslin('c',num_con,den_con)
sistema_lazo_cerrado=controlador_PID*sistema
sistema_lazo_abierto=sistema_lazo_cerrado/.[1]
y=csim('step',instante,sistema_lazo_abierto);
plot2d(instante',y')
118
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Del segundo intento de mejorar el controlador y haciendo una sintonización, obtuvimos el
siguiente diagrama:
Controlador Sistema
s=poly(0,'s'); ;instante=0:0.01:0.6;
num=poly([1000],'s','c'); den=poly([ 1000 600 50 1],'s','c');
sistema=syslin('c',num,den)
num_con=poly([7.8125^2 7.8125*2*1 1 ],'s','c'); den_con=poly([0 1],'s','c');
controlador=syslin('c',num_con,den_con);
controlador_PID=controlador*0.075*30*0.512
sistema_lazo_cerrado=controlador_PID*sistema
sistema_lazo_abierto=sistema_lazo_cerrado/.[1]
y=csim('step',instante,sistema_lazo_abierto); plot2d(instante',y')
119
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Del tercer intento de mejorar el controlador y volviendo a hacer una haciendo una
sintonización, obtuvimos el siguiente diagrama:
Controlador Sistema
s=poly(0,'s'); ;instante=0:0.01:0.5;num=poly([1000],'s','c');
den=poly([ 1000 600 50 1],'s','c');sistema=syslin('c',num,den)
num_con=poly([7.8125^2 7.8125*2*1 1 ],'s','c');den_con=poly([0 1],'s','c');
controlador=syslin('c',num_con,den_con);
controlador_PID=controlador*0.075*(36/0.6)*0.512
sistema_lazo_cerrado=controlador_PID*sistema
sistema_lazo_abierto=sistema_lazo_cerrado/.[1]
y=csim('step',instante,sistema_lazo_abierto);
plot2d(instante',y')
120
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Si incrementamos la ganancia proporcional al doble sin modificar la localización del doble
cero (S= -7.8125), también incrementaremos el valor de la ganancia critica: Kp = 0.6 * Kc
entonces tendremos que para un doble valor Kp= 36
2
Kp 4 36 4
2
0.075 Pcr S + * 0.512 S +
0.6
0.075 *
Pcr 0. 6 0.512
S = S
2.304(S + 7.8125)
2
= S
s=poly(0,'s'); ;instante=0:0.01:0.5;
num=poly([1000],'s','c');
den=poly([ 1000 600 50 1],'s','c');
sistema=syslin('c',num,den)
num_con=poly([7.8125^2 7.8125*2*1 1 ],'s','c');
den_con=poly([0 1],'s','c');
controlador=syslin('c',num_con,den_con);
controlador_PID=controlador*0.075*(36/0.6)*0.512
sistema_lazo_cerrado=controlador_PID*sistema
sistema_lazo_abierto=sistema_lazo_cerrado/.[1]
y=csim('step',instante,sistema_lazo_abierto);
plot2d(instante',y')
Con lo que obtenemos una sobreelogación bastante cercana a un 25% y la respuesta del
sistema es aun más rápida.
121
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
K p = 0.6 K c ∴ K c = K p / 0.6 → K c = 60
Por lo tanto
Pcr = 0.512 Tu
El periodo critico es =
Kp 1 Td
T1
PID = Tcr Tcr
0 .6 * k c
2 8
0.6 * 60 = 36 → Kp
0.512
= 0.256 → 3.90625 → Ti
2
0.512
= 0.064 → Td
8
122
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
123
RESUMEN.
Diseñar y simular un controlador PID de acuerdo a los criterios de Ziegler y Nichols para el
siguiente sistema.
Vo( s ) 1
=
V i( s ) 0 . 001 S 3 + 0 . 05 S 2 + 0 . 6 S + 1
2.304 S 2 + 36 S + 140.6251
S
s=poly(0,'s'); ;instante=0:0.01:0.5;
num=poly([1000],'s','c');
den=poly([ 1000 600 50 1],'s','c');
sistema=tf([1000],[1 50 600 1000])
sistema=syslin('c',num,den)
num_cont = [2.304 36 140.6251 ]
num_con=poly([7.8125^2 7.8125*2*1 1 ],'s','c');
den_cont = [1 0]
den_con=poly([0 1],'s','c');
controlador_PID =tf(num_cont,den_cont)
controlador=syslin('c',num_con,den_con);
sistema_lazo_cerrado=series(controlador_PI
controlador_PID=controlador*0.075*(36/0.6)*0.512
D,sistema)
sistema_lazo_cerrado=controlador_PID*sistema
sistema_lazo_abierto=feedback(sistema_lazo
sistema_lazo_abierto=sistema_lazo_cerrado/.[1]
_cerrado,1)
y=csim('step',instante,sistema_lazo_abierto);
step(sistema_lazo_abierto)
plot2d(instante',y')
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
Bibliografía
[1] The Mathworks, Inc. Matlab,
Edición del estudiante. Guía del usuario.
Editorial: Prentice Hall,
Madrid. 2004
123
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
[10] Manual de Introducción al Tratamiento de Señales con Scilab para usuarios de Matlab.
Autor: Bernardo A. Delicado ([email protected]).
Programa de Doctorado en Automática e Informática Industrial.
Escuela Técnica Superior de Ingenieros Industriales
Universidad Politécnica de Madrid edición 2006
[17] Los nuevos cercamientos en el dominio público contra la privatización del mundo.
Daniel Bensaïd.
http://www.ft.org.ar/Notasft.asp?ID=1185
124
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
[18] ¿"Crisis del trabajo" o crisis del capitalismo?
Juan Chingo.
http://www.ft.org.ar/estrategia/ei1112/trabajo.htm
125
Autor: César Leyva Rodríguez email: [email protected]
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD VERACRUZANA.
[26] Proyecto Fin de Carrera
Tutorial On Line de Matlab y Simulink
Autor: Inmaculada Olivares Olivares
Director: Dr. Juan Domingo Aguilar Peña
Escuela Superior de Ingenieros Industriales de Navarra.
España junio 2004
126