Составьте компонент Используя 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 операторы наверху файла, эти классы уже существуют в пределах файла, и вы не должны задавать их полные имена, начинающие с директории пакета верхнего уровня.

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

Больше о