Я пытаюсь решить то, что, по моему мнению, должно быть простой проблемой постановки компонентов в устойчивом состоянии, с помощью Modelica, но я изо всех сил пытаюсь найти решение.
Я подготовил примерный случай с двумя параллельными насосами, которые должны подавать в систему заданный общий расход (vTotal). Один насос является насосом с переменной частотой и обеспечивает расход (v1), пропорциональный рабочей частоте (fPump1), которая может варьироваться от 0 до fMax. Другой насос - это насос с фиксированной скоростью, который выдает фиксированный расход (v2IfRunning), когда он работает, и нулевой расход, когда он не работает.
Цель состоит в том, чтобы определить количество работающих насосов и частоту насосов с регулируемой скоростью. Насос с регулируемой скоростью всегда работает, а насос с фиксированной скоростью используется только тогда, когда насосу с регулируемой скоростью необходимо работать с частотой, превышающей fMax. Мой пример кода ниже:
model TwoPumpCode
// Pump 1
Modelica.SIunits.Frequency fPump1 "pump 1 frequency";
Modelica.SIunits.Frequency fMax = 50 "maximum frequency";
Modelica.SIunits.VolumeFlowRate v1;
// Pump 2
// Boolean runPump2(start=false) "true if pump 2 should run";
Modelica.SIunits.VolumeFlowRate v2IfRunning = 30;
Modelica.SIunits.VolumeFlowRate v2
"actual flow through pump 2";
Integer nPumpsRunning(start = 1) "number of pumps running";
// Total flow
Modelica.SIunits.VolumeFlowRate vTotal = 70;
equation
// Calculate the flow through pump 1 as a function of frequency
v1 = fPump1;
// Calculate the flow through pump 2 based upon running state
if fPump1 > fMax then
nPumpsRunning = 2;
v2 = v2IfRunning;
else
nPumpsRunning = 1;
v2 = 0;
end if;
// Calculate the total flow
vTotal = v1 + v2;
end TwoPumpCode;
Опять же, это стационарная модель. Я пробовал использовать if, when, reinit, логические переменные для состояния pumpRunning, целочисленные переменные для количества работающих насосов и т. Д., И я все еще не могу найти решение для устойчивого состояния.
Любые предложения будут ценны.
Спасибо, Джастин
Modelica.Blocks.Logical.OnOffController
, не добавляют динамику, поскольку нет хранилища / интеграции и т. Д., Они используют условиеif
, как и ваш код. Может, не стоит называть это контроллером, а лучше логическим блоком !? Вы можете найти пример использования на github: git.io/v9IGP - person matth   schedule 24.04.2017