Публичные методы программного управления
Все публичные методы программного управления, доступные в Engee, представлены списком ниже.
Методы engee.
add_block
Добавляет блок из библиотеки.
Details
Сигнатура функции:
engee.add_block("lib_block_path", "tgt_block_path")
Аргументы:
-
"lib_block_path"
— путь до блока в библиотеке. -
"tgt_block_path"
— путь до системы и ожидаемое имя. Если имя не указано, то задается автоматически.
add_line
Добавляет связь (поток данных) между блоками.
Details
Сигнатура функции:
engee.add_line("src_port", "dst_port") = engee.add_line(engee.gcs(), "src_port_path"," dst_port_path")
engee.add_line(system, "src_port", "dst_port")
Аргументы:
-
system
— путь до системы или объект типа ET.System. -
"src_port"
— путь до выходного порта блока. -
"tgt_port"
— полный путь до входного порта блока.
В качестве названия порта используется его порядковый номер.
addpath
Добавляет один или более путей в системную переменную LOAD_PATH
.
Details
Сигнатура функции:
engee.addpath(path::Vararg{String})
Аргументы:
-
"path"
— один или более путей в файловой системе.
LOAD_PATH — это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee , .ngscript ), а также любых других путей, используемых в командах.
|
Примеры:
engee.addpath("/user/models")
engee.load("model.engee") #загрузка модели
clear
Очищает все переменные в текущем рабочем пространстве.
Details
Функция clear()
удаляет все данные, хранящиеся в переменных, чтобы освободить память под новые вычисления и потоки данных.
Сигнатура функции:
engee.clear()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
-
Выполнение функции возвращает Nothing.
clear_all
Очищает все переменные, функции, и defined модули из текущего рабочего пространства.
Details
Функция clear_all()
возвращает текущее рабочее пространство в исходное состояние.
Сигнатура функции:
engee.clear_all()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
-
Выполнение функции возвращает Nothing.
close
Закрывает модель.
Details
Сигнатура функции:
engee.close(model_name; force = false)
engee.close(model; force = false)
engee.close(; force = false)
Аргументы:
-
"model_name"
— имя модели, которая будет закрыта. -
model
— рабочая модель, которая может быть загружена в память с помощью функции engee.gcm(). Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. -
force
— именованный аргумент (по умолчанию false). Тип данных Bool.
close_all
Закрывает все модели.
Details
Сигнатура функции:
engee.close_all()
engee.close_all(; sync_gui=true)
;
— все аргументы после точки с запятой должны быть именованными.
Аргументы:
-
sync_gui
— именованный аргумент и аргумент по умолчанию (по умолчанию false). Соединяет с графическим интерфейсом. Тип данных Bool.
copy_block
Копирует блок из системы.
Details
Сигнатура функции:
engee.copy_block("src_block_path", "tgt_block_path")
Аргументы:
-
"src_block_path"
— путь до блока в системе. -
"tgt_block_path"
— путь до системы и ожидаемое имя. Если имя не указано, то задается автоматически.
create
Создает новую модель с параметрами по умолчанию.
Details
Сигнатура функции:
engee.create("model_name")
Аргументы:
-
"model_name"
— желаемое имя модели в системе.
delete_block
Удаляет блок, все связанные линии и порты из системы.
Details
Сигнатура функции:
engee.delete_block("block_path")
Аргументы:
-
"block_path"
— путь до блока в системе.
delete_line
Удаляет связь (поток данных) между блоками.
Details
Сигнатура функции:
engee.delete_line("src_port", "dst_port") = delete_line(gcs(), "src_port", "dst_port")
engee.delete_line(system, "src_port", "dst_port")
Аргументы:
-
system
— путь до системы или объект типа ET.System. -
"src_port"
— путь до выходного (out) порта блока. -
"tgt_port"
— путь до входного (in) порта блока. В качестве названия порта используется его порядковый номер.
gcm
Возвращает текущую (активную) модель (возвращает объект с типом Model).
Details
Сигнатура функции:
engee.get_current_model()
engee.gcm()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
gcs
Возвращает текущую (активную) систему.
Details
Возвращает объект с типом System.
Сигнатура функции:
engee.get_current_system()
engee.gcs()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
generate_code
Генерирует код на указанном языке для модели.
Details
Сигнатура функции:
engee.generate_code(
"path/to/modelname.engee",
"path/to/output_dir";
subsystem_name="path/to/subsystem",
"target",
"path/to/template.jl"
)
Обязательные аргументы:
-
"path/to/modelname.engee"
— абсолютный или относительный путь к модели из которой генерируется код. В качестве аргумента может выступать объект модели (объект типа model, полученный функциейengee.gcm
) -
"path/to/output_dir"
— абсолютный или относительный путь к директории, в которую сохранится сгенерированный код. Если директории"output_dir"
не существует — она будет создана автоматически.
Необязательные аргументы:
-
"subsystem_id"
— уникальный идентификатор атомарной подсистемы из которой генерируется код. -
subsystem_name="path/to/subsystem"
— полный путь к атомарной подсистеме из которой генерируется код. -
"target"
— указание языка для генерации кода. Поддерживаемые языки —c
(по умолчанию),chisel
,verilog
. -
"path/to/template.jl"
— абсолютный или относительный путь к .jl файлу, в котором описывается шаблон генерации кода.
Примеры:
m = engee.gcm() #текущая открытая модель
output = "save_codegen/model_name" #относительный путь для вывода результатов кодогенерации
engee.generate_code(m, output) #сгенерирует код в output
output = "/user/save_codegen/model_name" #абсолютный путь (можно обращаться к файлам, находящимся в любых директориях).
engee.generate_code(m, output)
# Аналогично при работе с моделью как с файлом:
model_path = "/user/test.engee"
output = "save_codegen/model_name"
engee.generate_code(model_path, output)
Код также может быть сгенерирован через графический интерфейс (см. в статье Генератор кода в Engee).
get_all_models
Возвращает список открытых в текущей сессии моделей.
Details
Функция возвращает массив (вектор) объектов типа Model.
Сигнатура функции:
engee.get_all_models()
engee.get_all_models(; sorted=true)
-
;
— все аргументы после точки с запятой должны быть именованными.
Аргументы:
-
sorted=true
— указывает на то, что модели должны быть отсортированы (по умолчаниюtrue
). Аргументtrue
используется по умолчанию, если он не указан при вызове функции. Приsorted=true
модели сортируются алфавитно по имени, приsorted=false
(по умолчанию) — в порядке их загрузки.
compare_models
Производит сравнение пары моделей и возвращает список различий.
Details
Сигнатура функции:
engee.compare_models(a, b)
Обязательные аргументы:
-
"model_path_(a/b)"
—путь до файла первой и второй модели для сравнения.
Необязательные аргументы:
-
subsystem_id_(a/b)
— уникальный идентификатор подсистемы из которой будет производиться генерация кода. -
"subsystem_name_(a/b)"
— имя подсистемы или путь до подсистемы из которой будет производиться сравнение пары моделей.
Примеры:
m1 = "/user/modelname_1.engee" # абсолютный путь (с указанием полного пути до файла)
m2 = "modelname_2.engee" # относительный путь (лежит в папке рядом с test1.engee)
engee.compare_models(m1, m2) # вернёт результат сравнения m1 и m2.
# По желанию, можно указать опциональные параметры:
engee.compare_models(m1, m2; subsystem_id_a=UUID_YOU_SUBSYSTEM_IN_MODEL_m)
convert_model
Генерирует engee-скрипт для построения текущей модели с помощью команд программного управления.
Details
Сигнатура функции:
engee.convert_model("model_path")
Обязательные аргументы:
-
"model_path"
— путь до модели, из которой требуется сгенерировать код.
Необязательные аргументы:
-
subsystem_id
— уникальный идентификатор подсистемы из которой будет производиться генерация кода. -
"subsystem_name"
— имя подсистемы или путь до подсистемы из которой будет производиться генерация кода.
Примеры:
m_path = "/user/modelname_1.engee" #работа с абсолютным путём
engee.convert_model(m_path) #выведет engee-скрипт
m_abs_path = "modelname_2.engee" #работа с относительным путём
engee.convert_model(m_abs_path)
get_current_model
Возвращает текущую (активную) модель.
Details
Возвращает объект типа Model.
Сигнатура функции:
engee.get_current_model()
engee.gcm()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
get_current_system
Возвращает текущую (активную) систему.
Details
Сигнатура функции:
engee.get_current_system()
engee.gcs()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
get_logs
Получает сообщения из журнала, связанные с моделью.
Details
Функция engee.get_logs
возвращает время компиляции, инициализации и симуляции модели, но только в случае успешного запуска. Если модель завершилась с ошибкой, то логи будут пустыми.
Сигнатура функции:
engee.get_logs()
engee.get_logs(m)
Аргументы:
-
m
— модель, относительно которой выполняется операция, по умолчанию, текущая модель. Если модель не открыта, то выводит исключениеNoModelOpenedException
.
get_param
Возвращает все параметры.
Details
Сигнатура функции:
engee.get_param(model)
engee.get_param("path")
engee.get_param("path", param)
Аргументы:
-
model
— модель, относительно которой выполняется операция. По умолчанию — текущая модель. -
"path"
— путь до модели. -
param
— искомый параметр с типом Symbol, либо String. При вызове выбирается определенный параметр.
get_results
Возвращает результаты последней симуляции модели в виде словаря Dict{String, DataFrame}
, где ключ — имя отслеживаемого порта.
Details
Сигнатура функции:
engee.get_results(model_name)
engee.get_results(model)
engee.get_results()
Аргументы:
-
model
— модель, относительно которой выполняется операция. По умолчанию — текущая модель.
get_status
Возвращает статус симуляции как объект типа SimulationStatus.
Details
Сигнатура функции:
engee.get_status()
Возвращает один из четырех статусов симуляции модели:
-
BUILDING
— модель строится; -
READY
— модель готова; -
RUNNING
— модель в процессе выполнения; -
PAUSED
— выполнение модели приостановлено.
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
is_dirty
Проверяет, есть ли несохраненные изменения модели.
Details
Сигнатура функции:
engee.is_dirty(model)
engee.is_dirty("model_path")
Аргументы:
-
model
— модель, относительно которой выполняется операция. По умолчанию — текущая модель. -
"model_path"
— путь до модели.
load
Загружает модель из файла с расширением .engee, расположенного в file_path
.
Details
Возвращает объект типа Model.
Сигнатура функции:
engee.load("file_path"; "name", force = false)
Аргументы:
-
"file_path"
— путь к файлу, из которого будет загружена модель или данные. -
"name"
— используется для задания имени загружаемой модели или данных. -
force
— по умолчаниюfalse
. Если установленtrue
, то загрузка будет выполнена если файл уже был ранее загружен.
open
Возвращает открытую систему (объект типа System).
Details
Сигнатура функции:
engee.open("path")
engee.open("model")
engee.open(system)
Аргументы:
-
"path"
— путь до модели. -
"model"
— модель, относительно которой выполняется операция. По умолчанию — текущая модель. -
system
— путь до системы или объект типа ET.System.
pause
Приостанавливает запущенную симуляцию модели.
Details
Сигнатура функции:
engee.pause()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
resume
Возобновляет приостановленную симуляцию.
Details
Сигнатура функции:
engee.resume()
engee.resume(; verbose=false)
-
;
— все аргументы после точки с запятой должны быть именованными.
Аргументы:
-
verbose
— уточнение необходимости вывода прогресса исполнения модели на печать (по умолчаниюfalse
— не выводится).
run
Запускает исполнение модели.
Details
Если модель не указана, запускает симуляцию текущей модели.
Сигнатура функции:
engee.run()
engee.run(m; verbose=false)
-
;
— все аргументы после точки с запятой должны быть именованными.
Аргументы:
-
verbose
— уточнение необходимости вывода прогресса исполнения модели на печать (по умолчаниюfalse
— не выводится). -
m
— модель, относительно которой выполняется операция. По умолчанию — текущая модель.
rmpath
Удаляет путь из системной переменной LOAD_PATH
.
Details
Удаляет указанный путь из системной переменной LOAD_PATH
, что препятствует его дальнейшему использованию в Engee для поиска исполняемых объектов и других файлов.
Сигнатура функции:
engee.rmpath(path::String)
Аргументы:
-
"path"
— путь в файловой системе, который необходимо удалить изLOAD_PATH
.
Примеры:
engee.addpath("/user/models")
engee.load("model.engee") # загрузка модели
engee.rmpath("/user/models")
engee.load("model.engee") #загрузка модели выдаст ошибку
save
Сохраняет модель по заданному пути.
Details
Сохраняет модель с именем "model_name"
по пути "file_path"
в файл с расширением .engee.
Сигнатура функции:
engee.save("model_name", "file_path"; force = false)
engee.save(model, "file_path"; force = false)
Аргументы:
-
model
— объект типа Model. -
"model_name"
— желаемое имя модели в системе. -
"file_path"
— директория сохраняемой модели. -
force
— если файл уже существует и параметрforce = true
, то перезаписывает файл. Еслиforce = false
, то завершается ошибкойFileAlreadyExists
. По умолчаниюforce = false
.
set_param!
Обновляет выбранные параметры блока.
Details
В первом случае обновляет выбранные параметры модели. Возвращает nothing
. Если в param
передана структура настроек симуляции, настройки из нее будут скопированы.
Сигнатура функции:
engee.set_param!(model_name, param...)
engee.set_param!(model_name, param)
engee.set_param!(model, param...)
engee.set_param!(model, param)
Аргументы:
Каждый параметр должен быть представлен как пара (Pair), состоящая из имени параметра и его значения (например, "StartTime" => 0.0
. Для параметра param
:
-
"StartTime"
— время начала симуляции в виде Float64. -
"StopTime"
— время остановки симуляции в виде Float64.
"SolverType"
— тип решателя. Одно из значений: fixed-step (фиксированный шаг), variable-step
(переменный шаг).
"SolverName"
— имя решателя. Одно из валидных значений для fixed-step или variable-step соответственно. Тип данных String.
Метод использует тип данных String (строка), Float64 (числа с плавающей запятой), Pair (упорядоченная пара), Int64 (целочисленный тип) и Bool (логический тип).
Во втором случае обновляет выбранные параметры блока. Если изменяется параметр, который влечет за собой изменения количества портов, или состояния, то количество портов и состояние изменяются согласно переданным значениям параметра. Возвращает nothing
. Если в качестве второго параметра передана структура настроек блока, параметры из нее будут скопированы.
Сигнатура функции:
engee.set_param!(block_path,params...)
engee.set_param!(block, params...)
engee.set_param!(block, block_params)
engee.set_param!(block_path, block_params)
Аргументы:
-
"block_path"
— путь до блока. -
block
— структура ET.Block, которая хранит в себе данные идентификации блока. -
block_params
— структура всех настроек блока. -
params
— параметры блока в виде"name"
=>value
("имя" => значение). Параметры должны быть представлены в виде упорядоченных пар (Pair).
Примеры:
engee.set_param!("model_name", "StartTime" => 0.0, "StopTime" => 10.0, "SolverType" => "fixed-step", "SolverName" => "ode45")
stop
Останавливает запущенную симуляцию.
Details
Сигнатура функции:
engee.stop()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
version
Возвращает короткую версию Engee.
Details
Сигнатура функции:
engee.version()
Аргументы:
-
Не имеет обязательных или опциональных аргументов.
screenshot
Печатает модель или систему в файл.
Details
Поддерживаемые форматы: .PNG, .SVG. В других случаях
выводит ошибку ErrorException("unsuported picture format:<FORMAT>")
Позиционирование: auto
(по умолчанию) или tiled
. В других случаях применится auto
.
Сигнатура функции:
screenshot("to_print", "save_path")
Аргументы:
"to_print"
— имя модели, с которой будет делаться скриншот.
"save_path"
— путь для сохранения скриншота.
Примеры:
engee.screenshot("newmodel_1", "/user/saved.png") # без tiled
engee.screenshot("newmodel_1", "/user/saved.png"; position_mode="tiled") # с tiled
Методы engee.script
@include
Выполняет скрипт в общем пространстве имен.
Details
Все переменные, функции и другие артефакты, созданные в процессе выполнения скрипта, становятся доступны в основном рабочем пространстве.
Сигнатура функции:
engee.script.@include("script_path")
Аргументы:
"script_path"
— путь к скрипту, который необходимо выполнить.
Пример:
engee.script.@include("/path/to/script.jl")
edit
Открывает блокнот на редактирование.
Details
Если указано расширение иное от .ngscript
, то выведет ошибку ErrorException("path should end with.ngscriptextension"). Если файла нет — он создается.
Сигнатура функции:
engee.script.edit("path")
Аргументы:
-
"path"
— путь до скрипта.
extract_code
Извлекает код по указанному пути.
Details
Сигнатура функции:
engee.script.extract_code("path")
Аргументы:
-
"path"
— путь до скрипта.
run
Запускает скрипт в изолированном пространстве имён.
Details
Запуск скрипта с помощью engee.script.run
означает, что выполняемый скрипт не может импортировать модули, но при этом рабочее пространство Engee остается чистым (переменные и функции, объявленные в скрипте, не попадают в основное рабочее пространство).
Сигнатура функции:
engee.script.run("script_path")
Аргументы:
"script_path"
— путь к скрипту, который необходимо выполнить.
Пример:
engee.script.run("/path/to/script.jl")