Управление данными проекта
Наводим порядок в проекте с помощью словарей данных
Чем больше модель, тем сложнее управлять её параметрами: переменные оказываются разбросаны по рабочей области, скриптам и разным частям проекта. А если таких моделей становится много, то управлять таким проектом невозможно.
В Engee эту задачу помогают решить словари данных — отдельные файлы для хранения и организации переменных модели.
Пример - система управления
Перед нами - классическая схема системы управления. Можно задать параметры регулятора через переменные в рабочей области и каждый раз через обратный вызов PreLoadFunc:
как это сделано в модели scripted_controller.
cwd = @__DIR__
engee.addpath(cwd)
engee.open(joinpath(cwd,"scripted_controller.engee"))
Дополнительно, таким же способом можно задать параметры объекта управления. Такой подход сработает на небольших моделях, когда данных не слишком много.
Но у такого подходов много минусов:
- Можно случайно поменять значения параметров и попросту забыть об этих изменениях.
- Изменения данных потеряются во время следующего сеанса.
- Трудно вести учет изменений в системах контроля версий.
Для централизации управления данными в проекте требуется применять словари данных
Словари данных в Engee
Словарь данных в Engee - отдельный файл, содержащий переменные. Работа со словарями данных описана в документации, а в этой публикации мы посмотрим на их практическое применение.
Для начала рассмотрим самый простой случай: модель работает со единым словарем данных:
cwd = @__DIR__
engee.addpath(cwd)
engee.open(joinpath(cwd,"controller_sed.engee"))
ПИ-Регулятор использует переменные Ki и Kp из словаря данных ctlsystem.edd
.png)
С точки зрения управления данными, уже стало лучше - у нас появился единый источник данных, который может быть отслежен через Git.
Несколько словарей данных
Давайте наведем порядок и отделим "общие" данные от параметров регулятора. У нас появятся два словаря данных: controller и common.
При этом словарь controller будет ссылаться на словарь common:
Важно
Когда словарь связан с другими словарями, данные из связанных словарей будут отображаться в основном словаре.
Пример модели, которая использует несколько связанных словарей данных:
engee.open(joinpath(cwd,"controller_two_dds.engee"))
В такой модели параметры регулятора отделены от общих данных проекта (определения шины ControllerBus). Этот подход позволяет определить общие проектные данные от данных специфичных для конкретной модели.
Выводы
Словари данных - это удобный инструмент для организации данных в проекте. С их помощью данные становятся контролируемыми и их изменение становится централизованным.