Составной компонент с использованием import Операторы

В этом примере показано, как вы можете использовать import операторы для реализации составного компонента, эквивалентного компоненту, описанному в Composite Component - DC Motor. Эти два компонента идентичны, но из-за использования 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;

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

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

import foundation.electrical.elements.*;

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

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

import foundation.mechanical.rotational.*;

является неквалифицированным импортом, который импортирует все подпакеты и классы под foundation.mechanical.rotational subpackage и, следовательно, дает вам прямой доступ к определению механической вращательной области Foundation (rotational) и компоненты (такие как friction и inertia).

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

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

  • Резистор

  • Катушка индуктивности

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

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

  • Инерция

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

Похожие примеры

Подробнее о