Simulink建模方法
在Simulink中,代表并模擬代表一個物理系統的數學模型是非常簡單的。模型在Simulink模塊圖,以圖形方式表示的。對以用戶來說很多模塊是可用的,simulink提供較多種格式的各種現象和模型庫。應用Simulink分析動態系統的一個主要優點是使我們能夠快速分析復雜的系統的可能比登天還難解析分析的響應。 Simulink能夠進行數值近似解,對于我們不能或不愿動手得到數學的模型。
一般來說,數學方程代表一個給定的系統,以此為基礎Simulink模型可以從物理定律推導。在這節中,我們將演示如何推導出一個數學模型,然后沒實現Simulink建模。該模型將在Simulink Control中演示如何使用Simulink的設計和模擬控制系統的
列車系統
在這個例子中,我們將考慮一個玩具火車,包括發動機和車身。假設沒有火車前進只在一維(沿軌道)。我們應用控制在火車上,以至于它能平緩的開始和停止,以至于他們能以存在一個很小的穩態誤差的速度前進。
發動機和車身的質量分別表示為 , 。進一步,在發動機和汽車通過耦合連接,剛性為k。換句話說,連接被建模為一個彈簧常數k的彈簧。力F表示發動機的車輪與軌道之間產生的力,而表示滾動摩擦系數。
受力圖和牛頓第二定律
建立物理系統的數學方程的第一步是畫系統的受力圖。火車系統的受力圖如下:
從牛頓第二定律,我們知道物體受力的和等于質量與加速度的乘積。既滾動摩擦力然這樣。發動機受到水平方向的力為彈簧彈力和車輪與軌道之間產生的滾動摩擦力。車身受到的水平方向的力,為彈簧彈力與滾動摩擦力。在垂直方向,重力平衡了地面的彈力。因此,將沒有垂直方向的加速度。
我們建模彈簧產生了一個由于變形線性比例的彈力, , , 分別是發動機和車身的位移。在這假設如果彈簧沒有變形的話, , 等于零。滾動摩擦力建模為與速度和彈力(等于重力)的乘積是線性比例關系。
根據受力分析圖,在水平方向上應用牛頓第二定律,可得到系統的如下方程。
| (1) |
| (2) |
Simulink建模
系統的方程可用用圖框表示,不需要進一步的操作。具體地說,我們構造兩個框圖(每一個質量)的一般表達式 或者 。首先,打開Simulink并新建一個窗口。拖動兩Sum塊(在Math Operations library)到你的模型窗口,放置的位置大約如下圖。
每一個Sum塊的輸出代表作用在每一個質量快上的合力。每個輸出信號乘以1/M得到每個質量塊的加速度。拖動兩個Gain塊(在Math Operations library)到你的模型里,并把它們連接到sum塊的輸出。用“Sum_F2”和“Sum_F1”標示兩個信號,以便使你的模型更清楚。
對于每一個質量塊,Gain塊的值應該是1/M。我們可以在MATLAB的空過空間定義變量M1和M2,只在每一個Gain塊中輸入變量的名字。雙擊Gain塊并輸入1/M1。相似的,在第二個Gain塊中輸入1/M2。
你會注意到這增益不會消失在Gain塊中,而是塊中顯示—K-。這是因為屏幕上的塊太小不能在三角中顯示變量完整的名字。塊可以調整大小以便實際的增益值能被顯示。為調整大小,點擊它選擇它。小方塊將會出現在角上。拖動其中一個角延展這個方塊。你的模型將如下:
Gain塊的輸出是質量塊的加速度(發動機和車身)。這方程是通過質量塊的速度和位移得到的。速度是通過加速度積分得到,位置是通過速度積分,我們可以產生這些信號通過積分塊。從Continuous library拖動四個積分塊到你的模型。連接這些塊,表示他們如下。第一個積分以mass 1的加速度(“x1_ddot”)作為輸入,產生mss1的速度(“x1_dot”)。第二個積分連接速度,輸出為第一個質量塊的位移(x1)。相同的模式用在第二個質量塊。
然后,從Sinks library拖動兩個Scopes到你的模型,然后與積分的輸出相連。然后把他們標示“x1”和“x2”。
現在我們已經準備添加力在質量塊上。首先,我們需要調整每一個sum,以合適力的個數。因為質量塊1有三個力,雙擊Sum把List of signs變為“|+++”。質量塊2只有兩個力,我們可以不變Sum塊。
作用在質量塊1上的第一個力是輸入力F。從Sources library中拖動一個Signal Generator到模型中,并Sum塊中最上面的輸入相連。表示信號為“F”。
作用在質量塊1上的第二個力士滾動摩擦力。此力公式如下
| (3) |
為了產生這個力,我們可用速度信號乘以一個適當的增益。拖動一個Gain到你的模型窗口。把“x1_dot”信號連接到新Gain塊的輸入。把Gain塊的輸出與Sum第二個輸入相連。雙擊Gain塊,在Gain中輸入“mu*g*M1”。然而,滾動阻力是作用在負方向。因此,把Sum塊中的list of signs變為“|+-+”。然后調整Gain塊的大小,標示為“Frr1”。現在模型顯示如下。
質量塊1上的最后一個是彈力。公式如下:
| (4) |
因此,我們需要信號 乘以增益 來產生一個力。拖動一個Subtraction塊到你的模型下面。為了改變塊的方向,雙擊塊的右鍵選擇Format>Flip block。你也可以選中塊,然后按CTRl-I。現在,把“x2”信號與Subtraction的減號相連,把“x1”信號和它的正好相連。這可能引起信號線交錯,但是只有在相交處有一個小方塊才是相連接。
現在,我們可以用這個差值乘以彈簧的彈性系數來得到彈力。拖動一個Gain塊到Subtraction塊的左邊。把Gain塊里面的值變為“k”,然后把Subtraction的輸出連接到Gain的輸入。然后Gain塊的輸出連接質量塊1的Sum的第三個輸入,并標示“Fs”。由于彈簧彈力作用在質量塊1上的位負方向,需要再次Sum塊中的list of signs改為“|+–”。模型如下。
現在我們考慮質量塊2上的力。對于第一個力,我們用彈簧產生的彈力,不過對于質量塊2它是正方向。把彈簧彈力信號“Fs”與質量塊2的Sum塊的第一個輸入相連。
質量塊2上的最后一個力是滾動摩擦力。這個力類似于質量塊1上的滾動摩擦力。把信號“x2_dot”乘以值為“mu*g*M2”的Gain塊。然后把Gain塊輸出與Sum塊的第二個輸入相連并標示“Frr2”。然后改變Sum塊的第二個輸入為負,如下模型。
現在這個模型已經完成。我們需要提供合適的輸入和定義輸出。系統的輸入是發動機產生的力F。在Simulink模型中,我們定義力F為信號發生器的輸出。我們和最終控制的系統的輸出是發動機的速度。再添加一個Scope在你的model里面。把“x1_dot”與Scope塊相連。標示Scope為“x1_dot”,你的模型如下。
現在,這個模型已經完成并且應該被保存。
運行模型
在運行模型之前,我們需要給每一個變量付一定的值。對于火車系統,我們將給如下值。
創建一個新的m文件并輸入如下命令。
在MATLAB的命令窗口中執行m文件,定義這些變量。Simulink將會識別MATLAB中的變量用高模型上。
現在,我們給發動機一個合適的輸入。雙擊信號發生器。在Wave Form真的下拉菜單中選擇square設置Frequency為“0.001”。Units為默認Hertz。在Amplitude中輸入-1。
在運行仿真之前的最后一步是選擇一個適當的時間。頻率為0.001的方波,我們應該仿真模型1000秒。再建模窗口頂部的Simulation菜單中選擇Parameters,把Stop Time變為“1000”。關閉對話框。
現在,運行仿真并打開“x1_dot”scope去檢測速度的輸出(點擊autoscale)。輸入為有兩個節約的方波,一個正一個負,這意味著先向前然后向后。速度輸出反應這些。
這個教程中我們通過第一準則建立起了列車系統的數學模型,并用Simulink標示這方程。另一個可用的選擇是用Simcape建立動態系統的物理模型。Simscape是Simulink的一個補充,它允許用戶用物理量建立模型,比如電阻,電感器等。用Simscape允許用物仿真一個物理系統,完全不用數學方程。
來源:MATLAB建模
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















