我嘗試編寫一個模型(修復),我想在其中使用不同模型(房間)的變量:變量名爲room.Temp。 如果我在模型中使用「修復」變量:room.Temp - >我得到一個錯誤信息:使用未聲明的變量room.Temp。Modelica:其他模型的導入變量
我必須在模型「修復」中導入變量嗎? 謝謝你的幫助
我嘗試編寫一個模型(修復),我想在其中使用不同模型(房間)的變量:變量名爲room.Temp。 如果我在模型中使用「修復」變量:room.Temp - >我得到一個錯誤信息:使用未聲明的變量room.Temp。Modelica:其他模型的導入變量
我必須在模型「修復」中導入變量嗎? 謝謝你的幫助
我猜你沒有在「修復」模型中實例化「房間」模型。你可以在這裏添加你的代碼嗎?
對您而言,inner
/outer
關鍵字可能有用。
我不知道具體細節和模型的目的,但我認爲room.Temp
表示應當由其他組件在你整個模型被稱爲室溫。
例如,您可以查看Modelica.Fluid.Examples
中的任何示例。在這裏,你將看到system
(小寫的「)模型定義爲類Modelica.Fluid.System
的inner
實例 - 保存一個數字,應當由其他組件來已知的一般變量(環境壓力和溫度等)的模型在例子中。
Modelica.Fluid中的許多組件需要類System
的outer
實例 - 它應該被命名爲system
。例如參見Modelica.Fluid.Interfaces.PartialTwoPort
。
您在實例化模型時應用inner
關鍵字(在Dymola中,將其拖動到畫布上,右鍵單擊,選擇View Attributes
並勾選Inner
)。
在你的情況,如果你的Fix
類指的是一個名爲「房間」外實例,你應該確保你只有Room
類一個實例,它被稱爲room
(不room1
,room_1
或隨你)。註釋defaultComponentName
,defaultComponentPrefixes
和missingInnerMessage
在Room
類可以幫你(見Modelica.Fluid.System
註釋)。
最好的問候, 劉若英只是尼爾森
我不知道你是怎麼先進的解決方案所需要的,但最簡單的一個,我可以看到的是下面的,在這裏我假設你的模型是這樣的:
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到連接使這多個圖形。
感謝您的回覆。我有2個完全獨立的模型(房間和修復),我拖入空白模型 - 一種可能性是在「房間」中定義變量「Temp」,我需要在「修復」中將其作爲實際輸出並將其連接修理」。但是,應該有一個更簡單的方法嗎?那麼實例化意味着什麼,我該如何實現它? – lars111
「類」和「實例」是面向對象編程的術語:當您將模型拖到空白模型中時,您的模型「房間」和「修復」是「類」,它們被實例化(可能命名爲'room'和'fix ')。如果你將更多的拖放到你的模型中,你將有幾個唯一命名的類的實例。如果您對課程進行了更改,則更改將立即反映在所有實例中。 –
如果你添加你的代碼或者你正在做什麼的例子,回答你的問題會容易得多。 – Shaga