Получите значения сигналов пересечения нулем
real_T *ssGetNonsampledZCs(SimStruct *S)
SSimStruct, представляющий Блок s-function.
Указатель (real_T *) к значениям сигналов пересечения нулем.
Используйте, чтобы получить указатель на вектор, содержащий текущую стоимость сигналов, что решатель переменного шага контролирует для нулевых пересечений. Решатель переменного шага отслеживает знаки этих сигналов заключить в скобки точки, где они пересекают нуль. Решатель затем делает шаги времени симуляции в точках, где нулевые пересечения происходят. Этот вектор имеет длину ssGetNumNonsampledZCs(S).
C, C++
Следующая выборка от иллюстрирует использование этого макроса, чтобы обновить массив пересечения нулем в функции обратного вызова matlabroot/toolbox/simulink/simdemos/simfeatures/src/sfun_zc.c mdlZeroCrossings.
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 для полного примера, который использует эту функцию.