Составьте компонент Используя операторы import

Этот пример показывает, как можно использовать операторы import, чтобы реализовать составной эквивалент компонента тому, описанному в Составном Компоненте — двигатель постоянного тока. Эти два компонента идентичны, но из-за использования операторов import значительно уменьшается объем ввода в nodes и разделах components.

import foundation.electrical.electrical;   % electrical domain class definition
import foundation.electrical.elements.*;   % electrical elements
import foundation.mechanical.rotational.*; % mechanical rotational domain and elements
component DC_Motor1
% DC Motor1
% This block models a DC motor with an equivalent circuit comprising a
% series connection of a resistor, inductor, and electromechanical converter.
% Default values are as for the DC Motor Simscape example, ssc_dcmotor.

nodes
    p = electrical;               % +:left
    n = electrical;               % -:left
    R = rotational;               % R:right
    C = rotational;               % C:right
end

parameters
    rotor_resistance    = { 3.9, 'Ohm' };           % Rotor Resistance
    rotor_inductance    = { 12e-6, 'H' };           % Rotor Inductance
    motor_inertia       = { 0.01, 'g*cm^2' };       % Inertia
    breakaway_torque    = { 0.02e-3, 'N*m' };       % Breakaway friction torque
    coulomb_torque      = { 0.02e-3, 'N*m' };       % Coulomb friction torque
    viscous_coeff       = { 0, 'N*m*s/rad' };       % Viscous friction coefficient
    breakaway_velocity  = { 0.1, 'rad/s' };         % Breakaway friction velocity
    back_emf_constant   = { 0.072e-3, 'V/rpm' };    % Back EMF constant
end

components(ExternalAccess=observe)
    rotorResistor                  = resistor(R = rotor_resistance);
    rotorInductor                  = inductor(l = rotor_inductance);
    rotationalElectroMechConverter = rotational_converter(K = back_emf_constant);
    friction                       = friction(brkwy_trq = breakaway_torque, Col_trq = coulomb_torque, ...
                                        visc_coef = viscous_coeff, brkwy_vel = breakaway_velocity);
    motorInertia                   = inertia(inertia = motor_inertia);
end

connections
    connect(p, rotorResistor.p);
    connect(rotorResistor.n, rotorInductor.p);
    connect(rotorInductor.n, rotationalElectroMechConverter.p);
    connect(rotationalElectroMechConverter.n, n);
    connect(rotationalElectroMechConverter.R, friction.R, motorInertia.I, R);
    connect(rotationalElectroMechConverter.C, friction.C, C);
end

end

Рассмотрите три оператора import в начале файла. Первый:

import foundation.electrical.electrical;

квалифицированный импорт Основы электрический доменный класс. Поэтому в разделе nodes, можно задать p и узлы n просто как electrical.

Второй оператор:

import foundation.electrical.elements.*;

неполный импорт, который импортирует все подпакеты и классы под подпакетом foundation.electrical.elements и поэтому предоставляет вам прямой доступ ко всем электрическим компонентам Основы в подбиблиотеке Elements, таким как inductor, resistor и rotational_converter.

Третий оператор:

import foundation.mechanical.rotational.*;

неполный импорт, который импортирует все подпакеты и классы под подпакетом foundation.mechanical.rotational и поэтому предоставляет вам прямой доступ к механическому устройству Основы вращательное доменное определение (rotational) и компоненты (такие как friction и inertia).

Блок nodes объявляет два электрических узла, p и n, и два механических вращательных узла, R и C.

Блок components объявляет всего участника (составляющая) компоненты, с помощью следующих компонентов от библиотеки Simscape™ Foundation:

  • Резистор

  • Индуктор

  • Вращательный электромеханический конвертер

  • Вращательное трение

  • Инерция

Из-за операторов import наверху файла эти классы уже существуют в пределах файла, и вы не должны задавать их полные имена, начинающие с директории пакета верхнего уровня.

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

Больше о