Этот пример показывает фундаментальные понятия, связанные с данными об управлении с моделью - ссылкой.
Для более детального обсуждения этой темы см.: Подробный Рабочий процесс для Данных об Управлении с Моделью - ссылкой.
ПРИМЕЧАНИЕ: Этот пример использует ту же модель в качестве более подробного примера. В результате модель использует определенные функции, которые не описывает этот вводный пример.
Во время этого примера Simulink® генерирует код в папке генерации кода, созданной в текущем каталоге. Если вы не хотите к (или если вы не можете) генерировать файлы в этой директории, необходимо изменить рабочую директорию.
Если вы планируете изменить модели в качестве примера:
1. Сохраните пример в его исходном состоянии путем копирования следующих файлов с директории установки MATLAB®, не меняя их имена, к различной директории:
toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_datamngt.slx toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_datamngt_wsdata.m toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_counter_datamngt.slx toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_counter_datamngt_types.m toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_counter_datamngt_wsdata.m
2. Измените свой текущий каталог на директорию, в которую вы скопировали файлы.
3. Продолжите пример.
open_system('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 для модели.
Когда вы ссылаетесь на модель маскированную от блока Model, маска сгенерирована автоматически на блоке Model. Для получения дополнительной информации смотрите, что тема Создает и Ссылается на Модель Маскированную.
Модель, на которую ссылаются, сконфигурирована, чтобы принять структуру для ее образцового аргумента. Этот пример вызывает каждый экземпляр модели, на которую ссылаются, с различными значениями параметров.
1. Откройте топ-модель (sldemo_mdlref_datamngt
).
2. Создайте структуры параметра с той же "формой" в качестве образцовых аргументов, заданных в модели, на которую ссылаются.
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.