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

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

Когда вы объявляете переменные 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, 'm'}, priority = priority.high }; 
end

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

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

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

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

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

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.

Примечание

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

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

Больше о