Компоненты члена должны быть объявлены с ExternalAccess=observe
, и поэтому их переменные не появляются во вкладке Variables диалогового окна блока верхнего уровня. Однако, если определенная переменная компонента члена важна для инициализации, можно связать ее значение с параметром инициализации в parameters
верхнего уровня блок объявлений. В этом случае пользователь блока сможет настроить начальное целевое значение переменной компонента члена из диалогового окна блока верхнего уровня при создании и симуляции модели.
Пользователь блока не может изменить приоритет инициализации переменной компонента члена. Вы задаете переменный приоритет инициализации, когда вы объявляете компонент члена. Синтаксис эквивалентен описанный в Переменном Приоритете для Инициализации Модели.
Например, вы имеете составной блок двигателя постоянного тока (похожий на тот, описанный в Составном Компоненте — двигатель постоянного тока), и хотите, чтобы пользователь блока задал начальное целевое значение для текущего индуктора с низким приоритетом. Следующий код включает библиотеку Foundation блок Inductor в ваш файл собственного компонента со способностью управлять ее индуктивностью в верхнем уровне (при помощи параметров блоков Rotor Inductance) и также задать низкоприоритетную начальную цель для индуктора текущая переменная:
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
В этом случае пользователь блока может задать значение для параметра Initial current target for Rotor Inductor, который появляется в диалоговом окне блока составного компонента. Это значение присвоено как начальная цель переменной i_L
(Переменная Initial current блока Inductor члена), с низким приоритетом инициализации. В зависимости от результатов решения цель может или не может быть удовлетворена, когда решатель вычисляет начальные условия для симуляции. Для получения дополнительной информации смотрите Инициализацию Переменной Блочного уровня.
Можно использовать альтернативный синтаксис, который позволяет вам присвоить значение переменных и приоритетные поля данных отдельно, с помощью записи через точку. Например, следующий оператор:
rotorInductor = foundation.electrical.elements.inductor(l = rotor_inductance, i_L.value = i0, i_L.priority = priority.low);
эквивалентно объявлению компонента Индуктора от предыдущего примера.