MATLAB Answers

S-Function: Inital Value as Output

6 views (last 30 days)
Hi at all,
I got a littel problem while using S-Function, written in C. At the beginning of the simualtion I compute some initial values. I want to pass out one of them on an output port during the mdlOutput Routine. For that reason I use the
ssGetSimStatus
function an compare the result with the following expression:
SIMSTATUS_INITIALIZING
As the result the output port is Zero for all time, which is actually not the expected one. Changing the expression to
SIMSTAUTS_RUNNING
leads to the correct behavior, even during the initializing. (I figured this out with the help of fprintf function).
Does anybody know a way to set an output port to a specified value once at the initializing?
To help you understand my current implementation and problem, I post a snippet of my code, placed in the mdlOutput function:
// Set Schedule Value of the Rolling Force
ssGetSimStatus(S, &SimStatus);
if (SimStatus == SIMSTATUS_INITIALIZING)
{ Output[0] = DWorkVec[0];
#ifdef __EchoMode__
fprintf(LogFile, "\tSet Schedule Value of the Rolling Force\n");
#endif
}
Thanks in advance, CN

  0 Comments

Sign in to comment.

Accepted Answer

Kaustubha Govind
Kaustubha Govind on 27 Mar 2013
mdlOutputs is indeed executed only during model execution, so ssGetSimStatus should always return SIMSTATUS_RUNNING. I think the status is SIMSTATUS_INITIALIZING in mdlInitializeConditions, so you need to initialize your DWork vector there and then use the DWork vector value in mdlOutputs.

  0 Comments

Sign in to comment.

More Answers (1)

Christoph
Christoph on 28 Mar 2013
Thanks for your support Kaustubha,
I initailized my DWorkVector the right way in the mdlInitializeConditions function. I only want to reuse this vector to keep the number of DWork vectors snall. But if there is no other way I have to use another DWork vector or a vector with more dimensions.

  0 Comments

Sign in to comment.

Sign in to answer this question.