Используя инициализируют, сброс и оконечные функции

Некоторые блоки поддерживают информацию состояния, которую они используют во время симуляции. Например, блок Unit Delay использует текущее состояние блока, чтобы вычислить значение выходного сигнала для следующего шага времени симуляции.

Блоки Subsystem имеют значение по умолчанию, инициализируют и стандартные программы завершения. Можно добавить, что пользовательские стандартные программы к использованию стандартных программ по умолчанию Инициализируют Функцию и Отключают Функциональные блоки, чтобы изменить или считать состояния блока. Эти функциональные блоки содержат:

  • Блоки Прослушивателя события, которые выполняют объединенные стандартные программы при получении инициализирования или оконечного события вызова функции.

  • Средство записи состояния блокируется, чтобы инициализировать состояние блока и блоки Читателя состояния, чтобы считать состояние.

Создайте компонент модели с состоянием

Вы можете алгоритмы модели define с помощью блоков Simulink®. В этом примере один блок Discrete-Time Integrator задает алгоритм для интеграции входного сигнала.

  1. Откройте новую модель Simulink. Сохраните эту модель с именем Model01.

  2. Добавьте блок Discrete-Time Integrator. Проверьте, что значениями параметров по умолчанию является 1.0 для Gain value, 0 для Initial condition, State (most efficient) для Initial condition setting и -1 для Sample time.

  3. Соедините блок Constant с входом блока Discrete-Time Integrator, чтобы смоделировать входной сигнал. Соедините блок Scope с выходным сигналом.

  4. Откройте диалоговое окно Configuration Parameters. Установите параметры симуляции для Решателя Type к Fixed-step, Solver к auto и Fixed-step size к 1.

  5. Откройте блок Scope, и затем запустите симуляцию. Выходной сигнал увеличивается 1 на каждом временном шаге.

Инициализируйте состояние блока

Некоторые моделируют алгоритмы, содержат состояния, которые можно инициализировать. Например, с алгоритмом, который читает значение датчика, можно выполнить вычисление, чтобы установить начальное состояние датчика.

В начале симуляции инициализируйте состояние блока с помощью блока State Writer. Чтобы управлять, когда инициализация происходит, используйте Инициализировать Функциональный блок, который включает блок State Writer.

  1. Добавьте Инициализировать Функциональный блок.

    По умолчанию Инициализировать Функциональный блок включает блок Event Listener с набором параметра Event type к Initialize. Блок также включает блок State Writer и блок Constant как заполнитель для источника значения начального состояния.

  2. Образцовые начальные условия. В этом примере, установленном параметр Constant value для блока Constant к 4.

  3. Соедините средство записи состояния с владельцем состояния. Откройте диалоговое окно State Writer. Расширьте владельца состояния Селектора Три, выберите Discrete-Time Integrator, и затем нажмите Apply.

    Блок State Writer отображает имя блока владельца состояния. Блок владельца состояния отображает тег, указывающий на ссылку на блок State Writer. Если вы кликаете по метке выше тега, список открывается ссылкой для навигации к блоку State Writer.

  4. Запустите симуляцию, чтобы подтвердить, что ваша модель моделирует без ошибок.

    Инициализировать Функциональный блок выполняется в начале симуляции. Выходной сигнал запускается с и начальное значение 4 и затем увеличивается 1 до конца симуляции.

Сбросьте состояние блока

Во время симуляции можно сбросить состояние блока с помощью блока State Writer. Чтобы управлять, когда сброшенный происходит, используйте Инициализировать Функциональный блок, который вы реконфигурировали к Функциональному блоку Сброса.

  1. Добавьте Инициализировать Функциональный блок.

  2. Откройтесь новые Инициализируют Функциональный блок.

  3. Сконфигурируйте блок для сброса. Откройте диалоговое окно Block Parameter для блока Event Listener. От Event type выпадающий список выберите Reset. В поле Event name введите имя события. Например, введите reset. Закройте диалоговое окно.

  4. Образцовые условия сброса. В этом примере, установленном параметр Constant value для блока Constant к 2.

  5. Соедините средство записи состояния с владельцем состояния. Откройте диалоговое окно State Writer. Расширьте владельца состояния Селектора Три, выберите Discrete-Time Integrator, и затем нажмите Apply.

  6. Перейдите к верхнему уровню Model01. Переименуйте блок от Initialize Function1 до Reset Function.

    После обновления вашей модели имя события для Функционального блока Сброса отображено на поверхности блока.

    Если вы щелкаете выше тега, список открывается ссылкой для навигации к блокам Средства записи состояния, расположенным в Инициализировать Функциональном блоке и Функциональном блоке Сброса.

  7. Запустите симуляцию, чтобы подтвердить, что ваша модель моделирует без ошибок.

    Функциональный блок Сброса не выполняется во время симуляции. Этому нужен сигнал события вызова функции.

    Чтобы создать сигнал события вызова функции для Функционального блока Сброса, смотрите, Создают Тестовую обвязку, чтобы Сгенерировать Вызовы функции.

Считайте и сохраните состояние блока

В конце симуляции можно считать состояние блока и сохранить то состояние.

  1. Добавьте Оконечный Функциональный блок.

    По умолчанию Оконечный Функциональный блок включает блок Event Listener с параметром набор Event type к Terminate. Блок также включает блок State Reader и блок Terminator как заполнитель для сохранения значения состояния.

  2. Соедините читателя состояния с владельцем состояния. Откройте диалоговое окно State Reader. От владельца состояния Селектора Три выберите Discrete-Time Integrator, и затем нажмите Apply.

  3. Запустите симуляцию, чтобы подтвердить, что ваша модель моделирует без ошибок. Оконечный Функциональный блок выполняется в конце симуляции.

  4. Удалите блоки, которые вы добавили для тестирования. Замените блок Constant на блок Inport и блок Scope с блоком Outport.

Подготовьте компонент модели к тестированию

Внесите следующие изменения, чтобы избежать ошибок симуляции, когда модель компонента будет помещена в модель экспорта функций для тестирования симуляции.

  1. Откройте диалоговое окно Block Parameters для блока Discrete-Time Integrator. Установите Integrator method на Accumulation:Forward Euler.

  2. Откройте диалоговое окно Model Configuration Parameters. Подтвердите решатель, Type установлен в Fixed-step, и Solver установлен в auto. Измените Fixed-step size от 1 до auto.

    Это изменение избегает ошибки симуляции, вызванной при наличии нескольких шагов расчета в Подсистеме вызова функций.

Создайте модель экспорта функций

При размещении компонента модели в тестовую обвязку для тестирования инициализирования сброс и оконечные функции требуют, чтобы модель следовала правилам экспорта функций. См. Модели Экспорта функций и Создайте Тестовую обвязку, чтобы Сгенерировать Вызовы функции.

Чтобы создать модель экспорта функций, поместите компонент модели в блок Function-Call Subsystem с помощью блока Model. Соедините порты ввода и вывода от модели до портов ввода и вывода подсистемы.

  1. Создайте модель Simulink. Сохраните эту модель с именем Model02.

  2. Откройте диалоговое окно Configuration Parameters. Установите параметр симуляции для Решателя Type к Fixed-step. Подтвердите, что Solver установлен в auto, и Fixed-step size установлен в auto.

  3. Добавьте блок Function-Call Subsystem. Откройте подсистему путем двойного клика по блоку.

  4. Добавьте блок Model в подсистему и установите Model name на Model01. Добавьте блоки Inport и Выходного порта.

  5. Перейдите к верхнему уровню модели.

  6. Добавьте блок Inport. Этот блок является управляющим сигналом для выполнения подсистемы. Измените имя блока на Run и соедините его с портом function().

    Откройте диалоговое окно блока Inport и на вкладке Signal Attributes, установите флажок Output function call .

  7. Добавьте второй блок Inport и переименуйте его к Signal In. Соедините его с портом In1 подсистемы. Этот блок является сигналом для алгоритма интегрирования.

    Добавьте блок Outport, переименуйте его к Signal Out, и затем соедините его с портом Out1 подсистемы. Этот блок является интегрированным сигналом.

  8. Откройте диалоговое окно Configuration Parameters. На Модели, Ссылающейся на панель, набор Total number of instances allowed per top model к one.

    Начиная с журналирования блоков Выходного порта корневого уровня или сигналов в формате Dataset не поддержаны, на панели Импорта/Экспорта Данных, снимают флажки Time и Output.

  9. Обновите свою модель и подтвердите, что нет никаких ошибок путем нажатия Ctrl-D.

Следующий шаг, создают тестовую обвязку. Смотрите Создают Тестовую обвязку, чтобы Сгенерировать Вызовы функции.

Смотрите также

Блоки

Похожие темы