Когда вы объявляете переменные 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 = { value , 'unit' }, nominal = {value, 'unit'} }; end
Когда вы генерируете пользовательский блок Simscape из файла компонента, номинальная стоимость и модуль формируют nominal
атрибут объявления переводит в значения по умолчанию для параметров блоков
и x
_nominal
(где x
_nominal_unitx
имя переменной).
Например, это объявление переменной:
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
функции, в случае необходимости. Для получения дополнительной информации смотрите, Изменяют Номинальную стоимость для Основной переменной.