Main Content

Definición y estructura de un sistema

La estructura de nivel superior de un sistema para un modelo de Simulink® es un contexto habitual que pueden utilizar muchos equipos de ingeniería, y es la base para muchas tareas en el paradigma de diseño basado en modelos, como el análisis, el diseño, las pruebas y la implementación. Defina un sistema en el nivel superior identificando la estructura y los componentes individuales. A continuación, organice el modelo de una forma jerárquica que se corresponda con los componentes. Después, defina las interfaces para cada componente y las conexiones entre componentes.

El modelo que se presenta en este tutorial es un robot plano que puede moverse o rotar con ayuda de dos ruedas, de forma similar a un robot aspirador. Este modelo asume que el robot se mueve de una de las dos formas:

  • Lineal: ambas ruedas giran en la misma dirección con la misma velocidad y el robot se desplaza linealmente.

  • Rotativa: las ruedas giran en direcciones opuestas con la misma velocidad y el robot rota en su lugar.

A flat circular robot is shown from the top. The center of the circular robot perimeter is the origin of the polar coordinate system. The direction of motion is indicated by the angle theta, which is marked as about 30 degrees above the horizontal axis pointing right. The wheel axis is perpendicular to the direction of motion. The wheels are lined up parallel to the direction of motion.

Cada tipo de movimiento empieza a partir de un estado de reposo, es decir, las velocidades rotativa y lineal son cero. Asumiendo esto, los componentes del movimiento lineal y rotativo pueden modelarse de forma independiente.

Determinar los objetivos de modelado

Antes de diseñar un modelo, considere los objetivos y los requisitos. Los objetivos dictan la estructura y el nivel de detalle del modelo. Si el objetivo es simplemente determinar la velocidad a la que puede desplazarse el robot, es suficiente con modelar el movimiento lineal. Si el objetivo es diseñar un conjunto de entradas para que el dispositivo siga una ruta determinada, se requerirá el componente de rotación. Si el objetivo es evadir obstáculos, el sistema necesitará un sensor. Este tutorial construye un modelo con el objetivo de diseñar parámetros para el sensor que permitan que el robot se detenga a tiempo cuando detecte un obstáculo en su ruta. Para conseguir este objetivo, el modelo debe:

  • Determinar con qué rapidez se detiene el robot cuando se para el motor

  • Proporcionar una serie de comandos para el movimiento lineal y rotativo de forma que el robot pueda moverse en un espacio bidimensional

El primer objetivo de modelado permite analizar el movimiento para que pueda diseñar el sensor. El segundo objetivo permite probar el diseño.

Identificar componentes e interfaces de un sistema

Una vez establecidos los requisitos de modelado, podrá comenzar a identificar los componentes del sistema. Identificar los componentes individuales y sus relaciones dentro de una estructura de nivel superior ayuda a construir un modelo potencialmente complejo de forma sistemática. Siga estos pasos fuera de Simulink antes de empezar a construir su modelo.

Esta tarea implica responder a las siguientes preguntas:

  • ¿Cuáles son los componentes estructurales y funcionales del sistema? Cuando un diseño refleja la estructura física y funcional, ayuda a comprender, construir, comunicar y probar el sistema. Esto resulta más importante cuando las partes del sistema van a implementarse en distintas etapas del proceso de diseño.

  • ¿Cuáles son las entradas y salidas para cada componente? Haga un dibujo que muestre las conexiones entre los componentes. Esta ilustración ayuda a visualizar el flujo de señales dentro del modelo, identificar la fuente y el sumidero de cada señal, y determinar si están presentes todos los componentes necesarios.

  • ¿Qué nivel de detalle es necesario? Incluya los parámetros principales del sistema en su diagrama. Crear una imagen del sistema puede ayudar a identificar y modelar las partes esenciales en los comportamientos que desea observar. Cada componente y parámetro que contribuye al objetivo de modelado debe tener una representación en el modelo, pero existe un tradeoff entre complejidad y legibilidad. El modelado puede ser un proceso iterativo. Puede empezar con un modelo de alto nivel con pocos detalles y aumentar gradualmente la complejidad cuando se requiera.

A menudo, resulta útil considerar lo siguiente:

  • ¿Qué partes del sistema requieren pruebas?

  • ¿Cuáles son los datos de las pruebas y los criterios de éxito?

  • ¿Qué salidas son necesarias para analizar y diseñar tareas?

Identificar los componentes del movimiento de un robot

El sistema que se presenta en este tutorial define un robot que se mueve con dos ruedas eléctricas en dos dimensiones. Incluye lo siguiente:

  • Características de movimiento lineal

  • Características de movimiento rotativo

  • Transformaciones para determinar la ubicación del sistema en dos dimensiones

  • Un sensor para medir la distancia del robot desde un obstáculo

The block diagram lists these components from left to right: force inputs, left wheel, right wheel, rotation computation, coordinate transformation, sensor.

El modelo para este sistema incluye dos ruedas idénticas, fuerzas de entrada aplicadas a las ruedas, dinámica rotativa, transformación de coordenadas y un sensor. El modelo utiliza un bloque Subsystem para representar cada componente:

  1. Abra un modelo nuevo de Simulink. Consulte Abrir un modelo nuevo.

  2. Abra Library Browser. Consulte Abrir Simulink Library Browser.

  3. Añada bloques Subsystem. Arrastre cinco bloques Subsystem de la biblioteca Ports & Subsystems al nuevo modelo.

  4. Haga clic en un subsistema. En la pestaña Format, haga clic en la lista desplegable Auto. Desactive la casilla de verificación Hide Automatic Block Names.

    The Auto drop-down list is expanded. The Hide Automatic Block Names check box is cleared.

  5. Organice y modifique el nombre de los bloques Subsystem como se muestra a continuación. Para cambiar los nombres de los bloques, haga doble clic en el nombre del bloque y edite el texto.

    Five Subsystem blocks have the names: Inputs, Left Wheel, Right Wheel, Rotation, and Coordinate Transformation.

Definir interfaces entre componentes

Identifique conexiones de entrada y salida entre subsistemas. Los valores de entrada y salida cambian dinámicamente durante una simulación. Las líneas que conectan bloques representan la transferencia de datos. Esta tabla muestra las entradas y salidas para cada componente.

BloqueEntradaSalidaInformación relacionada
InputsNinguna

Fuerza a la rueda derecha

Fuerza a la rueda izquierda

No se aplica
Right WheelFuerza a la rueda derechaVelocidad de la rueda derechaDireccional, negativo implica dirección contraria
Left WheelFuerza a la rueda izquierdaVelocidad de la rueda izquierdaDireccional, negativo implica dirección contraria
Rotation Diferencia de velocidad entre rueda derecha e izquierdaÁngulo de rotaciónMedido en el sentido contrario a las agujas del reloj
Transformación de coordenadas

Velocidad normal

Ángulo de rotación

Velocidad en X

Velocidad en Y

No se aplica
Sensor

Coordenada X

Coordenada Y

NingunaNo se requieren bloques para el modelado

Algunas entradas de bloque no coinciden exactamente con las salidas de bloque. Por lo tanto, además de la dinámica de los componentes individuales, el modelo debe calcular lo siguiente:

  • Entrada para el cálculo de la rotación: reste las velocidades de las dos ruedas y divida por dos.

  • Entrada para la transformación de coordenadas: halle la media de las velocidades de las dos ruedas.

  • Entrada para el sensor: integre las salidas de la transformación de coordenadas.

Las velocidades de las ruedas son siempre iguales en magnitud y los cálculos son precisos dentro de ese supuesto.

Añada los componentes necesarios y complete las conexiones:

  1. Añada los puertos de entrada y salida necesarios a cada subsistema. Haga doble clic en un bloque Subsystem.

    An Inport block named In1 connects to an Outport block named Out1.

    Cada nuevo bloque Subsystem contiene un bloque Inport (In1) y un bloque Outport (Out1). Estos bloques definen la interfaz de señal con el siguiente nivel más alto en la jerarquía de un modelo.

    Cada bloque Inport crea un puerto de entrada en el bloque Subsystem, y cada bloque Outport crea un puerto de salida. El modelo refleja los nombres de estos bloques como los nombres del puerto de entrada/salida. Añada más bloques para señales adicionales de entrada y salida. En la barra de herramientas del editor de Simulink, haga clic en el botón Navigate Up To Parent para volver al nivel superior.

    Para cada bloque, añada los bloques Inport y Outport, y modifique su nombre.

    The five Subsystem blocks are shown with previews of the subsystem contents visible. In the Subsystem block named Inputs, Outport blocks named Left force and Right force are visible.

    Al copiar un bloque Inport para crear uno nuevo, utilice la opción Paste (Ctrl+V).

  2. Calcule las entradas obligatorias en los subsistemas Coordinate Transform y Rotation a partir de las velocidades de la rueda izquierda y la rueda derecha.

    1. Calcule la entrada de velocidad Linear en el subsistema Coordinate Transform. Añada un bloque Add de la biblioteca Math Operations y conecte las salidas de los componentes de dos ruedas. Añada un bloque Gain y establezca el parámetro de ganancia en 1/2. Conecte la salida del bloque Add a este bloque Gain.

    2. Calcule la entrada de diferencia de velocidad Speed en el subsistema Rotation. Añada un bloque Subtract de la biblioteca Math Operations. Conecte la velocidad de la rueda derecha a la entrada + y la velocidad de la rueda izquierda a la entrada -. Conecte las salidas de los componentes de dos ruedas. Añada un bloque Gain y establezca el parámetro de ganancia en 1/2. Conecte la salida del bloque Subtract a este bloque Gain.

      The Subsystem block named Left Wheel is above the Subsystem block named Right Wheel. The input port of both blocks is named Force, and the output port is naemd Speed. Both output port connect to an Add block that connects to a Gain block with the value of 1/2. Both output ports also connect to a Subtract block that subtracts the speed of the left wheel from the speed of the right wheel and then connects to a Gain block with a value of 1/2.

  3. Calcule las coordenadas X e Y a partir de las velocidades X e Y. Añada dos bloques Integrator de la biblioteca Continuous y conecte las salidas del bloque Coordinate Transform. Deje las condiciones iniciales de los bloques Integrator establecidas en 0.

    The Subsystem named Coordinate Transform has two input ports, named Linear speed and Angle, and two output ports named X speed and Y speed. Both output ports connect to an Integrator block.

  4. Complete las conexiones del sistema.

    In the completed model, the Subsystem block named Subsystem connects to the Subsystem blocks named Left Wheel and Right Wheel. The wheel subsystems connect to an Add block that connects to a Gain block with the value of ½ that connects to the Subsystem block named Coordinate Transform. The wheel subsystems also connect to a Subtract block that subtracts the left wheel speed from the right wheel speed and connects to a Gain block with the value of ½. The Gain block connects to the Subsystem block named Rotation that connects to the Subsystem block named Coordinate Transform. Both of the output ports of the Coordinate Transform subsystem connect to an integrator block.

Parámetros y datos

Determine los parámetros que forman parte del modelo y sus valores. Utilice objetivos de modelado para determinar si estos valores son siempre fijos o cambian de una simulación a otra. Los parámetros que contribuyen al objetivo de modelado requieren una representación explícita en el modelo. Esta tabla ayuda a determinar el nivel de detalle al modelar cada componente.

ParámetroBloqueSímboloValorTipo
Masa

Left Wheel

Right Wheel

m2.5 kg Variable
Resistencia a la rodadura

Left Wheel

Right Wheel

k_drag30 Ns2/mVariable
Radio del robotRotationr0.15 mVariable
Ángulo inicialRotationNinguno0 radFijo
Velocidades iniciales

Left Wheel

Right Wheel

Ninguno

0 m/s

0 m/s

Fijo
Coordenadas iniciales (X, Y)IntegratorsNinguno(0, 0) mFijo

Simulink utiliza el área 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;

Temas relacionados