Чтобы установить блочное значение параметров, такое как параметр Усиления блока Gain, можно использовать числовые переменные, которые вы создаете и храните в рабочих областях, таких как базовое рабочее пространство, рабочее пространство модели или словарь данных Simulink®. Можно использовать переменную, чтобы установить несколько значений параметров в нескольких блоках, включая блоки в различных моделях. Чтобы изменить значения блочных параметров, вы изменяете значение переменной в рабочей области.
Используя переменную, чтобы установить блочное значение параметров также позволяет:
Измените значение параметров, не имея необходимость изменять образцовый файл (если вы храните переменную вне рабочего пространства модели).
Идентифицируйте параметр определенным, понятным именем при развертке или настройке значения.
Для основной информации об установке блочных значений параметров смотрите Блочные Значения параметров Набора.
Можно создать числовую переменную MATLAB® в рабочей области, такой как базовое рабочее пространство или словарь данных, и использовать его, чтобы задать одно или несколько блочных значений параметров.
Модель в качестве примера sldemo_fuelsys
представляет систему заправки бензинового двигателя. Подсистема в модели, feedforward_fuel_rate
, вычисляет спрос на топливо механизма при помощи постоянного номера 14.6
, который представляет идеальное (стехиометрическое) отношение воздуха, чтобы питать это, механизм использует. Два блока в подсистеме используют номер, чтобы установить значения параметров. В этом примере, чтобы совместно использовать номер между блоками, вы создаете переменную под названием myParam
.
Откройте модель.
sldemo_fuelsys
В модели выберите View> Model Data Editor. В Редакторе Данных модели осмотрите вкладку Parameters.
В модели перейдите в подсистему.
open_system(... 'sldemo_fuelsys/fuel_rate_control/fuel_calc/feedforward_fuel_rate')
В Редакторе Данных модели, в поле содержимого Фильтра, вводят 14.6
.
Таблица данных содержит две строки, которые соответствуют параметрам Постоянного значения двух из блоков Константа в подсистеме.
Используйте Столбец значений, чтобы заменить литеральный номер 14.6
на myParam
. Выполните замену для обоих параметров.
В поле содержимого Фильтра введите myParam
.
При редактировании значения одного из параметров кликните по кнопке действий и выберите Create.
В диалоговом окне Create New Data, установленном Значении к 14.6
и нажимают Create.
Переменная, myParam
, появляется в базовом рабочем пространстве.
Поскольку переменная существует в базовом рабочем пространстве, можно использовать его в многоуровневых моделях. Однако, когда вы заканчиваете свой сеанс работы с MATLAB, вы теряете содержимое базового рабочего пространства. Рассмотрите постоянно хранение переменной в словаре данных или рабочем пространстве модели.
Чтобы задать постоянную систему, такую как переменная, которая представляет радиус Земли, рассматривают создание объекта Simulink.Parameter
вместо числовой переменной MATLAB. Объекты параметра позволяют вам задавать физические единицы измерения и пользовательскую документацию, а также другие характеристики.
Чтобы создать и использовать объекты параметра в моделях, смотрите Объекты данных.
Как правило, значение системы постоянные влияния значения других параметров и сигналов через математические отношения. Чтобы смоделировать эти отношения явным образом, установите значения зависимых данных при помощи выражений. Смотрите Установленное Значение переменных при помощи Математического выражения.
Можно установить значение переменной к выражению включающие литеральные числа и другие переменные. С выражениями вы можете:
Выразите значение как отношение между известными физическими константами вместо как неидентифицируемый литеральный номер.
Явным образом алгебраические зависимости модели между данными параметра. Когда вы изменяете значения независимых данных, вы не должны помнить настраивать значения зависимых данных.
Преобразуйте переменную в объект Simulink.Parameter
. Затем установите свойство Value
объекта при помощи выражения:
В интерактивном режиме — Например, с Редактором Данных модели или Образцовым Проводником, предшествуют, выражение с равняется знаку, =
. Данные показывают, как задать выражение myVar + myOtherVar
.
Программно — Использование функция slexpr
, задавая выражение в векторе символа или строке. Например, чтобы установить значение объекта параметра под названием myParam
к выражению myVar + myOtherVar
:
myParam.Value = slexpr('myVar + myOtherVar')
Пример sldemo_metro
(см. Исследование Структуры якобиана Решателя Модели) моделирует систему трех идентичных, точечных метрономов, приостановленных с движущейся платформы. Блоки в образцовом использовании эти переменные MATLAB от базового рабочего пространства:
m
Масса каждого метронома, начальное значение 0,1 кг
r
Длина каждого метронома, начальное значение 1,0 м
J
Момент инерции каждого метронома, начальное значение 0.1 kg/m2
Эти переменные совместно используют алгебраическое отношение: момент инерции каждого метронома равен массовым временам, которым придала квадратную форму длина. В этом примере вы записываете это отношение в значении J
.
Откройте модель.
sldemo_metro
Обновите блок-схему. Образцовый обратный вызов создает переменные в базовом рабочем пространстве.
Чтобы препятствовать тому, чтобы обратный вызов перезаписал изменения, которые вы вносите в переменные для этого примера, удаляют код обратного вызова.
set_param('sldemo_metro','InitFcn','')
В модели выберите View> Model Data Editor.
На вкладке Model Data Editor Parameters активируйте кнопку Change scope.
Блоки, которые используют переменные, находятся в подсистемах, таким образом, необходимо сконфигурировать Редактор Данных модели, чтобы показать данные в подсистемах.
Нажмите кнопку дополнительной информации Show/refresh.
Таблица данных содержит строки, которые соответствуют переменным в базовом рабочем пространстве.
В поле содержимого Фильтра введите J
.
В таблице данных найдите строку, которая соответствует J
. В Столбце значений, установленном значение переменной к Simulink.Parameter(J)
.
Simulink преобразовывает J
в объект Simulink.Parameter
.
В Столбце значений, установленном значение объекта параметра к =m*r^2
.
Опционально, моделируйте модель с различными массами метронома и длинами. Когда вы изменяете значения m
и r
, вы не должны помнить исправлять значение J
.
Если выражение содержит данные фиксированной точки или данные перечислимого типа, выражение может работать только с одной переменной или объектом.
Вы не можете установить тип данных (свойство DataType
) объекта параметра, который использует выражение для auto
(значение по умолчанию) и устанавливает типы данных объектов параметра, которые появляются в выражении к значению кроме auto
. Например, в выражении J = m*r^2
, вы не можете установить тип данных J
к auto
и типы данных m
и r
к single
.
Чтобы сохранить преимущества auto
(описанный в Контекстно-зависимом Вводе Данных) для объекта, который использует выражение, устанавливает типы данных объектов в выражении к auto
. Другими словами, используйте auto
для всех включенных объектов. Объекты в выражении получают совпадающий тип данных как объект, который использует выражение.
Чтобы использовать значение кроме auto
для объекта, который появляется в выражении, устанавливает типы данных всех зависимых объектов параметра к значению кроме auto
. Другими словами, не используйте auto
ни для каких включенных объектов.
Необходимо использовать совпадающий тип данных для всех объектов, используемых в выражении.
Если у вас есть Simulink Coder™ и Встроенные лицензии Coder®, можно сгенерировать код, который инициализирует глобальную переменную при помощи выражения. Однако генератор кода может сохранить выражение, только если это соответствует определенным требованиям. Смотрите Сохранение Выражения (Simulink Coder).
Осциллограф переменной является набором моделей и блоков, которые могут использовать переменную. Например, переменные, которые вы создаете в базовом рабочем пространстве, имеют глобальную область видимости, потому что все блоки во всех открытых моделях могут использовать переменные. Переменные, которые вы храните в рабочем пространстве модели, имеют ограниченный объем, потому что только блоки в модели хоста могут использовать переменные.
Вы не можете создать две переменные, которые имеют то же имя в том же осциллографе. Управление осциллографом переменной помогает вам избежать конфликтов по совпадению имен и установить ясное владение переменной.
Таблица описывает различные способы, которыми можно управлять осциллографом допускающего повторное использование значения параметров.
Осциллограф | Метод |
---|---|
Все открытые модели | Создайте переменную в базовом рабочем пространстве. |
Одна или несколько целенаправленных моделей | Создайте переменную в словаре данных. Чтобы снова использовать переменную в многоуровневых моделях, создайте словарь, на который ссылаются. Смотрите то, Что Словарь Данных? |
Одна модель, включая все подсистемы в модели | Создайте переменную в рабочем пространстве модели. Смотрите Рабочие пространства модели. |
Несколько блоков в подсистеме, включая блоки во вложенных подсистемах | Замаскируйте подсистему и создайте параметр маски вместо переменной рабочей области. Чтобы предотвратить блоки в подсистеме от использования переменных рабочей области, в подсистеме блокируют диалоговое окно, устанавливают Разрешение Иерархическое Разрешение Для получения информации о подсистемах смотрите Подсистему. Для получения информации о маскировании смотрите Основные принципы Маскирования. |
Чтобы избежать конфликтов по совпадению имен, когда у вас будет большая модель со многими переменными в том же осциллографе, рассмотрите упаковку переменных в единственную структуру. Для получения дополнительной информации смотрите, Организуют Связанные Блочные Определения Параметра в Структурах.
Для основной информации о том, как блоки используют имена переменных, которые вы задаете, смотрите Разрешение Символа.
Переменные, которые вы создаете в базовом рабочем пространстве, не сохраняются между сеансами работы с MATLAB. Однако можно сохранить переменные в MAT-файле или файле скрипта, и загрузить файл каждый раз, когда вы открываете модель с помощью образцового обратного вызова. Образцовый обратный вызов является набором команд, которые выполняет Simulink, когда вы взаимодействуете с моделью конкретным способом, таким как открытие модели. Можно использовать обратный вызов, чтобы загрузить переменные, когда вы открываете модель. Используйте этот метод, чтобы сохранить переменные, в то время как вы узнаете о Simulink и экспериментируете с моделями.
В модели, которая содержит блок Gain, устанавливает значение параметра Усиления к K
.
В командной строке создайте переменный K
в базовом рабочем пространстве.
K = 27;
В браузере Рабочей области щелкните правой кнопкой по переменной и выберите Save As.
Чтобы сохранить несколько переменных в одном файле, выберите все целевые переменные в браузере Рабочей области, и затем щелкните правой кнопкой по любой из выбранных переменных.
В диалоговом окне набор Сохраняет как тип в MATLAB Script
. Установите Имя файла на loadvar
и нажмите Save.
Файл скрипта loadvar.m
появляется в вашей текущей папке. Можно открыть файл, чтобы просмотреть команду, которая создает переменный K
.
В модели выберите File> Model Properties> Model Properties.
Во вкладке Callbacks диалогового окна Model Properties выберите PreLoadFcn
как обратный вызов, который вы хотите задать. В Образцовой панели функции предварительной нагрузки введите loadvar
и нажмите ОК.
Сохраните модель.
Следующий раз, когда вы открываете модель, обратный вызов PreloadFcn
, загружает переменный K
в базовое рабочее пространство. Можно также сохранить переменную в MAT-файл, например loadvar.mat
, и установить образцовый обратный вызов на load loadvar
.
Чтобы узнать об обратных вызовах, смотрите Обратные вызовы для Индивидуально настраиваемого Поведения Модели и Обратные вызовы для Индивидуально настраиваемого Поведения Модели. Чтобы программно задать обратный вызов для загрузки переменных, смотрите Программно Переменные Рабочей области Хранилища для Модели.
Когда вы сохраняете переменные в файл, необходимо сохранить изменения, которые вы вносите в переменные во время вашего сеанса работы с MATLAB. Чтобы постоянно сохранить переменные для модели, рассмотрите использование рабочего пространства модели или словаря данных вместо файла скрипта или MAT-файла. Для получения дополнительной информации о постоянном хранении переменных, смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей Simulink.
В примере выше, вы задаете образцовый обратный вызов, который создает переменные, когда вы открываете модель. Можно программно сохранить переменную и установить образцовый обратный вызов.
В командной строке создайте переменный K
в базовом рабочем пространстве.
K = 27;
Сохраните переменную в новый файл с именем скрипта loadvar.m
m.
matlab.io.saveVariablesToScript('loadvar.m','K')
Установите образцовый обратный вызов загружать файл скрипта.
set_param('mymodel','PreloadFcn','loadvar')
Сохраните модель.
save_system('myModel')
Функциональный matlab.io.saveVariablesToScript
сохраняет переменные в файл скрипта. Чтобы сохранить переменные в MAT-файл, используйте функциональный save
. Чтобы программно установить образцовые свойства, такие как обратные вызовы, используйте функциональный set_param
.
Когда вы используете переменные, чтобы установить блочные значения параметров, вы храните переменные в словаре данных или рабочей области. Можно использовать командную строку, Образцовый Проводник, и Редактор Данных модели, чтобы создать, переместить, скопировать и отредактировать переменные. Можно также определить, где переменная используется в модели, перечислите все переменные, которые использует модель, и перечислите все переменные, которые не использует модель. Для получения дополнительной информации смотрите, Создают, Редактирование, и Управляют Переменными Рабочей области.
Чтобы совместно использовать векторы точки останова или табличные данные между несколькими n-D Интерполяционная таблица, Предварительный поиск и Интерполяция Используя блоки Перед поиском, рассматривают хранить данные в Simulink.LookupTable
и объектах Simulink.Breakpoint
вместо объектах Simulink.Parameter
или переменных MATLAB. Этот метод улучшает удобочитаемость модели путем ясной идентификации данных как частей интерполяционной таблицы и явным образом соединения данных точки останова с табличными данными.
Simulink.LookupTable
Автономная интерполяционная таблица состоит из набора табличных данных и одного или нескольких векторов точки останова. Вы не сидите за одним столом данные или любой из векторов точки останова с другими интерполяционными таблицами.
Когда вы совместно используете автономную интерполяционную таблицу, вы используете всю таблицу и устанавливаете точки останова данные вместе в нескольких n-D блоках Интерполяционной таблицы. Сохранить это данные в объекте Simulink.LookupTable
:
Создайте объект в словаре данных или рабочей области. Например, в командной строке, войдите:
myLUTObj = Simulink.LookupTable;
Используйте свойства объекта сохранить значения данных точки останова и таблицы.
Используйте свойства объекта сконфигурировать уникальное имя для типа структуры в сгенерированном коде. В диалоговом окне свойства, в соответствии с определением Типа Struct, задают Имя.
В n-D блоках Интерполяционной таблицы, спецификации Данных набора к Lookup table object
.
Справа от спецификации Данных, определенного Имени к имени объекта Simulink.LookupTable
.
Для способов создать и сконфигурировать объекты Simulink.LookupTable
, смотрите Simulink.LookupTable
Simulink.Breakpoint
и Simulink.LookupTable
Когда вы используете Предварительный поиск и Интерполяцию Используя блоки Перед поиском, чтобы более точно управлять алгоритмом поиска, можно совместно использовать векторы точки останова и наборы табличных данных. Например, можно совместно использовать вектор точки останова между двумя отдельными наборами табличных данных. С этим разделением данных точки останова от табличных данных можно совместно использовать отдельные части интерполяционной таблицы вместо того, чтобы совместно использовать целую интерполяционную таблицу.
Сохранить табличные данные и точка останова:
Создайте объект Simulink.LookupTable
для каждого уникального набора табличных данных. Создайте объект Simulink.Breakpoint
для каждого уникального вектора точки останова, включая векторы точки останова, которые вы не намереваетесь совместно использовать.
Используйте свойства объектов сохранить значения данных точки останова и таблицы.
Сконфигурируйте объекты Simulink.LookupTable
относиться к объектам Simulink.Breakpoint
для данных точки останова. В объектах Simulink.LookupTable
, Спецификации набора к Reference
. Задайте имена объектов Simulink.Breakpoint
.
В Интерполяции Используя блоки Перед поиском, Спецификацию набора к Lookup table object
. Определите Имя к имени объекта Simulink.LookupTable
.
В блоках Перед поиском, Спецификации набора к Breakpoint object
. Определите Имя к имени объекта Simulink.Breakpoint
.
Модель в качестве примера fxpdemo_lookup_shared_param
содержит два Предварительных поиска и две Интерполяции Используя блоки Перед поиском. Сконфигурируйте блоки так, чтобы каждая комбинация Предварительного поиска и блока Interpolation Using Prelookup представляла уникальную интерполяционную таблицу. Совместно используйте вектор точки останова между этими двумя интерполяционными таблицами. В этом случае каждая интерполяционная таблица имеет уникальные табличные данные, но совместно использованные данные точки останова.
Откройте модель в качестве примера.
В диалоговом окне блока Prelookup, Спецификации набора к Breakpoint object
. Определите Имя к sharedBkpts
.
Нажмите кнопку рядом со значением параметра Имени. Выберите Create Variable.
В диалоговом окне Create New Data, установленном Значении к Simulink.Breakpoint
и нажимают Create.
Объект Simulink.Breakpoint
появляется в базовом рабочем пространстве.
В диалоговом окне свойства для sharedBkpts
задайте Значение как вектор, такой как [1 2 3 4 5 6 7 8 9 10]
. Нажать ОК.
В диалоговом окне блока Prelookup нажать ОК.
В диалоговом окне блока Prelookup1, Спецификации набора к Breakpoint object
. Определите Имя к sharedBkpts
.
В диалоговом окне блока Interpolation Using Prelookup, Спецификации набора к Lookup table object
. Определите Имя к dataForFirstTable
.
Нажмите кнопку рядом со значением параметра Имени. Выберите Create Variable.
В диалоговом окне Create New Data, установленном Значении к Simulink.LookupTable
и нажимают Create.
Объект Simulink.LookupTable
появляется в базовом рабочем пространстве.
В диалоговом окне свойства для dataForFirstTable
задайте Значение как вектор, такой как [10 9 8 7 6 5 4 3 2 1]
.
Установите спецификацию на Reference
.
В таблице под Спецификацией, определенным Именем к sharedBkpts
и нажимают ОК.
В диалоговом окне блока Interpolation Using Prelookup нажать ОК.
Сконфигурируйте блок Interpolation Using Prelookup1, чтобы использовать объект Simulink.LookupTable
под названием dataForSecondTable
. В диалоговом окне свойства объекта задайте Значение как вектор, такой как [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5]
. Сконфигурируйте объект относиться к sharedBkpts
для данных точки останова.
Модель теперь представляет две уникальных интерполяционных таблицы:
Комбинация sharedBkpts
и dataForFirstTable
.
Комбинация sharedBkpts
и dataForSecondTable
.
Эти интерполяционные таблицы совместно используют те же данные точки останова через sharedBkpts
.