Обратные вызовы
Не путайте обратные вызовы, описанные в этой статье, с обратными вызовами библиотеки DiffEqCallbacks.jl. Подробнее о работе с ними читайте здесь. |
Обратные вызовы (Callback) — это функции, которые вызываются автоматически в ответ на определенные события в модели. Обратные вызовы Engee создаются на языке программирования Julia.
Для открытия обратных вызовов зайдите в окно настроек и нажмите Редактировать исходный код :
В открывшемся меню доступны все обратные вызовы Engee. Они по умолчанию пустые и не содержат кода:
Все обратные вызовы Engee можно условно разделить на 4 группы:
Открытие модели | Выполнение модели | Сохранение модели | Закрытие модели |
---|---|---|---|
|
|
|
|
Открытие модели |
||||
---|---|---|---|---|
Используются для настройки поведения модели до и после открытия. Подробнее об обратных вызовах открытия моделиИспользуемые обратные вызовы: Описание:
|
Выполнение модели |
---|
Используются в процессе симуляции. Подробнее об обратных вызовах выполнения моделиИспользуемые обратные вызовы: При запуске модели и хотя бы разовой остановки процесса симуляции сработают все эти функции. Описание:
|
Сохранение модели |
---|
Используются при сохранении модели. Подробнее об обратных вызовах сохранения моделиИспользуемые обратные вызовы: Описание:
|
Закрытие модели |
||
---|---|---|
Используется при закрытии модели. Подробнее об обратных вызовах закрытия моделиИспользуемые обратные вызовы: Описание:
|
Пример работы
Для каждого обратного вызова в Engee можно присвоить переменную. Это удобно, чтобы отслеживать срабатывание в зависимости от условия симуляции, например, внутри вызова открытия модели PreLoadFunc
можно использовать код:
#переменные открытия модели
PreL = 1 #выполняется до загрузки модели
PostL = 0 #выполняется после загрузки модели
# переменные выполнения модели
Init = 0 #выполняется после компиляции модели
Start = 0 #выполняется до первого шага симуляции
Pause = 0 #вызывается в случае паузы симуляции
Continue = 0 #выполняется на одном шаге при запуске модели после паузы
Stop = 0 #выполняется во время остановки симуляции
#переменные сохранения модели
PreS = 0 #выполняется перед сохранением модели
PostS = 0 #выполняется после сохранения модели
#переменные закрытия модели
Close = 0 #выполняется после закрытия модели
Этот код инициализирует переменные с нулевыми значениями. Переменная PreL
, связанная с открытием модели, равна единице, так как ее параметры загружаются до и после загрузки модели (всегда выполняются). Например, в обратных вызовах выполнения модели StartFunc
можно установить переменную Start = 1
. При успешном выполнении этого обратного вызова значение переменной изменится с 0
(не выполнен) на 1
(выполнен). Следить за выполнением обратных вызовов можно с помощью окна переменных:
При каждом срабатывании обратного вызова переменные обновляются, а затем их значения выводятся для анализа и отладки процесса симуляции.