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