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