Применение S-функций в Simulink, страница 3

Инициализация (mdlInitializesizes) - До первого цикла моделирования, Simulink инициализирует S-функцию. В течение этой стадии, Simulink:

  • Инициализирует SimStruct, структуру моделирования, которая содержит информацию о S-функции.
  • Устанавливает число и измерения портов ввода и вывода.
  • Устанавливает блочное время сэмплирования (квантования).
  • Распределяет области памяти для хранения и массив размеров.

Вычисление следующего момента времени выборки (mdlDerivatives) - Если Вы создали переменный типовой блок времени, эта стадия, вычисляет время следующего момента времени выборки, то есть  вычисляет размер следующего шага.

Вычисление выходов в главном шаге времени (mdlOutputs) - После этого вызова все порты выхода блоков имеют правильные значения для текущего шага времени.

Модифицируйте дискретные состояния в главном шаге времени (mdlUpdate) - В этом вызове, все блоки должны исполнить действия " однажды в шаг времени " типа модифицирования дискретных состояний в каждом цикле моделирования.

Интегрирование - Это относится к моделям с непрерывными состояниями. Если ваша S-функция имеет непрерывные состояния, Simulink вызывает выход и производные  вашей S-функции при малых шагах времени.

Запись М  S-функции

Введение

М S-функция Файла состоит из функции MATLAB следующей формы

[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,...)

где f - название{имя} S-функции. В течение моделирования модели, Simulink

неоднократно вызывает f, используя параметр флажка, чтобы указать задачу (или задачи), чтобы быть

выполненный для специфического обращения. Каждый раз S-функция исполняет задачу и

возвращает результаты в векторе вывода.

Выполнение шаблона М. S-функция Файла, sfuntmpl.m, постоянно находится в

matlabroot/toolbox/simulink/blocks. Шаблон состоит из верхнего уровня

функция и набор скелетных подфункций, названных методами повторного вызова S-функции, каждый из

который соответствует специфическому значению флажка. Функция верхнего уровня просто вызывает

подфункция, обозначенная флажком. Подфункции исполняют фактические задачи, требуемые

S-функция в течение моделирования.

Параметры S-функции

Simulink передает следующие параметры к S-функции:

t, текущее время

x, вектор состояния

u, входной вектор

flag-флажок, целочисленное значение, которое указывает задачу, которая будет выполнена S-функцией

Следующая таблица описывает значения, которые флажок может принять и описывает

передачу метода Callback S-функции для каждого значения.

Flag

Подпрограммы S-функции (методы Callback)

Описание

0

mdlInitializesizes

Определяет основные характеристики блока
S-Function,включая время сэмплирования, начальные
условия для непрерывных и дискретных состояний, и размеры массива.

1

mdlDerivatives

Вычисляет производные для непрерывнх переменных состояния.

2

mdlUpdate

Обновляет дискретные переменные состояния,  выборка времени сэмплирования для удовлетворения условия кратности его большему шагу квантования.

3

mdlOutputs

Вычисляет выходы S-функции.

4

mdlGetTimeOfNextVarHit

Вычисляет абсолютное время следующего вычисления (сэмплирования). Эта подпрограмма используется только, когда Вы определяете переменное дискретное  время квантования в mdlInitializeSizes.

9

mdlTerminate

Исполняет  любые необходимые действия при завершение задачи моделирования.