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.

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

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.

  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.

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
Coordinate Transformation

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.

    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.

    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.

  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.

  4. Complete las conexiones del sistema.

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 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;

Temas relacionados