Diseño de Sistemas Mecatrónicos - IvanCS-Chenfu/Master GitHub Wiki
Índice
0. Tutoriales
Hablaremos de cosas importantes aprendidas en el tutorial.
0.1. Matlab Onramp
-
En Comand Windows
save <NOMBRE_FILE>.mat: Guarda los datos del Workspace en un archivo con nombre<NOMBRE_FILE>.load <NOMBRE_FILE>.mat: Carga los datos del archivo con nombre<NOMBRE_FILE>en el Workspace.load <NOMBRE_FILE>.mat <NOMBRE_VARIABLE>: Carga solo la variable<NOMBRE_VARIABLE>del archivo<NOMBRE_FILE>.
-
En Script
x = [1 2 3],x = 1:3yx = linspace(1,3,3): Tres formas de hacer el mismmo vector.v1([0 0 1 1 0]): Siendov1un vector de 5 elementos, se obtienen solo los valores con de los elementos con un1lógico.
0.2. Simulink Onramp
1. Introducción al Modelado
1.1. Definiciones
1.2. Topología del Modelado
1.2.1. Clasificación
- Modelos de Sistemas Cualitativos:
- Mayor abstracción.
- Únicamente descripción cualitativa (sin matemáticas).
- Define la estructura, las interfaces y las funciones del sistema.
- Formato simple para entederse por todos.
- El método para modelar debe ser lo menos formal que permita obtener lo necesario.
- Modelos de Sistemas Cuantitativos:
- Menor abstracción.
- Descripción cuantitativa (con matemáticas).
- Define el comportamiento cuantificable (ecuaciones diferenciables, ecuaciones matriciales...)
- Requiere conocimientos sólidos de ingeniería.
- Modelado de Paradigma
- Im
1.3. Sistemas Eléctricos
1.4. Sistemas Mecánicos
1.5. Sistemas Electromecánicos
3. Construcción de un Modelo Físico en SIMSCAPE
3.1. Reglas Generales
3.1.1. Pasos
-
- Crear Modelo Simscape.
-
- Montaje de la Red.
-
- Ajuste de Parámetros de cada Bloque de la Red.
-
- Incorporación de Fuentes.
-
- Incorporación de Sensores.
-
- Conexión a Simulink mediante Bloques de Interfaz.
-
- Simulación del Modelo y Presentación de Resultados
3.1.2. Consideraciones Previas
Los diagramas Simscape imitan la disposición de un sistema físico. Se agregan los bloques de las librerías Simscape y se conectan en una red física. Las líneas que conectan los bloques representan las ocnexiones físicas entre componentes del sistema real.
Para cada dominio (traslacional, rotacional, eléctrico...) es necesario poner mínimo una referencia.
3.1.3. Conexión Simulink - Simscape
- Para abrir Simscape desde Matlab, utiliza el comando
ssc_newen el "Command Window" con el fin de asegurarse a utilizar la configuración por defecto recomendada. - Las ecuaciones de Simscape se resuelven simultáneamente, sin embargo, las de Simulink se resuelven de forma secuencial.
- Los bloques de interfaz que manejan la conexión entre ambos mundos son el
Simulink-PS Convertery elPS-Simulink Converter.
3.2. Modelo Físico
3.2.1. Montaje de la Red
Para obtener los bloques necesarios: Abra Library Browser >> Simscape >> Foundation Library >> Mechanical >> Traslational Elements.
Aquí se pueden encontrar los siguientes bloques.
Estos bloques se pueden colocar en Simulink. Al igual que cualquier bloque de Simulink, se puede rotar con Ctrl + R. En este ejemplo se unirán los bloques como se ve en la siguiente imagen. Para que funcione el modelo, será necesario implementar el bloque Solver Configuration (este bloque se puede poner en cualquier parte de la red).
Cada bloque de Simscape puede modificar sus valores clicando dos veces sobre él. Por ejemplo, en el bloque de Mass podemos cambiar el valor de la masa, los valores iniciales y los valores nominales.
3.2.2. Incorporación de Fuentes
Para obtener los bloques necesarios: Abra Library Browser >> Simscape >> Foundation Library >> Mechanical >> Mechanical Sources.
Aquí se pueden encontrar los siguientes bloques.
En este ejemplo añadiremos el bloque Ideal Force Source. Este bloque aplicará una fuerza al sistema. Esta fuerza es aplicada desde algún sitio, como en nuestro ejemplo queremos aplicar una fuerza externa, pondremos el bloque Mechanical Traslational Reference como referencia.
3.2.3. Incorporación de Sensores
Para obtener los bloques necesarios: Abra Library Browser >> Simscape >> Foundation Library >> Mechanical >> Mechanical Sensors.
Aquí se pueden encontrar los siguientes bloques.
En este ejemplo añadiremos el bloque Ideal Traslational Motion Sensor. Este bloque medirá la distancia entre dos bloques. Como en nuestro ejemplo queremos medir la distancia respecto a la referencia, pondremos el bloque Mechanical Traslational Reference como referencia.
3.2.4. Conexión a Simulink mediante Bloques de Interfaz
Como hemos comentado antes, los bloques de interfaz que manejan la conexión entre ambos mundos son el Simulink-PS Converter y el PS-Simulink Converter.
Simulink trabaja con unidades y Simscape con magnitudas, en cuanto a la interfaz Simulink-PS Convertes deberemos poner en que tipo de magnitud deberemos convertir las unidades dadas por Simulink.
3.2.5. Simulación del Modelo y Presentación de Resultados
Activamos el modelo presionando el botón Run de Simulink.
Finalmente vemos los resultados en el Scope.
Si tras realizar la simulación en Simulink accedemos a SIMULATION >> REVIEW RESULTS >> Simscape Results, veremos todos los datos de cada bloque Simscape.
3.3. Diseño de Bloques con Simscape Language
3.3.1. Introducción
Simscape Language permite crear componentes personalizados mediante programación en formato texto (incluyendo parametrización de datos, definición de conexiones físicas y reglas mediante ecuaciones).
Se pueden reutilizar definiciones de dominios fisicos dadas por Simscape (traslacional, rotacional, eléctrico...) o puede añadir propios dominios y proporcional bilbiotecas de componentes para estos dominios.
3.3.2. Creación Archivo Normal
Estos archivos se crearán escribiendo sscnewfile('<NOMBRE_ARCHIVO>') en el Command Window.
component NOMBRE_ARCHIVO
% Simple Simscape component
parameters
% Add parameters here
% p = { value , 'unit' }; % Parameter name
end
nodes
% A = package_name.domain_name; % A:left
% B = package_name.domain_name; % B:right
end
variables
% x = { value , 'unit' }; % Through variable name
% y = { value , 'unit' }; % Across variable name
end
branches
% x : A.x -> B.x;
end
equations
% Add equations here
% y == A.y - B.y;
% x == fcn(y);
end
end
-
Sección component: Se escribe el nombre del componente. En este ejemplo
Spring -
Sección parameters: Listado de los parámetros usados por el componente. El comentario a la derecha
Parameter namedice el nombre del parámetro en el formulario. En este ejemplo ponen la constante de elasticidad junto a su valor y a su magnitudk = {10, 'N*m/rad'}. -
Sección nodes: Dominio físico de cada conector del componente. El comentario
A:leftoB:rightdefine la etiqueta y donde se encontrará las terminales en el bloque (pueden sertopybottomtambién. En este ejemplofoundation.mechanical.rotational.rotationalsignifica que pertenecen al dominio rotacional. -
Sección variables: Descripción de los nombres de las variables de tipo
throughyacross. El comentario define el nombre y el tipo de variable. En este ejemplo se inicializan las variables y se dicen el tipo magnitud de cada una. -
Sección branches: Relación entre las variables de tipo
throughy los nodos. En este ejemplo el torquetpasa del nodorac. -
Sección equations: Reglas físicas en función de las variables y parámetros del componente. En este ejemplo pasa lo siguiente:
- Regla
assertdevuelve un error si no se cumple la condición internak>0. - Ecuación
w == r.w-c.westablece la velocidad angular del mueble como la diferencia entre ambos nodos. - Ecuación
w = theta.derestablecewcomo la derivada detheta. - Eciación
t == k * thetacalcula el par del muelle aplicado.
- Regla
Para aplicarlo en Simscape abra Library Browser >> Simscape >> Utilities y añadir el path del archivo .ssc.
3.3.3. Creación Archivo No Flow
Algunos componentes no son atravesados por ningún flujo real (como los sensores) por lo que resulta innecesario declarar una variable through.
component voltage_sensor
outputs
V = { 0.0, 'V’ }; % V: bottom
end
nodes
p = foundation.electrical.electrical; % +: top
n = foundation.electrical.electrical; % -: bottom
end
variables
v1 = { 0, ‘V' };
end
equations
v1 == p.v – n.v;
V == v1;
end
end
- Sección outpts: Se muestra el valor de salida junto a su valor inicial y su magnitud.
- Sección variables: No hace falta poner los tipos ya que todas las variables son de tipo Across.
- Sección ecuations: La resta entre el voltaje entre los dos nodos es
v1que será igual al voltaje de salidaV.
3.3.4. Añadir varios Componentes
Dentro de un mismo archivo .ssc puedes obtener componentes ya creados por Simscape y conectarlos.
En este ejemplo conectaremos en serie una resistencia y un inductor.
component circuito_rl
parameters
r = { 100.0, ‘Ohm’ }; % Resistor
l = { 1e-2, ‘H’ }; % Inductor
end
nodes
p = foundation.electrical.electrical; % +: left
n = foundation.electrical.electrical; % -: right
end
components(ExternalAccess=observe)
rc = foundation.electrical.elements.resistor(R = r);
rl = foundation.electrical.elements.inductor(l = l);
end
connections
connect(p, rc.p);
connect(rc.n, rl.p);
connect(rl.n, n);
end
end
- Sección components: Creamos la resistencia y el inductor a partir de componentes ya existentes.
- Sección connections: Conecta dos nodos de distintos componentes. En este ejemplo
pcon el nodopdel componenterc, el nodondel componenterccon el nodopdel componenterly el nodondel componenterlconn.