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:3 y x = linspace(1,3,3): Tres formas de hacer el mismmo vector.
    • v1([0 0 1 1 0]): Siendo v1 un vector de 5 elementos, se obtienen solo los valores con de los elementos con un 1 ló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

    1. Crear Modelo Simscape.
    1. Montaje de la Red.
    1. Ajuste de Parámetros de cada Bloque de la Red.
    1. Incorporación de Fuentes.
    1. Incorporación de Sensores.
    1. Conexión a Simulink mediante Bloques de Interfaz.
    1. 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_new en 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 Converter y el PS-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 name dice el nombre del parámetro en el formulario. En este ejemplo ponen la constante de elasticidad junto a su valor y a su magnitud k = {10, 'N*m/rad'}.

  • Sección nodes: Dominio físico de cada conector del componente. El comentario A:left o B:right define la etiqueta y donde se encontrará las terminales en el bloque (pueden ser top y bottom también. En este ejemplo foundation.mechanical.rotational.rotational significa que pertenecen al dominio rotacional.

  • Sección variables: Descripción de los nombres de las variables de tipo through y across. 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 through y los nodos. En este ejemplo el torque t pasa del nodo r a c.

  • Sección equations: Reglas físicas en función de las variables y parámetros del componente. En este ejemplo pasa lo siguiente:

    • Regla assert devuelve un error si no se cumple la condición interna k>0.
    • Ecuación w == r.w-c.w establece la velocidad angular del mueble como la diferencia entre ambos nodos.
    • Ecuación w = theta.der establece w como la derivada de theta.
    • Eciación t == k * theta calcula el par del muelle aplicado.

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 v1 que será igual al voltaje de salida V.

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 p con el nodo p del componente rc, el nodo n del componente rc con el nodo p del componente rl y el nodo n del componente rl con n.

3.4. Modelo Eléctrico