2013-12-18 6 views
2

Может ли кто-нибудь сказать мне, могу ли я смоделировать, как показано ниже, где модель Main соединяет модель A и модель B. Она дает ошибку: 6 уравнений и 8 переменных, но как можно подключить такие модели.Modelica connect equation

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; 

ответ

1

Прямо сейчас у вас есть 6 уравнений (по одному на connect). Однако у вас есть 8 переменных (по одному для каждого RealInput и каждого RealOutput). С математической точки зрения это означает, что ваша модель under-determined, потому что у вас больше переменных, чем уравнений.

Для решения этого вопроса вам необходимо добавить еще два уравнения. Логически, недостающее звено, похоже, связано с тем, как два выхода A связаны с входами A. Например, следующая модель (где я добавил такую ​​связь между входами и выходами A) отлично:

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; 
+1

Просто добавить одну точку в ответ Флориана. Ваша оригинальная модель 'A' не была законной Modelica. Modelica требует, чтобы каждый отдельный компонент был сбалансирован (как многие уравнения, как неизвестные). Это позволяет инструментам давать более конкретную диагностику. Я бы предположил, что ваш компилятор Modelica сказал бы что-то более похожее на «Невозможно создать экземпляр« в »« Главная », потому что модель« А »не сбалансирована должным образом (2 неизвестных, но 0 уравнений)». –

Смежные вопросы