主要内容

S-Functions指定样品时间继承规则

的仿真软件金宝app®引擎来确定一个模型可以从父母继承采样时间模型,模型中的S-functions需要指定如何使用示例。您可以指定该信息通过调用宏ssSetModelReferenceSampleTimeInheritanceRulemdlInitializeSizesmdlSetWorkWidths。使用这个宏:

  1. 检查功能是否调用这些宏:

  2. 检查这些在你的s函数TLC代码:

    • LibBlockSampleTime

    • CompiledModel.SampleTime

    • LibBlockInputSignalSampleTime

    • LibBlockInputSignalOffsetTime

    • LibBlockOutputSignalSampleTime

    • LibBlockOutputSignalOffsetTime

  3. 根据您的搜索结果,使用ssSetModelReferenceSampleTimeInheritanceRule这个表显示。

    如果…… 使用…… 例子
    所有的宏和函数存在,继承的功能并不排除模型样本。
    USE_DEFAULT_FOR_DISCRETE_INHERITANCE ssSetModelReferenceSampleTimeInheritanceRule(年代)

    用于任何宏或功能:

    • 把错误如果样品时间是遗传的,连续的,或常数

    • 检查ssIsSampleHit

    • 检查样品是否时间是遗传的mdlSetInputPortSampleTimemdlSetOutputPortSampleTime之前的设置

    ssSetModelReferenceSampleTimeInheritanceRule……(年代,USE_DEFAULT_FOR_DISCRETE_INHERITANCE)

    考虑一下这个mdlOutputs代码:

    静态孔隙mdlOutputs (SimStruct *年代,int_T tid) {const real_T * u = (const real_T *) ssGetInputPortSignal (S, 0);real_T * y = ssGetOutputPortSignal (S, 0);y [0] = ssGetSampleTime(年代,tid) *你[0];}
    功能使用的样品时间计算参数,输出,等等。
    DISALLOW_SAMPLE_TIME_INHERITANCE ssSetModelReferenceSampleTimeInheritanceRule(年代)

    考虑到mdlOutputs代码与s函数的例子sfun_multirate.c:

    静态孔隙mdlOutputs (SimStruct *年代,int_T tid) {InputRealPtrsType enablePtrs;int *启用= ssGetIWork(年代);int enableTid = ssGetInputPortSampleTimeIndex(年代,ENABLE_IPORT);int signalTid = ssGetInputPortSampleTimeIndex(年代,SIGNAL_IPORT);real_T enableTs = ssGetInputPortSampleTime(年代,ENABLE_IPORT);real_T enableTsOffset = ssGetInputPortOffsetTime(年代,ENABLE_IPORT);如果(enableTs = = CONTINUOUS_SAMPLE_TIME & & enableTsOffset = = 0.0){如果(ssIsMajorTimeStep (S) & & ssIsContinuousTask(年代,tid)){如果(signalTid = = enableTid | | ssIsSpecialSampleHit (S signalTid enableTid tid)) {enablePtrs = ssGetInputPortRealSignalPtrs(年代,ENABLE_IPORT);*启用= (* enablePtrs [0] > 0.0);其他}}}{int enableTid = ssGetInputPortSampleTimeIndex(年代,ENABLE_IPORT);如果(ssIsSampleHit (S enableTid tid)){如果(enableTid = = signalTid | | ssIsSpecialSampleHit (S signalTid enableTid tid)) {enablePtrs = ssGetInputPortRealSignalPtrs(年代,ENABLE_IPORT); *enabled = (*enablePtrs[0] > 0.0); } } } if (ssIsSampleHit(S, signalTid, tid) && (*enabled)) { InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,SIGNAL_IPORT); real_T signal = *uPtrs[0]; int i; for (i = 0; i < NOUTPUTS; i++) { int outTid = ssGetOutputPortSampleTimeIndex(S,i); if (outTid==signalTid || ssIsSpecialSampleHit(S, outTid, signalTid, tid)) { real_T *y = ssGetOutputPortRealSignal(S,i); *y = signal; } } } } /* end mdlOutputs */

请注意

如果一个函数不设置ssSetModelReferenceSampleTimeInheritanceRule宏,默认情况下,模型引擎假设s函数并不排除s金宝app函数的模型包含继承一个示例。然而,发动机发出一个警告,表明这个宏的模型包括S-functions没有设置。

您可以使用设置在配置参数诊断>样品时间面板控制仿真软件引擎如何回答当遇到S-funct金宝appions样本时,指定继承规则。切换的未指明的继承性的样品时间诊断为没有一个,警告,或错误。默认值是警告

和有关信息。模型块样品时间继承,明白了引用的模型样品时间

相关的话题