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