Проблема скрипта OpenModelica относительно setParameterValue - PullRequest
0 голосов
/ 12 июня 2019

Я использую файлы сценариев для симуляции.Я использую omc.exe для запуска моего файла mos.

Я столкнулся с 1 проблемой :

loadModel(Modelica); getErrorString();
loadFile("C:/Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/DAB_ideal.mo"); getErrorString();
loadFile("C:/Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/uControllerDAB.mo"); getErrorString();
checkModel(DAB_ideal);
Kp := 1.2;
Ti := 5e-5;
Td := 0;
typeOf(v1);

setParameterValue(DAB_ideal, PID_Kp, Kp); getErrorString();
setParameterValue(DAB_ideal, PID_Ti, Ti); getErrorString();
setParameterValue(DAB_ideal, PID_Td, Td); getErrorString();

instantiateModel(DAB_ideal);

В приведенном выше коде я хочу передать Kp'sзначение для моей модели DAB_ideal.Если я попытаюсь, как указано выше, это выдаст

"[C: /Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/DAB_ideal.mo: 3: 3-3: 20: доступный для записи] Ошибка: переменнаяKp не найден в области видимости DAB_ideal. Ошибка: произошла ошибка при выравнивании модели DAB_ideal "

эта ошибка. Если я попробую setParameterValue (DAB_ideal, PID_Kp, 1.2);это работает.
Как передать это значение Kp в функцию setParameterValue?Я пытался использовать символ PowerShell $ (и еще пару разных символов), чтобы передать значение Kp ($ Kp) функции, которая также не работала.

1 Ответ

0 голосов
/ 13 июня 2019

Это пока не работает, так как только значения или параметры, найденные в моделях, могут использоваться в качестве третьего аргумента. Функция setParameterValue не заботится о том, какое выражение вы даете, она помещает его в модель в качестве привязки. Я посмотрю, сможем ли мы реализовать быстрое решение для этого, должно быть довольно легко иметь вызов функции, такой как $ VariableValue (Kp), который мы можем заменить на фактическое значение при передаче его в модель. Я открою тикет об этом.

...