annotations
раздел в файле компонента позволяет вам управлять видимостью участников компонента, таких как параметры и узлы, в значках блока и диалоговых окнах. Когда вы объявляете участника компонента, ExternalAccess
атрибут устанавливает видимость участника в пользовательском интерфейсе, то есть, в диалоговых окнах блока, журналах симуляции, переменном средстве просмотра, и так далее. annotations
раздел служит подобной цели, но это особенно полезно для вариантов блока, потому что это позволяет вам задать условную видимость участников компонента на основе условия предиката.
Когда вы задаете варианты компонента с помощью условных объявлений, определенных параметров, переменных, или порты могут использоваться в одном варианте блока, но не в других. Например, у вас есть компонент, который моделирует гидравлические трубопроводы, с круглым и некруглым сечениями. Для круглого сечения необходимо задать его внутренний диаметр. Для некруглого сечения необходимо задать его гидравлический диаметр и площадь поперечного сечения по каналу. Можно теперь использовать annotations
разделите, чтобы управлять видимостью этих параметров в диалоговом окне блока:
component MyPipe parameters circular = true; % Circular pipe? d_in = { 0.01, 'm' }; % Pipe internal diameter area = { 1e-4, 'm^2' }; % Noncircular pipe cross-sectional area D_h = { 1.12e-2, 'm' }; % Noncircular pipe hydraulic diameter end if circular % Hide inapplicable parameters annotations [area, D_h] : ExternalAccess=none; end equations % first set of equations, for circular pipe end else % Hide inapplicable parameter annotations d_in : ExternalAccess=none; end equations % second set of equations, for noncircular pipe end end [...] % other parameters, variables, branches, equations end
Подобно другим типам условных объявлений предикат условной аннотации должен быть параметрическим выражением, которое оценивает к TRUE или FALSE. Однако существует дополнительное ограничение, что все параметры, используемые в предикате условной аннотации, должны или иметь тип, логический или перечислимый. В этом примере, circular
параметр имеет логический тип.
annotations
раздел позволяет вам управлять видимостью следующих участников компонента:
Параметры
Переменные
Узлы
Входные параметры
Выходные параметры
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
Для получения дополнительной информации об использовании значков пользовательского блока смотрите, Настраивают Значок Блока.
Предикат условной аннотации должен быть параметрическим выражением, которое оценивает к TRUE или FALSE. Все параметры, используемые в предикате условной аннотации, должны или иметь тип, логический или перечислимый.
Членские атрибуты должны быть исключительно заданы, что означает, что тот же участник не может быть объявлен несколько раз с различными значениями того же атрибута. Единственным исключением к этому правилу является использование ExternalAccess
припишите в annotations
раздел. Можно объявить участника компонента с определенным значением ExternalAccess
, и затем задайте различный ExternalAccess
значение атрибута в annotations
разделите, например:
component MyPipe parameters circular = true; % Circular pipe? end parameters(ExternalAccess=none) d_in = { 0.01, 'm' }; % Pipe internal diameter [...] end if circular % Expose pipe diameter annotations d_in : ExternalAccess=modify; end [...]
В случае конфликта, ExternalAccess
значение атрибута задано в annotations
раздел заменяет значение, заданное для того участника в разделе объявления. Для полного примера компонента с помощью этого подхода смотрите Варианты Компонента — Тепловой Резистор.