Ways for resetting blocks to initial state during simulation

1 visualización (últimos 30 días)
Pascal Will
Pascal Will el 29 de Oct. de 2013
Respondida: Prateekshya el 16 de Oct. de 2024
Hello,
I'd like to know the possibilities for resetting certain blocks (built-in and S-function) to their respective initial state while a simulation is running or paused.
What I try to achieve is reinitializing certain function-call systems incl. all child blocks/systems without (with minimal) modifications and parameter changes (e.g. 'StatesWhenEnabling').
Currently I know of:
  • Enabling/disabling function-call systems (if 'StatesWhenEnabling' is 'reset'),
  • Certain blocks provide a reset port.
Maybe, is there a way to manually execute 'InitializeConditions' (or equivalent for built-in blocks)?
Thanks for helping,
Pascal

Respuestas (1)

Prateekshya
Prateekshya el 16 de Oct. de 2024
Hello Pascal,
Resetting certain blocks to their initial state during a running or paused simulation in Simulink can be challenging, especially if you want to minimize modifications to the model. Here are some strategies you can use to achieve this:Strategies for Resetting Blocks
  • Enable/Disable with State Reset: As you mentioned, you can use the enable/disable mechanism for function-call systems, setting the StatesWhenEnabling parameter to reset. This is a straightforward way to reset states when the system is re-enabled.
  • Reset Ports: Some blocks, like the Integrator block, offer a reset port. By sending a trigger signal to this port, you can reset the block's state during simulation. Check if the blocks you want to reset have this feature.
  • Manual Execution of Initialization: Unfortunately, there is no direct built-in functionality to manually execute InitializeConditions for built-in blocks during simulation. However, you can use workarounds like: Custom Reset Logic: Implement custom logic in an S-Function or a MATLAB Function block to reset states as needed. You can use persistent variables or block states to manage this. Triggered Subsystems: Use a triggered subsystem to encapsulate the blocks you want to reset. By triggering the subsystem, you can reinitialize its state.
  • State Control via S-Functions: If you are using S-Functions, you can manage states manually. Implement custom logic in the S-Function to reset states when a specific event occurs. Use the mdlInitializeConditions method to define initial states and create a mechanism to call this method during simulation.
  • Simulink Control and Callbacks: Use MATLAB scripts or functions to control the simulation and reset states. For instance, you can pause the simulation, set block states programmatically using set_param, and then resume the simulation.
  • Model Callbacks: Implement model callbacks (e.g., PostLoadFcn, StartFcn) to initialize or reset states when specific events occur. While not directly usable during simulation, they can be part of a broader strategy to manage simulation states.
I hope this helps!

Categorías

Más información sobre Event Functions en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by