Визуальное моделирование для профессионалов
Пользовательские библиотеки
Пользовательские библиотеки — это файлы с расширением
.nglib, которые могут содержать любые блоки Engee. Эти файлы позволяют использовать собственные блоки из библиотеки блоков Engee.
Создание собственных библиотек позволяет:
- Хранить часто используемые блоки в удобном формате, чтобы значительно упростить и ускорить процесс моделирования;
- Добавлять нужные элементы сразу из пользовательской библиотеки, вместо создания новых блоков для каждой модели.
Преимущества пользовательских библиотек заключаются в их гибкости и возможности повторного использования. Такие библиотеки помогают стандартизировать компоненты, обеспечивая единообразие в моделях и снижая вероятность ошибок. Кроме того, пользовательские библиотеки позволяют легко делиться разработанными блоками, что способствует более эффективной командной работе и экономии времени.
Создание пользовательской библиотеки
Для работы с пользовательскими библиотеками:
- Создайте файл библиотеки
.nglibв окне файлового браузера
и задайте желаемое имя:
-
Создайте нужный блок или подсистему в модели Engee. Подсистема позволяет сохранить внутри себя множество блоков одновременно. Поэтому, чтобы добавить в библиотеку группу блоков, объедините их в подсистему.
-
Сохраните файл
.nglibв файловом браузере или в навигационной панели:
Примечание
Директория, в которой сохранен файл, не влияет на его расположение в библиотеке блоков.
- Чтобы блоки появились в библиотеке блоков Engee
, переместите файл .nglibв папку и добавьте ее в путь через редактор пути:
- Добавленные файлы будут помещены в раздел Пользовательские библиотеки блоков, где имя файла
.nglibстанет именем соответствующего подраздела:
- К блокам ранее созданной или загруженной пользовательской библиотеки можно обратиться через поиск в рабочем пространстве так же, как и для обычных блоков Engee.
Многоуровневые библиотеки
Большие пользовательские библиотеки часто требуют вложенной структуры, например, когда вы хотите разложить блоки по категориям и подкатегориям. Для этого в папку с библиотекой нужно добавить специальный файл engee_library.toml, в котором описывается структура иерархии. Пример такого файла:
[metadata]
format_version = "1"
[[categories]]
lib_path = "/my-lib_upd"
files = ["foo/a.nglib", "foo/b.nglib"]
[[categories]]
lib_path = "/my-lib_upd/cat1"
files = ["c.nglib"]
[[categories]]
lib_path = "/my-lib_upd/cat1/cat2"
files = ["d.nglib"]
В этом примере:
format_version = "1"— версия формата файла.lib_path— путь до раздела библиотеки, как он будет отображаться в окне библиотеки блоков Engee
.files— список.nglibфайлов, которые будут загружены в этот раздел.
Примечание
Файлы можно свободно размещать в разных подкаталогах, главное — чтобы пути в files были указаны корректно.
Таким образом, вы можете:
- группировать блоки по папкам и подкатегориям (например,
cat1иcat2); - загружать несколько файлов в один раздел;
- четко структурировать большие библиотеки по тематике, типу блоков и т.д.
После создания файла engee_library.toml и размещения нужных .nglib файлов в указанных папках добавьте корневую папку библиотеки в путь через редактор пути, и ваша иерархия появится в библиотеке блоков.
Практическая часть
✏️Задание 1
Создайте собственную библиотеку, содержащую пользовательский блок, реализующий показательную функцию :
-
Создайте файл
Mylib.nglibи сохраните его в любой папке в рабочем пространстве Engee. Например, в папкеuser/Пользовательские библиотеки. -
Добавьте на холст блок Engee Function. Назовите его General Exponential Function (Обобщенная показательная функция).
-
В окне настроек блока задайте число входных портов равным
2, имя первого порта —x, имя второго порта —a, число параметров — равным0. -
Откройте редактор исходного кода этого блока. Во вкладке Step method code в теле функции вместо имеющегося по умолчанию кода введите код
return a^x. В ячейке Component struct code удалите код, находящийся там по умолчанию:
g::Real
function Block()
new(gain)
end
- Сохраните файл
Mylib.nglib. Чтобы ваша библиотека появилась в библиотеке блоков Engee, добавьте папку, в которой находится этот файл, в путь через редактор пути. После этого в библиотеке блоков в разделе Пользовательские библиотеки вы увидите вашу библиотекуMylib, содержащую единственный блок General Exponential Function.
Решение
Блок General Exponential Function:
Исходный код блока:
✏️Задание 2
Постройте модель, вычисляющую значения функции с использованием блока General Exponential Function из библиотеки Mylib:
- Создайте новую модель. Добавьте в модель следующие блоки:
- Ramp (параметры оставьте заданными по умолчанию; в этом случае блок будет генерировать функцию );
- Constant (значение константы задайте равным
2); - General Exponential Function;
- Terminator.
-
Соедините блок Ramp со входным портом
xблока General Exponential Function, а блок Constant — со входным портомaблока General Exponential Function. Выходной порт блока General Exponential Function соедините с блоком Terminator. -
Залогируйте выходной сигнал блока General Exponential Function.
-
Запустите модель и постройте график выходного сигнала.
Решение
Модель:
График выходного сигнала:
✏️Задание 3
Добавьте в библиотеку Mylib второй блок, реализующий логарифмическую функцию :
-
Откройте файл
Mylib.nglib. Создайте копию блока General Exponential Function и назовите ее General Logarithmic Function (обобщенная логарифмическая функция). -
Откройте редактор исходного кода этого блока. Во вкладке Step method code в теле функции вместо имеющегося кода введите код
return log(a, x). -
Сохраните файл
Mylib.nglib. После этого в библиотеке блоков ваша библиотекаMylibбудет содержать два блока: General Exponential Function и General Logarithmic Function.
Решение
Блок General Logarithmic Function:
Исходный код блока:
Библиотека Mylib:
✏️Задание 4
Модифицируйте модель, построенную в Задании 2. Новая модель будет вычислять значения функции с использованием блока General Logarithmic Function из библиотеки Mylib:
-
В окне настроек блока Constant задайте значение константы равным
5. -
Удалите из модели блок General Exponential Function и вставьте на его место блок General Logarithmic Function. Соедините его с другими блоками аналогично тому, как был соединен блок General Exponential Function.
-
Залогируйте выходной сигнал блока General Logarithmic Function.
-
Запустите модель и постройте график выходного сигнала.
Решение
Модель:
График выходного сигнала:
.