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