В этом примере показаны основные концепции, связанные с управлением данными со ссылкой на модель.
Более подробное обсуждение этой темы см. в разделе Подробный рабочий процесс для управления данными со ссылкой на модель.
ПРИМЕЧАНИЕ: В этом примере используется та же модель, что и в более подробном примере. В результате модель использует некоторые особенности, которые не описаны в данном вводном примере.
В этом примере 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), который содержит три блока модели: Counter1, Counter2 и Counter3. Эти блоки ссылаются на одну и ту же модель (sldemo_mdlref_counter_datamngt).
Ссылочная модель реализует алгоритм ограниченного счетчика, который:
Сбрасывает счетчик при изменении первого входного сигнала триггера
Увеличивает значение счетчика на заданную величину при изменении второго ввода
Насыщает счетчик между указанными верхним и нижним пределами
Ссылочная модель выводит сигнал шины, который содержит:
Count: значение счетчика в виде 8-разрядного целого числа
OverflowState - перечисляемое значение, указывающее, находится ли счетчик на верхнем пределе, нижнем пределе или в диапазоне
Последовательность этапов в примере следующая:
1. Подготовить ссылочную модель (sldemo_mdlref_counter_datamngt) использовать структуры для сигналов и параметров во внешнем интерфейсе.
2. Подготовить верхнюю модель (sldemo_mdlref_datamngt) для вызова ссылочной модели.
3. Моделирование модели верхнего уровня и анализ результатов.
Ссылочная модель имеет два аргумента модели (CounterParams, CounterIC), которые параметризуют блоки в модели. Аргументы модели предоставляют различные значения параметров для каждого экземпляра ссылочной модели. В этой модели аргументы определяются как структуры параметров для уменьшения числа аргументов, передаваемых ссылочной модели.
Процесс определения аргументов модели выглядит следующим образом:
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 упрощает создание и изменение структуры параметров вне модели. Это также облегчает инкрементные изменения, контроль версий и разностные данные.
Задайте источник данных в диалоговом окне рабочего пространства модели.

Обозреватель моделей можно использовать для просмотра и правки содержимого рабочего пространства модели.
Установите флажок Аргумент (Argument), чтобы настроить переменные в качестве аргументов модели.

Ссылочная модель дает два результата и упаковывает их в сигнал шины:
Count: значение счетчика в виде 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. Создайте структуру параметров, совместимую с сигналом шины, который требуется инициализировать. Одним из аргументов модели (CounterIC) является структура параметров, которая соответствует форме выходного сигнала. Эта структура была определена следующим образом:
CounterICs.Count = int8(0); CounterICs.OverflowState = SlDemoRangeCheck.InRange;
2. Откройте диалоговое окно для корневого исходящего порта и введите имя структуры (CounterIC) в поле Initial output.

ПРИМЕЧАНИЕ: Как правило, при инициализации сигнала или состояния шины структура параметров не должна точно соответствовать типу шины, но ее поля должны быть подмножеством элементов в объекте шины, а атрибуты этих полей должны соответствовать элементам в объекте шины.
Часто для настройки пользовательского интерфейса полезно маскировать ссылочную модель. Для модели можно создать маску, а затем создать ссылку на нее из блока модели. Чтобы замаскировать модель, щелкните Создать маску модели (Create Model Mask) в разделе рабочего пространства модели Обозревателя моделей (Model Explorer) для модели.

При ссылке на маскированную модель из блока модели автоматически создается маска для блока модели. Дополнительные сведения см. в разделе Создание и ссылка на маскированную модель.
Ссылочная модель настроена на принятие структуры для ее аргумента модели. В этом примере каждый экземпляр ссылочной модели вызывается с различными значениями параметров.
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. Задайте параметры маски для маскированных блоков модели, чтобы использовать эти параметры.
Например, параметры первого блока модели ('sldemo_mdlref_datamngt/Counter1') устанавливаются как:
Param1 параметров счетчика
IC1 для начальных условий

Как упоминалось ранее, ссылочная модель реализует алгоритм ограниченного счетчика с двумя входами триггера. Алгоритм обнаруживает «растущие края» на входах триггера и реагирует следующим образом:
Сбрасывает счетчик при изменении первого входного сигнала триггера.
Увеличивает значение счетчика на заданную величину при изменении второго ввода.
В этом примере управляются все три экземпляра алгоритма счетчика с одинаковыми входами триггера, генерируемыми подсистемой Стимула. Период и время выборки входов триггера определяются значениями, введенными для параметров маски подсистемы Стимула:
Сброс счетчика каждые 4 секунды.
Счетчик приращения 5 раз в секунду (период = 0,2 секунды).
Время выборки составляет 0,1 секунды.
ПРИМЕЧАНИЕ: Периоды сброса и приращения должны быть не менее чем в 2 раза больше времени выборки.
1. Сохраните или закройте ссылочную модель.
Необходимо сохранить ссылочную модель, прежде чем ее можно будет использовать в верхней модели. Можно также закрыть ссылочную модель и использовать исходную версию модели, приведенную в этом примере.
2. Смоделировать верхнюю модель, выбрав Моделирование (Simulation) > Выполнить (Run).
ПРИМЕЧАНИЕ. При моделировании модели верхнего уровня автоматически создается цель моделирования для ссылочной модели.
3. Просмотрите результаты моделирования, отображаемые блоками области.


