Filter löschen
Filter löschen

pass a variable value from simulink to gui while running simulation

1 Ansicht (letzte 30 Tage)
N/A
N/A am 19 Nov. 2014
Beantwortet: N/A am 21 Nov. 2014
I have a simulink model which generates the position of a link using simmechanics. I need to use this value for the gui graph, and live. Is there a solution to this problem, since simout is only post-execution?

Akzeptierte Antwort

Orion
Orion am 19 Nov. 2014
you can send your signal in an interpreted matlab function (or a S-function).
In this function (an external .m that you wrote), the code is executed at every step time during the simulation.
so you just have to get the handle of your gui components (with findall) and update your button / graphs wth the input signals.
  6 Kommentare
N/A
N/A am 20 Nov. 2014
Got 1). Used the following code:
function y = MyExternalFcn(MyInput)
MyGuiHandle = findall(0,'Tag','figure1');
handles=guihandles(MyGuiHandle);
MyAxeHandle = handles.axes1;
hold on;
plot(MyInput(1),MyInput(2),'b+');
This does capture my GUI but there seems to be no output displayed. Also Simulink execution time is set to 'inf' but execution stops after giving the error: 'Error using test (line 10)'; line(10) is plot... . Am I missing something here?
Orion
Orion am 20 Nov. 2014
I have no idea what your data are.
To debug your problem, just remember that you are using a Mfile.
So you can put a breakpoint at the line 10 (and others if you want), then start the simulation, and every time your Mfile is called, the simulation will pause and you'll be inside the function.
And then, this no longer Simulink, but classic Matlab debugging.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

N/A
N/A am 21 Nov. 2014
function y = MyExternalFcn(MyInput)
% get the handle of your GUI and the handles structure
% get the handle of your GUI
% global MyGuiHandle MyAxesHandle
MyGuiHandle = findall(0,'Tag','figure100'); %Tag of Figure
% assignin('base','MyGuiHandle',MyGuiHandle);
handles=guihandles(MyGuiHandle);
MyAxesHandle = handles.axes1;
axes(MyAxesHandle)
plot(MyAxesHandle,MyInput(1),MyInput(2),'bo');
y = 1;

Kategorien

Mehr zu Simulink Functions 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!

Translated by