Для того, чтобы создать S-функциюправильно необходимо определить основные понятия, используемые в технологии создания S-функций.К эти понятиям относятся:
Direct feedthrough –Прямой проход. Проход входных сигналов на выход. Прямой проход реализуется в S-функций, если в выражениях для выходных переменных присутствуют входные переменные, либо при расчете времени следующего срабатывания блока также используются входные переменные. Установка правильного значения параметра Direct feedthroughочень важна, поскольку именно с помощь него Simulink определяет наличие в модели замкнутых алгебраических контуров.
Dynamically sized inputs – Динамическая размерность входов. S-функцияможет быть написана таким образом, чтобы обеспечить произвольную размерность векторов входных и выходных переменных, а также векторов состояния непрерывной и(или) дискретной части системы. В этом случае фактическая размерность переменных определяется в самом начале процесса моделирования и устанавливается равной размерности входных сигналов. Чтобы задать динамическую размерность какой-либо переменной, нужно задать значение размерности для этой переменной равное -1 (минус один) в соответствующем поле структуры sizes (см. приведенный ниже шаблон S-функции).
Setting sample times and offsets -Установка шагов модельного времени и смещений. S-функция может задавать время срабатывания достаточно гибко. Simulink обеспечивает следующие варианты задания шага модельного времени:
1. Continuous sample time– Непрерывное модельное время. Задается для систем имеющих непрерывные переменные состояния. Для этого типа S-функций выходные переменные вычисляются на внутреннем шаге моделирования.
2. •Continuous but fixed in minor time step sample time –Непрерывное модельное время с фиксированным шагом во внутреннем цикле. Задается для S-функций, выходные переменные которых должны изменяться только в соответствии с внешним шагом моделирования, но должны быть неизменными на внутреннем.
3. Discrete sample time –Дискретное модельное время. Задается для дискретной системы (дискретной части системы). Пользователь должен задать шаг модельного времени sample time и смещение (задержку) offset, чтобы определить моменты времени, в которые Simulink должен вызвать на выполнение данный блок. Величина смещения не может превышать величину шага модельного времени. Время срабатывания блока определяется выражением:TimeHit = (n * sample_time) + offset,где n – целое число шагов расчета.Если задано дискретное модельное время, то Simulink обращается к методам mdlUpdateи mdlOutputs на каждом внешнем шаге моделирования.
4. Variable sample time – Дискретный переменный шаг расчета. Модельное время дискретное, но интервалы времени между срабатываниями блока могут быть разными. В начале каждого шага моделирования S-функция должна определить значение времени следующего срабатывания. Для этого используется mdlGetTimeOfNextVarHitметод.
5. Inherited sample time – Наследуемый шаг расчета. В некоторых случаях работа блока не зависит от выбора варианта задания шага модельного времени. На пример, для блока Gain не имеет значения, какой шаг модельного времени реализован – блок выполняет усиление входного сигнала для любого варианта sample time. В подобных случаях параметр sample timeможет быть унаследован от предыдущего или последующего блока, либо от блока, имеющего наименьший шаг расчета.