Этот пример показывает фундаментальные понятия, связанные с данными об управлении с моделью - ссылкой.
Для более детального обсуждения этой темы смотрите Подробный Рабочий процесс для Данных об Управлении с Моделью - ссылкой.
ПРИМЕЧАНИЕ: Этот пример использует ту же модель в качестве более подробного примера. В результате модель использует определенные функции, которые не описывает этот вводный пример.
Откройте модель sldemo_mdlref_datamngt
в качестве примера.
Этот пример использует топ-модель sldemo_mdlref_datamngt
это содержит три блока Model: Counter1, Counter2 и Counter3. Эти блоки ссылаются на ту же модель sldemo_mdlref_counter_datamngt
.
Модель, на которую ссылаются, реализует ограниченный встречный алгоритм что:
Сбрасывает счетчик, если первый триггер вводил изменения
Постепенно увеличивает счетчик заданной суммой, если второй вход изменяется
Насыщает счетчик между заданным верхним и нижними пределами
Выходные параметры модели, на которые ссылаются, сигнал шины, который содержит:
Количество: значение счетчика как 8-битное целое число
OverflowState: перечисляемое значение, которое указывает, является ли счетчик в верхнем пределе, нижнем пределе, или в области значений
Последовательность шагов в примере следующие:
1. Подготовьте модель, на которую ссылаются (sldemo_mdlref_counter_datamngt
) использовать структуры для сигналов и параметров в его внешнем интерфейсе.
2. Подготовьте топ-модель (sldemo_mdlref_datamngt
) вызывать модель, на которую ссылаются.
3. Симулируйте топ-модель и исследуйте результаты.
Модель, на которую ссылаются, имеет два аргумента модели (CounterParams, CounterICs), которые параметрируют блоки в модели. Аргументы модели предоставляют различные значения параметров каждому экземпляру модели, на которую ссылаются. В этой модели аргументы заданы как структуры параметра, чтобы сократить количество аргументов, передаваемых модели, на которую ссылаются.
Процесс для определения аргументов модели следующие:
1. Откройте модель sldemo_mdlref_counter_datamngt
, на которую ссылаются,.
2. Задайте структуры MATLAB, чтобы параметрировать модель, на которую ссылаются.
CounterParams.Increment = int8(1); CounterParams.LowerLimit = int8(-10); CounterParams.UpperLimit = int8(10);
CounterICs.Count = int8(0); CounterICs.OverflowState = SlDemoRangeCheck.InRange;
ПРИМЕЧАНИЕ: Этот пример использует 8-битное целое число для счетчика, таким образом, числовые поля также используют 8-битные целые числа.
3. Используйте структуры MATLAB в качестве аргументов модели.
Аргументы модели заданы как переменные в рабочем пространстве модели модели, на которую ссылаются. Можно инициализировать рабочее пространство модели от многих различных источников данных. Этот пример использует скрипт MATLAB (sldemo_mdlref_counter_datamngt_wsdata
) создать структуры параметра для аргументов модели. Используя скрипт MATLAB дает возможность создавать и изменять структуру параметра вне модели. Это также упрощает инкрементные изменения, систему контроля версий и дифференцирование данных.
Установите источник данных в диалоговом окне рабочего пространства модели.
Можно использовать Model Explorer, чтобы просмотреть и отредактировать содержимое рабочего пространства модели.
Установите флажок Argument, чтобы сконфигурировать переменные в качестве аргументов модели.
Модель, на которую ссылаются, приводит к двум результатам и группирует их в сигнал шины:
Количество: значение счетчика как 8-битное целое число
OverflowState: перечисляемое значение, которое указывает, является ли счетчик в верхнем пределе, нижнем пределе, или в области значений
Задавать тип шины для корневого выхода модели, на которую ссылаются:
1. Используйте Редактор Шины, чтобы задать объект шины (OutputType).
В качестве альтернативы можно создать объект шины в командной строке MATLAB:
OutputType = Simulink.Bus; OutputType.Elements = Simulink.BusElement; OutputType.Elements(1).Name = 'Count'; OutputType.Elements(1).DataType = 'int8'; OutputType.Elements(2) = Simulink.BusElement; OutputType.Elements(2).Name = 'OverflowState'; OutputType.Elements(2).DataType = 'Enum: SlDemoRangeCheck';
2. Сконфигурируйте корневой выходной порт модели, на которую ссылаются, чтобы вывести невиртуальный сигнал шины на основе этого объекта шины (OutputType).
В общем случае начальные значения для сигналов шины и состояний могут быть заданы как '0', в этом случае все элементы шины будут инициализированы, чтобы обнулить (или соответствующее наземное значение). Однако в определенных случаях, желательно задать ненулевые начальные значения для сигналов шины и состояний. В этом примере начальное условие счетчика является настраиваемым, таким образом, начальное значение выходного сигнала должно последовательно устанавливаться.
Задавать начальное значение выхода модели, на которую ссылаются:
1. Создайте структуру параметра, которая совместима с сигналом шины, что вы хотите инициализировать. Один из аргументов модели (CounterICs) является структурой параметра, которая совпадает с формой выходного сигнала. Эта структура определилась следующим образом:
CounterICs.Count = int8(0); CounterICs.OverflowState = SlDemoRangeCheck.InRange;
2. Откройте диалоговое окно для корневого выходного порта и введите имя структуры (CounterICs) в Initial поле выхода.
ПРИМЕЧАНИЕ: В общем случае при инициализации сигнала шины или состояния, структура параметра не должна совпадать с типом шины точно, но его поля должны быть подмножеством элементов в объекте шины, и атрибуты этих полей должны совпадать с элементами в объекте шины.
Часто полезно замаскировать модель, на которую ссылаются, чтобы настроить пользовательский интерфейс. Можно создать маску на модели и затем сослаться на него от блока Model. Чтобы замаскировать модель, нажмите Create Model Mask в разделе рабочего пространства модели Model Explorer для модели.
Модель, на которую ссылаются, сконфигурирована, чтобы принять структуру для ее аргумента модели. Этот пример вызывает каждый экземпляр модели, на которую ссылаются, с различными значениями параметров.
1. Откройте топ-модель sldemo_mdlref_datamngt
.
2. Создайте структуры параметра с той же "формой" в качестве аргументов модели, заданных в модели, на которую ссылаются.
clear Param1 Param2 IC1 IC2; Param1.Increment = int8(1); Param1.LowerLimit = int8(-20); Param1.UpperLimit = int8(20);
Param2 = Param1; Param2.Increment = int8(2);
IC1.Count = int8(0); IC1.OverflowState = SlDemoRangeCheck.InRange;
IC2 = IC1; IC2.Count = int8(-10);
3. Установите параметры маски на блоках Model маскированных, чтобы использовать эти параметры.
Например, параметры первого блока Model 'sldemo_mdlref_datamngt/Counter1'
установлены как:
Param1 для Встречных параметров
IC1 для Начальных условий
Как отмечалось ранее, реализации модели, на которые ссылаются, ограниченное отвечают на алгоритм двумя триггерными входными параметрами. Алгоритм обнаруживает "возрастающие ребра" в триггере, вводит и реагирует можно следующим образом:
Сбрасывает счетчик, если первый триггер вводил изменения.
Постепенно увеличивает счетчик заданной суммой, если второй вход изменяется.
В этом примере вы управляете всеми тремя экземплярами встречного алгоритма с теми же триггерными входными параметрами, сгенерированными подсистемой Стимула. Период и шаг расчета триггерных входных параметров заданы значениями, ввел для параметров маски подсистемы Стимула:
Сбрасывайте счетчик каждые 4 секунды.
Инкрементный счетчик 5 раз в секунду (период = 0,2 секунды).
Шаг расчета составляет 0,1 секунды.
ПРИМЕЧАНИЕ: Сброс и инкрементные периоды должны быть по крайней мере 2 раза шагом расчета.
1. Сохраните или закройте модель, на которую ссылаются.
Необходимо сохранить модель, на которую ссылаются, прежде чем она сможет использоваться топ-моделью. В качестве альтернативы можно закрыть модель, на которую ссылаются, и использовать исходную версию модели, которой предоставляют этот пример.
2. Симулируйте топ-модель путем выбора Simulation> Run.
ПРИМЕЧАНИЕ: Симуляция топ-модели автоматически генерирует цель симуляции для модели, на которую ссылаются.
3. Рассмотрите результаты симуляции, как отображено блоками Scope.
Model | Variant Subsystem, Variant Model