ssSetBlockReduction

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

Синтаксис

uint_T ssSetBlockReduction(SimStruct *S, uint_T flag)

Аргументы

S

SimStruct, представляющий Блок s-function.

флаг

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

Возвращается

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

Описание

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

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

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

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

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

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

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

  • Блок не может иметь нулевых пересечений.

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

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

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

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

Языки

C, C++

Смотрите также

ssGetBlockReduction

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

Была ли эта тема полезной?