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

В этом примере показаны основные концепции, связанные с управлением данными с помощью модели-ссылки.

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

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

Пример требований

Во время этого примера 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), чтобы просмотреть и отредактировать содержимое рабочего пространства модели.

Установите флажок Аргумент, чтобы сконфигурировать переменные как аргументы модели.

Ссылка на Модель: Определение формы Выхода сигнала шины

Ссылочная модель выдаёт два результата и упаковывает их в сигнал шины:

  • Счетчик: значение счетчика в виде 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 outport.

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

Ссылочная модель: маскирование ссылочной модели

Часто полезно замаскировать ссылку на модель для настройки пользовательского интерфейса. Можно создать маску на модели и затем ссылаться на нее из блока 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 для параметров Counter

  • IC1 для Начальных условий

Верхняя часть: планирование вызовов модели-ссылки

Как упоминалось ранее, ссылочная модель реализует алгоритм ограниченного счетчика с двумя триггерными входами. Алгоритм обнаруживает «восходящие ребра» в триггерных входах и реагирует следующим образом:

  • Сбрасывает счетчик, если первый вход триггера изменяется.

  • Увеличивает счетчик на заданную величину, если изменяется второй вход.

В этом примере вы управляете всем тремя образцами алгоритма счетчика с одинаковыми триггерными входами, сгенерированными подсистемой Stimulus. Период и шаг расчета входов триггера определяются значениями, введенными для параметров маски подсистемы Stimulus:

  • Сбрасывайте счетчик каждые 4 секунды.

  • Шаг счетчика 5 раз в секунду (период = 0,2 секунды).

  • Шаг расчета составляет 0,1 секунды.

ПРИМЕЧАНИЕ. Периоды сброса и шага должны быть как минимум в 2 раза больше, чем шаг расчета.

Симуляция верхней модели

1. Сохраните или закройте ссылочную модель.

Вам нужно сохранить модель-ссылку, прежде чем она может быть использована верхней моделью. Кроме того, можно закрыть ссылочную модель и использовать исходную версию модели, предоставленную в этом примере.

2. Симулируйте верхнюю часть, выбрав команду Симуляция (Simulation) > Выполнить (Run).

sim('sldemo_mdlref_datamngt')

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

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

Для просмотра документации необходимо авторизоваться на сайте