exponenta event banner

Составной компонент с использованием 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;

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

Второе заявление:

import foundation.electrical.elements.*;

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

Третье заявление:

import foundation.mechanical.rotational.*;

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

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

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

  • Резистор

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

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

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

  • Инерция

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

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

Подробнее