Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Modelar y validar un sistema

Modele cada componente dentro de la estructura del sistema para representar el comportamiento físico y funcional del componente. Verifique el comportamiento básico del componente simulándolo con datos de prueba.

Abrir la estructura del sistema

Una visión general de toda la estructura del sistema resulta útil cuando se modelan componentes individuales. Empiece cargando el modelo de la estructura. En la línea de comandos de MATLAB, introduzca:

open_system('system_layout.slx')

Modelar los componentes

Un modelo de Simulink® de un componente se basa en varios puntos de partida:

  • Una relación matemática explícita entre la salida y la entrada de un componente físico: puede calcular las salidas del componente a partir de las entradas, directa o indirectamente, utilizando cálculos algebraicos e integrando ecuaciones diferenciales. Por ejemplo, el cálculo del nivel de agua en un depósito a partir de la tasa de entrada es una relación explícita. Cada bloque de Simulink se ejecuta basándose en la definición de los cálculos de las entradas a las salidas.

  • Una relación matemática implícita entre las variables del modelo de un componente físico: puesto que las variables son interdependientes, asignar una entrada y una salida al componente no se realiza de forma directa. Por ejemplo, el voltaje en el extremo + de un motor conectado en un circuito y el voltaje en el extremo - tienen una relación implícita. Para modelar una relación de este tipo en Simulink, puede utilizar herramientas de modelado físico como Simscape™ o modelar estas variables como parte de un componente más grande que permita la definición de entrada/salida. En ocasiones, una inspección más detallada de los objetivos de modelado y las definiciones de los componentes ayuda a definir las relaciones de entrada/salida.

  • Datos obtenidos de un sistema real: ha medido los datos de entrada/salida a partir del componente real, pero no existe una relación matemática totalmente definida. Muchos dispositivos cuentan con componentes no modelados que encajan en esta descripción. Por ejemplo, el calor que disipa una televisión. Puede utilizar System Identification Toolbox™ para definir la relación de entrada/salida para sistemas de este tipo.

  • Una definición funcional explícita: defina las salidas de un componente funcional a partir de las entradas utilizando cálculos algebraicos y lógicos. Por ejemplo, la lógica de conmutación de un termostato. Puede modelar la mayoría de las relaciones funcionales como bloques y subsistemas de Simulink.

Este tutorial modela componentes físicos y funcionales con relaciones explícitas de entrada/salida. En este tutorial:

  1. Utilizará las ecuaciones del sistema para crear un modelo de Simulink.

  2. Añadirá y conectará bloques de Simulink en el editor de Simulink. Los bloques representan coeficientes y variables a partir de ecuaciones.

  3. Construirá el modelo para cada componente de forma independiente. La forma más efectiva de construir un modelo de sistema es considerar primero los componentes de forma independiente.

  4. Empezará construyendo modelos simples utilizando aproximaciones del sistema. Identificará supuestos que puedan afectar a la precisión de su modelo. Añadirá detalles iterativamente hasta que el nivel de complejidad cumpla los requisitos de modelado y precisión.

Modelar los componentes físicos

Describa las relaciones entre componentes, por ejemplo, datos, energía y transferencia de fuerza. Utilice las ecuaciones del sistema para construir un modelo gráfico del sistema en Simulink.

Estas son algunas cuestiones que deberá considerar antes de empezar a modelar un componente:

  • ¿Cuáles son las constantes para cada componente? ¿Qué valores no cambian a menos que los cambie?

  • ¿Cuáles son las variables para cada componente? ¿Qué valores cambian con el tiempo?

  • ¿Cuántas variables de estado tiene un componente?

Derive las ecuaciones para cada componente utilizando principios científicos. Muchas ecuaciones de sistema encajan en tres categorías:

  • En el caso de sistemas continuos, las ecuaciones diferenciales describen la tasa de cambio para variables con las ecuaciones definidas para todos los valores de tiempo. Por ejemplo, una ecuación diferencial de primer orden proporciona la velocidad de un automóvil:

    dv(t)dt=bmv(t)+u(t)

  • En el caso de sistemas discretos, las ecuaciones de diferencias describen la tasa de cambio para variables, pero las ecuaciones se definen solo en momentos específicos. Por ejemplo, la señal de control de un controlador proporcional-derivado discreto:

    pd[n]=(e[n]e[n1])Kd+e[n]Kp

  • Las ecuaciones sin derivadas son ecuaciones algebraicas. Por ejemplo, una ecuación algebraica proporciona la corriente total en un circuito paralelo con dos componentes:

    It=Ia+Ib

Ruedas y movimiento lineal.  En una rueda actúan dos fuerzas:

  • Fuerza aplicada por el motor: la fuerza F actúa en la dirección del cambio de velocidad y es una entrada en los subsistemas de la rueda.

  • Fuerza de resistencia: la fuerza Fdrag actúa contra la dirección del cambio de velocidad y es una función de velocidad.

    Fdrag=kdragV|V|

La aceleración es proporcional a la suma de estas fuerzas:

(m/2)V˙=FFdrag(m/2)V˙=FkdragV|V|V˙=FkdragV|V|(m/2)

Donde kdrag es el coeficiente de resistencia y m es la masa del robot. Cada rueda soporta la mitad de esta masa.

Construya el modelo de la rueda:

  1. En el modelo system_layout, haga doble clic en el subsistema Right Wheel para mostrar el subsistema vacío.

  2. Modele la velocidad y la aceleración. Añada un bloque Integrator. Deje la condición inicial establecida en 0. La entrada de este bloque es la aceleración Vdot y la salida es la velocidad V.

  3. Modele la fuerza de resistencia. Añada un bloque MATLAB Function de la biblioteca User-Defined Functions. El bloque MATLAB Function proporciona una forma rápida de implementar expresiones matemáticas en un modelo. Para editar la función, haga doble clic en el bloque para abrir el editor de MATLAB Function.

  4. Defina argumentos para el bloque MATLAB Function. En el editor del bloque MATLAB Function, haga clic en el botón Edit Data . Haga clic en k_drag, establezca Scope en Parameter y haga clic en Apply.

  5. Reste la fuerza de resistencia a la fuerza del motor con el bloque Subtract. Complete la ecuación de fuerza-aceleración con un bloque Gain con el parámetro 1/(m/2).

  6. Para invertir la dirección del bloque MATLAB Function, seleccione el bloque. En la barra de herramientas, en la pestaña Format, haga clic en Flip left-right Flip left-right button. Conecte los bloques.

  7. La dinámica de ambas ruedas es la misma. Haga una copia del subsistema Right Wheel que acaba de modelar y péguela en el subsistema Left Wheel.

  8. Observe el nivel superior del modelo. Haga clic en el botón Navigate Up To Parent .

Movimiento rotativo.   Cuando las dos ruedas giran en direcciones opuestas, se mueven en un círculo de radio r, provocando el movimiento rotativo del robot. Cuando las ruedas giran en la misma dirección, no hay rotación. Si asumimos que las velocidades de las ruedas son siempre iguales en magnitud, resulta práctico modelar el movimiento rotativo de forma que dependa de la diferencia de las dos velocidades de las ruedas VR y VL:

θ˙=VRVL2r

Construya el modelo de dinámica rotativa:

  1. En el nivel superior del modelo system_layout, haga doble clic en el subsistema Rotation para mostrar el subsistema vacío. Elimine la conexión entre los bloques Inport y Outport.

  2. Modele la velocidad angular y el ángulo. Añada un bloque Integrator. Deje la condición inicial establecida en 0. La salida de este bloque es el ángulo theta y la entrada es la velocidad angular theta_dot.

  3. Calcule la velocidad angular a partir de la velocidad tangencial. Añada un bloque Gain con el parámetro 1/(2*r).

  4. Conecte los bloques.

  5. Observe el nivel superior del modelo. Haga clic en el botón Navigate Up To Parent .

Modelar los componentes funcionales

Describa la función desde la entrada de una función a la salida. Esta descripción puede incluir ecuaciones algebraicas y construcciones lógicas, que puede utilizar para construir un modelo gráfico del sistema en Simulink.

Transformación de coordenadas.  La velocidad del robot en las coordenadas X e Y, VX y VY, está relacionada con la velocidad lineal VN y el ángulo theta:

VX=VNcos(θ)VY=VNsin(θ)

Construya el modelo de transformación de coordenadas:

  1. En el nivel superior del modelo system_layout, haga doble clic en el subsistema Coordinate Transform para mostrar el subsistema vacío.

  2. Modele funciones trigonométricas. Añada un bloque SinCos de la biblioteca Math Operations.

  3. Modele multiplicaciones. Añada dos bloques Product de la biblioteca Math Operations.

  4. Conecte los bloques.

  5. Observe el nivel superior del modelo. Haga clic en el botón Navigate Up To Parent .

Establecer los parámetros de un modelo

Los valores de los parámetros de un modelo se pueden obtener a partir de:

  • Especificaciones escritas, como tablas de propiedades estándar, o fichas técnicas del fabricante

  • Mediciones directas en un sistema existente

  • Estimaciones utilizando la entrada/salida del sistema

Este modelo utiliza los siguientes parámetros:

ParámetroSímboloValor
Masam2.5 kg
Resistencia a la rodadurak_drag30 Ns2/m
Radio del robotr0.15 m

Simulink utiliza el espacio de trabajo de MATLAB® para evaluar parámetros. Establezca los siguientes parámetros en la ventana de comandos de MATLAB:

m = 2.5;
k_drag = 30;
r = 0.15;

Validar componentes utilizando la simulación

Valide componentes proporcionando una entrada y observando la salida. Incluso una validación tan simple como esta puede mostrar formas inmediatas de mejorar el modelo. Este ejemplo valida estos comportamientos:

  • Cuando se aplica una fuerza de forma continua a una rueda, la velocidad aumenta hasta que se alcanza una velocidad de estado estacionario.

  • Cuando las ruedas giran en direcciones opuestas, el ángulo de rotación aumenta a un ritmo constante.

Validar un componente de rueda

Cree y ejecute un modelo de prueba para el componente de rueda:

  1. Cree un nuevo modelo. En la pestaña Simulation, haga clic en New . Copie el bloque Right Wheel en el nuevo modelo.

  2. Cree una entrada de prueba. Añada un bloque Step desde la biblioteca Sources y conéctelo a la entrada del bloque Right Wheel. Deje el parámetro de unidad de tiempo establecido en 1.

  3. Añada un visor a la salida. Haga clic con el botón secundario en el puerto de salida del bloque Right Wheel y seleccione Create & Connect Viewer > Simulink > Scope.

  4. Ejecute la simulación. En la pestaña Simulation, haga clic en Run .

El resultado de la simulación muestra el comportamiento general esperado. No hay movimiento hasta que se aplica fuerza en la unidad de tiempo. Cuando se aplica fuerza, la velocidad empieza a aumentar y se estabiliza en una constante cuando la fuerza aplicada y la fuerza de resistencia alcanzan un equilibrio. Además de la validación, la simulación también ofrece información sobre la velocidad máxima de la rueda para la fuerza proporcionada.

Validar el componente de rotación

Cree y ejecute un modelo de prueba para el componente de rotación:

  1. Cree un nuevo modelo. Haga clic en y copie el bloque Rotation en el nuevo modelo.

  2. Cree una entrada de prueba en el nuevo modelo. Añada un bloque Step de la biblioteca Sources. Deje el parámetro de unidad de tiempo establecido en 1. Conéctelo a la entrada del bloque Rotation. Esta entrada representa la diferencia entre las velocidades de las ruedas cuando estas rotan en direcciones opuestas.

  3. Añada un visor a la salida. Haga clic con el botón secundario en el puerto de salida del bloque Rotation y seleccione Create & Connect Viewer > Simulink > Scope.

  4. Ejecute la simulación. En la pestaña Simulation, haga clic en Run .

Esta simulación muestra que el ángulo aumenta de forma constante cuando las ruedas giran con la misma velocidad en direcciones opuestas. Puede realizar mejoras en el modelo para facilitar la interpretación de la salida del ángulo, por ejemplo:

  • Puede convertir la salida de radianes a grados. Añada un bloque Gain con una ganancia de 180/pi.

  • Puede mostrar la salida en grados en ciclos de 360 grados. Añada un bloque Math Function con la función mod.

Las funciones trigonométricas de MATLAB utilizan entradas en radianes.

Validar el modelo

Después de validar componentes individuales, puede realizar una validación similar del modelo completo. Este ejemplo valida el siguiente comportamiento:

  • Cuando se aplica la misma fuerza a ambas ruedas y en la misma dirección, el robot se mueve en una línea.

  • Cuando se aplica la misma fuerza a ambas ruedas en direcciones opuestas, el robot rota en su lugar.

  1. En el modelo system_layout, haga doble clic en el subsistema Inputs para mostrar el subsistema vacío.

  2. Cree una entrada de prueba añadiendo un bloque Step. Deje el parámetro de unidad de tiempo establecido en 1. Conéctelo a los dos bloques Outport.

  3. En el nivel superior del modelo, conecte ambas señales de salida al mismo visor scope:

  4. Ejecute el modelo.

    En esta figura, la línea amarilla es la dirección X y la línea azul es la dirección Y. Puesto que el ángulo es cero y no cambia, el vehículo se mueve solo en la dirección X, tal y como se esperaba.

  5. Haga doble clic en el subsistema Inputs y añada un bloque Gain con el parámetro -1 entre el origen y la segunda salida. Así, se invierte la dirección de la rueda izquierda.

  6. Añada un scope a la salida del ángulo.

  7. Ejecute el modelo.

    La primera vista muestra que no hay movimiento en el plano X-Y. La segunda vista muestra que hay rotación constante.

Puede utilizar este modelo final para responder a muchas preguntas sobre el modelo cambiando la entrada. Por ejemplo:

  • ¿Qué ocurre cuando el ángulo inicial no es cero?

  • ¿Cuánto tiempo tarda el movimiento en detenerse cuando la fuerza desciende hasta cero?

  • ¿Qué ocurre cuando el robot es más pesado?

  • ¿Qué ocurre cuando el robot se mueve sobre una superficie más lisa, es decir, cuando el coeficiente de resistencia es inferior?

Temas relacionados