Метаданные декларативного языка Engee
Страница в процессе разработки. |
Метаданные в декларативном языке физического моделирования Engee используются для описания свойств параметров, переменных, узлов и других сущностей внутри физического компонента.
Они не влияют на математические уравнения напрямую, но определяют:
-
Единицы измерения;
-
Текстовые описания;
-
Правила отображения в интерфейсе;
-
Группировку элементов;
-
Приоритеты, доступ и видимость.
Следовательно, метаданные помогают сделать компонент понятным и удобным для работы в Engee.
Синтаксис метаданных
Метаданные задаются в квадратных скобках после имени параметра, переменной или другой конструкции. Можно указывать несколько полей одновременно.
@parameters [group = "Parameters"] begin
R = 1.0, [unit = "Ohm", description = "Resistance"]
end
В этом примере:
-
[group = "Parameters"]
— метаданные для всей конструкции@parameters
. Они определяют, что все параметры внутри этой конструкции будут сгруппированы в интерфейсе под названием Parameters. -
[unit = "Ohm", description = "Resistance"]
— метаданные для конкретного параметраR
. Здесь указаны единица измерения (Ом) и описание (Resistance).
Как итог, метаданные могут задаваться как на уровне всей конструкции, так и для отдельных элементов.
Ключи метаданных и их назначение
В таблице ниже приведен перечень поддерживаемых ключей метаданных, их назначение, допустимые значения и примеры использования.
Ключ | Назначение | Допустимые значения | Пример |
---|---|---|---|
|
Единицы измерения. Используются для проверки размерностей и отображения. |
Строка с обозначением единицы (например, |
|
|
Текстовое описание элемента. |
Любая строка. |
|
|
Объединение параметров/переменных в группы в интерфейсе. |
Строка. Часто используются:
|
|
|
Размещение элемента на отдельной вкладке в интерфейсе. |
Строка. По умолчанию |
|
|
Приоритет отображения и использования значений. Может влиять на то, какое значение используется при инициализации. |
|
|
|
Управление видимостью и редактированием переменной в интерфейсе. |
Если |
|
|
Уровень доступа (определяет, видно ли переменную извне). |
|
|
|
Пометка переменной как дискретной событийной. |
|
|
|
Определяет роль переменной в соединениях портов. |
|
|
|
Настройка отображения переменной в GUI.
Можно использовать простые строки или детальные |
Строка ( |
|
Особенности работы с метаданными
-
Метаданные можно задавать как для всей конструкции, так и для отдельных элементов. Индивидуальные метаданные имеют приоритет. Например:
@parameters [key1 = value1, key2 = value2] begin a = b, [key1 = value3] c = d, [key2 = value4] end
Здесь для
a
будет использоватьсяkey1 = value3
, а дляc
—key2 = value4
, даже несмотря на то, что у конструкции заданы другие значения. -
Метаданные
priority
иunit
можно передавать при создании подкомпонента:@components begin custom = CustomComponent(a = (value = 10, unit = "kg/s", priority = "high"), c = 20) end
-
Если метаданные не указаны явно, то применяются значения по умолчанию, заданные в компоненте.
-
Метаданные
gui
можно изменять условно:@parameters begin a::Bool = true b = 1 end if a @annotations begin b, [gui = none] end else @annotations begin b, [gui = Observe] end end
В этом примере поведение метаданных зависит от значения параметра
a
: -
Если
a = true
, то параметрb
скрывается в интерфейсе (gui = none
), -
Если
a = false
, то параметрb
отображается для наблюдения (gui = Observe
).