Контекст: У меня есть огромная модель Simulink, которая будет использоваться для автоматизированного моделирования в Debian 10. Поэтому она должна быть встроена как автономный C -код с использованием Matlab Coder. Затем вызывается этот код для запуска симуляции.
Что мне нужно: Мне нужно найти способ инициализации моей модели buildt с ~ 500 параметрами. Они меняются при каждом запуске симуляции и сохраняются в файле SQLite. Цель состоит в том, чтобы записать параметры в базу данных, а затем запустить модель, которая считывает параметры из SQLite во время инициализации (предположительно, с помощью обратного вызова модели InitFcn, хотя я открыта для альтернатив).
Что у меня есть пробовал:
Direct SQL интерфейс: я пытался использовать прямой интерфейс Matlab- SQL, такой как JDB C (так как у меня нет доступа к базе данных -toolbox), но они не поддерживаются для генерации кода.
Напишите C -функцию, которая читает файл SQLite, затем вызывает функцию во время инициализации в Обратный вызов InitFcn с использованием coder.ceval примерно так:
data = 0;
err = coder.ceval('read_function',4, 2, 12, coder.wref(data));
parameter = data;
- Проблема в том, что
coder.wref
не поддерживается в Matlab и поэтому не ' работать в InitFcn. (Пожалуйста, исправьте меня, если я ошибаюсь :) Кажется, это работает только внутри функционального блока Matlab:
Error evaluating 'InitFcn' callback of block_diagram 'Model'.
Caused by:
The coder.wref function is not supported in MATLAB.
Так что моя проблема со вторым подходом заключается в том, что я не могу вызвать C -функция при инициализации.
Использование Matlab-function-Block для чтения параметров на самом деле не вариант, так как мне пришлось бы маршрутизировать все сигналы, что усложняет поддержание и дальнейшее развитие модели. Также я предлагаю, чтобы модель даже не работала, потому что параметры необходимы для инициализации модели.
Вопросы:
- Есть ли способ заставить один из вышеперечисленных подходов работать? Если да, то как? Где моя ошибка?
Есть ли другой (более простой) вариант передачи данных в виде массива или структуры в мою модель?
База данных выглядит следующим образом:
Identifier Default
latitude 52.5
longitude 13.4
electricity_consumption 4000.0
ventilation_stream 50.0
PV_peak 30.0
PV_orientation 0.0
no_vessels 28.0
heatpump_exists 1.0
hotwater_consumption 1000.0
.
.
.