ssSetBlockReduction

Запросите, чтобы механизм Simulink попытался уменьшить блок

Синтаксис

uint_T ssSetBlockReduction(SimStruct *S, uint_T flag)

Аргументы

S

SimStruct, представляющий блок S-Function.

flag

Если не нуль, Simulink® двигатель должен попытаться уменьшить этот блок.

Возвраты

0 если flag является 0 и 1, в противном случае.

Описание

Используйте этот макрос, чтобы попросить механизм уменьшить этот блок. Блок редукционен, если его можно исключить из модели, не влияя на поведение модели. Двигатель оптимизирует эффективность, пропуская выполнение редуцируемых блоков во время симуляции модели. В частности, двигатель не вызывает mdlStart, mdlUpdate, и mdlOutputs методы редуцируемых блоков. Кроме того, двигатель выполняет mdlTerminate метод редуцированного блока, только если блок установил SS_OPTION_CALL_TERMINATE_ON_EXIT опция до начала цикла симуляции, использование ssSetOptions.

Блок должен удовлетворять определенным критериям, чтобы считаться редуцируемым. Для примера,

  • Блок должен иметь по крайней мере один вход.

  • Блок должен иметь то же количество выходов, что и входы, или никаких выходов.

  • Блок не может иметь входы, которые являются шинными сигналами.

  • Блок не может иметь непрерывное состояние.

  • Блок не может иметь дискретных состояний, в то время как модель регистрирует состояния.

  • Блок не может иметь пересечения нуля.

  • Блок не может иметь настраиваемые параметры.

Если блок не удовлетворяет любому из этих критериев, механизм включает блок в симуляцию независимо от того, запросил ли блок сокращение.

Для получения дополнительной информации см. страницу с описанием по сокращению блоков в документации Simulink. Обратите внимание, что если вы хотите включить удаление мертвой ветви, не запрашивайте сокращение блока. Вместо этого установите значение SS_OPTION_NONVOLATILE использование опции ssSetOptions.

Ваша S-функция должна вызвать этот макрос, прежде чем механизм в противном случае активирует S-функции mdlStart метод (см. блок-схему коллбэка в Simulink Engine Interaction with C S-Functions). Это означает, что ваша S-функция должна вызвать этот макрос не позднее, чем его mdlSetWorkWidths способ, который рассматривается как кандидат для блочного сокращения.

Языки

C, C++

См. также

ssGetBlockReduction

Представлено до R2006a