Please urgent help

3 次查看(过去 30 天)
koko kinder
koko kinder 2012-1-23
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
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
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
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.
koko kinder
koko kinder 2012-1-24
Sorry about any inconvenience with the questions.The questions are on the same code. I've tried to use different types of breakpoints for example I've used the dbcont after sim() and it has the same effect with no progress. Thanks

请先登录,再进行评论。

更多回答(1 个)

TAB
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

类别

Help CenterFile Exchange 中查找有关 Additional Math and Discrete 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by