Введение в данные об управлении с моделью - ссылкой

Этот пример показывает фундаментальные понятия, связанные с данными об управлении с моделью - ссылкой.

Для более детального обсуждения этой темы см.: Подробный Рабочий процесс для Данных об Управлении с Моделью - ссылкой.

ПРИМЕЧАНИЕ: Этот пример использует ту же модель в качестве более подробного примера. В результате модель использует определенные функции, которые не описывает этот вводный пример.

Требования в качестве примера

Во время этого примера 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. Для получения дополнительной информации смотрите, что тема Создает и Ссылается на Модель Маскированную.

Топ-модель: параметризация блоков 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.

sim('sldemo_mdlref_datamngt')

ПРИМЕЧАНИЕ: Симуляция топ-модели автоматически генерирует цель симуляции для модели, на которую ссылаются.

3. Рассмотрите результаты симуляции, как отображено блоками Scope.