Метаданные языка физического моделирования Engee
|
Страница в процессе разработки. |
Метаданные в языке физического моделирования Engee используются для описания свойств параметров, переменных, узлов и других сущностей внутри физического компонента.
Они не влияют на математические уравнения напрямую, но определяют:
-
Единицы измерения;
-
Текстовые описания;
-
Правила отображения в интерфейсе;
-
Группировку в окне настроек блока;
-
Приоритеты;
-
Доступ.
Следовательно, метаданные помогают сделать компонент понятным и удобным для работы в Engee.
Синтаксис метаданных
Метаданные задаются в квадратных скобках после имени параметра, переменной или другой конструкции. Можно указывать несколько полей одновременно.
@parameters [group = "Parameters"] begin
R = 1.0, [unit = "Ohm", description = "Resistance"]
v = 5.0, [unit = "V", description = "Voltage"]
end
В этом примере:
-
[group = "Parameters"]— метаданные для всей конструкции@parameters. Они определяют, что все параметры внутри этой конструкции будут сгруппированы в интерфейсе под названием Parameters. -
[unit = "Ohm", description = "Resistance"]— метаданные для конкретного параметраR. Здесь указана единица измерения (Ohm) и описание (Resistance). -
[unit = "V", description = "Voltage"]— метаданные для конкретного параметраv. Здесь указаны единица измерения (V) и описание (Voltage).
Таким образом, метаданные могут задаваться как на уровне всей конструкции, так и для отдельных элементов.
Единицы измерения
Единицы измерения задаются как метаданные unit и одинаково применяются к @parameters и @variables.
@parameters begin
R = 1.0, [unit = "Ohm"]
end
@variables begin
i = 0.0, [unit = "A"]
v = 0.0, [unit = "V"]
end
Здесь:
-
Rзадан в омах; -
v— в вольтах; -
i— в амперах.
Ключи метаданных и их назначение
В таблице ниже приведен перечень поддерживаемых ключей метаданных, их назначение, допустимые значения и примеры использования.
| Ключ | Назначение | Допустимые значения | Пример |
|---|---|---|---|
|
Единицы измерения. Поддерживаемые конструкции:
|
Строка с обозначением единицы измерения (например, |
|
|
Текстовое описание элемента. Поддерживаемые конструкции:
|
Строка. |
|
|
Объединение параметров/переменных в группы в интерфейсе. Поддерживаемые конструкции:
|
Строка. По умолчанию:
|
|
|
Размещение элемента на отдельной вкладке в интерфейсе. Поддерживаемые конструкции:
|
Строка. По умолчанию |
|
|
Приоритет переменной, используемый при инициализации. Поддерживаемые конструкции:
|
|
|
|
Управление видимостью и редактированием в интерфейсе. Поддерживаемые конструкции:
|
Для |
|
|
Уровень доступа (определяет доступна ли переменная извне). Поддерживаемые конструкции:
|
Если конструкция объявляется внутри условий |
|
|
Пометка переменной как дискретной событийной. Поддерживаемые конструкции:
|
|
|
|
Определяет роль переменной в соединениях портов. Поддерживаемые конструкции:
|
|
|
|
Внешний вид порта. Поддерживаемые конструкции:
|
По умолчанию Также можно задать визуальное отображение порта более детально:
|
|
Особенности работы с метаданными
-
Метаданные можно задавать как для всей конструкции, так и для отдельных элементов. Индивидуальные метаданные имеют приоритет. Например:
@parameters [group = "Main", gui = Modify] begin R = 1.0, [unit = "Ohm", group = "Electrical"] debug_param = 0.0, [gui = Observe] endЗдесь для параметра
Rбудет использоваться группа"Electrical"вместо унаследованной"Main", а дляdebug_param— режим отображенияObserveвместо унаследованногоModify. -
Метаданные
priorityиunitможно передавать при создании подкомпонента:@components begin custom = CustomComponent(a = (value = 10, unit = "kg/s", priority = "high"), c = 20) end -
Если метаданные не указаны явно, то применяются значения по умолчанию, заданные в компоненте.
-
Метаданные
guiможно изменять условно, используя конструкцию@annotations:@parameters begin a::Bool = true b = 1, [gui = None] end if a @annotations begin b, [gui = Modify] end endВ этом примере поведение метаданных зависит от значения параметра
a:-
Если
a = false, то параметрbскрывается в интерфейсе (gui = None), -
Если
a = true, то параметрbотображается (gui = Modify).
-
