Некоторые блоки поддерживают информацию состояния, которую они используют во время моделирования. Например, блок Unit Delay использует текущее состояние блока, чтобы вычислить значение выходного сигнала для следующего шага времени симуляции.
Блоки подсистемы имеют значение по умолчанию, инициализируют и стандартные программы завершения. Можно добавить, что пользовательские стандартные программы к использованию стандартных программ по умолчанию Инициализируют Функцию и Отключают Функциональные блоки, чтобы изменить или считать блочные состояния. Эти функциональные блоки содержат:
Блоки Прослушивателя события, которые инициировали выполнение объединенных стандартных программ при получении инициализирования или отключают сигнал вызова функции.
Средство записи состояния блокируется, чтобы инициализировать блочное состояние и блоки Читателя состояния, чтобы считать состояние.
Можно задать образцовые алгоритмы с помощью блоков Simulink®. В этом примере единственный блок Discrete-Time Integrator задает алгоритм для интеграции входного сигнала.
Откройте новую модель Simulink. Сохраните эту модель с именем Model01
.
Добавьте блок Discrete-Time Integrator. Проверьте, что значениями параметров по умолчанию является 1.0
для значения Усиления, 0
для Начального условия, State (most efficient)
для Начальной установки условия и -1
для Частоты дискретизации.
Соедините блок Constant с входным параметром блока Discreate-Time Integrator, чтобы смоделировать входной сигнал. Соедините блок Scope с выходным сигналом.
Откройте диалоговое окно Configuration Parameters. Установите параметры моделирования для Типа Решателя к Fixed-step
, Решателя к auto
и размера Фиксированного шага к 1
.
Откройте блок Scope, и затем запустите моделирование. Выходной сигнал увеличивается 1
на каждом временном шаге.
Некоторые образцовые алгоритмы содержат состояния, которые можно инициализировать. Например, с алгоритмом, который читает значение датчика, можно выполнить вычисление, чтобы установить начальное состояние датчика.
В начале моделирования инициализируйте состояние блока с помощью блока State Writer. Чтобы управлять, когда инициализация происходит, используйте Инициализировать Функциональный блок, который включает блок State Writer.
Добавьте Инициализировать Функциональный блок.
По умолчанию Инициализировать Функциональный блок включает блок Event Listener с набором параметра Типа события к Initialize
. Блок также включает блок State Writer и блок Constant как заполнитель для источника значения начального состояния.
Образцовые начальные условия. В этом примере, установленном параметр Постоянного значения для блока Constant к 4
.
Соедините средство записи состояния с владельцем состояния. Откройте диалоговое окно State Writer. Расширьте владельца состояния Селектора Три, выберите Discrete-Time Integrator
, и затем нажмите Apply.
Блок State Writer отображает имя блока владельца состояния. Блок владельца состояния отображает тег, указывающий на ссылку на блок State Writer. Если вы кликаете по метке выше тега, список открывается ссылкой для навигации к блоку State Writer.
Запустите моделирование, чтобы подтвердить, что ваша модель моделирует без ошибок.
Инициализировать Функциональный блок выполняется в начале моделирования. Выходной сигнал запускается с и начальное значение 4
и затем увеличивается 1
до конца моделирования.
Во время моделирования можно сбросить состояние блока с помощью блока State Writer. Чтобы управлять, когда сброшенный происходит, используйте Инициализировать Функциональный блок, который вы реконфигурировали к Функциональному блоку Сброса.
Добавьте Инициализировать Функциональный блок.
Откройтесь новые Инициализируют Функциональный блок.
Сконфигурируйте блок для сброса. Откройте диалоговое окно Block Parameter для блока Event Listener. От Типа события выпадающий список выберите Reset
. В конечном счете назовите поле, введите имя события. Например, введите reset
. Закройте диалоговое окно.
Образцовые условия сброса. В этом примере, установленном параметр Постоянного значения для блока Constant к 6
.
Соедините средство записи состояния с владельцем состояния. Откройте диалоговое окно State Writer. Расширьте владельца состояния Селектора Три, выберите Discrete-Time Integrator
, и затем нажмите Apply.
Перейдите к верхнему уровню Model01
. Переименуйте блок от Initialize Function1
до Reset Function
.
После обновления вашей модели имя события для Функционального блока Сброса отображено на поверхности блока.
Если вы щелкаете выше тега, список открывается ссылкой для навигации к блокам Средства записи состояния, расположенным в Инициализировать Функциональном блоке и Функциональном блоке Сброса.
Запустите моделирование, чтобы подтвердить, что ваша модель моделирует без ошибок.
Функциональный блок Сброса не выполняется во время моделирования. Этому нужен сигнал события.
В конце моделирования можно считать состояние блока и сохранить то состояние.
Добавьте Оконечный Функциональный блок.
По умолчанию Оконечный Функциональный блок включает блок Event Listener с набором Типа события параметра к Terminate
. Блок также включает блок State Reader и блок Terminator как заполнитель для сохранения значения состояния.
Соедините читателя состояния с владельцем состояния. Откройте диалоговое окно State Reader. От владельца состояния Селектора Три выберите Discrete-Time Integrator
, и затем нажмите Apply.
Запустите моделирование, чтобы подтвердить, что ваша модель моделирует без ошибок. Оконечный Функциональный блок выполняется в конце моделирования.
Удалите блоки, которые вы добавили для тестирования. Замените блок Constant на блок Inport и блок Scope с блоком Outport.
Внесите следующие изменения, чтобы избежать ошибок моделирования, когда модель компонента будет помещена в модель экспорта функций для тестирования моделирования.
Откройте диалоговое окно Block Parameters для блока Discrete-Time Integrator. Установите метод Интегратора на Accumulation:Forward Euler
.
Откройте диалоговое окно Model Configuration Parameters. Подтвердите, что Тип решателя установлен в Fixed-step
, и Решатель установлен в auto
. Измените размер Фиксированного шага от 1
до auto
.
Это изменение избегает ошибки моделирования, вызванной при наличии нескольких частот дискретизации в Подсистеме вызова функций.
При размещении компонента модели в тестовую обвязку для тестирования инициализирования сброс и оконечные функции требуют, чтобы модель следовала правилам экспорта функций. Смотрите Модели Экспорта функций и Создайте Тестовую обвязку, чтобы Сгенерировать Вызовы функции.
Чтобы создать модель экспорта функций, поместите компонент модели в блок Function-Call Subsystem с помощью Блока модели. Соедините порты ввода и вывода от модели до портов ввода и вывода подсистемы.
Создайте модель Simulink. Сохраните эту модель с именем Model02
.
Откройте диалоговое окно Configuration Parameters. Установите параметр моделирования для Типа Решателя к Fixed-step
. Подтвердите, что Решатель установлен в auto
, и размер Фиксированного шага установлен в auto
.
Добавьте блок Function-Call Subsystem. Откройте подсистему путем двойного клика по блоку.
Добавьте Блок модели к подсистеме и определите Имя модели к Model01
. Добавьте блоки Inport и Выходного порта.
Перейдите к верхнему уровню модели.
Добавьте блок Inport. Этот блок является управляющим сигналом для выполнения подсистемы. Измените имя блока на Run
и соедините его с портом function()
.
Откройте диалоговое окно блока Inport и на вкладке Signal Attributes, установите флажок вызова Выходной функции.
Добавьте второй блок Inport и переименуйте его к Signal In
. Соедините его с портом In1
подсистемы. Этот блок является сигналом для алгоритма интегрирования.
Добавьте блок Outport, переименуйте его к Signal Out
, и затем соедините его с портом Out1
подсистемы. Этот блок является интегрированным сигналом.
Откройте диалоговое окно Configuration Parameters. На панели Ссылки Модели, определенной Общий номер экземпляров, позволенных на топ-модель one
.
Начиная с журналирования блоков Выходного порта корневого уровня или сигналов в формате Dataset
не поддержаны, на панели Импорта/Экспорта Данных, снимают флажки Time и Output.
Обновите свою модель и подтвердите, что нет никаких ошибок путем нажатия Ctrl-D.
Следующий шаг, создают тестовую обвязку. Смотрите Создают Тестовую обвязку, чтобы Сгенерировать Вызовы функции.