ssSetNumModes

Задайте размер вектора режима блока

Синтаксис

int_T ssSetNumModes(SimStruct *S, int_T nModes)

Аргументы

S

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

nModes

Размер вектора mode для блока, представленного S. Допустимые значения 0, положительное целое число, или DYNAMICALLY_SIZED.

Возвраты

Количество режимов, заданное как nModes, или -1 если DYNAMICALLY_SIZED.

Описание

Устанавливает размер вектора режима блока равным nModes. Элементы вектора mode инициализируются таким образом NULL пока значения не будут назначены с помощью ssSetModeVectorValue или через указатель, полученный из ssGetModeVector.

Если nModes является DYNAMICALLY_SIZED, можно задать истинную (положительное целое) ширину в mdlSetWorkWidths; в противном случае используемая ширина является шириной сигнала, проходящего через блок. Используйте этот макрос в mdlInitializeSizes для определения количества int_T элементы в векторе mode. Simulink® Модуль выделяет вектор режима и инициализирует его элементы равными 0. Если значение по умолчанию 0 не подходит, можно задать элементы массива другие начальные значения в mdlInitializeConditions. Использование ssGetModeVector для доступа к вектору mode.

Вектор mode, объединенный с пересечением нулем обнаружением, позволяет вам создать блоки, которые имеют отдельные рабочие режимы, в зависимости от текущих значений входа или выходных сигналов. Например, рассмотрим блок, который выводит абсолютное значение своего входа. Такой блок действует в двух разных режимах, в зависимости от того, является ли его вход положительным или отрицательным. Если вход положительный, блок выводит вход без изменений. Если вход отрицателен, блок выводит отрицание входа. Можно использовать пересечение нулем обнаружение, чтобы обнаружить, когда вход меняет знак, и соответствующим образом обновить одноэлементный вектор режима (для примера, установив его элемент на 0 для отрицательного входа и 1 для положительного входа). Затем можно использовать вектор mode в mdlOutputs для определения режима, в котором блок работает в данный момент.

Языки

C, C++

Пример

Смотрите S-функцию sfun_zc.c используется в sfcndemo_sfun_zc и S-функции sfun_zc_sat.c используется в sfcndemo_sfun_zc_sat.

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