User-defined sample time in s-function
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
jpro89
am 2 Mär. 2017
Beantwortet: Jose Lara
am 8 Mär. 2017
I am trying to set the sample time using the value of an input to the s-function. My code looks as follows:
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 1e-5);
ssSetOffsetTime(S, 0, 0.0);
}
I would like instead to do the following:
static void mdlInitializeSampleTimes(SimStruct *S)
{
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
ssSetSampleTime(S, 0, *uPtrs[1]);
ssSetOffsetTime(S, 0, 0.0);
}
However, this does not work at all. I have looked at the simulink examples and the closest thing I found is getting the sample time from the defined parameters in the s-function (which is not exactly what I am looking for). Has anybody tried something similar?
0 Kommentare
Akzeptierte Antwort
Jose Lara
am 8 Mär. 2017
This is actually not possible. According to the C MEX S-Function documentation, "mdlInitializeSampleTimes" is only computed once, before the simulation loop. You can only access port signal values during the simulation loop, therefore the function "ssGetInputPortRealSignals" cannot be used in "mdlInitializeSampleTimes".
Check out the Simulink Engine Interaction with C S-Functions documentation for more information regarding the process.
Another option you have is to access the sample time of an Input port or inherit the sample time from as shown below:
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime( S, 0, INHERITED_SAMPLE_TIME );
ssSetOffsetTime( S, 0, 0 );
ssSetModelReferenceSampleTimeDefaultInheritance(S);
}
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Block and Blockset Authoring finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!