How to execute a simulink simulation stepwise from python without a display?

6 views (last 30 days)
I have a .slx file with a simulink simulation that i run from python code. I need to execute it step-wise and adjust parameters after each step.
My code is executed on a server to which i have remote access via SSH. The goal is to execute multiple variants of the simulation in parallel and disconnect from the server while the simulations are executed.
The 'set_param' command can not be used for this due to having no display. According to https://de.mathworks.com/help/simulink/slref/set_param.html the 'sim' command should be used in this case. While
sim_out = eng.sim('simulation_name')
works fine and returns the desired values it dows not work with
sim_out = eng.sim('simulation_name','StartTime','0.0','StopTime','10.0')
which would be needed for a stepwise execution. Or rather: I can execute it, but the return value is an empty array of shape (1,1,0).
I noticed that the second command works perfectly fine when put into the matlab command prompt instead of executing it via python.
My aim is to have something as following:
import matlab.engine as me
eng = me.start_matlab('-nodesktop -nosplash -nodisplay')
step_size = 10.0
steps = 1500
for i in steps:
action = get_action(state)
sim_out = sim('simulation_name','Action',str(action),'StartTime',str(i * step_size),'StopTime',str((i+1) * step_size))
state = np.array(eng.workspace['State'])
end

Answers (1)

Anjaneyulu Bairi
Anjaneyulu Bairi on 6 Sep 2023
I understand that you are trying to execute the Simulink model in stepwise manner. Refer the below MATLAB Answer which solves your query.
Additionally, refer the below link which explains how to control execution of Simulink model in python.
Hope the provided information helps in resolving your query.

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!