Обновите вектор пересечения нулем
Нет
C, C++
#define MDL_ZERO_CROSSINGS
void mdlZeroCrossings(SimStruct *S)
S
SimStruct, представляющий блок S-Function.
S-функция должна предоставить этот необязательный метод, только если она делает обнаружение пересечения нулем. Реализация обнаружения пересечения нулем обычно требует использования рабочих векторов пересечения нулем и режима, чтобы определить, когда происходит пересечение нуля и как выходы S-функции должны реагировать на это событие. The mdlZeroCrossings
метод должен обновить вектор пересечения нулем S-функции, используя
. ssGetNonsampledZCs
Вы можете использовать дополнительный mdlZeroCrossings
стандартная программа, когда ваша S-функция зарегистрировала CONTINUOUS_SAMPLE_TIME
и имеет незащищенные пересечения нуля (ssGetNumNonsampledZCs(S) > 0
). The mdlZeroCrossings
стандартная программа используется для обеспечения Simulink® двигатель с сигналами, которые должны отслеживаться для пересечений нуля. Как правило, это
Непрерывные сигналы, входящие в S-функцию
Внутренние сигналы, которые пересекают нуль, когда разрыв обычно происходит в mdlOutputs
Таким образом, сигналы пересечения нулем используются, чтобы обнаружить разрывы и закончить текущий временной шаг в точке пересечения нуля. Чтобы обеспечить двигатель сигналами пересечения нулем, mdlZeroCrossings
обновляет ssGetNonsampleZCs(S)
вектор.
Для получения примера см. sfun_zc_sat.c
. Подробное описание этого примера приведено в разделе «Пересечения нуля».