Чтобы установить значение параметров блоков, такое как параметр Gain блока Gain, можно использовать числовые переменные, которые вы создаете и храните в рабочих областях, таких как базовое рабочее пространство, рабочее пространство модели или словарь данных Simulink®. Можно использовать переменную, чтобы установить несколько значений параметров в нескольких блоках, включая блоки в различных моделях. Чтобы изменить значения параметров блоков, вы изменяете значение переменной в рабочей области.
Используя переменную, чтобы установить значение параметров блоков также позволяет:
Измените значение параметров, не имея необходимость изменять файл модели (если вы храните переменную вне рабочего пространства модели).
Идентифицируйте параметр определенным, понятным именем при развертке или настройке значения.
Для основной информации об устанавливании значений параметров блоков смотрите Установленные Значения Параметров блоков.
Можно создать числовую переменную MATLAB® в рабочей области, такой как базовое рабочее пространство или словарь данных, и использовать его, чтобы задать одно или несколько значений параметров блоков.
Если значение параметров блоков установлено к простому числовому выражению, можно создать переменную для того выражения в Model Data Editor (на вкладке Modeling, нажмите Model Data Editor). Щелкните в правой стороне ячейки, которая соответствует значению, затем выберите Create variable. В диалоговом окне Create New Data, набор название и местоположение для новой переменной, затем нажимают Create. Ячейка теперь отображает новую переменную.
Можно также создать переменную, чтобы представлять константу, которая используется в нескольких выражениях. Модель sldemo_fuelsys
в качестве примера представляет систему заправки бензинового двигателя. Подсистема в модели,
feedforward_fuel_rate
, вычисляет спрос на топливо механизма при помощи постоянного номера 14.6
, который представляет идеальное (стехиометрическое) отношение воздуха, чтобы питать это, механизм использует. Два блока в подсистеме используют номер, чтобы установить значения параметров. В этом примере, чтобы совместно использовать номер между блоками, вы создаете переменную под названием myParam
.
Откройте модель.
sldemo_fuelsys
В модели, на вкладке Modeling, нажимают 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 двух из блоков Constant в подсистеме.
Используйте столбец 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','')
В модели, на вкладке Modeling, нажимают 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 на Для получения информации о подсистемах смотрите Subsystem. Для получения информации о маскировании смотрите Основы маскирования. |
Чтобы избежать конфликтов по совпадению имен, когда у вас будет большая модель со многими переменными в том же осциллографе, рассмотрите упаковку переменных в одну структуру. Для получения дополнительной информации смотрите, Организуют Связанные Определения Параметров блоков в Структурах.
Для основной информации о том, как блоки используют имена переменных, которые вы задаете, смотрите Разрешение Символа.
Переменные, которые вы создаете в базовом рабочем пространстве, не сохраняются между сеансами работы с 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
.
В модели, на вкладке Modeling, выбирают Model Settings> 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 Lookup Table, Prelookup и блоки Interpolation Using Prelookup, рассматривают хранить данные в Simulink.LookupTable
и Simulink.Breakpoint
объекты вместо переменных MATLAB или Simulink.Parameter
объекты. Этот метод улучшает удобочитаемость модели путем ясной идентификации данных как частей интерполяционной таблицы и явным образом соединения данных о точке останова с табличными данными.
Simulink.LookupTable
ОбъектАвтономная интерполяционная таблица состоит из набора табличных данных и одного или нескольких векторов точки останова. Вы не сидите за одним столом данные или любой из векторов точки останова с другими интерполяционными таблицами.
Когда вы совместно используете автономную интерполяционную таблицу, вы используете всю таблицу и устанавливаете точки останова данные вместе в нескольких блоках n-D Lookup Table. Хранить эти данные в Simulink.LookupTable
объект:
Создайте объект в словаре данных или рабочей области. Например, в командной строке, введите:
myLUTObj = Simulink.LookupTable;
Используйте свойства объекта сохранить значения данных о точке останова и таблицы.
Используйте свойства объекта сконфигурировать уникальное имя для типа структуры в сгенерированном коде. В диалоговом окне свойства, под Struct Type definition, задают Name.
В блоках n-D Lookup Table, набор Data specification к Lookup table object
.
Справа от Data specification, набор Name к имени Simulink.LookupTable
объект.
Для способов создать и сконфигурировать Simulink.LookupTable
объекты, смотрите Simulink.LookupTable
Simulink.LookupTable
и Simulink.Breakpoint
ОбъектыКогда вы используете Prelookup и блоки Interpolation Using Prelookup, чтобы более точно управлять алгоритмом поиска, можно совместно использовать векторы точки останова и наборы табличных данных. Например, можно совместно использовать вектор точки останова между двумя отдельными наборами табличных данных. С этим разделением данных о точке останова из табличных данных можно совместно использовать отдельные части интерполяционной таблицы вместо того, чтобы совместно использовать целую интерполяционную таблицу.
Сохранить табличные данные и точка останова:
Создайте Simulink.LookupTable
объект для каждого уникального набора табличных данных. Создайте Simulink.Breakpoint
объект для каждого уникального вектора точки останова, включая векторы точки останова, которые вы не намереваетесь совместно использовать.
Используйте свойства объектов сохранить значения данных о точке останова и таблицы.
Сконфигурируйте Simulink.LookupTable
объекты относиться к Simulink.Breakpoint
объекты для данных о точке останова. В Simulink.LookupTable
объекты, набор Specification к Reference
. Задайте имена Simulink.Breakpoint
объекты.
В блоках Interpolation Using Prelookup, набор Specification к Lookup table object
. Установите Name на имя Simulink.LookupTable
объект.
В блоках Prelookup, набор Specification к Breakpoint object
. Установите Name на имя Simulink.Breakpoint
объект.
Модель fxpdemo_lookup_shared_param
в качестве примера содержит два Prelookup и два блока Interpolation Using Prelookup. Сконфигурируйте блоки так, чтобы каждая комбинация Prelookup и блока 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
.