2015-11-18 47 views
2

我嘗試編寫一個模型(修復),我想在其中使用不同模型(房間)的變量:變量名爲room.Temp。 如果我在模型中使用「修復」變量:room.Temp - >我得到一個錯誤信息:使用未聲明的變量room.Temp。Modelica:其他模型的導入變量

我必須在模型「修復」中導入變量嗎? 謝謝你的幫助

回答

2

我猜你沒有在「修復」模型中實例化「房間」模型。你可以在這裏添加你的代碼嗎?

+0

感謝您的回覆。我有2個完全獨立的模型(房間和修復),我拖入空白模型 - 一種可能性是在「房間」中定義變量「Temp」,我需要在「修復」中將其作爲實際輸出並將其連接修理」。但是,應該有一個更簡單的方法嗎?那麼實例化意味着什麼,我該如何實現它? – lars111

+0

「類」和「實例」是面向對象編程的術語:當您將模型拖到空白模型中時,您的模型「房間」和「修復」是「類」,它們被實例化(可能命名爲'room'和'fix ')。如果你將更多的拖放到你的模型中,你將有幾個唯一命名的類的實例。如果您對課程進行了更改,則更改將立即反映在所有實例中。 –

+1

如果你添加你的代碼或者你正在做什麼的例子,回答你的問題會容易得多。 – Shaga

2

對您而言,inner/outer關鍵字可能有用。

我不知道具體細節和模型的目的,但我認爲room.Temp表示應當由其他組件在你整個模型被稱爲室溫。

例如,您可以查看Modelica.Fluid.Examples中的任何示例。在這裏,你將看到system(小寫的「)模型定義爲類Modelica.Fluid.Systeminner實例 - 保存一個數字,應當由其他組件來已知的一般變量(環境壓力和溫度等)的模型在例子中。

Modelica.Fluid中的許多組件需要類Systemouter實例 - 它應該被命名爲system。例如參見Modelica.Fluid.Interfaces.PartialTwoPort

您在實例化模型時應用inner關鍵字(在Dymola中,將其拖動到畫布上,右鍵單擊,選擇View Attributes並勾選Inner)。

在你的情況,如果你的Fix類指的是一個名爲「房間」外實例,你應該確保你只有Room一個實例,它被稱爲room(不room1room_1或隨你)。註釋defaultComponentNamedefaultComponentPrefixesmissingInnerMessageRoom類可以幫你(見Modelica.Fluid.System註釋)。

最好的問候, 劉若英只是尼爾森

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到連接使這多個圖形。