Main Content

Diseñar un sistema en Simulink

El paradigma del diseño basado en modelos se centra en modelos de componentes y sistemas físicos como base para las actividades de diseño, pruebas e implementación. Este tutorial incorpora un componente diseñado a un modelo de sistema existente.

Abrir un modelo de sistema

El modelo es un robot plano que puede moverse o rotar con ayuda de dos ruedas, de forma similar a un robot aspirador. Abra el modelo entrando en la línea de comandos de MATLAB®:

open_system('system_model.slx')

Este tutorial analiza este sistema y añade funcionalidad.

Identificar componentes diseñados y objetivos de diseño

La especificación del objetivo de diseño es un primer paso fundamental para la tarea de diseño. Incluso en un sistema simple, puede haber varios objetivos de diseño e incluso objetivos contrapuestos. Considere los siguientes objetivos para el modelo de ejemplo:

  • Diseñar un controlador que cambie la entrada de fuerza para que las ruedas giren a una velocidad que desee.

  • Diseñar entradas que hagan que el dispositivo se desplace siguiendo una ruta predeterminada.

  • Diseñar un sensor y un controlador para que el dispositivo siga una línea.

  • Diseñar un algoritmo de planificación para que el dispositivo alcance un punto determinado utilizando la ruta más corta posible al tiempo que evade obstáculos.

  • Diseñar un sensor y un algoritmo para que el dispositivo se mueva dentro de un área concreta al tiempo que evade obstáculos.

Este tutorial diseña un sistema de alerta. Determine los parámetros para un sensor que mide la distancia desde un obstáculo. Un sensor perfecto mide la distancia a un obstáculo de forma precisa. Un sistema de alerta muestrea esas mediciones a intervalos fijos para que la salida esté siempre dentro de un rango de 0,05 m con respecto a la medición. El sistema genera una alerta a tiempo para que el robot se detenga antes de chocar contra el obstáculo.

Analizar el comportamiento del sistema utilizando una simulación

El diseño del nuevo componente requiere el análisis del movimiento lineal del robot para determinar:

  • Qué distancia puede cubrir el robot a la máxima velocidad cuando se interrumpe la alimentación a las ruedas

  • La velocidad máxima del robot

Simule el modelo con una señal de entrada de fuerza que inicie el movimiento, espere hasta que el robot alcance una velocidad constante y, luego, establezca la fuerza en cero:

  1. En el modelo, haga doble clic en el subsistema denominado Inputs.

  2. Elimine la entrada de paso existente y añada un bloque Pulse Generator.

  3. Establezca estos parámetros para el bloque Pulse Generator:

    • Amplitud: 1

    • Periodo: 20

    • Ancho de pulso: 15

    Estos parámetros están diseñados para garantizar que se alcance la máxima velocidad. Puede cambiar los parámetros para ver su efecto.

  4. Simule el modelo durante 20 segundos.

    Para analizar los resultados de la simulación, visualice las señales conectadas a los scopes flotantes del modelo.

    El primer scope muestra que la velocidad del robot disminuye rápidamente después de que el impulso que representa la fuerza de entrada desciende a cero durante 3 segundos de tiempo de simulación. La velocidad se acerca asintóticamente a cero, pero no llega nunca a cero. Un modelado preciso para dinámicas a velocidad baja sin fuerzas externas requiere una representación mucho más compleja del sistema. No obstante, en este caso, esta representación aproximada del sistema es suficiente.

    The scope shows the speed of the robot over the 20 second simulation.

    El segundo scope muestra la posición del robot en el transcurso de la simulación. Al principio, la posición cambia más rápidamente. A los 3 segundos aproximadamente de tiempo de simulación, la posición cambia más despacio a medida que la velocidad del robot disminuye.

    The scope shows the position of the robot over the 20 second simulation.

Haga zoom en la gráfica del scope que muestra la posición del robot. En la unidad de tiempo 3, la posición del robot se encuentra en aproximadamente 0.55 m. Al final de la simulación, la posición del robot se encuentra en aproximadamente 0.7 m. Dado que la velocidad del robot está muy cerca de cero al final de la simulación, los resultados muestran que el robot se mueve menos de 0.16 m después de que la fuerza externa se reduce a cero.

The scope shows a closer view of the robot position over the 20 second simulation. The maximum value on the y-axis is 0.7.

Para averiguar la máxima velocidad:

  1. Haga zoom en la región plana de la señal de velocidad, entre 1 y 3 segundos.

  2. Salga del modo de zoom haciendo clic otra vez en el botón Zoom.

  3. Haga clic en Cursor Measurements .

  4. Coloque el segundo cursor en la región en la que la curva de velocidad es plana.

    The scope shows a closely zoomed view of the robot speed in the part of the simulation where the pulse signal is high. The cursor measurements panel is shown in the Scope window to the right of the plot.

La columna Value en el panel Cursor Measurements indica que la velocidad máxima del robot es 0.183 m/s. Si desea calcular el tiempo que lleva al robot en desplazarse 0.05 m, divida 0.05 m entre 0.183 m/s y obtendrá el resultado de 0.27 s.

Diseñar componentes y verificar el diseño

El diseño del sensor consta de estos componentes:

  • Medición de la distancia entre el robot y el obstáculo: este ejemplo asume que la medición es perfecta.

  • El intervalo de tiempo entre cada medición de la distancia que realiza el sistema de alerta: para mantener el error de medición por debajo de 0.05 m, este intervalo de muestreo debe ser inferior a 0.27 s. Utilice 0,25 segundos.

  • Distancia a la que el sensor genera una alerta: el análisis muestra que la reducción de velocidad debe comenzar en el momento en el que el robot se encuentra a 0.16 m aproximadamente del obstáculo. La distancia real de la alerta también debe tener en cuenta el error de las mediciones discretas, es decir, 0,05 m.

Añadir un componente diseñado

Construya el sensor:

  1. Cree un subsistema con cuatro puertos de entrada y un puerto de salida. El subsistema recibe entradas para las coordenadas x e y del robot y para las coordenadas x e y del obstáculo. La señal de alerta generada por el sensor se conecta al puerto de salida.

    The view of the sensor subsystem in the parent diagram shows the input and output ports.

  2. Construya el subsistema de medición de la distancia. En el subsistema denominado Sensor model, utilice el bloque Subtract, el bloque Math Function con la función magnitude^2, el bloque Sum y el bloque Sqrt para implementar el cálculo de la distancia. Observe que, dentro del subsistema, la distribución de los puertos de entrada no necesitan coincidir con la distribución de los puertos de la interfaz del bloque Subsystem.

    Blocks inside the subsystem that represents the sensor implement the distance calculation.

  3. Para modelar la muestra, añada un bloque Zero-Order Hold de la biblioteca Discrete al subsistema y establezca el parámetro Sample time del bloque en 0.25.

  4. Conecte el resultado del cálculo de la distancia a la entrada del bloque Zero-Order Hold.

  5. Para modelar la lógica de la alerta, añada un bloque Compare to Constant de la biblioteca Logic and Bit Operations y establezca estos parámetros de bloque:

    • Operator: <=

    • Constant Value: 0.21

    • Output data type: boolean

    Con estos valores de parámetros, el valor de salida del bloque es 1 cuando el valor de entrada es menor que o igual a 0.21.

  6. Conecte la salida del bloque Zero-Order Hold a la entrada del bloque Compare to Constant.

  7. Por último, conecte la salida del bloque Compare to Constant al bloque Outport denominado Alert.

    The block diagram shows the contents of the subsystem that models the sensor.

Verificar el diseño

Pruebe el diseño con un obstáculo ubicado en X = 0.65, Y = 0 utilizando los bloques Constant como entradas para el subsistema del modelo Sensor. Esta prueba verifica la funcionalidad del diseño en la dirección X. Puede crear varias pruebas similares para distintas rutas. Este modelo solo genera una alerta. No controla el robot.

  1. Establezca la ubicación del obstáculo. Añada dos bloques Constant de la biblioteca Sources y establezca los valores constantes en 0.65 y 0. Conecte las salidas de posición del robot a la entradas del sensor.

  2. Añada un scope a la salida Alert.

    The view of the top model shows the floating scope added to the Alert output of the subsystem that represents the sensor.

  3. Simule el modelo.

La gráfica de la posición del robot en el scope es igual a la de la ejecución anterior.

The scope shows the position of the robot over the 20 second simulation.

El scope conectado a la señal de alerta muestra que el valor de la señal de alerta se convierte en 1 cuando el robot se encuentra a 0.21 m de la localización del obstáculo y se cumple el requisito de diseño de este componente.

The scope shows the value of the alert signal over the 20 second simulation.

En sistemas del mundo real con componentes complejos y requisitos formales, la línea de productos de Simulink® incluye herramientas adicionales para ajustar y automatizar el proceso de diseño. Requirements Toolbox™ proporciona herramientas para definir requisitos formalmente y vincularlos a los componentes del modelo. Simulink Control Design™ puede facilitar el diseño si desea crear un controlador para este robot. Los productos de Simulink Verification and Validation™ establecen un marco formal para probar componentes y sistemas.

Temas relacionados