Modelica连接方程

Modelica连接方程,modelica,Modelica,有人能告诉我,我是否能建立如下模型,模型主连接模型A和模型B。它给出了错误:6个方程和8个变量,但如何连接这些模型 model A Modelica.Blocks.Interfaces.RealInput ain1; Modelica.Blocks.Interfaces.RealInput ain2; Modelica.Blocks.Interfaces.RealInput ain3; Modelica.Blocks.Interfaces.RealInput ain4; Modelica.Blo

有人能告诉我,我是否能建立如下模型,模型主连接模型A和模型B。它给出了错误:6个方程和8个变量,但如何连接这些模型

model A
Modelica.Blocks.Interfaces.RealInput ain1;
Modelica.Blocks.Interfaces.RealInput ain2;
Modelica.Blocks.Interfaces.RealInput ain3;
Modelica.Blocks.Interfaces.RealInput ain4;
Modelica.Blocks.Interfaces.RealOutput aout1;
Modelica.Blocks.Interfaces.RealOutput aout2;
end A;

model B
Modelica.Blocks.Interfaces.RealInput bin1;
Modelica.Blocks.Interfaces.RealInput bin2;
end B;

model Main
Modelica.Blocks.Interfaces.RealInput min1;
Modelica.Blocks.Interfaces.RealInput min2;
Modelica.Blocks.Interfaces.RealInput min3;
Modelica.Blocks.Interfaces.RealInput min4;
A a;
B b;
equation
connect(a.ain1,min1);
connect(a.ain2,min2);
connect(a.ain3,min3);
connect(a.ain4,min4);
connect(a.aout1,b.bin1);
connect(a.aout2,b.bin2);
end Main;

现在,您有6个等式(每个
connect
语句一个)。但是,您有8个变量(每个
realpinput
和每个
realpoutput
)。从数学的角度来看,这意味着你的模型是,因为你有更多的变量比方程

要解决这个问题,您需要添加两个附加方程式。从逻辑上讲,缺少的链接似乎是
A
的两个输出如何与
A
的输入相关。例如,下面的模型(我在
a
的输入和输出之间添加了这样的关系)很好:


只是对Florian的回答补充一点。您原来的
A
模型不是合法的Modelica。Modelica要求每个单独的组件都是平衡的(与未知数一样多的方程)。这允许工具提供更具体的诊断。我本以为您的Modelica编译器会说“无法在模型‘Main’中实例化‘a’,因为模型‘a’未正确平衡(2个未知,但0个方程式)。”
model Main  
  model A
    Modelica.Blocks.Interfaces.RealInput ain1;
    Modelica.Blocks.Interfaces.RealInput ain2;
    Modelica.Blocks.Interfaces.RealInput ain3;
    Modelica.Blocks.Interfaces.RealInput ain4;
    Modelica.Blocks.Interfaces.RealOutput aout1;
    Modelica.Blocks.Interfaces.RealOutput aout2;
  equation
     aout1 = ain1 + ain2;
     aout2 = ain3 + ain4;
  end A;

  model B
    Modelica.Blocks.Interfaces.RealInput bin1;
    Modelica.Blocks.Interfaces.RealInput bin2;
  end B;  

  Modelica.Blocks.Interfaces.RealInput min1;
  Modelica.Blocks.Interfaces.RealInput min2;
  Modelica.Blocks.Interfaces.RealInput min3;
  Modelica.Blocks.Interfaces.RealInput min4;
  A a;
  B b;
equation
  connect(a.ain1,min1);
  connect(a.ain2,min2);
  connect(a.ain3,min3);
  connect(a.ain4,min4);
  connect(a.aout1,b.bin1);
  connect(a.aout2,b.bin2);
end Main;