импортировать в модель существующий блок Modelica, содержащийся в MSL - PullRequest
0 голосов
/ 02 мая 2020

Я новичок в использовании OpenModelica.

У меня есть модель, которая имитирует поведение батареи. Он состоит из разных DAE. Теперь он работает с использованием постоянного тока, но я пытаюсь получить некоторые результаты, используя переменный во времени ток. Я заметил, что в Modelica -> Electrical -> Analog -> Sources существует огромное количество различных токовых входов, которые я мог бы использовать для определения переменного (реального) тока в моей модели.

Есть ли способ ввести в модель уже существующий блок?

Например, я пытаюсь дать в качестве входных данных в моей модели stepCurrent (содержится в исходной библиотеке), но я получаю сообщение об ошибке.

Вот мой код:

модель батареи

// определение переменных и параметров

// II1 C - текущее значение

import Modelica.Electrical.Analog.Sources.PulseCurrent; Действительный II1 C = PulseCurrent (I = 10, период = 500, ширина = 50, смещение = 0);

уравнение

// Система DAE, которая также является функцией II1 C.

концевой аккумулятор;

Это сообщение об ошибке, которое я получил:

[1] 19:22:01 Ошибка перевода [BatteryModelDischarging: 15: 1-15: 68]: поиск функции .Modelica.Electrical .Analog.Sources.PulseCurrent, но нашел модель.

[2] 19:22:01 Ошибка перевода При сглаживании модели BatteryModelDischarging произошла ошибка перевода

Есть ли способ заставить это работать?

Большое спасибо заранее,

С наилучшими пожеланиями, Габри

1 Ответ

1 голос
/ 07 мая 2020

Да, существуют разные способы введения модели из библиотеки в модель вашей батареи.

Простое решение для того, чтобы заставить вашу модель "работать", заключается в следующем (это проверяет, по крайней мере, я не уверен, что он будет делать то, что вам нужно)

model Battery

//definition of variables and parameters

// II1C is the current
  Modelica.Blocks.Sources.Pulse currentSource(amplitude = 10, period = 500, width = 50, offset=0); 
  Real II1C;

equation

currentSource.y = II1C;

// DAE system which is also a function of II1C.

annotation(
    uses(Modelica(version = "3.2.3")));
end Battery;

где

  • Modelica.Blocks.Sources.Pulse - это путь в библиотеке, где находится модель Pulse
  • currentSource - это имя экземпляра модели Pulse в модели вашей батареи.
  • (amplitude = 10, period = 500, width = 50, offset=0) - это параметры, которые изменяют поведение модели Pulse по умолчанию (обычно называемые модификаторами)
  • currentSource.y = II1C; в разделе уравнения - это способ присвоения выхода модели Pulse (.y) переменной II1C, которую вы создали как Real II1C;

Обратите внимание, что модель Pulse не имеет ничего общего с электрическим доменом, это просто общий источник сигнала. То есть вы должны интегрировать его в свою модель таким образом, чтобы это имело физический смысл; кроме того, это может быть неэффективно в отношении моделирования и производительности симуляции.

Возможно, DrModelica может быть хорошим местом, чтобы начать понимать не только технические аспекты языка Modelica, но и хорошие практики для его моделирования.

...