Matlab中Simulink小白入門初學教程(2)

前面已經說過了兩個實驗,現在說第三個實驗:

實驗3:一個加熱器加熱屋子的實驗,目的是瞭解如何建模和仿真一個動態系統。最終目的是瞭解matlab的simulink仿真的流程,是讓我們學習如何由設計到公式、分模塊、每個模塊測試、聯調、一直到結合現實數據修正模型的。

第一步,設計到公式:

首先是設計出來一個系統,然後確定重要的中間變量,用表達式把他們聯繫起來。

比如確定了TroommroomaircairQgaintQloss等變量,寫出了他們的關係式:

這些參數的含義和具體值他們做了一個表格:

 

建模的時候也是採取的分層的方法,頂層-底層的方法,設計順序也是自頂向下。開關可以用乘法器仿真,乘以1就是開,信號就過去了,乘以零就歸零了,就不通過。Gain就是一個放大器(定值乘法器)。

第二步,分模塊設計、每個模塊測試

Add a Constant block to model the constant air temperature from the heater. Set the block Constant value parameter to T_heater. You will define the value of T_heater in the Model Workspace.

Constant取值也可以像define一樣一個☞指另一個,就是這裏先叫一個名字,別的地方再給那個名字賦值:

在以下的位置可以找到這種類似於宏定義的設置:

這樣就能方便的添加一些值,隨時改變之。

做成的子模塊Heater是這樣的(在做這個之前,首先找出一個叫subsystem的東西,雙擊打開以後在內部修改):

意思就是加熱器50℃,讀取室溫,做差,經過一個放大器也就是一個熱量/溫度的定值乘法器,這個就是描述這個加熱器的性能的了,比如溫差是1℃,能向室內散發多少熱量,它來衡量,之後經過一個開關,得到的就是釋放到室內的熱量(焦耳)。

方法還是一樣,做完一部分,測試一部分:

意思就是開關在第4個時鐘的時候打開,加熱器的內溫50℃,室溫20攝氏度,看看打開開關前後加熱器每個時刻釋放多少熱量,大約是11*1011左右,也就是說,這個模塊是沒問題的。(樣例用的室溫25攝氏度,不過沒有影響)。

然後就開始做下面的模塊,恆溫控制器模塊(讀取室內溫度,和預設的對比,溫度高就停火,溫度低就加熱):

右邊是我的效果,輸出的被採樣了,我嘗試着刪除了一些,但是總有一個被採樣兒,所以採樣是正常現象,不用理會。如果調高採樣率,圓圈會更加密集,仿真耗時更長。

之後就是仿真屋子(Room),情況是這樣兒的:

大致的意識就是這個屋子,外界給熱量,外界也有溫度,裏面是一個反饋系統,屋子的溫度比外界溫度高,那就喪失熱量,如果喪失的熱量比外界給的多,那麼整體熱量就會下降,積分器代表的是當前溫度,我們設置其爲20℃,整體熱量的變化除以比熱容就是溫度的增減,所以當我們設置外界不給屋子熱量(Heat Gain = 0),外界溫度是10(Outside Temperature = 10)室內初始溫度是20(積分器初始值設置爲20)以後,屋子的溫度就會因爲外界低溫而下降,開始溫差大,降溫快,後面溫差小,降溫慢。

第三步,各個模塊配合起來聯調

做完了各個模塊之後,我們就應該把他們連接到一起。先兩兩相連測試:

符合結果。

想要上下翻轉一個模塊,只需要改變標號順序,將原先在上面的1標號換到下面即可;

第四步,將所有的模塊連接,整體聯調:

調整外界環境溫度在低溫範圍內波動的時候(振幅5,中心值12),室溫能保持穩定:

當溫度在高溫範圍波動時(振幅5,中心值19),室溫就有時受室外溫度影響了:

Fullfile這個函數,作用大致是根據給出的文件路徑獲取文件的地址或者說是C語言裏面的指針,裏面的逗號,類似於windows裏面的斜槓。copyfile這個函數就是一個複製文件的函數,如果只給出源文件地址,那就把源文件複製到當前文件夾,

所以按照它這個寫法,不用害怕修改了源文件之後就弄壞了,我們修改的只是複製出來的備份。

果然多出來一個。

複製完了接下來就是打開了,前面的copy是複製到當前文件夾,這裏的open就把一個文件打開了。在修改文件的時候要小心,看看修改的是原始樣例還是複製過來的,改錯了以後就不好恢復了。這裏複製過來的是一個mat,所以一會兒再open的時候如果不是這個mat就不要修改。

模型建好了之後需要校準:

第五步:根據實測數據修正模型:

看了實測數據之後,下一步就是實測樣例相對比了,對比之後就該修正模型了:首先先添加一條值通輸出線:

Matlab是真的強大,excel都能直接導入,牛,不過一定注意,我使用的是matlab2018a,所以不識別help裏面提供的xls文件,我把他複製到當前文件夾之後改成了xlsx才能識別。

之後就是雙擊打開一個輸入端口,選中並導入xlsx數據,添加到仿真。然後再把這個xlsx保存成mat格式,並且現在不僅包含了數據信息,裏面還有連接信息。而且由於mark for simulation 了一手,所以現在在workspace裏面也有這個叫sheet1的exel表格:

存成了mat格式之後還需要在仿真的時候把它加進去,包括數據和連接:

之後再做一些顯示方面的事兒,果然,我們的數據連接上了:

之後就是仿真:

觀察可知觀測值和仿真值並不一樣,但是偏差很有規律,調整恆溫器裏面的遲滯器,將遲滯範圍改成-5~0:

果然,模型更加貼近實際了。

 

 

 

發佈了50 篇原創文章 · 獲贊 26 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章