Задайте размер вектора режима блока
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
.