exponenta event banner

Использование дополнительных методов для настройки отображения блоков

В этом примере показано, как можно использовать аннотацию компоновки блока и перечисления для улучшения удобства использования пользовательского блока.

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

component DCMotorWithTabs
% DC Motor
% This block represents the electrical and torque characteristics of a
% DC motor.
%
% When a positive current flows from the electrical + to - ports, a
% positive torque acts from the mechanical C to R ports. Motor torque
% direction can be changed by altering the sign of the back-emf
% constant.

nodes
    p = foundation.electrical.electrical; % +:top
    n = foundation.electrical.electrical; % -:bottom
    R = foundation.mechanical.rotational.rotational; % R:top
    C = foundation.mechanical.rotational.rotational; % C:bottom
end

parameters
    Ra = {3.9, 'Ohm'};          % Armature resistance
    La = {12e-6, 'H'};          % Armature inductance
    Kv = {0.072e-3, 'V/rpm'};   % Back-emf constant
    J = {0.01, 'g*cm^2'};       % Rotor inertia
    lam = {0, 'N*m/(rad/s)'};   % Rotor damping
    speed0 = {0, 'rpm'};        % Initial rotor speed
    i_noload = {0, 'A'};        % No-load current
    V_i_noload = {1.5, 'V'};    % DC supply voltage when measuring no-load current
end

% Rotor damping control parameter
parameters
    r_damp = damping.direct;    % Rotor damping parameterization
end

% Conditional parameter visibility for Rotor damping parameterization
if r_damp == damping.direct
    annotations
        [i_noload,V_i_noload]: ExternalAccess=none;
    end
else
    annotations
        [lam]: ExternalAccess=none;
    end
end

annotations
    UILayout = [UIGroup("Electrical Torque",Ra,La,Kv,r_damp,i_noload,V_i_noload)
                UIGroup("Mechanical",J,lam,speed0)]
end

% Declarations with (ExternalAccess=none), branches, intermediates, equations

end

UILayout аннотация определяет две группы, Electrical Torque и Mechanical, каждый со списком параметров. При создании блока из DCMotorWithTabs компонент, каждый UIGroup становится вкладкой в диалоговом окне блока, строка заголовка служит заголовком вкладки, и эти параметры отображаются на этой вкладке в указанном порядке.

Кроме того, DCMotorWithTabs компонент обеспечивает два способа задания демпфирования ротора:

  • Непосредственно с использованием параметра демпфирования ротора

  • Путем задания значений тока холостого хода, используя два других параметра: ток холостого хода и напряжение питания постоянного тока при измерении тока холостого хода

if оператор в источнике компонента определяет логику управления для видимости условного параметра в зависимости от выбранного значения параметра управления, r_damp(Параметризация демпфирования ротора). Управляющий параметр использует перечисление, расположенное в отдельном файле. damping.m:

classdef damping < int32
   enumeration
     direct (0)
     derived (1)
   end
   methods(Static)
       function map = displayText()
         map = containers.Map;
         map('direct') = 'By damping value';
         map('derived') = 'By no-load current';
       end
   end
end

Этот файл перечисления может находиться либо в той же папке, что и файл компонента, либо по пути MATLAB ®. Дополнительные сведения см. в разделе Задание отображаемых строк для элементов перечисления.

В диалоговом окне результирующего блока параметр параметризации демпфирования ротора имеет выпадающий список значений:

  • By damping value

  • By no-load current

By damping value является значением по умолчанию.

При создании блока из DCMotorWithTabs , диалоговое окно блока имеет две вкладки:

Если для параметра параметризации демпфирования ротора задано значение By no-load currentна вкладке Электрический крутящий момент (Electrical Torque) появятся два дополнительных параметра, а параметр демпфирования ротора на вкладке Механический (Mechanical) будет скрыт.

Обратите внимание, что на вкладке Электрический крутящий момент (Electrical Torque) параметры Ток холостого хода (No-load current) и Напряжение постоянного тока при измерении тока холостого хода (DC) отображаются под параметром параметризации демпфирования ротора, даже если они были объявлены ранее, в отдельном блоке объявления. Если бы компонент не использовал аннотацию компоновки блока, можно было бы добиться того же эффекта, изменив порядок объявления параметра, но это уменьшило бы читаемость кода.

См. также

Связанные темы