Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ELECTRÓNICA
INGENIERÍA MECATRÓNICA
2. OBJETIVOS
2.1. GENERAL
Aprender conceptos básicos de MATLAB y analizar los programas para poder
comprender de una manera más práctica los temas tratados en la materia
Sistemas de Control Automático.
2.2. ESPECÍFICOS
Consultar y aprender del software MATLAB, funcionamiento, aplicaciones,
programación básica, etc.
Analizar cada uno de los ejemplos del capítulo 4 en Matlab adquiridos en el CD
del libro de Sistemas de Control para Ingeniería de Norman Nise.
Desarrollar el informe correspondiente exponiendo lo consultado, lo aprendido y
lo analizado acerca de cada uno de los programas de Matlab.
Presentar el documento.
3. RESUMEN
El presente trabajo tiene como objetivo analizar cada programa en Matlab de temas del
segundo parcial dispuesto en el cd de Sistemas de Control para la Ingeniería de Norman
Nise. Se analizó el diseño de un algoritmo en el software Matlab para poder encontrar la
representación de espacios de entado en el dominio del tiempo, el análisis del error de
un sistema de control y de terminar su estabilidad. Se usará las rutinas de matrices en
Matlab para simplificar la entrada de funciones de transferencia complicadas, así como
el análisis del error en estado estable para entradas escalón, rampa, parábola.
4. ABSTRACT
The present work aims to analyze each Matlab program of topics from the second
part set out in the Norman Nise Control Systems for Engineering CD. The design of
an algorithm in Matlab software was analyzed to be able to find the representation
of entrant spaces in the time domain, the analysis of the error of a control system
and to determine its stability. Matrix routines in Matlab will be used to simplify the
input of complicated transfer functions, as well as the analysis of the steady-state
error for step, ramp, and parabola inputs.
5.1. Aprender
Conocer qué son y cómo nos pueden ayudar a adquirir nuevos conocimientos, las
estrategias de aprendizaje son fundamentales para sacar el máximo partido a nuestras
horas de estudio. Cuando decidimos aprender o incrementar nuestros conocimientos sobre
una materia, el objetivo es hacerlo de la manera más eficaz y para conseguirlo es necesario
conocer y manejar las diferentes estrategias de aprendizaje.
Las estrategias de aprendizaje son un conjunto de actividades, tácticas y recursos que
empleamos de manera consciente para alcanzar unos objetivos concretos.
Creación de nexos. Es una estrategia en la que, para aprender una nueva materia, lo que se
hace es establecer nexos entre lo que ya se sabe y lo que es nuevo. De esta manera, aquello
que aún no hemos adquirido o asimilado se integra más rápidamente en nuestra mente
porque lo relacionamos con algo que ya conocemos. Cuando se estudia con este tipo de
estrategia de aprendizaje es habitual crear analogías o describir de forma concisa como está
relacionado el material nuevo y el que ya nos es familiar. Al usar esta estrategia el
estudiante toma notas, realiza resúmenes o responde preguntas.
Estructuración. Consiste en organizar los contenidos para que su adquisición nos resulte
más sencilla y para que asimilemos y anclemos bien esos conocimientos. Al estructurar la
materia ya estamos realizando un ejercicio de análisis y comprensión. Para poner en
práctica esta estrategia de aprendizaje es muy común realizar resúmenes, subrayados,
esquemas o mapas mentales que contienen los conceptos clave.
Repetición de contenidos. La base de esta estrategia de aprendizaje es la repetición de los
contenidos que queremos adquirir. El método de trabajo a través de la repetición de
contenidos consiste en que la persona que está estudiando vaya asimilando una
determinada materia, repitiendo el contenido de forma verbal o escrita. Esta repetición
consciente favorece que la materia se vaya integrando poco a poco en nuestra mente.
Algunos ejemplos de la estrategia de repetición son repetir en voz alta términos clave,
copiar los conceptos más importantes o marcarlos en un texto.
Revisión de lo adquirido. La persona que está estudiando o aprendiendo algo revise de
manera consciente todo lo que está haciendo para aprender. Es decir, que analice y evalúe
lo que ha hecho y lo que ha conseguido. (Educaweb, n.d.)
5.2. Analizar
Es un conjunto de manipulaciones, transformaciones, operaciones, reflexiones,
comprobaciones que realizamos sobre los datos con el fin de extraer significado relevante
en relación a un problema de investigación. Algunas técnicas de análisis son:
Figura 1.Análisis de información.
Considere la función ƒ(𝑡) definida por toda 𝑡 ≥ 0. La transformada de Laplace de ƒ(𝑡), denotado por (𝑠),
se define como
∞
(1)
(𝑠) = 𝑓{ƒ(𝑡)} = ∫ 𝑒−𝑠𝑡ƒ(𝑡)𝑑𝑡
0_
𝑌(𝑠)
𝐺(𝑠) =
X(𝑠)
Obtenemos una expresión que relaciona la salida y la entrada de un sistema lineal invariante en
el tiempo, en términos de los parámetros del sistema y constituye una propiedad del mismo,
independiente de la función excitadora. (facet, 2015)
La ventana de comando es la ventana principal, con la cual el usuario interactúa con MATLAB.
Es la primera ventana que se abre al ejecutar MATLAB. Se utiliza para correr los comandos,
correr el editor de archivos M (MEDIT, presente en la barra de herramientas), ejecutar los
toolboxes, etc. En la figura I.1 se muestra la ventana de comando de Matlab y algunas otras.
La mejor manera de familiarizarse con MATLAB consiste en aprender a manejar las matrices.
En MATLAB, una matriz es un arreglo rectangular de números. Las matrices de 1x1 se conocen
como escalares, y las matrices con una sola columna o renglón se conocen como vectores. Estas
matrices y/o vectores pueden contener datos tanto numéricos como no numéricos. Los datos
pueden introducirse a MATLAB de diferentes maneras:
• como una lista explícita de elementos.
• cargando los datos de un archivo externo.
• generados por otras funciones.
• creados por archivos M creados por el usuario. Para asignar un escalar a una variable, se
introducen los datos de la siguiente forma (Esqueda, 2002)
Ejemplo: Dar a la variable dato el valor 2001.
» dato = 2001
y MATLAB responde de la siguiente manera:
dato = 2001
Para introducir una matriz o un vector, se siguen los siguientes convencionalismos
• separar los elementos de una columna usando espacios en blanco
• usar punto y coma (;) para indicar el fin de una columna o el fin del vector
• encerrar la lista de elementos con paréntesis rectangulares [ ]
Ejemplo: Si se desea introducir el siguiente vector. y =
{0.2944 -1.3362 0.7143 1.6236 -0.6918 0.8580}
Teclear en la línea de comando:
3 –99 0.0001
9.6397238 1.60210e–20 6.02252e23
1i –3.14159j 3e5i
Todos los números se almacenan internamente usando el formato long especificado por el
estándar en punto flotante IEEE. Los números en punto flotante tienen una precisión finita
aproximadamente de 16 dígitos decimales y un rango finito aproximadamente de 10−308 a
10−308.
5.5.3.2. Variables.
» Num = 25
Esta variable crea una matriz de 1 x 1 llamada Num y almacena el valor de 25.
5.5.3.3. Operadores
Las expresiones utilizan los operadores aritméticos comunes. Los operadores aritméticos son
los mismos que en cualquier lenguaje de programación y se sigue un orden de evaluación
similar al que se utiliza en los demás lenguajes de programación. En la Tabla 1 se muestran los
operadores aritméticos más comunes en MATLAB.
Operador Operación matemática
+ Suma.
− Resta.
* Multiplicación.
/ División.
^ Potencia.
, Transpuesta compleja conjugada.
() Especifica el orden de la evaluación.
Tabla1.
Operadores
básicos.
Fuente:
(Esqueda,
2002)
5.5.3.4. Funciones
Constante Significado
Pi 3.14159265 …
i
Unidad imaginaria √−1
j Al igual que i
Eps Precisión relativa en punto flotante, 2−52
Realmin Número más pequeño representable en
punto flotante, 2−1022
Realmax Número más grande representable en
punto flotante, 21023
Inf Infinito
NaN No es un número.
Tabla 2.Constantes y
simbología en MATLAB.
Fuente: (Esqueda, 2002)
6. ANÁLISIS
APÉNDICE B
CH3P1
Para representar una matriz en Matlab se escribe con un espacio o una coma que separa los
elementos de cada fila. El siguiente ejemplo, la fila se indica con un punto y coma. Luego, la
matriz completa se encierra entre un par de corchetes.
La forma en la que se importan los datos
1. La primera forma de representar una matriz es entre corchetes y separada cada final con un
punto y coma.
A= [0 1 0; 0 0 1;-9 -8 -7]
2. La segunda forma de representar una matriz es escribiendo por filas.
A=[0 1 0
001
-9 -8 -7]
CH3P2
Un vector de fila, como la matriz de salida C, se puede representar con elementos separados por
espacios o comas y encerrados entre corchetes. A
El vector de columna, como la matriz de entrada B, se puede escribir como elementos separados por
punto y coma o retornos de carro, o como la transposición (') de un vector de fila.
La forma en la que se importan los datos
1. Primero se representa el vector de fila C y el vector de columna B
C = [2 3 4]
B = [7; 8; 9]
B= [7
8
9]
Forma 2:
B=[7 8 9]'
CH3P3
La representación del espacio de estados consiste en especificar las matrices A, B, C y D seguidas
de la creación de un objeto de espacio de estados LTI usando MATLAB comando, ss (A, B, C, D).
La forma en la que se importan los datos
1. Se presenta la matriz A, el vector columna B, el vector fila C y la representación de D.
A= [0 1 0; 0 0 1; -9 -8 -7];
B= [7; 8; 9];
C= [2 3 4];
D=0;
F=ss(A,B,C,D)
Figura 6. Representación del espacio de estados.
CH3P4
Funciones de transferencia representadas por numerador y denominador o un objeto LTI se puede
convertir en espacio de estados. Para la representación de numerador y denominador, la conversión
se puede implementar usando [A, B, C, D] = tf2ss (num, den). La matriz A se devuelve en una
forma llamada forma canónica del controlador, para obtener la forma de variable de fase, [Ap, Bp,
Cp, Dp], realizamos las siguientes operaciones:
num=24;
den=[1 9 26 24];
[A,B,C,D]=tf2ss(num,den)
Ap=inv(P)*A*P
Bp=inv(P)*B
Cp=C*P
Dp=D
24
5. Representamos la función T ( s ) = 3 2 como un objeto de función de
s + 9 s +26 s+24
transferencia LTI
T=tf(num,den)
Tss=ss(T)
Figura 7. Conversión al espacio de estados.
APÉNDICE B
CH3P5
[num,den]=ss2tf(A,B,C,D,1)
3. Se forma el modelo de espacio de estado LTI. Transformar del espacio de estados a función
de transferencia en forma polinomial.
Tss=ss(A,B,C,D)
Ttf=tf(Tss)
Tzpk=zpk(Tss)
APÉNDICE B
CH4P1
Podemos usar MATLAB para calcular las características de un sistema de segundo orden, como
el coeficiente de amortiguamiento, z; frecuencia natural, wn; por ciento rebasamiento, OS (pos);
tiempo de asentamiento, Ts; y hora pico, Tp.
p1= [1 3+7*i];
p2= [1 3-7*i];
2. Se multiplica los dos polinomios para encontrar el polinomio de segundo orden, como
as 2+ bs+ c y se calcula la frecuencia natural, sqrt (c / a).
deng=conv(p1,p2);
omegan=sqrt(deng(3)/deng(1))
zeta=(deng(2)/deng(1))/(2*omegan)
Ts=4/(zeta*omegan)
Tp=pi/(omegan*sqrt(1-zeta^2))
4. Calcule el porcentaje de sobre impulso (100 * e ^ (z * pi / sqrt (1-z ^ 2)).
pos=100*exp(-zeta*pi/sqrt(1-zeta^2))
0 1 0 0
[
ẋ= 0 0 1 x+ 0 u
−2 −5 −7 1 ] []
y= [ 1 0 0 ] x
Transforme el sistema a un nuevo conjunto de variables de estado, z, donde las nuevas
variables de estado estén relacionadas con las variables de estado originales, x, como sigue:
z 1=2 x1
z 2=3 x 1+2 x 2
z 1=x 1+ 4 x 2 +5 x 3
−1.5 1 0 0
[ ] []
ż= −1.5 0.7 0.4 z + 0 u
−2.5 0.4 −7.2 5
y= [ 0.5 0 0 ] z
APÉNDICE B
CH5P5
Para el sistema representado en el espacio de estados:
ẋ= 1 3 x+ 1 u
[
−4 −6 3 ] []
y= [ 1 4 ] x
Convierta el sistema en uno donde el nuevo vector de estado, z, sea:
z= 1 3 x
[
−4 −6 ]
Figura 10. Espacio de estados
y= [−2.121 2.6 ] z
APÉNDICE B
CH6P1
Encuentre el número de polos del semiplano izquierdo, el semi plano derecho y sobre el eje
jw para el sistema:
Figura 11. Número de polos.
Apéndice B
CH4SP2
En el programa analizado, se desarrollará la generación de una respuesta escalón para una
función de transferencia y graficar la respuesta directamente o recolectar los puntos para un
uso futuro, se desarrollará el ejemplo 4.8 del Capítulo 4 del libro de Sistemas de Control
para Ingeniería de Norman Nise.
Código del programa:
Primero definimos el numerador.
numt1=[24.542];
Definimos el denominador.
dent1=[1 4 24.542];
Impresión de pantalla.
'T1(s)'
Creamos y mostramos la función de transferencia.
T1=tf(numt1,dent1)
step(T1)
Respuesta de demostración.
title('Test Run of T1(s)')
pause
Impresión de pantalla.
'Corrida completa'
[y1,t1]=step(T1);
numt2=[245.42];
p1=[1 10];
p2=[1 4 24.542];
dent2=conv(p1,p2);
'T2(s)'
T2=tf(numt2,dent2)
Recolectamos los datos de T2.
[y2,t2]=step(T2);
numt3=[73.626];
p3=[1 3];
dent3=conv(p3,p2);
'T3(s)'
T3=tf(numt3,dent3)
Recolectamos los datos de T3.
[y3,t3]=step(T3);
clf
Graficamos los puntos adquiridos.
plot(t1,y1,t2,y2,t3,y3)
Título de la gráfica
xlabel('Tiempo(segundos)')
ylabel('respuesta normalizada')
text(0.7,0.7,'c3(t)')
text(0.7,1.1,'c2(t)')
text(0.5,1.3,'c1(t)')
pause
step(T1,T2,T3)
7.
Figura 12. Generación de una respuesta escalón, representación gráfica..
CH4SP2 Apéndice E
En la ejecución de este programa aprenderemos a despejar la respuesta de salida de
ecuaciones de estado usando la integral de convolución. Se resolverán los ejemplos 4.12 y
4.13 del Capítulo 4 del libro de Sistemas de Control para Ingeniería de Norman Nise.
Código del programa:
Impresión de pantalla.
'(ch2sp2)'
Construimos la variable simbólica t que representa el tiempo.
syms t
Impresión de pantalla.
'Laplace transform'
'f(t) from Case 2'
Definimos la función
f=2*exp(-t)-2*t*exp(-2*t)-2*exp(-2*t);
pretty(f)
'F(s) for Case 3 - Symbolic fractions'
F=laplace(f);
pretty(F)
F=vpa(F,3);
pretty(F)
Simplificamos las fracciones parciales.
F=simplify(F);
pretty(F)
Figura 13.Respuesta de salida utilizando convolución.
CH4SP3 Apéndice B
En la ejecución de este programa aprenderemos a simular la respuesta de escalón de
sistemas representados en el espacio de estados, también se aprenderá a especificar el
intervalo en el eje del tiempo para la gráfica.
Código del programa:
Impresión de pantalla.
'(ch4p3)'
clf
Generamos la matriz A
Apendice B
CH5P1
Los estudiantes que utilicen MATLAB deben correr ahora el ch5p1, del apéndice B.
Para efectuar la resolución de diagramas de bloques.
CH5P2
Los estudiantes que utilicen MATLAB deben correr el ch5p2, del apéndice B. Aprenderán
a efectuar reducción de diagramas de bloques seguida por una evaluación de las respuestas
del sistema lazo cerrado al hallar los diferentes valores. Por ultimo aprenderán a usar el
MATLAB para generar una respuesta escalón en laso cerrada. Este ejercicio utilizara
MATLAB para hacer el ejemplo 5.3.
CH5P3
Los estudiantes que trabajen con el MATLAB deben correr el ch5p3, del apéndice B.
Aprenderán a usar MATLAB para convertir una función de transferencia en el espacio de
estados en una forma especificada. El ejercicio resuelve el ejemplo previo al representar la
función de transferencia de la ecuación C(s)/R(s) mediante la representación en el espacio
de estados en forma paralela de la ecuación matricial.
CH6P2
K
T ( s) = 3 2
s +1 8 +77 s+ K
Definimos el rango del cual puede tomar valor K. en este ejemplo le dejamos un rango de 1
a 2000 en pasos de 1.
K=[1:1:2000];
Se abre un “for” que es un lazo para repetir el número especificado de veces:
for n=1:length(K);
En este caso para especificar el número de repeticiones se usa length, el cual nos da la
longitud de la dimensión de una matriz más grande, por ejemplo, si tenemos una matriz de
1x6 nos devolverá el 6.
Dentro del ciclo for se especifica los valores del denominador de nuestra función T(s):
dent=[1 18 77 K(n)];
Luego se sacan las raíces del denominador que declaramos anteriormente con la función
roots, esta nos devuelve las raíces del polinomio representado en este caso por “dent”:
poles=roots(dent);
seguido se usa la función real, la cual nos devuelve la parte real de cada elemento dentro,
en este caso la parte real de cada polo:
r=real(poles);
Para finalizar se abre un “if” que nos pone como condición que si el máximo valor de “r”
ósea el máximo polo real es mayor igual que 0 entonces se imprimen los polos y K es igual
a K(n) el cual va a ser un valor que se va a descubrir de acuerdo a las veces que se repita el
ciclo for, en nuestro ejemplo este ciclo se a repetido 1387 veces entonces el valor de K será
este.
CH6P3
Empezamos declarando la matriz de nuestro sistema:
A=[0 3 1;2 8 1;-10 -5 -2]
Y para finalizar usamos la función eig, el cual nos devuelve un vector de columna que
contiene los valores propios de la matriz cuadrada A.
eigenvalues=eig(A)
CH7P1
500 ( s+ 2 )( s+5 ) ( s +6 )
G ( s )=
s ( s+8 )( s+10 ) ( s +12 )
Empezamos declarando el numerador y denominador de nuestra función G(s) y con la
función tf, logramos convertir nuestro numerador y denominador a una sola función digital:
numg=500*poly([-2 -5 -6]);
deng=poly([0 -8 -10 -12]);
G=tf(numg,deng)
Para poder entender un poco lo que acabamos de hacer ponemos a continuación la
respuesta del Command Window
Seguido se sacan los polos de nuestra función T(s) con la función pole, la cual nos
devuelve los polos del modelo de sistema dinámico, La salida se expresa como el recíproco
de las unidades de tiempo especificadas en T(s).
T=feedback(G,1)
poles=pole(T)
En nuestro caso podemos ver que nuestro sistema es estable:
Figura 27. Función T(s) con sus polos del modelo de sistema dinámico
Entrada rampa
Para esto deberemos sacar un nuevo modelo dinámico antes de calcular cualquier dato, para
ello declaramos un nuevo numerado, denominador y un nuevo modelo dinámico con estos
nuevos numerador y denominador:
numsg=conv([1 0],numg);
densg=poly([0 -8 -10 -12]);
sG=tf(numsg,densg);
pero si dejamos así la función sG(s) tendremos lo siguiente:
Entrada parabólica
Al igual que en el caso anterior tenemos que crear un nuevo numerador y un nuevo
denominador:
nums2g=conv([1 0 0],numg);
dens2g=poly([-8 -10 -12]);
s2G=tf(nums2g,dens2g);
Así mismo nuestra nueva función necesita de una simplificación y se utiliza de nuevo la
herramienta minreal:
s2G=minreal(s2G);
y así obtenemos la función s2 G(s) :
9. RECOMENDACIONES
Para comprender de mejor manera acerca del software utilizado primero se debe
investigar todos los comandos y funciones básicas que dicho programa contiene.
Una vez realizado el programa tener en cuenta la ruta donde está guardado el
documento para que no se genere errores al momento de correr el programa.
Tomar nota de cada línea de código y que hace cada una de ellas en el programa para
sabes que es lo que se está ejecutando.
10. BIBLIOGRAFÍA