Main Content

Ejecutar simulaciones de forma programática

Para ejecutar simulaciones de forma programática, puede escribir scripts o generar comandos en la ventana de comandos de MATLAB®. Existen varias interfaces que proporcionan prestaciones de simulación programática. Cada interfaz tiene diferentes prestaciones para configurar el comportamiento de la simulación e interactuar con la simulación durante su ejecución.

Interfaz programáticaCasos prácticos generales
Función sim

Configurar y ejecutar simulaciones.

Objeto Simulation

Configurar y ejecutar simulaciones, ajustar valores de variables y parámetros durante la simulación y escribir scripts que controlen la ejecución de la simulación.

Función set_param con argumento nombre-valor SimulationCommand

Interactuar con la simulación en la ventana de comandos de MATLAB y Simulink Editor.

Las simulaciones que se ejecutan de forma programática mediante la función sim, el objeto Simulation o la función set_param se ejecutan de una en una, en serie. Para ejecutar simulaciones paralelas o por lotes, utilice la función parsim o batchsim.

Decidir cómo ejecutar o instruir simulaciones programáticas

En general, la función sim admite la mayoría de los requisitos para ejecutar y crear scripts de simulaciones programáticas en serie, donde no se desea interactuar con el modelo durante la simulación.

Si desea interactuar con una simulación de forma programática durante la simulación, utilice un objeto Simulation. Si usa un objeto Simulation, podrá controlar la ejecución de la simulación y ajustar valores de parámetros y variables durante la simulación. Puede escribir scripts de MATLAB que modifiquen valores de parámetros o variables en función de los resultados y los valores calculados en la simulación.

Aunque puede interactuar de forma programática con las simulaciones que ejecute mediante objetos Simulation, no podrá interactuar con el modelo o la simulación asociados a un objeto Simulation que utilice Simulink Editor mientras el estado de la simulación sea distinto a inactive. Si genera comandos de simulación mediante la función set_param, podrá interactuar con un modelo de forma programática a través de la línea de comandos de MATLAB y de forma interactiva mediante Simulink Editor. Los comandos de simulación se admiten en las simulaciones que se inician haciendo clic en Run en Simulink Editor o generando el comando de simulación start.

En la tabla se resume la funcionalidad disponible para escribir scripts de simulaciones programáticas que utilizan la función sim y aquellas que utilizan el objeto Simulation.

Acción u opciónFunción simObjeto Simulation
Configurar la simulación sin modificar directamente el modelo

Puede especificar los valores de parámetros y variables para anular los valores guardados en el modelo mediante un objeto Simulink.SimulationInput, una estructura, un objeto Simulink.ConfigSet o argumentos nombre-valor.

Los valores de anulación que especifique se aplican a la simulación y se revierten una vez finalizada la simulación.

Puede especificar los valores de parámetros y variables para anular los valores guardados en el modelo creando un objeto Simulation a partir de un objeto Simulink.SimulationInput ya existente o especificando los valores de anulación del objeto Simulation.

Los valores de anulación que especifique se aplican a la simulación y se revierten una vez finalizada la simulación.

Ajustar valores de parámetros y variables durante la simulaciónNo se admite.

Utilice las funciones setVariable, setModelParameter y setBlockParameter para ajustar los valores de parámetros durante la simulación.

Detener la simulación

En la ventana de comandos de MATLAB, pulse Ctrl+C.

Llame a la función stop o terminate.
Pausar la simulación

No se admite.

Llame a la función pause.

Utilice la función step para especificar el avance de la simulación antes de pausarla.

Generar un comando en la ventana de comandos de MATLAB

No se admite.

La línea de comandos de MATLAB no está disponible durante la simulación.

Admitido.

La línea de comandos de MATLAB está disponible mientras se ejecuta la simulación, excepto cuando se adelanta la simulación mediante la función step.

Ver resultados de la simulación mediante bloques de visualización, como el bloque Scope

Se admite en las simulaciones en modo Normal y Accelerator.

No se admite para simulaciones en el modo Rapid Accelerator.

No se admite.
Etiquetas de valor del puertoNo se admite.No se admite.
Recorrer la simulación

No se admite.

Para adelantar la simulación, utilice la función step.

No se admite ir hacia atrás.

Puntos de interrupción de señales

No se admite.

No se admite.
Pausar en o después de una unidad de tiempo especificada

No se admite.

Utilice la función step con el argumento nombre-valor PauseTime.
Capturar información sobre errores de simulación en una salida de simulación en vez de generar una excepción

Especifique el argumento nombre-valor CaptureErrors como "on".

Especifique el parámetro CaptureErorrs como "on" mediante setModelParameter.

Modo Fast RestartAdmitido.Admitido.
Velocidad de simulaciónAdmitido.Admitido.
Tiempo de espera de la simulación

Especificar una cantidad máxima de tiempo para permitir que se ejecute la función sim utilizando el argumento nombre-valor Timeout.

No se admite.
Solicitar estado de la simulación

No se admite.

La ejecución de la simulación bloquea el subproceso de MATLAB.

La propiedad Status del objeto Simulation indica el estado actual de la simulación.
Ejecutar la simulación en la sesión de MATLAB iniciada utilizando las opciones -nodesktop o -nodisplay para matlab (macOS) o matlab (Linux).Admitido.No se admite.

Ejecutar e escribir un script de simulación con la función sim

La función sim tiene varias sintaxis que puede usar para ejecutar y configurar simulaciones de forma programática. Si desea simular el modelo utilizando los valores actuales de todos los parámetros de configuración del modelo, los valores de los parámetros de bloque, etc., utilice la sintaxis más básica y especifique solo el nombre del modelo como un argumento de entrada.

out = sim("ModelName");

Esta sintaxis devuelve un solo objeto Simulink.SimulationOutput que contiene todos los resultados de la simulación excepto cuando el parámetro Single simulation output está desactivado. Para garantizar que pueda escribir código congruente para todas las simulaciones que ejecuta de forma programática, active el parámetro Single simulation output.

Si desea configurar la simulación, por ejemplo, especificando valores de parámetros de configuración del modelo, valores de parámetros de bloque y valores de variables, utilice un objeto Simulink.SimulationInput para especificar la configuración de la simulación. Este comando muestra la sintaxis básica para utilizar un objeto SimulationInput. El objeto SimulationInput, que se almacena en una variable denominada simin, es el único argumento de entrada. Los resultados de la simulación siempre se devuelven como un único objeto Simulink.SimulationOutput.

out = sim(simin);

La tabla resume las opciones que puede configurar y utiliza casos de uso para cada sintaxis.

Sintaxis de simOpciones de configuración de la simulación
out = sim("ModelName");

Simule el modelo utilizando los valores actuales de los parámetros de configuración, parámetros de bloque y variables.

out = sim(simin);

Especifique la configuración de la simulación utilizando un objeto Simulink.SimulationInput con valores de anulación para:

  • Parámetros de configuración del modelo

  • Variables

  • Entradas externas

  • Estado inicial

  • Parámetros de bloque

Utilice argumentos nombre-valor para configurar opciones adicionales, como si debe:

  • Ejecutar simulaciones utilizando el modo Fast Restart.

  • Capturar errores en la salida de la simulación o generar excepciones de MATLAB.

  • Abrir Simulation Manager.

out = sim("ModelName",Name=Value);

Utilice argumentos nombre-valor para configurar opciones de simulación, como:

  • Parámetros de configuración del modelo

  • Opciones para marcar la velocidad de simulación

  • Simular o no con el modo Fast Restart

  • Capturar o no errores en la salida de simulación o generar excepciones de MATLAB

out = sim("ModelName",paramstruct);

Especifique los valores de los parámetros de configuración del modelo y las opciones de simulación utilizando una estructura con nombres de campo que unen cada nombre de parámetro con los valores del campo que especifican el valor que se debe usar para cada parámetro.

Por ejemplo, para especificar el valor del parámetro StopTime como 20, cree una estructura con un campo denominado StopTime que tenga un valor de "20".

paramStruct.StopTime = "20";
out = sim("ModelName",configset);

Especifique los valores de los parámetros de configuración del modelo utilizando un objeto Simulink.ConfigSet.

Ejecutar e escribir un script de simulación con objetos Simulation

Los objetos Simulation representan la simulación de un modelo e incluyen una interfaz para controlar e interactuar con la simulación mientras se ejecuta. La línea de comandos de MATLAB está disponible mientras se ejecuta la simulación, al contrario que las simulaciones que se ejecutan mediante la función sim. Si utiliza un objeto Simulation, podrá hacer lo siguiente:

  • Escribir scripts que controlen e interactúen con simulaciones mediante lógica del código de MATLAB en función de los resultados de la simulación a los que pueda acceder durante el tiempo de ejecución.

  • Avanzar a las unidades de tiempo principales de la simulación.

  • Ajustar valores de parámetros y variables durante la simulación.

  • Desarrollar apps con App Designer para controlar, monitorizar e interactuar con simulaciones.

  • Implementar scripts y apps de simulación con Simulink®Compiler™.

En la tabla se resumen las funciones del objeto Simulation que puede utilizar para controlar la ejecución de la simulación.

FunciónDescripciónDetalles
initialize

Inicializa la simulación.

La línea de comandos de MATLAB no estará disponible hasta que se complete el proceso de inicialización.

start

Inicia la simulación.

Si inicia una simulación que no se haya inicializado, la función start inicializará la simulación antes de iniciarla. La línea de comandos de MATLAB no estará disponible hasta que se complete la inicialización. Una vez completada, se inicia la simulación y la línea de comandos de MATLAB pasa a estar disponible.

step

Avanza la simulación un tiempo determinado y la pausa.

Puede avanzar la simulación mediante una única unidad de tiempo principal, mediante un número especificado de unidades de tiempo principales y hasta un determinado tiempo de simulación o más allá de este. La simulación se pausa luego de avanzar a la unidad de tiempo correspondiente.

La línea de comandos de MATLAB no está disponible mientras la simulación avanza.

pausePausa la simulación activa.

La función pause envía una solicitud inmediata para pausar la simulación. La simulación se pausa luego de completarse los procesos que deben terminar sin interrupción.

La línea de comandos de MATLAB no está disponible mientras la simulación está pausada.

resumeReanuda la simulación pausada.

La línea de comandos de MATLAB no está disponible mientras se reanuda la simulación. Vuelve a estar disponible una vez que se inicia la ejecución de la simulación.

stopDetiene la simulación activa antes del tiempo de detención de la simulación.

La función stop envía una solicitud inmediata para detener la simulación. La simulación se detiene luego de completarse los procesos que deben terminar sin interrupción.

Cuando una simulación llega al tiempo de detención, esta se detiene por sí sola, excepto si la avanza en modo Normal o Accelerator hasta la última unidad de tiempo mediante la función step. En este caso, la simulación se pausa luego de la última unidad de tiempo.

terminateFinaliza la simulación.

Las simulaciones que no tengan activado el modo Fast Restart finalizan al detenerse. Las simulaciones con modo Fast Restart permanecen compiladas hasta que se detienen para que no tenga que inicializar las siguientes simulaciones. Las simulaciones que se ejecutan luego de finalizarlas deben inicializarse.

Puede configurar simulaciones especificando el estado inicial, entradas externas, parámetros de modelos, parámetros de bloque y valores de variables que se utilizarán en la simulación. Los valores que especifique anulan los valores guardados en el modelo durante la simulación y se revierten una vez finalizada la simulación. También puede modificar los valores de parámetros y variables ajustables durante la simulación. En la tabla se resumen las funciones del objeto Simulation que puede usar para configurar la simulación.

FunciónDescripciónDetalles
setInitialStateEspecifica el estado inicial o el punto operativo de la simulación.El estado inicial se puede ajustar solo entre simulaciones, no mientras se estén ejecutando.
setExternalInputEspecifica los datos de entrada externos que se cargarán mediante puertos de entrada de nivel superior.Los datos de entrada externos se pueden ajustar solo entre simulaciones, no mientras se estén ejecutando.
setModelParameterEspecifica valores de parámetros de configuración de modelos que se utilizarán en la simulación.La mayoría de los parámetros de configuración se pueden ajustar solo entre simulaciones, no mientras se estén ejecutando.
setVariableEspecifica valores de variables que se utilizarán en la simulación.Puede configurar los valores iniciales de las variables que se utilizarán en la simulación y ajustarlos durante la simulación.
setBlockParameterEspecifica valores de parámetros de bloque que se utilizarán en la simulación.

Algunos parámetros de bloque se pueden ajustar solo entre simulaciones, no mientras se estén ejecutando.

Las simulaciones implementadas no permiten ajustar valores de parámetros de bloque. Para ajustar valores de parámetros de bloque en una simulación implementada, especifique el valor del parámetro de bloque como una variable y luego ajuste el valor de la variable en su lugar.

Interactuar con simulaciones generando comandos de simulación

Iniciar una simulación utilizando la función set_param para generar un comando de simulación equivale a iniciar una simulación desde una interfaz gráfica; por ejemplo, haciendo clic en Run en Simulink Editor. Los comandos de la simulación inician de forma programática las mismas acciones que las que el usuario puede iniciar mediante una interfaz gráfica, como por ejemplo Simulink Editor. Resulta conveniente utilizar comandos de simulación en los flujos de trabajo que implican alternar entre la ventana de comandos de MATLAB y Simulink Editor u otra interfaz gráfica.

Para generar comandos de simulación, especifique el argumento nombre-valor SimulationCommand para la función set_param. Por ejemplo, este comando genera el comando de simulación start para un modelo denominado MyModel.

set_param("MyModel",SimulationCommand="start")

Dado que cuando se genera el comando de simulación start se desarrolla la misma acción que al iniciar una simulación desde una interfaz gráfica, puede generar comandos de simulación para controlar e interactuar con simulaciones que haya iniciado desde una interfaz gráfica o bien generando el comando de simulación start. Las simulaciones que se inician generando el comando de simulación start ofrecen las mismas funcionalidades y soporte que las simulaciones que se inician desde una interfaz gráfica, entre las que se incluyen:

  • Ajustar valores de parámetros durante la simulación mediante una interfaz gráfica o la función set_param

  • Ver valores de señales y resultados de simulaciones en el diagrama de bloques mediante etiquetas de valor del puerto y bloques de visualización, como el bloque Scope

  • Controlar la ejecución de la simulación pausando, adelantando y retrocediendo la simulación con los botones Pause, Step Forward y Step Back respectivamente

  • Depurar herramientas, como los puntos de interrupción de señales

Los errores que se producen como resultado de generar un comando de simulación o durante las simulaciones que haya iniciado mediante el comando de simulación start se notifican en Diagnostic Viewer, excepto aquellos que se producen durante la ejecución del comando de simulación update.

Cuando genera comandos de simulación durante una simulación, el software no ejecuta el comando inmediatamente. El software genera el comando solo después de que los procesos que se están ejecutando actualmente que no pueden interrumpirse hayan finalizado. Por ejemplo, si genera un comando de simulación mientras el solver está determinando la siguiente unidad de tiempo, el software ejecuta el comando de simulación solo después de que el solver finalice el tiempo de propagación.

No todas las acciones disponibles en Simulink Editor tienen un comando de simulación correspondiente. La tabla describe cada comando de simulación, las acciones correspondientes de la interfaz gráfica y los accesos directos.

Comando de simulación DescripciónAcción equivalente de la interfaz gráficaAcceso directo
set_param(mdl,SimulationCommand="start")

Inicia la simulación.

Haga clic en Run.

Ctrl+T o F5

set_param(mdl,SimulationCommand="stop")

Detiene la simulación.

Haga clic en Stop.

Ctrl+Shift+T

set_param(mdl,SimulationCommand="pause")

Pausa la simulación.

Haga clic en Pause.

Ctrl+T o F5

set_param(mdl,SimulationCommand="continue")

Reanuda la simulación pausada.

Haga clic en Continue.

Ctrl+T o F5

set_param(mdl,SimulationCommand="update")

Actualiza el diagrama.

En la barra de herramientas de Simulink, en la sección Prepare, haga clic en Update Model.Ctrl+D
set_param(mdl,SimulationCommand="writedatalogs")

Escribe variables de registro de datos en el área de trabajo.

No se admite.No se admite.

Si inicia una simulación desde una interfaz gráfica o generando un comando de simulación, puede consultar el estado de la simulación por medio de la función get_param. Por ejemplo, este comando consulta el estado de la simulación de un modelo denominado MyModel.

simstatus = get_param("MyModel","SimulationStatus")

En esta tabla se describe el estado de la simulación que se corresponde con cada valor devuelto para el argumento SimulationStatus.

Valor SimulationStatusDescripción
stoppedSimulación detenida.
initializingFase de inicialización en ejecución.
runningFase de ejecución en curso.
pausedPausa en fase de ejecución.
compiledModelo compilado.
updatingActualización de diagrama en curso.
terminatingFase de finalización en ejecución.
externalSimulación con Simulink Coder™.

Consulte también

Funciones

Objetos

Temas relacionados