Data from simulink to python with "To Workspace" block
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Patrick
am 23 Jan. 2021
Kommentiert: Shubham
am 16 Jan. 2025
Hi everyone,
I would like to use a controller written in python for a simulink enviornment and therefore I am using the python matlab API. But the problem is how do i get information (state information for each time step) from the simulink enviornment to my python script. I have tried the following in python:
import matlab.engine
import matplotlib.pyplot as plt
eng = matlab.engine.start_matlab()
modelName = 'plant'
eng.eval("model = '{}'".format(modelName), nargout=0)
eng.eval("load_system(model)", nargout=0)
# Initialize Control Action to 0
u = 0
eng.set_param('{}/u'.format(modelName), 'value', str(u), nargout=0)
print("Initialized Model")
# Start Simulation and then Instantly pause
eng.set_param(modelName, 'SimulationCommand', 'start', 'SimulationCommand', 'pause', nargout=0)
print(eng.who())
eng.set_param(modelName, 'SimulationCommand', 'stop', nargout=0)
eng.quit()
The simulink model "plant" is attached where I use "To workspace" block to load the data in to the workspace. But I don't know how to get the data now of the object "eng.workspace['out']"
MATLAB version: R2020b
Python: 3.7.9
Thanks in advance
0 Kommentare
Akzeptierte Antwort
Deepak Meena
am 31 Jan. 2021
Bearbeitet: Deepak Meena
am 1 Feb. 2021
Hi Patrick,
Out is the variable which store the output of the To workspace block. By default the variable would be if type of Timeseries. To change it to array , go to block parameter->save format , change it to Array.
Now out contains many variable , but the variable you are looking for would be out.simout , so to access that in python:
p = eng.workspace['out.simout'];
1 Kommentar
Shubham
am 16 Jan. 2025
Hello, I am trying the same thing. It still won't let me get access to workspace variable. Not sure what I am doing wrong. Does the version of Python kernel matter? Mine is 3.11 but the link here says it has to be 3.7 How to Interact with Simulink Using Python - File Exchange - MATLAB Central.
Would appreciate your help!
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Call MATLAB from Python finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!