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 раздел заменяет значение, заданное для того члена в разделе объявления. Для полного примера компонента с помощью этого подхода смотрите Варианты Компонента — Тепловой Резистор.