Data from simulink to python with "To Workspace" block
19 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Patrick
el 23 de En. de 2021
Editada: Deepak Meena
el 1 de Feb. de 2021
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 comentarios
Respuesta aceptada
Deepak Meena
el 31 de En. de 2021
Editada: Deepak Meena
el 1 de Feb. de 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'];
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Call MATLAB from Python 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!