Please urgent help
7 ビュー (過去 30 日間)
古いコメントを表示
I am facing minor issues regarding my code. I want to have a real time simulation where an object moves according to a sine wave block fed through an S-function. The problem is that the model simulation starts alone and then the drawing starts to appear in the GUI.Also,I could not get the value of the sine wave S-function and updating it in the variable arm angle in the GUI M-file draw function. Could you please assess me on this issue. My files are:
1- GUI M-file (using guide) and it is structure is :
function varargout = auto(varargin) ................................ .
.
. .
including all the buttons callbacks and handles initialization . Start button function having the command sim() and call the draw function .
Function [] = draw(arm angle) arm angle need to have it is value from the S-function to control its movement in real time. .
.
drawing commands of the object needed
.
.
drawnow()
_________________________
2- s-function file
function [sys,x0,str,ts] = my_sfunc(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=0;
sizes.NumOutputs=0;
sizes.NumInputs=2;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [-1 0];
function sys=mdlDerivatives(t,x,u)
sys = [];
function sys=mdlUpdate(t,x,u)
sys = [];
function [sys,x0,str,ts]=mdlOutputs(t,x,u)
sys = [];
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];
________________________________________________________
3- simulink model having a sine wave block and a clock connected to the input of the s function block u(1), u(2)
1 件のコメント
Walter Roberson
2012 年 1 月 23 日
Still waiting for your answer in your previous thread on this topic,
http://www.mathworks.com/matlabcentral/answers/26785-running-simultaneously-a-gui-file-and-simulink-model-with-s-function
採用された回答
Walter Roberson
2012 年 1 月 23 日
Your mdlUpdate() function does not appear to be invoking your drawing routine.
Also, make sure you have set the direct feedthrough flags appropriately; see http://www.mathworks.com/matlabcentral/newsreader/view_thread/125257
4 件のコメント
Walter Roberson
2012 年 1 月 23 日
mdlUpdate() should call draw() to pass in the current arm angle. Or perhaps it would be easier to have mdlOutputs() call it. I find the difference to be confusing, especially when I start reading about feedthrough.
その他の回答 (1 件)
TAB
2012 年 1 月 24 日
A more convinient way to access runtime simulink data by using Simulink.RunTimeBlock object or by using event listener callback(add_exec_event_listener).
To see a good demo type
>> sldemo_msfcn_lms
on command window
See
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Additional Math and Discrete についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!