Simulink代码生成: Switch模块及其代码
本文描述Switch模塊的建模并研究生成的代碼。
文章目錄
- 1 Simulink中的Switch模塊
- 2 Switch模塊建模及代碼生成
- 3 Switch模塊其他用法
- 3.1 多重Switch
- 3.2 通過標定量Switch
- 4 總結(jié)
1 Simulink中的Switch模塊
在Simulink中Switch模塊時非常常見的,通常用于根據(jù)一定地條件選擇信號進行輸出,類似于C語言中的if-else語句。
Switch模塊如下:
左側(cè)有三個信號輸入端口,其中中間的那個是條件端口。如果條件為真,則輸出上路信號,反之則輸出下路。
另外還有個MultiSwitch模塊,其效果類似,只是能夠切換多種輸入。
本文就以Switch模塊為例研究用法。
2 Switch模塊建模及代碼生成
本文就以Switch模塊進行一個簡單的建模。例如,CAN信號傳來車速,車速低于30kph時判斷車輛為低速,否則為高速。
1)首先拖出一個Switch模塊,雙擊進入屬性,將判斷條件改成u2 ~ = 0;
這一步操作是遵循《MAAB規(guī)范》主工的 jc_0141: Use of the Switch block。該規(guī)范要求第二個端口(條件)必須是該信號不等于0,不能是大于或小于0。
2)然后把判斷條件建模為車速小于30kph,Port1為LowSpeed的宏定義,Port3為HighSpeed的宏定義,如下:
模型比較容易理解,即VehSpd小于30時,輸出LowSpeed,否則輸出HighSpeed。
3)配置Embedded Coder并生成代碼如下:
生成的代碼用了一段if-else語句,其中if中的條件就是判斷車速大小。
3 Switch模塊其他用法
3.1 多重Switch
在Switch模塊的port3可以接入其他Switch模塊的輸出,形成一連串Switch,例如下圖:
車速小于30,對應(yīng)LowSpeed;車速介于30~60,對應(yīng)MiddleSpeed;否則車速大于60,對應(yīng)HighSpeed;
生成代碼如下:
3.2 通過標定量Switch
汽車實車測試的時候,經(jīng)常通過標定量切換信號來調(diào)試。假設(shè)ADAS軟件通過當前道路環(huán)境,在一系列復(fù)雜算法后得出應(yīng)該向發(fā)動機請求一個扭矩(即圖中的TorqueRequest)。當SwitchFlag標定為1時,將軟件算出的請求值發(fā)給Engine,然后發(fā)動機進行響應(yīng)。如果將SwitchTorque標定為一個工程師想要的一個自定義的數(shù)值,再將SwitchFlag標定為0,就可以發(fā)出自定義的一個扭矩請求,從而不依賴算法去調(diào)試車輛的性能。
4 總結(jié)
在Simulink中Switch模塊比較簡單也比較常用,需要掌握好它的用法。
>>返回個人博客總目錄
總結(jié)
以上是生活随笔為你收集整理的Simulink代码生成: Switch模块及其代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git详细介绍,以及常用的操作,命令
- 下一篇: 2021年R1快开门式压力容器操作考试及