The annotations
раздел в файле компонента позволяет управлять видимостью представителей компонента, таких как параметры и узлы, в значках блоков и диалоговых окнах. Когда вы объявляете представитель компонента, ExternalAccess
атрибут устанавливает видимость представителя в пользовательском интерфейсе, то есть в диалоговых окнах блока, журналах симуляции, средстве просмотра переменных и так далее. The 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
параметр имеет логический тип.
The annotations
позволяет управлять видимостью следующих представителей компонента:
Параметры
Переменные
Узлы
Исходные данные
Выходы
The 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
раздел переопределяет значение, заданное для этого представителя в разделе объявления. Полный пример компонента, использующего этот подход, см. в разделе Варианты компонента - Тепловой резистор.