Programmatically change user defined Library objects in Simulink model

Illustration
ventrey - 2021-09-23T13:26:39+00:00
Question: Programmatically change user defined Library objects in Simulink model

I have made a plain Simulink model consisting of Current Sensor/Scope/Switch etc. There are also two subsystems (Load and Battery) that are user defined Library objects. Links looks fine. The model works and simulation results are correct.   Now I want to programmatically (from Matlab command window) change the Library objects. Say from Load_RLC to Load_R. Both exists as Library objects. I have tried commandos like:   open_system('LowVoltageSystem') add_block('Load_R','LowVoltageSystem') pos=get_param('Load_RLC/LowVoltageSystem,'position') delete_block('Load_RLC/LowVoltageSystem’) set_param('Load_R','position',pos)   But the ‘Load_R’ can not be found (There is no block named 'Load_R')   I have also tried things like: replace_block('LowVoltageSystem,'Load_RLC','Load_R') Here the ‘Load_R’ is invalid block type.(Invalid NewBlock () passed to REPLACE_BLOCK. Try built-in/BLOCKTYPE or a valid block name.) The replace_block command, however, works with the built-in library blocks.   If I change the library components ‘manually’ everythings works, so there is nothing wrong with the components themselves.   What am I doing wrong here?

Expert Answer

Profile picture of Kshitij Singh Kshitij Singh answered . 2025-11-20

In the first part of your code, add_block() is not used properly. You need to specify the full path of both the source and destination blocks. Look at examples in "doc add_block".
 
replace_block() is the ideal function to use for your task. Again, you need to specify the full path of the source and desination blocks, e.g. 'CustomLibraryFile/LibraryBlock', 'ModelFile/ModelSystem/BlockName'. For custom library, you also need to open the library first using open_system() or load_system()


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!