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

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

Следующий исходный код для 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

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

В сложение, DCMotorWithTabs компонент предоставляет два метода определения демпфирования ротора:

  • Непосредственно, используя параметр Rotor damping

  • Путем определения текущих значений без нагрузки вместо этого, используя два других параметров: No-load current и DC supply voltage when measuring no-load current

The if оператор в источнике компонента задает логику управления для условной видимости параметра, в зависимости от выбранного значения параметра управления, r_damp (<reservedrangesplaceholder1>). Параметр control использует перечисление, которое расположено в отдельном файле, 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® путь. Для получения дополнительной информации см. раздел «Задание отображаемых строк для представителей перечисления».

В получившемся блоке диалоговом окне параметр Rotor damping parameterization имеет раскрывающийся список значений:

  • By damping value

  • By no-load current

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

Когда вы генерируете блок из DCMotorWithTabs компонент, диалоговое окно блока имеет две вкладки:

Если вы устанавливаете параметр Rotor damping parameterization равным By no-load currentна вкладке Electrical Torque появляются два дополнительных параметра, а параметр Rotor damping на вкладке Mechanical скрыт.

Обратите внимание, что на вкладке Electrical Torque параметры No-load current и DC supply voltage when measuring no-load current появляются ниже параметра Rotor damping parameterization, даже если они были объявлены ранее, в отдельном блоке объявления. Если бы компонент не использовал аннотацию размещения блока, вы могли бы добиться того же эффекта, изменив порядок объявления параметра, но это бы сместилось от читаемости кода.

См. также

Похожие темы