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