S-Function: Inital Value as Output
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Kaustubha Govind
2013-3-27
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 个评论
更多回答(1 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!