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ática | Casos 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ón | Función sim | Objeto 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 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 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ón | No se admite. | Utilice las funciones |
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 Utilice la función |
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 |
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 puerto | No se admite. | No se admite. |
Recorrer la simulación | No se admite. | Para adelantar la simulación, utilice la función 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 | Especifique el parámetro |
Modo Fast Restart | Admitido. | Admitido. |
Velocidad de simulación | Admitido. | Admitido. |
Tiempo de espera de la simulación | Especificar una cantidad máxima de tiempo para permitir que se ejecute la función | 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 sim | Opciones 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
Utilice argumentos nombre-valor para configurar opciones adicionales, como si debe:
|
out = sim("ModelName",Name=Value); | Utilice argumentos nombre-valor para configurar opciones de simulación, como:
|
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 paramStruct.StopTime = "20"; |
out = sim("ModelName",configset); | Especifique los valores de los parámetros de configuración del modelo utilizando un objeto |
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ón | Descripción | Detalles |
---|---|---|
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 |
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. |
pause | Pausa la simulación activa. | La función La línea de comandos de MATLAB no está disponible mientras la simulación está pausada. |
resume | Reanuda 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. |
stop | Detiene la simulación activa antes del tiempo de detención de la simulación. | La funció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 |
terminate | Finaliza 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ón | Descripción | Detalles |
---|---|---|
setInitialState | Especifica 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. |
setExternalInput | Especifica 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. |
setModelParameter | Especifica 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. |
setVariable | Especifica 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. |
setBlockParameter | Especifica 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ón | Acción equivalente de la interfaz gráfica | Acceso 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 SimulationStatus | Descripción |
---|---|
stopped | Simulación detenida. |
initializing | Fase de inicialización en ejecución. |
running | Fase de ejecución en curso. |
paused | Pausa en fase de ejecución. |
compiled | Modelo compilado. |
updating | Actualización de diagrama en curso. |
terminating | Fase de finalización en ejecución. |
external | Simulación con Simulink Coder™. |