Is it possible to write a script to automatically replace all S-Functions in a model with their counterpart Simulink Blocks?

5 visualizaciones (últimos 30 días)
I have a huge Simulink model which is filled with loads of S-Functions, and I'm looking to write some code to automatically replace them with Simulink blocks (i.e. the original blocks that the S-Functions replaced). There are too many to go through and do it manually. I was wondering if there's some way of calling the Simulink models?
I've tried using replace_block:
open ModelName
SFuns_loc = find_system('ModelName','BlockType','S-Function');
for s = 1:max(size(char(SFuns_loc)))
replace_block('ModelName','S-Function','Mux','noprompt');
end
So I can replace them with Muxes or bus creators etc (just as an example of how I'm using the replace_block function). However, what I need is a piece of code that will do the same thing as double-clicking on each S-Function and selecting "replace block with original Simulink Model".
Thanks for your advice in advance.
Ben

Respuesta aceptada

TAB
TAB el 6 de Sept. de 2012
Editada: TAB el 6 de Sept. de 2012
Try only
replace_block('ModelName','S-Function','Mux','noprompt');
It will replace all S-Function blocks in the model with Mux.
[EDITED]
I think replace_block() will not work here. You try with following steps
  1. Find all S-function blocks in the model using find_sustem().
  2. Get the position of s-function block using get_param().
  3. Delete the s-function block using delete_block().
  4. Copy the Subsystem from back-up model file using add_block() at the same position.
You can operate a loop to replace each S-function block one by one using above steps.
  5 comentarios
TAB
TAB el 6 de Sept. de 2012
Editada: TAB el 6 de Sept. de 2012
OK, think I got it.
So how you have backed-up your original subsystems ? Are they in the same model file or in different file ?
See some suggestion in edited part of my answer.
Ben
Ben el 11 de Sept. de 2012
Ahh that's brilliant. Yes, I found the original model files and used add_block and set_param for the position and it's worked. Thank you very much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programmatic Model Editing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by