2015-11-18 5 views
2

Я пытаюсь написать модель (исправить), где я хочу использовать переменную другой модели (комнаты): Переменная называется: room.Temp. Если я использую в модели «исправить» переменную: room.Temp -> i получить сообщение об ошибке: Использование необъявленной переменной room.Temp.Modelica: Import Variable другой модели

Нужно ли импортировать переменные в моей модели «исправить»? Thanx для вашей помощи

ответ

2

Я предполагаю, что вы не создали экземпляр модели «комнаты» в модели «исправить». не могли бы вы добавить свой код здесь?

+0

Спасибо за ответ. У меня есть две полные отдельные модели (комната и исправление), которые я перетаскиваю в пустую модель. Одна из возможностей - определить переменную «Temp» в «комнате», которую мне нужно «исправить» как реальный вывод и подключить его исправить". Но должен быть более простой способ? Итак, что означает экземпляр, и как его реализовать? – lars111

+0

«Классы» и «экземпляры» - это термины от объектно-ориентированного программирования: ваши модели 'Room' и' Fix' являются «классами», когда вы перетаскиваете их в пустую модель, которую они создают (и, вероятно, называются «room» и 'fix '). Если вы перетащите их больше в свою модель, у вас будет несколько уникальных имен ваших классов. Если вы внесете изменения в класс, изменения будут немедленно отражены во всех экземплярах. –

+1

было бы намного легче ответить на ваш вопрос, если вы добавите свой код или пример того, что вы делаете. – Shaga

2

В вашем случае могут использоваться ключевые слова inner/outer.

Я не знаю точных деталей и целей вашей модели, но я предполагаю, что room.Temp представляет температуру в помещении, которая должна быть известна другим компонентам в вашей общей модели.

Например, вы можете взглянуть на любой из примеров в Modelica.Fluid.Examples. Здесь вы увидите, что модель system (нижний регистр), определенная как экземпляр inner класса Modelica.Fluid.System - модель, которая содержит ряд общих переменных (окружающее давление и температуру и т. Д.), Которые должны быть известны другими компонентами в примерах.

Многие компоненты в Modelica.Fluid требуют экземпляра outer класса System - и его следует называть system. См. Например, Modelica.Fluid.Interfaces.PartialTwoPort.

Вы примените inner ключевое слово при создании экземпляра вашей модели (в Dymola, перетащите его на холст, щелкните правой кнопкой мыши, выберите View Attributes и отметьте Inner).

В вашем случае, если ваш Fix класс относится к наружному экземпляра с именем «номер», вы должны быть уверены, что у вас есть только один экземпляр Room класса, и что называется room (не room1, room_1 или без разницы). Аннотации defaultComponentName, defaultComponentPrefixes и missingInnerMessage в классе Room могут помочь вам с этим (см. Аннотации в Modelica.Fluid.System).

С наилучшими пожеланиями, Rene Just Nielsen

2

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

model Room 
    Real temp; 
end Room; 
model Fix 
    Real room_temp /* = ... Room.temp*/; 
end Fix; 

model Combined 
    Room room; 
    Fix fix; 
end Combined; 

Затем добавьте «вход» перед «room_temp» и изменить строку:

Fix fix(room_temp=room.temp); 

Изменение room_temp к разъему сделать это более графический.

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

  • Нет связанных вопросов^_^