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-derivativo 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 denominado Right Wheel para mostrar el subsistema vacío.

  2. Para modelar 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.

    The Integrator block has an unconnected input signal named Vdot and an output signal labeled V that is connected to an Outport block named Speed. An unconnected Inport block named Force is to the left of the unconnected signal line for the signal Vdot.

  3. Para modelar 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 MATLAB Function Block Editor.

  4. En MATLAB Function Block Editor, introduzca el código de MATLAB® para calcular la fuerza de resistencia.

    function Fdrag=get_fdrag(V,k_drag)
    
    Fdrag=k_drag*V*abs(V);

    The MATLAB Function Block Editor shows the code for a MATLAB function named Fdrag that calculates the drag force.

  5. Defina argumentos para el bloque MATLAB Function. En MATLAB Function Block Editor, haga clic en Edit Data . Haga clic en k_drag, establezca Scope en Parameter y haga clic en Apply.

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

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

    In the wheel model, the MATLAB Function block is in a feedback loop between the speed output signal. The Subtract block subtracts the drag force calculated by the MATLAB Function block from the force input to the subsystem. The Subtract block and Gain block are between the force input and the input to the Integrator block.

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

  9. Para ver el nivel superior del modelo, haga clic en 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 se asume que las velocidades de las ruedas son siempre iguales en magnitud, puede 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 denominado Rotation para mostrar el subsistema vacío. Elimine la conexión entre los bloques Inport y Outport.

  2. Para modelar la velocidad angular y la posición, añada un bloque Integrator. Deje la condición inicial establecida en 0. La salida de este bloque es la posición de rotación 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 y establezca el parámetro Gain del bloque en 1/(2*r).

  4. Conecte los bloques.

    An Inport block named Speed difference connects to the Gain block, which connects to an Integrator block, which connects to an Outport block named Angle

  5. Para ver el nivel superior del modelo, haga clic en 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 denominado Coordinate Transform para mostrar el subsistema vacío.

  2. Para modelar funciones trigonométricas, añada un bloque SinCos de la biblioteca Math Operations.

  3. Para modelar multiplicaciones, añada dos bloques Product de la biblioteca Math Operations.

  4. Conecte los bloques.

    The coordinate transformation model has two inputs named Linear speed and Angle and two outputs named Y speed and X speed. The X and Y speeds are calculated by multiplying the sine and cosine of the angular position by the linear speed input.

  5. Para ver el nivel superior del modelo, haga clic en Navigate Up To Parent .

Establecer los parámetros de un modelo

Puede determinar valores adecuados para los parámetros del modelo utilizando varias fuentes, incluidas las siguientes:

  • 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

Un modelo de Simulink puede acceder a los valores de parámetro definidos utilizando variables en el área de trabajo de MATLAB. Defina estas variables introduciendo los comandos 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 Subsystem denominado Right Wheel en el nuevo modelo.

  2. Para crear una entrada de prueba, añada un bloque Step desde la biblioteca Sources y conéctelo a la entrada del subsistema denominado Right Wheel. Deje el parámetro Step time establecido en 1.

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

    A Step block connects to the input of a Subsystem block named Right Wheel. The input port of the subsystem is named Force, and the output port of the subsystem is named Speed. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer..

  4. Simule el modelo. En la pestaña Simulation, haga clic en Run .

    The scope viewer plots the output signal of the subsystem named Right Wheel.

Los resultados de la simulación muestran que el modelo presenta el comportamiento general esperado. No se produce ningún 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 muestra 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. Para crear un nuevo modelo, haga clic en New . Copie el bloque del subsistema denominado Rotation en el nuevo modelo.

  2. Para crear una entrada de prueba en el nuevo modelo, añada un bloque Step de la biblioteca Sources. Deje el parámetro Step time establecido en 1. Conecte la salida del bloque Step a la entrada del subsistema denominado Rotation. Esta entrada representa la diferencia entre las velocidades de las ruedas cuando rotan en direcciones opuestas.

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

    A Step block connects to the input of a Subsystem block named Rotation. The input port of the subsystem is named Speed difference, and the output port of the subsystem is named Angle. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer.

  4. Simule el modelo. En la pestaña Simulation, haga clic en Run .

    The scope viewer plots the output signal of the subsystem named Rotation.

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

  • Convertir las unidades de la señal de salida de radianes a grados añadiendo un bloque Gain con una ganancia de 180/pi.

  • Mostrar el valor de salida en ciclos de 360 grados añadiendo 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 estos comportamientos:

  • 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 denominado Inputs para mostrar el subsistema vacío.

  2. Cree una entrada de prueba añadiendo un bloque Step. Deje el parámetro Step time establecido en 1. Conecte la salida del bloque Step con ambos bloques Outport.

    A Step block connects to two Outport blocks, one named Left force and one named Right force

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

    The Coordinate Transform subsystem has two output ports named X speed and Y speed. Each output port connects to an Integrator block, and the outport of each Integrator block connects to a scope viewer.

  4. Simule el modelo.

    The scope viewer plots the two output signals on the same graph, one in yellow and one in blue.

    La línea amarilla en el visor scope 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 denominado Inputs. Para invertir la dirección de la rueda izquierda, añada un bloque Gain entre la fuente y la segunda salida y establezca el parámetro Gain en -1.

    The Step block connects directly to the Outport block named Right Force. The Gain block with a gain of -1 inverts the Step block output. The output from the Gain block connects to the Outport block named Left force.

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

  7. Simule el modelo.

El visor scope conectado a las señales de velocidad x e y muestra que no se produce ningún movimiento en el plano X-Y.

The scope viewer plots the X and Y speed signals on the same graph.

El visor scope conectado a la señal del ángulo muestra un movimiento angular constante.

The scope viewer plots the angle output.

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

  • ¿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 con un coeficiente de resistencia inferior?

Temas relacionados