Настройка имени блока и внешнего вида

Отображение блока по умолчанию

Когда вы генерируете пользовательский блок из файла компонента Simscape™, имени блока и параметра, и имена переменных в диалоговом окне блока выведены из элементов файла компонента. Значок блока по умолчанию является прямоугольником, отображающим имя блока. Порты основаны на узлах, входных параметрах и выходных параметрах, заданных в файле компонента.

Следующий пример показывает файл компонента, названный spring.ssc, и получившийся библиотечный блок и диалоговое окно.

component spring
  nodes
    r = foundation.mechanical.rotational.rotational;
    c = foundation.mechanical.rotational.rotational;
  end
  parameters
    k = { 10, 'N*m/rad' };
  end
  variables
    theta = { 0, 'rad' };
    t = { 0, 'N*m' };
    w = { 0, 'rad/s' };
  end
  branches
    t : r.t -> c.t;
  end
  equations
    assert(k>0)
    w == r.w - c.w;
    t == k * theta;
    w == theta.der;
  end
end

Если вы щелкаете по ссылке Source code, spring.ssc файл открывается в окне Editor MATLAB®.

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

Настройте имя блока

Чтобы обеспечить более описательное имя для блока, чем имя файла компонента, поместите его на отдельную строку с комментариями чуть ниже component объявление. Строка с комментариями должна начаться с % символ. Целое содержимое этой линии, после % символ, интерпретирован как имя блока и появляется точно как этот в значке блока и наверху диалогового окна блока.

Например, если у вас есть следующий файл компонента:

component spring
%Rotational Spring
...
end

это получившийся значок блока и диалоговое окно:

Опишите цель блока

Предыдущий раздел описывает как строка с комментариями сразу после component объявление интерпретировано как имя блока. Любые дополнительные комментарии ниже той линии интерпретированы как описание блока. У вас может быть больше чем одна линия комментариев описания. Каждая линия больше не должна быть, чем 80 символов и должна начаться с % символ. Целое содержимое комментариев описания появится в диалоговом окне блока и в Браузере Библиотеки.

Например, если у вас есть следующий файл компонента:

component spring
%Rotational Spring
% This block implements a simple rotational spring.
...
end

это - получившееся диалоговое окно блока:

Чтобы создать конец абзаца в описании блока, используйте пробел, прокомментировала линия:

% end of one paragraph
% 
% beginning of the next paragraph

Задайте понятные имена для параметров блоков и переменных

Можно задать имя параметров блоков, способ, которым вы хотите, чтобы оно появилось в диалоговом окне блока как комментарий сразу после объявления параметра. Это может быть расположено на той же линии или на отдельной линии. Комментарий должен начаться с % символ.

Например, если у вас есть следующий файл компонента:

component spring
%Rotational Spring
% This block implements a simple rotational spring.
...
 parameters
    k = { 10, 'N*m/rad' }; % Spring rate
 end
...
end

это - получившееся диалоговое окно блока:

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

Например, если у вас есть следующий файл компонента:

component spring
%Rotational Spring
% This block implements a simple rotational spring.
...
  variables
    theta = { value = { 0 , 'rad' }, priority = priority.high }; % Deformation
    t = { 0, 'N*m' };   % Torque
    w = { 0, 'rad/s' }; % Angular velocity
  end
...
end

получившаяся вкладка Variables диалогового окна блока выглядит так:

Группа и параметры блоков переупорядочивания Используя аннотацию

По умолчанию пользовательский блок, сгенерированный от компонента, имеет все параметры компонента с ExternalAccess=modify перечисленный в объявлении заказывают в одной вкладке, названном Parameters. Если существуют переменные с ExternalAccess=modify, диалоговое окно блока также содержит отдельную вкладку Variables. Точно так же в Property Inspector, параметры и переменные перечислены в порядке объявления в двух отдельных древовидных узлах, Parameters и Variables.

Для комплексных компонентов с большими количествами параметров можно улучшить удобство пользования блока путем группировки параметров на основе их функции или на эффекте, который они моделируют. Например, можно разделить электрические и механические параметры для двигателя или поместить все температурно-зависимые параметры в отдельную группу. Вы делаете это при помощи аннотации блочного расположения, UILayout.

UILayout аннотация позволяет вам задать названные группы параметров компонента, порядок этих групп и порядок параметров в каждой группе. Когда вы развертываете компонент как пользовательский блок Simscape, эти группы переводят во вкладки диалогового окна (и в узлы дерева Property Inspector).

Синтаксис аннотации блочного расположения:

  annotations
    UILayout = [UIGroup("Title 1",p1,p2)
                UIGroup("Title 2",p3)]
  end

Следующие правила применяются:

  • UILayout аннотация уровня класса, означая, что это может появиться только однажды на файл компонента.

  • UILayout аннотация должна содержать непустой массив UIGroup построения. Порядок групп задает порядок вкладок диалогового окна.

  • Каждый UIGroup построение должно включать строку заголовка и непустой список, разделенный запятыми параметров компонента. Строка заголовка служит заголовком вкладки диалогового окна, и перечисленные параметры появляются на той вкладке в порядке списка.

  • Параметры компонента с ExternalAccess=modify не перечисленный в любой из групп появляются в конце первой вкладки в порядке объявления.

  • Параметр не может принадлежать больше чем одной группе. Листинг того же параметра в нескольких группах приводит к ошибке.

  • Эта аннотация не влияет на переменные компонента. Используете ли вы аннотацию блочного расположения или нет, переменные перечислены на отдельной вкладке Variables в порядке объявления.

Используйте аннотацию блочного расположения для:

  • Создайте несколько вкладок в диалоговом окне блока. Для этого задайте несколько групп параметров. Каждая группа отображена на отдельной вкладке.

  • Измените порядок параметра в диалоговом окне блока, по сравнению с порядком объявления. Для этого задайте одну группу параметров, названного "Parameters", и перечислите параметры компонента в желаемом порядке.

Эта функция делает авторскую разработку источника компонента независимой от получившегося блочного расположения. Можно расположить блоки объявления параметра способом, который помогает удобочитаемости кода и более поздним параметрам переупорядочивания в интерфейсе блока, по мере необходимости. Для подробного примера смотрите Использование Усовершенствованные Методы, чтобы Настроить Отображение Блока.

Настройте названия и местоположение портов блока

Блокируйте порты, и сохранение и Физический сигнал, основаны на узлах, входных параметрах и выходных параметрах, заданных в файле компонента. Метка порта по умолчанию соответствует имени узла, входа или выхода, как задано в блоке объявлений. Местоположение по умолчанию всех портов находится на левой стороне значка блока. Порты распространены equidistantly вдоль стороны блока.

Существует два способа управлять меткой порта и местоположением в значке блока:

  • Используйте отдельные средства управления для меток порта и местоположений. Это - рекомендуемый путь, потому что он обеспечивает больше гибкости. Задайте метки порта при помощи комментариев сразу после узла, введите или выведите объявление, похожее на определение понятных имен для параметров и переменных. Задайте сторону порта отдельно, при помощи annotations разделите в файле компонента. Для получения дополнительной информации смотрите, Настраивают Метки порта на Местоположениях Значка и Порта управления Блока Используя Аннотации.

  • Используйте комментарии сразу после узла, введите или выведите объявление, чтобы задать обоих название и местоположение порта блока. Это - устаревший метод, который позволяет вам иметь порты только на двух противоположных сторонах значка блока (левый и правый, или верхний и нижний). Для получения дополнительной информации см. Комментарии Использования к Местоположениям Порта управления.

Настройте метки порта на значке блока

Метка порта по умолчанию соответствует имени узла, входа или выхода, как задано в блоке объявлений. Подобно определению понятных имен для параметров блоков и переменных, можно настроить метку порта путем предоставления комментария сразу после узла, ввести или вывести объявление. Например:

  nodes
    p = foundation.electrical.electrical; % +
    n = foundation.electrical.electrical; % -  
  end

Если вы зададите пустую строку комментария после узла, введете или выведете объявление, соответствующему порту не отобразят его имя. Например, следующий синтаксис подавляет метку порта для входного порта физического сигнала PS:

  inputs
     PS; %
  end

Местоположения порта управления Используя аннотации

Используйте annotations разделите в файле компонента, чтобы задать местоположения порта. Например:

  nodes
    H = foundation.thermal.thermal;
    p = foundation.electrical.electrical; % +
    n = foundation.electrical.electrical; % -
  end
  annotations
    H : Side = top;
    p : Side = left;
    n : Side = right;
  end

Правила и ограничения:

  • Можно использовать Side аннотации для узлов, входных параметров и выходных параметров.

  • Атрибуты члена должны быть исключительно заданы. Поэтому вы не можете использовать то же ID пользователя на левой стороне Side аннотации несколько раз.

    nodes
        p = foundation.electrical.electrical; 
        n = foundation.electrical.electrical; 
    end
    annotations
         [p, n] : Side = left;
         n : Side = right;   % error: multiple definitions for 'Side' of port 'n'
    end
    

    Если вы задаете другие места для того же порта и при помощи аннотаций и при помощи комментариев, местоположения в annotations раздел более приоритетен.

    outputs
      o = {0, 'V'}; %o:right
    end
    annotations
       o : Side = top;  % annotation takes precedence, so port will be located on the top
    end
    
  • Можно использовать то же ID пользователя многократно, чтобы объявить различные атрибуты аннотации.

    nodes
        n1 = foundation.electrical.electrical;
        n2 = foundation.electrical.electrical;
        n3 = foundation.electrical.electrical;
    end
    annotations
        [n1, n2] : ExternalAccess = none;
        [n2, n3] : Side = right;
    end
    
  • Точно так же можно объявить различные атрибуты аннотации для того же ID пользователя в одном операторе.

    nodes
        n1 = foundation.electrical.electrical;
        n2 = foundation.electrical.electrical;
        n3 = foundation.electrical.electrical;
    end
    annotations
        [n1, n2] : ExternalAccess = none, Side = top;
        n3 : Side = right;
    end
    
  • Вы не можете условно переключить стороны порта, то есть, включать Side аннотации в ветвях условного оператора.

    parameters
        thermal_effects = false; % Model thermal effects?
    end
    nodes (ExternalAccess=none)
       H = foundation.thermal.thermal; 
    end
    if thermal_effects 
      % Expose thermal port
        annotations
           H : ExternalAccess = modify;
           H : Side = bottom; % error: cannot have 'Side' annotations inside conditional sections
        end
    end
    

    Чтобы поместить условно видимый порт в определенную сторону блока (например, на нижней части), используют следующий синтаксис:

    parameters
        thermal_effects = false; % Model thermal effects?
    end
    nodes (ExternalAccess=none)
       H = foundation.thermal.thermal; 
    end
    annotations
       H : Side = bottom; 
    end
    if thermal_effects 
      % Expose thermal port
        annotations
           H : ExternalAccess = modify;
        end
    end
    

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

Примечание

Это - устаревший метод, который имеет несколько ограничений. Поэтому рекомендуемый метод должен использовать annotations разделите, как описано в Местоположениях Порта управления Используя Аннотации.

Можно также использовать комментарий, который сразу следует за узлом, входом или выходным объявлением, чтобы задать и метку порта и местоположение. Комментарий может быть на той же линии или на отдельной линии. Комментарий должен начаться с % символ и быть формата label:location, где label строка, соответствующая имени входного порта в блок-схеме и location одна из следующих строк: left, right, top, bottom. Можно определить местоположение всех портов или на одной стороне блока или на двух противоположных сторонах, например, левых и правых, или верхних и нижних. Можно не использовать местоположение, если вы хотите сохранить местоположение по умолчанию порта (на левой стороне).

Можно также оставить поле метки порта пустым и задать только местоположение. В этом случае порту не отобразят его имя. Например, следующий синтаксис подавляет метку порта и определяет местоположение ее на верхней части значка блока:

    r = foundation.mechanical.rotational.rotational; % :top

Если вы зададите пустую строку комментария после узла, введете или выведете объявление, соответствующий порт не будет помечен и будет расположен на левой стороне значка блока.

Следующее является примерами объявлений узла и получившихся значков блока.

СинтаксисБлокируйте значок

nodes
   r = foundation.mechanical.rotational.rotational; 
   c = foundation.mechanical.rotational.rotational; 
end 

nodes
   r = foundation.mechanical.rotational.rotational; % rod
   c = foundation.mechanical.rotational.rotational; % case
end 

nodes
   r = foundation.mechanical.rotational.rotational; 
   c = foundation.mechanical.rotational.rotational; % c:right
end 

nodes
   r = foundation.mechanical.rotational.rotational; % rod
   c = foundation.mechanical.rotational.rotational; % case:right
end 

nodes
   r = foundation.mechanical.rotational.rotational; % rod
   c = foundation.mechanical.rotational.rotational; % :right
end 

nodes
   r = foundation.mechanical.rotational.rotational; % 
   c = foundation.mechanical.rotational.rotational; % case:right
end 

Настройте значок блока

Значок блока по умолчанию является прямоугольником, отображающим имя блока. Можно заменить этот значок по умолчанию на файл пользовательского изображения. Для получения информации о поддерживаемых форматах файлов и свойствах изображения, смотрите Поддерживаемые Форматы файлов.

Существует два способа задать значок пользовательского блока:

  • Явным образом, использование annotations разделите в файле компонента. Это - рекомендуемый путь, потому что он обеспечивает больше гибкости. Можно сохранить файлы изображений в отдельной папке и задать относительные пути для значков блока. Можно также задать условные пользовательские значки для различных вариантов блока. Для получения дополнительной информации смотрите Используя Аннотации.

  • Неявно, с помощью соглашений о присвоении имен файла. Этот метод удобен, если вы поставляете полные пакеты библиотеки клиентам. Для получения дополнительной информации смотрите Используя Соглашения о присвоении имен Файла.

Используя аннотации

Используйте annotations разделите в файле компонента, чтобы задать имя значка пользовательского блока. Имя файла должно содержать расширение файла. Например:

  annotations
    Icon = 'custom_spring.jpg';
  end

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

  annotations
    Icon = '../../block_icons/custom_spring.jpg';
  end

annotations раздел также позволяет вам задать условные пользовательские значки. Это особенно полезно, если количество портов изменяется для различных вариантов. Например:

component MyPipe
  parameters
    thermal_variant = false; % Model thermal effects?
  end
  if thermal_variant 
  % Use icon with additional thermal port
    annotations
       Icon = 'pipe_thermal.jpg';
    end
  else
  % Use regular icon, with two fluid ports
    annotations
       Icon = 'pipe.jpg';
    end
  end
  [...] % Other parameters, variables, nodes, branches, equations
end

Используя соглашения о присвоении имен файла

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

Этот метод удобен, если вы поставляете полные пакеты библиотеки клиентам. Например, если подпакет, содержащий файл компонента spring.ssc также содержит файл с именем spring.jpg, затем тот файл изображения автоматически используется для значка, представляющего этот блок в пользовательской библиотеке.

Неявные правила для использования значков пользовательского блока:

  1. Если annotations раздел явным образом не задает изображение пользовательского значка, или если то изображение не найдено, взгляды программного обеспечения в папке, содержащей файл компонента для файла изображения с тем же именем как компонент.

  2. Если существуют файлы повторного изображения с тем же именем, форматы более приоритетны в порядке, перечисленном в Поддерживаемых Форматах файлов. Например, если подпакет содержит оба spring.jpg и spring.bmp, spring.jpg изображение, которое появится в пользовательской библиотеке.

Поддерживаемые форматы файлов

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

  • svg

  • jpg

  • bmp

  • png

Внимание

Используя svg формат вместе с проблемно-ориентированными стилями линии может привести к неожиданным результатам, потому что доменные стили линии и цвета могут распространить к частям значка пользовательского блока. Для получения дополнительной информации о включении и выключении проблемно-ориентированных стилей линии смотрите Проблемно-ориентированные Стили линии.

Тип изображения должен быть RGB (истинный цвет) изображение, сохраненное как m- n- 3 массива данных. Для получения дополнительной информации смотрите RGB (Истинный цвет) Изображения.

Определение свойств масштабирования и вращения значка пользовательского блока

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

component name
% [ CustomName [ : scale [ : rotation ] ] ] 
...

где

name

Имя компонента

CustomName

Индивидуально настраиваемое имя блока в виде описанного в Настраивает Имя блока. Удалены начальные и конечные пробелы.

scale

Скалярный номер, например, 2.0, который задает желаемое масштабирование значка блока. Когда файл изображения используется в качестве значка блока, по умолчанию его самый короткий размер составляет 40 пикселей с сохраненной пропорцией изображения. Например, если ваше пользовательское изображение хранится в .jpg файл 80x120 пикселей, затем размер значков блока по умолчанию составит 40x60 пикселей. Если вы задаете шкалу 0.5, затем размер значков блока составит 20x30 пикселей.

Вы не можете задать выражения MATLAB для шкалы, только числа.

rotation

Задает, вращается ли значок блока с блоком:

  • rotates средние значения, которые вращает значок, когда вы поворачиваете блок. Это поведение по умолчанию.

  • fixed средние значения, которые вращают порты, когда вы поворачиваете блок, но значок всегда остается в ориентации по умолчанию.

Например, следующий синтаксис

component spring
% Rotational Spring : 0.5 : fixed

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

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

Похожие темы