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

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

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

  • Непосредственно, с помощью параметра Rotor damping

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

if оператор в источнике компонента задает управляющую логику для условной видимости параметра, в зависимости от выбранного значения параметра управления, r_damp (Rotor damping parameterization). Параметр управления использует перечисление, которое расположено в отдельном файле, 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® path. Для получения дополнительной информации смотрите Строки Отображения Определения для членов Перечисления.

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

Смотрите также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте