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

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

Следующий исходный код для 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®. Для получения дополнительной информации смотрите Строки Отображения Определения для членов Перечисления.

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

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

Похожие темы