Чтобы установить значение параметров блоков, такое как параметр Gain блока Gain, можно использовать числовые переменные, которые вы создаете и храните в рабочих областях, таких как базовое рабочее пространство, рабочее пространство модели или словарь данных Simulink®. Можно использовать переменную, чтобы установить несколько значений параметров в нескольких блоках, включая блоки в различных моделях. Чтобы изменить значения параметров блоков, вы изменяете значение переменной в рабочей области.
Используя переменную, чтобы установить значение параметров блоков также позволяет:
Измените значение параметров, не имея необходимость изменять образцовый файл (если вы храните переменную вне рабочего пространства модели).
Идентифицируйте параметр определенным, понятным именем при развертке или настройке значения.
Для основной информации об устанавливании значений параметров блоков смотрите Установленные Значения Параметров блоков.
Можно создать числовую переменную MATLAB® в рабочей области, такой как базовое рабочее пространство или словарь данных, и использовать его, чтобы задать одно или несколько значений параметров блоков.
Модель sldemo_fuelsys
в качестве примера представляет систему заправки бензинового двигателя. Подсистема в модели, feedforward_fuel_rate
, вычисляет спрос на топливо механизма при помощи постоянного номера 14.6
, который представляет идеальное (стехиометрическое) отношение воздуха, чтобы питать это, механизм использует. Два блока в подсистеме используют номер, чтобы установить значения параметров. В этом примере, чтобы совместно использовать номер между блоками, вы создаете переменную под названием myParam
.
Откройте модель.
sldemo_fuelsys
В модели выберите View> Model Data Editor. В Model Data Editor осмотрите вкладку Parameters.
В модели перейдите в подсистему.
open_system(... 'sldemo_fuelsys/fuel_rate_control/fuel_calc/feedforward_fuel_rate')
В Model Data Editor, в поле Filter contents, вводят 14.6
.
Таблица данных содержит две строки, которые соответствуют параметрам Constant value двух из блоков Константа в подсистеме.
Используйте столбец Value, чтобы заменить литеральный номер 14.6
на myParam
. Выполните замену для обоих параметров.
В поле Filter contents введите myParam
.
При редактировании значения одного из параметров кликните по кнопке действий и выберите Create.
В диалоговом окне Create New Data, набор Value к 14.6
и нажимают Create.
Переменная, myParam
, появляется в базовом рабочем пространстве.
Поскольку переменная существует в базовом рабочем пространстве, можно использовать его в многоуровневых моделях. Однако, когда вы заканчиваете свой сеанс работы с MATLAB, вы теряете содержимое базового рабочего пространства. Рассмотрите постоянно хранение переменной в словаре данных или рабочем пространстве модели.
Чтобы задать постоянную систему, такую как переменная, которая представляет радиус Земли, рассматривают создание объекта Simulink.Parameter
вместо числовой переменной MATLAB. Объекты параметра позволяют вам задавать физические единицы измерения и пользовательскую документацию, а также другие характеристики.
Чтобы создать и использовать объекты параметра в моделях, смотрите Объекты данных.
Как правило, значение системы постоянные влияния значения других параметров и сигналов через математические отношения. Чтобы смоделировать эти отношения явным образом, установите значения зависимых данных при помощи выражений. Смотрите Установленное Значение переменных при помощи Математического выражения.
Можно установить значение переменной к выражению включающие литеральные числа и другие переменные. С выражениями вы можете:
Выразите значение как отношение между известными физическими константами вместо как неидентифицируемый литеральный номер.
Модель Explicitly алгебраические зависимости между данными о параметре. Когда вы изменяете значения независимых данных, вы не должны помнить настраивать значения зависимых данных.
Преобразуйте переменную в объект Simulink.Parameter
. Затем установите свойство Value
объекта при помощи выражения:
В интерактивном режиме — Например, с Model Data Editor или Model Explorer, предшествуют, выражение с равняется знаку, =
. Данные показывают, как задать выражение 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.
Блоки, которые используют переменные, находятся в подсистемах, таким образом, необходимо сконфигурировать Model Data Editor, чтобы показать данные в подсистемах.
Нажмите кнопку Show/refresh additional information.
Таблица данных содержит строки, которые соответствуют переменным в базовом рабочем пространстве.
В поле Filter contents введите J
.
В таблице данных найдите строку, которая соответствует J
. В столбце Value, установленном значение переменной к Simulink.Parameter(J)
.
Simulink преобразовывает J
в объект Simulink.Parameter
.
В столбце Value, установленном значение объекта параметра к =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™ и лицензии Embedded Coder®, можно сгенерировать код, который инициализирует глобальную переменную при помощи выражения. Однако генератор кода может сохранить выражение, только если это соответствует определенным требованиям. Смотрите Сохранение Выражения (Simulink Coder).
scope переменной является набором моделей и блоков, которые могут использовать переменную. Например, переменные, которые вы создаете в базовом рабочем пространстве, имеют глобальную область видимости, потому что все блоки во всех открытых моделях могут использовать переменные. Переменные, которые вы храните в рабочем пространстве модели, имеют ограниченный объем, потому что только блоки в модели хоста могут использовать переменные.
Вы не можете создать две переменные, которые имеют то же имя в том же осциллографе. Управление осциллографом переменной помогает вам избежать конфликтов по совпадению имен и установить ясное владение переменной.
Таблица описывает различные способы, которыми можно управлять осциллографом допускающего повторное использование значения параметров.
Осциллограф | Метод |
---|---|
Все открытые модели | Создайте переменную в базовом рабочем пространстве. |
Одна или несколько целенаправленных моделей | Создайте переменную в словаре данных. Чтобы снова использовать переменную в многоуровневых моделях, создайте словарь, на который ссылаются. Смотрите то, Что Словарь Данных? |
Одна модель, включая все подсистемы в модели | Создайте переменную в рабочем пространстве модели. Смотрите Рабочие пространства модели. |
Несколько блоков в подсистеме, включая блоки во вложенных подсистемах | Замаскируйте подсистему и создайте параметр маски вместо переменной рабочей области. Чтобы предотвратить блоки в подсистеме от использования переменных рабочей области, в подсистеме блокируют диалоговое окно, устанавливают Permit Hierarchical Resolution на Для получения информации о подсистемах смотрите Подсистему. Для получения информации о маскировании смотрите Основы маскирования. |
Чтобы избежать конфликтов по совпадению имен, когда у вас будет большая модель со многими переменными в том же осциллографе, рассмотрите упаковку переменных в одну структуру. Для получения дополнительной информации смотрите, Организуют Связанные Определения Параметров блоков в Структурах.
Для основной информации о том, как блоки используют имена переменных, которые вы задаете, смотрите Разрешение Символа.
Переменные, которые вы создаете в базовом рабочем пространстве, не сохраняются между сеансами работы с MATLAB. Однако можно сохранить переменные в MAT-файле или файле скрипта, и загрузить файл каждый раз, когда вы открываете модель с помощью образцового коллбэка. Модель callback является набором команд, которые выполняет Simulink, когда вы взаимодействуете с моделью конкретным способом, таким как открытие модели. Можно использовать коллбэк, чтобы загрузить переменные, когда вы открываете модель. Используйте этот метод, чтобы сохранить переменные, в то время как вы узнаете о Simulink и экспериментируете с моделями.
В модели, которая содержит блок Gain, устанавливает значение параметра Gain к K
.
В командной строке создайте переменную K
в базовом рабочем пространстве.
K = 27;
В браузере Рабочей области щелкните правой кнопкой по переменной и выберите Save As.
Чтобы сохранить несколько переменных в одном файле, выберите все целевые переменные в браузере Рабочей области, и затем щелкните правой кнопкой по любой из выбранных переменных.
В диалоговом окне, набор Save as type к MATLAB Script
. Установите File name на loadvar
и нажмите Save.
Файл скрипта loadvar.m
появляется в вашей текущей папке. Можно открыть файл, чтобы просмотреть команду, которая создает переменную K
.
В модели выберите File> Model Properties> Model Properties.
Во вкладке Callbacks диалогового окна Model Properties выберите PreLoadFcn
как коллбэк, который вы хотите задать. В панели Model pre-load function введите loadvar
и нажмите OK.
Сохраните модель.
Следующий раз, когда вы открываете модель, коллбэк PreloadFcn
, загружает переменную K
в базовое рабочее пространство. Можно также сохранить переменную в MAT-файл, например, loadvar.mat
, и установить образцовый коллбэк на load loadvar
.
Чтобы узнать о коллбэках, смотрите Коллбэки для Индивидуально настраиваемого Поведения Модели. Чтобы программно задать коллбэк для загрузки переменных, смотрите Программно Переменные Рабочей области Хранилища для Модели.
Когда вы сохраняете переменные в файл, необходимо сохранить изменения, которые вы вносите в переменные во время своего сеанса работы с MATLAB. Чтобы постоянно сохранить переменные для модели, рассмотрите использование рабочего пространства модели или словаря данных вместо файла скрипта или MAT-файла. Для получения дополнительной информации о постоянном хранении переменных, смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей Simulink.
В примере выше, вы задаете образцовый коллбэк, который создает переменные, когда вы открываете модель. Можно программно сохранить переменную и установить образцовый коллбэк.
В командной строке создайте переменную K
в базовом рабочем пространстве.
K = 27;
Сохраните переменную в новый файл с именем скрипта loadvar.m
.
matlab.io.saveVariablesToScript('loadvar.m','K')
Установите образцовый коллбэк загружать файл скрипта.
set_param('mymodel','PreloadFcn','loadvar')
Сохраните модель.
save_system('myModel')
Функциональный matlab.io.saveVariablesToScript
сохраняет переменные в файл скрипта. Чтобы сохранить переменные в MAT-файл, используйте функциональный save
. Чтобы программно установить образцовые свойства, такие как коллбэки, используйте функциональный set_param
.
Когда вы используете переменные, чтобы установить значения параметров блоков, вы храните переменные в словаре данных или рабочей области. Можно использовать командную строку, Model Explorer, и Model Data Editor, чтобы создать, переместить, скопировать, и отредактировать переменные. Можно также определить, где переменная используется в модели, перечислите все переменные, которые использует модель, и перечислите все переменные, которые не использует модель. Для получения дополнительной информации смотрите, Создают, Редактирование, и Управляют Переменными Рабочей области.
Чтобы совместно использовать векторы точки останова или табличные данные между несколькими n-D Интерполяционная таблица, Предварительный поиск и Интерполяция Используя блоки Перед поиском, рассматривают хранить данные в Simulink.LookupTable
и объектах Simulink.Breakpoint
вместо объектах Simulink.Parameter
или переменных MATLAB. Этот метод улучшает удобочитаемость модели путем ясной идентификации данных как частей интерполяционной таблицы и явным образом соединения данных о точке останова с табличными данными.
Simulink.LookupTable
Автономная интерполяционная таблица состоит из набора табличных данных и одного или нескольких векторов точки останова. Вы не сидите за одним столом данные или любой из векторов точки останова с другими интерполяционными таблицами.
Когда вы совместно используете автономную интерполяционную таблицу, вы используете всю таблицу и устанавливаете точки останова данные вместе в нескольких n-D блоках Интерполяционной таблицы. Хранить эти данные в объекте Simulink.LookupTable
:
Создайте объект в словаре данных или рабочей области. Например, в командной строке, введите:
myLUTObj = Simulink.LookupTable;
Используйте свойства объекта сохранить значения данных о точке останова и таблицы.
Используйте свойства объекта сконфигурировать уникальное имя для типа структуры в сгенерированном коде. В диалоговом окне свойства, под Struct Type definition, задают Name.
В n-D блоках Интерполяционной таблицы, набор Data specification к Lookup table object
.
Справа от Data specification, набор Name к имени объекта Simulink.LookupTable
.
Для способов создать и сконфигурировать объекты Simulink.LookupTable
, смотрите Simulink.LookupTable
Simulink.Breakpoint
и Simulink.LookupTable
Когда вы используете Предварительный поиск и Интерполяцию Используя блоки Перед поиском, чтобы более точно управлять алгоритмом поиска, можно совместно использовать векторы точки останова и наборы табличных данных. Например, можно совместно использовать вектор точки останова между двумя отдельными наборами табличных данных. С этим разделением данных о точке останова из табличных данных можно совместно использовать отдельные части интерполяционной таблицы вместо того, чтобы совместно использовать целую интерполяционную таблицу.
Сохранить табличные данные и точка останова:
Создайте объект Simulink.LookupTable
для каждого уникального набора табличных данных. Создайте объект Simulink.Breakpoint
для каждого уникального вектора точки останова, включая векторы точки останова, которые вы не намереваетесь совместно использовать.
Используйте свойства объектов сохранить значения данных о точке останова и таблицы.
Сконфигурируйте объекты Simulink.LookupTable
относиться к объектам Simulink.Breakpoint
для данных о точке останова. В объектах Simulink.LookupTable
, набор Specification к Reference
. Задайте имена объектов Simulink.Breakpoint
.
В Интерполяции Используя блоки Перед поиском, набор Specification к Lookup table object
. Установите Name на имя объекта Simulink.LookupTable
.
В блоках Перед поиском, набор Specification к Breakpoint object
. Установите Name на имя объекта Simulink.Breakpoint
.
Модель fxpdemo_lookup_shared_param
в качестве примера содержит два Предварительных поиска и две Интерполяции Используя блоки Перед поиском. Сконфигурируйте блоки так, чтобы каждая комбинация Предварительного поиска и блока Interpolation Using Prelookup представляла уникальную интерполяционную таблицу. Совместно используйте вектор точки останова между этими двумя интерполяционными таблицами. В этом случае каждая интерполяционная таблица имеет уникальные табличные данные, но совместно использованные данные о точке останова.
Откройте модель в качестве примера.
В диалоговом окне блока Prelookup, набор Specification к Breakpoint object
. Установите Name на sharedBkpts
.
Нажмите кнопку рядом со значением параметра Name. Выберите Create Variable.
В диалоговом окне Create New Data, набор Value к Simulink.Breakpoint
и нажимают Create.
Объект Simulink.Breakpoint
появляется в базовом рабочем пространстве.
В диалоговом окне свойства для sharedBkpts
задайте Value как вектор, такой как [1 2 3 4 5 6 7 8 9 10]
. Нажмите OK.
В диалоговом окне блока Prelookup нажмите OK.
В диалоговом окне блока Prelookup1, набор Specification к Breakpoint object
. Установите Name на sharedBkpts
.
В диалоговом окне блока Interpolation Using Prelookup, набор Specification к Lookup table object
. Установите Name на dataForFirstTable
.
Нажмите кнопку рядом со значением параметра Name. Выберите Create Variable.
В диалоговом окне Create New Data, набор Value к Simulink.LookupTable
и нажимают Create.
Объект Simulink.LookupTable
появляется в базовом рабочем пространстве.
В диалоговом окне свойства для dataForFirstTable
задайте Value как вектор, такой как [10 9 8 7 6 5 4 3 2 1]
.
Установите Specification на Reference
.
В таблице под Specification, набор Name к sharedBkpts
и нажимают OK.
В диалоговом окне блока Interpolation Using Prelookup нажмите OK.
Сконфигурируйте блок Interpolation Using Prelookup1, чтобы использовать объект Simulink.LookupTable
под названием dataForSecondTable
. В диалоговом окне свойства объекта задайте Value как вектор, такой как [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5]
. Сконфигурируйте объект относиться к sharedBkpts
для данных о точке останова.
Модель теперь представляет две уникальных интерполяционных таблицы:
Комбинация sharedBkpts
и dataForFirstTable
.
Комбинация sharedBkpts
и dataForSecondTable
.
Эти интерполяционные таблицы совместно используют те же данные о точке останова через sharedBkpts
.