Установите шаг расчета входного порта, который наследует его шаг расчета от порта, к которому он подключен
Нет
C, C++
#define MDL_SET_INPUT_PORT_SAMPLE_TIME
void mdlSetInputPortSampleTime(SimStruct *S, int_T port,
real_T sampleTime, real_T offsetTime)
S
SimStruct, представляющий блок S-Function.
port
Индекс порта.
sampleTime
Унаследованный шаг расчета для port
.
offsetTime
Унаследованное время смещения для port
.
Simulink® engine вызывает этот метод со шаг расчета, который port
наследует от порта, к которому он подключен.
Для S-функций C MEX, если унаследованный шаг расчета приемлемо, этот метод устанавливает шаг расчета port
к унаследованному времени, используя ssSetInputPortSampleTime
и ssSetInputPortOffsetTime
. Если шаг расчета неприемлем, этот метод генерирует ошибку через ssSetErrorStatus
. Обратите внимание, что любые другие входы или выходные порты, шаги расчета которых неявно заданы в силу знания шага расчета данного порта, могут также устанавливать свои шаги расчета через вызовы
или ssSetInputPortSampleTime
. Этот метод действителен только для симуляции и должен быть заключен в ssSetOutputPortSampleTime
#if defined(MATLAB_MEX_FILE)
оператор.
Механизм вызывает этот метод до тех пор, пока не будут заданы все входные порты с унаследованными шагами расчета.
Когда заданы шаги расчета на основе унаследованного порта, время расчета гарантированно будет одним из следующих, где 0.0 < period < inf
и 0.0 <= offset < period
.
Шаг расчета | Время смещения | |
---|---|---|
Непрерывный | 0.0 | 0.0 |
Дискретный | period | offset |
Постоянные, триггерные и переменные шаги расчета не распространяются на S-функции с основанными на портах временами расчета.
Обычно mdlSetInputPortSampleTime
вызывается один раз на порт со шаг расчета входного порта. Однако могут быть случаи, когда эта функция вызывается не один раз. Это происходит, когда механизм симуляции преобразует непрерывные шаги расчета в непрерывное, но фиксированное в мелкие шаги шагов расчета. Когда это происходит, исходные значения шагов расчета, заданные в mdlInitializeSizes
восстанавливаются до повторного вызова этого метода.
Окончательный шаг расчета, заданное в порте, может отличаться от (но эквивалентно) шага расчета, заданного этим методом. Это происходит, когда
Модель использует решатель с фиксированным шагом, и порт имеет непрерывный, но фиксированный в мелкий шаг шаг расчета. В этом случае механизм Simulink преобразует шаг расчета в основной шаг расчета для модели.
Двигатель настраивает шаг расчета так, чтобы оно было настолько численно, насколько это возможно. Для примера двигатель преобразует [0.2499999999999, 0]
на [0.25, 0]
.
S-функция может исследовать окончательные шаги расчета в mdlInitializeSampleTimes
.
ssSetInputPortSampleTime
, ssSetOutputPortSampleTime
, mdlInitializeSampleTimes
, SetInputPortSampleTime