Получение значений сигнала пересечения нуля
real_T *ssGetNonsampledZCs(SimStruct *S)
SSimStruct представляет S-функциональный блок.
Указатель (real_T *) к значениям сигнала пересечения нуля.
Используйте для получения указателя на вектор, содержащий текущие значения сигналов, которые решатель с переменным шагом отслеживает для пересечений нулей. Решатель с переменным шагом отслеживает знаки этих сигналов в точках скобок, где они пересекают ноль. Затем решатель выполняет шаги времени моделирования в точках пересечения нулей. Этот вектор имеет длину ssGetNumNonsampledZCs(S).
C, C++
Следующий отрывок из иллюстрирует использование этого макроса для обновления массива пересечения нуля в matlabroot/toolbox/simulink/simdemos/simfeatures/src/sfun_zc.cmdlZeroCrossings функция обратного вызова.
static void mdlZeroCrossings(SimStruct *S)
{
int_T i;
real_T *zcSignals = ssGetNonsampledZCs(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
int_T nZCSignals = ssGetNumNonsampledZCs(S);
for (i = 0; i < nZCSignals; i++) {
zcSignals[i] = *uPtrs[i];
}
}
См. S-функцию sfun_zc_sat.c используется в sfcndemo_sfun_zc_sat полный пример использования этой функции.