Объявите переменные компонента

Через и через переменные компонента

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

Следующий пример инициализирует переменную Through t (крутящий момент) как 0 N*m:

variables
    t = {0,'N*m'};
end

Примечание

После того, как вы объявите переменные Through и Across компонента, необходимо задать их отношение с узлами компонента, и поэтому с доменными переменными Through и Across. Для получения дополнительной информации смотрите, Задают Отношение Между Переменными Компонента и Узлами.

Внутренние переменные компонента

Можно также объявить внутреннюю переменную компонента как значение с модулем. Можно использовать такие внутренние переменные в файле компонента, например, в equations разделите или в объявлениях среднего срока. Переменные компонента также используются в процессе инициализации модели, как описано в Переменном Приоритете для Инициализации Модели.

Следующий пример объявляет и инициализирует три переменные:

variables
    f = {0,'N'};   % Force
    v = {0,'m/s'}; % Velocity
    x = {0,'m'};   % Spring deformation
end

Сила и скорость являются переменными Through и Across компонента, позже чтобы быть соединенными с доменными переменными Through и Across с помощью branches раздел. Деформация Spring является внутренней переменной компонента, чтобы использоваться для инициализации модели.

Можно объявить внутренние переменные компонента целого числа типа или действительный как переменные события путем установки Event=true атрибут. Для получения дополнительной информации смотрите Переменные События.

Переменный приоритет для инициализации модели

Когда вы сгенерируете пользовательский блок Simscape™ из файла компонента, вкладка Variables этого блока перечислит все общедоступные переменные, заданные в базовом файле компонента, наряду с приоритетом инициализации, целевым начальным значением и модулем каждой переменной. Пользователь блока может изменить переменный приоритет и цель, до симуляции, чтобы влиять на инициализацию модели. Для получения дополнительной информации смотрите Переменную Инициализацию.

Значения по умолчанию для переменного приоритета, целевого значения и модуля прибывают из объявления переменной в файле компонента. Определение дополнительного комментария позволяет вам управлять именем переменной в диалоговом окне блока. Для получения дополнительной информации смотрите, Задают Понятные имена для Параметров блоков и Переменных.

Примечание

Для переменных с температурными модулями существует дополнительный фактор того, применить ли линейное или аффинное преобразование, когда пользователь блока изменяет модуль во вкладке Variables диалогового окна блока. Используйте Conversion припишите таким же образом что касается параметров блоков. Для получения дополнительной информации смотрите Модули Параметра.

В большинстве случаев достаточно объявить переменную так же, как значение с модулем, не используя его приоритет, который эквивалентен priority = priority.none. Пользователь блока может установить переменный приоритет, по мере необходимости, во вкладке Variables диалогового окна блока до симуляции.

В некоторых случаях, однако, установка переменной к определенному приоритету по умолчанию важна для правильной операции компонента. Чтобы задать высокий или низкий приоритет по умолчанию для переменной компонента, объявите переменную как полевой массив. Например, следующее объявление инициализирует переменную x (пружинная деформация) как 0 мм, с высоким приоритетом:

variables
    x = {value = {0,'m'},priority = priority.high}; % Spring deformation
end

В этом случае переменная Spring deformation появится во вкладке Variables диалогового окна блока с приоритетом по умолчанию High и целевое значение по умолчанию и модуль 0 mm, но пользователь блока может изменить переменный приоритет и предназначаться, как обычно.

Если вы хотите, чтобы переменная всегда имела высокий приоритет инициализации, не позволяя пользователю блока, чтобы изменить его, объявите переменную как частную:

variables(Access=private)
  x = {value = {0,'m'},priority = priority.high};
end

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

Если вы хотите, чтобы переменная всегда имела определенный приоритет инициализации, такой как High, но позвольте пользователю блока задать целевое значение, объявить переменную как частную и связать его с параметром инициализации:

parameters
  p = {0,'m'}; % Initial deformation
end
variables(Access=private)
  x = {value = p,priority = priority.high}; 
end

В этом случае значение параметра Initial deformation, заданного пользователем блока, присвоено как начальная цель переменной x, с высоким приоритетом инициализации. В зависимости от результатов решения эта цель может или не может быть удовлетворена, когда решатель вычисляет начальные условия для симуляции. Для получения дополнительной информации смотрите Расчет Начальных условий.

Для составных компонентов компоненты члена объявляются, как скрытый, и поэтому их переменные не появляются во вкладке Variables диалогового окна блока. Однако можно использовать параметр верхнего уровня, чтобы позволить пользователю блока задать начальное целевое значение переменной компонента члена. Для получения дополнительной информации смотрите Задающие Начальные Целевые значения для Переменных члена.

Переменная область значений инициализации

При объявлении переменной можно задать минимальные и максимальные приемлемые значения для ее инициализации, например:

variables
  x = {value={0,'deg'},priority=priority.high,imin={0,'deg'},imax={360,'deg'}};
end

Когда несколько решений для инициализации существуют, этот синтаксис позволяет вам вести решатель к предпочтительному решению. Для получения дополнительной информации смотрите Инициализацию Переменной Блочного уровня. Если заданной области нельзя удовлетворить во время инициализации, решатель выдает ошибку.

Решатель пытается удовлетворить области значений инициализации для переменной независимо от того, высок ли ее приоритет инициализации, низко, или ни один. Рекомендуется, чтобы вы использовали priority припишите экономно. Приоритетное значение по умолчанию, priority.none (который эквивалентен игнорированию priority припишите полностью), подходит в большинстве случаев. Пользователь блока может изменить переменное приоритетное значение, по мере необходимости, во вкладке Variables диалогового окна блока до симуляции. Однако пользователь блока не управляет переменной областью значений инициализации. Только автор блока может задать приемлемые минимальные и максимальные значения для переменной инициализации в файле компонента, и для непрерывного и для переменных события.

Областью значений инициализации по умолчанию является (-inf,inf). Поэтому вы не должны задавать оба значения, чтобы задать область значений, достаточно задать только imin или imax. Например, используйте этот синтаксис, чтобы ограничить температуру положительными значениями:

variables
  T = {value={293.15,'K'},imin={0,'K'}};
end

Когда вы задаете imin или imax, эти значения задают открытую область значений.

Для инициализации модели с помощью рабочей точки решатель пытается удовлетворить областям значений инициализации только для переменных, которые не имеют цели в дереве данных о рабочей точке. Для получения дополнительной информации смотрите Используя Данные о Рабочей точке для Инициализации Модели.

Номинальная стоимость и модуль для переменной

Номинальная стоимость обеспечивает способ задать ожидаемую величину переменной в модели, похожей на определение оценки трансформатора или установку области значений на вольтметре. Для получения дополнительной информации смотрите, что Система Масштабируется Номинальной стоимостью.

Каждая модель имеет базовую таблицу пар модуля номинальной стоимости. В общем случае все переменные в модели масштабируются на основе номинальной стоимости, соответствующей их физической единице измерения. Можно заменить это масштабирование для отдельной переменной в файле компонента путем введения номинального значения и модуля как атрибут объявления переменной.

variables
    x = {value = {value,'unit'},nominal = {value,'unit'}}; 
end

Когда вы генерируете пользовательский блок Simscape из файла компонента, номинальная стоимость и модуль формируют nominal атрибут объявления переводит в значения по умолчанию для параметров блоков x_nominal и x_nominal_unit (где x имя переменной).

Например, это объявление переменной:

variables
    i = {value = {0,'A'},nominal = {1,'mA'}}; % Current
end

производит следующие значения по умолчанию для параметров блоков:

  • i_nominal_value, со значением '1'

  • i_nominal_unit, со значением 'mA'

и выглядит так в Property Inspector.

Примечание

Рекомендуется, чтобы вы использовали nominal припишите экономно. Номинальная стоимость по умолчанию, которая поступает из таблицы модуля значения модели, подходит в большинстве случаев. Пользователь блока может также изменить номинальную стоимость и модули для отдельных блоков или при помощи Property Inspector или при помощи set_param и get_param функции, в случае необходимости. Для получения дополнительной информации смотрите, Изменяют Номинальную стоимость для Основной переменной.

Связанные примеры

Больше о