Получите значения сигналов пересечения нулем
real_T *ssGetNonsampledZCs(SimStruct *S)
S
SimStruct, представляющий Блок 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
для полного примера, который использует эту функцию.