MATLAB: Simscape block parameter, change dynamically during simulation

change parameter dynamicallyMATLABMATLAB and Simulink Student SuiteSimscapesimulinkthermal

is it possible to change a parameter of a Simscape block during simulation time?
Example: I want to change the thermal conductivity of the "Conductive Heat Transfer" block during the simulation time.
The thermal conductivity depends on the transferred heat and the temperature of the sink. For this I have a lookup table or a variable in workspace. Is it possible to check after each iteration the heat from the "Ideal Heat Flow Sensor" and the sink temperature and then send the new thermal conductivity to the "Conductive Heat Transfer" block for the next iteration?

Best Answer

  • To do this, create a custom block by modifying the shipping Conductive Heat Transfer block to make the "Thermal conductivity" parameter an input.
    1. Open the source code for the Conductive Heat Transfer block
    2. Save it to a new .ssc file.
    3. Add an inputs section (you can look at the source code for the temperature source block to see what it should look like -- essentially a line with "inputs" and another with "end").
    4. Move the line "th_cond = { 401, 'W/(m*K)' }; % Thermal conductivity" from the "parameters" section of the file to the newly created "inputs" section you just added.
    5. Get a Simscape Components block from the Foundation Utilities Library and point it at that new .ssc file you just created.
    Congratulations! You have just created your first custom Simscape component.