Компоненты-члены должны быть объявлены с помощью ExternalAccess=observe, и поэтому их переменные не отображаются на вкладке «Переменные» диалогового окна блока верхнего уровня. Однако если определенная переменная компонента элемента важна для инициализации, можно связать ее значение с параметром инициализации в верхнем уровне. parameters блок объявления. В этом случае пользователь блока сможет настроить начальное целевое значение переменной компонента элемента из диалогового окна блока верхнего уровня при построении и моделировании модели.
Примечание
Пользователь блока не может изменить приоритет инициализации переменной компонента-члена. Приоритет инициализации переменной задается при объявлении компонента-члена. Синтаксис аналогичен описанному в разделе Приоритет переменной для инициализации модели.
Например, имеется составной блок DC Motor (аналогичный описанному в разделе Composite Component - DC Motor), и пользователь блока должен указать начальное целевое значение тока индуктора с низким приоритетом. Следующий код включает блок индуктора библиотеки Foundation в пользовательском файле компонента с возможностью управления его индуктивностью на верхнем уровне (с помощью параметра блока индуктивности ротора), а также для задания начальной цели низкого приоритета для переменной тока индуктора:
component DCMotor2
[...]
parameters
rotor_inductance = { 12e-6, 'H' }; % Rotor Inductance
i0 = { 0, 'A' }; % Initial current target for Rotor Inductor
[...]
end
components(ExternalAccess=observe)
rotorInductor = foundation.electrical.elements.inductor(l = rotor_inductance,
i_L = {value = i0, priority = priority.low});
[...]
end
[...]
end
В этом случае пользователь блока может указать значение параметра Начальный целевой ток для индуктора ротора, которое появляется в диалоговом окне блока составного компонента. Это значение назначается в качестве начального целевого значения переменной i_L (Начальная переменная тока блока индуктора элемента), с низким приоритетом инициализации. В зависимости от результатов решения цель может быть удовлетворена, если решатель вычисляет начальные условия для моделирования. Дополнительные сведения см. в разделе Инициализация переменных на уровне блоков.
Можно использовать альтернативный синтаксис, который позволяет назначать переменные значения и поля данных приоритета отдельно, используя точечную нотацию. Например, следующий оператор:
rotorInductor = foundation.electrical.elements.inductor(l = rotor_inductance,
i_L.value = i0, i_L.priority = priority.low);
эквивалентно объявлению компонента индуктора из предыдущего примера.