創建簡單模型
本教程中創建簡單模型所使用的基本方法也適用于創建更復雜的模型,此示例對簡化的汽車運動進行仿真,當踩下油門踏板時,汽車通常處于行進狀態,松開踏板后,汽車怠速并停下來,
Simulink 模塊是定義模塊輸入和模塊輸出之間數學關系的模型元素,要創建這個簡單模型,您需要四個Simulink 模塊,

創建的模型如下圖所示:

實作流程
打開新模型
使用 Simulink Editor 構建模型
啟動 MATLAB,在 MATLAB 工具條上,點擊 Simulink 按鈕

點擊 Blank Model 模板
Simulink Editor 打開,

從 Simulation 選項卡中,選擇 Save > Save as,在 File name 文本框中,輸入您的模型的名稱,例如,simple_model,點擊 Save,模型使用檔案擴展名 .slx 進行保存,
打開 Simulink 庫瀏覽器
Simulink 在庫瀏覽器中提供了一系列按功能分類的模塊庫,下面是大多數作業流常用的一些模塊庫:
? Continuous - 表示具有連續狀態的系統的模塊
? Discrete - 表示具有離散狀態的系統的模塊
? Math Operations - 實作代數和邏輯方程的模塊
? Sinks - 存盤并顯示所連接信號的模塊
? Sources - 生成模型的驅動信號值的模塊


要瀏覽模塊庫,請從左窗格中選擇一個類別,然后選擇一個功能區,要搜索所有可用的模塊庫,請輸入搜索詞,例如,查找 Pulse Generator 模塊,在瀏覽器工具列的搜索框中輸入 pulse,然后按 Enter,Simulink 將在模塊庫中搜索名稱或說明中包含 pulse 的模塊,然后顯示這些模塊,

獲取模塊的詳細資訊,右鍵點擊 Pulse Generator 模塊,然后選擇 Help for the Pulse Generator block,Help 瀏覽器隨即打開并顯示該模塊的參考頁,
模塊通常有幾個引數,您可以通過雙擊該模塊來訪問所有模塊引數,
將模塊添加到模型
要開始構建模型,請瀏類別庫并添加模塊
從 “Sources” 庫中,將 Pulse Generator 模塊拖到 Simulink Editor 中,您的模型中將出現 Pulse Generator 模塊的副本,還有一個文本框用于輸入 Amplitude 引數的值,輸入 1,

引數值在整個仿真程序中保持不變,
使用相同的方法將以下模塊添加到模型中:

復制現有 Outport 模塊,然后使用鍵盤快捷方式將其粘貼到另一個點,從而添加第二個 Outport 模塊,
通過點擊并拖動每個模塊來排列模塊,要調整模塊大小,請拖動一個角,

連接模塊
通過在輸出埠和輸入埠之間創建線條來連接模塊,
點擊 Pulse Generator 模塊右側的輸出埠,該輸出埠和所有適合連接的輸入埠都將突出顯示,

點擊 Gain 模塊的輸入埠,
Simulink 用線條連接模塊,并用箭頭表示信號流的方向,

將 Gain block 的輸出埠連接到 Integrator, Second-Order 模塊的輸入埠,
將 Integrator, Second-Order 模塊的兩個輸出連接到兩個 Outport 模塊,
保存模型,在 Simulation 選項卡中,點擊 Save 按鈕,

添加信號查看器
要查看仿真結果,請將第一個輸出連接到一個 Signal Viewer,
點擊信號,在 Simulation 選項卡中的 Prepare 下,點擊 Add Viewer,選擇 Scope,信號上會出現查看器圖示,并打開一個示波器視窗,

您可以隨時通過雙擊該圖示打開示波器,
運行仿真
定義配置引數后,即可進行模型仿真
在 Simulation 選項卡中,通過更改工具列中的值來設定仿真停止時間,

默認停止時間 10.0 適合此模型,此時間值沒有單位,Simulink 中的時間單位取決于方程的構造方式,此示例對簡化的汽車運動進行 10 秒的仿真 - 其他模型的時間單位可以是毫秒或年,
要運行仿真,請點擊 Run 按鈕
仿真開始運行并在查看器中生成輸出,

細化模型
此示例使用現有模型 moving_car.slx,并基于此運動模型對接近傳感器建模,在這種情況下,數字傳感器用于測量汽車與 10 米(30 英尺)外的障礙物之間的距離,模型基于下列條件來輸出傳感器的測量值和汽車的位置值:
? 汽車在到達障礙物時會緊急剎車,
? 在現實世界中,傳感器對距離的測量不夠精確,從而導致亂數值誤差,
? 數字傳感器以固定時間間隔運行
更改模塊引數
要開始,請打開 moving_car 模型,在 MATLAB 命令列中,輸入:open_system('moving_car.slx')

您首先需要對在汽車位置到達 10 時的緊急剎車進行建模,Integrator, Second-Order 模塊有用于此目的的引數,
1.雙擊 Integrator, Second-Order 模塊,將出現 Block Parameters 對話框,
2.選擇 Limit x,然后為 Upper limit x 輸入 10,引數的背景色發生變化以指示模型存在未應用的修改,點擊 OK 應用更改并關閉對話框,
添加新模塊和連接
添加一個用來測量與障礙物之間距離的傳感器,
1.修改模型,根據需要展開模型視窗,以容納新模塊,
? 求實際距離,要想求出障礙物位置和車輛位置之間的距離,需要從 “Math Operations” 庫中
添加 Subtract 模塊,還要從 “Sources” 庫中添加 Constant 模塊來為障礙物的位置設定常量值10,
? 對真實傳感器中常見的不完美測量進行建模,使用 “Sources” 庫中的 Band-Limited White
Noise 模塊產生噪聲,將 Noise power 引數設定為 0.001,通過使用 “Math Operations” 庫
中的 Add 模塊將噪聲添加到測量中,
? 對每 0.1 秒觸發一次的數字傳感器進行建模,在 Simulink 中,以給定時間間隔對信號進行采樣需要一個樣本和保持器,從 “Discrete” 庫中添加 Zero-Order Hold 模塊,將該模塊添加到模型后,將 Sample Time 引數更改為 0.1,
? 添加另一個 Outport,用來連接傳感器輸出,保留 Port number 引數的默認值,
2.連接新模塊,Integrator, Second-Order 模塊的輸出已連接到另一個埠,要在該信號中創建分支,請左鍵點擊該信號以突出顯示可供連接的埠,然后點擊適當的埠

為信號添加注釋
將信號名稱添加到模型中,
1.雙擊信號并鍵入信號名稱,

2.要完成輸入,請點擊文本框外部,
3.重復上述步驟以添加下圖中所示的名稱,

比較多個信號
將 actual distance 信號與 measured distance 信號進行比較,
1 創建 Scope Viewer 并將其連接到 actual distance 信號,右鍵點擊信號并選擇 Create & Connect Viewer > Simulink > Scope,信號的名稱顯示在查看器標題中,
2 將 measured distance 信號添加到同一個查看器中,右鍵點擊信號,然后選擇 Connect to
Viewer > Scope1,確保您連接到在上一步中創建的查看器,

3 運行模型,查看器顯示兩個信號:actual distance(黃色)和 measured distance(藍色),

4.放大圖形以觀察噪聲和采樣的影響,點擊 Zoom 按鈕 ,左鍵點擊并拖動滑鼠框住您想放大查看的區域,
可以反復放大以觀察細節,

從圖中可以看到,測量值可偏離實際值達 0.3 米之多,此資訊在設計安全功能(例如碰撞警告)時非常有用,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280997.html
標籤:其他
