C代碼中經常會寫到數據類型強制轉換的語句,那么,
在Simulink模型里如何表達?
又如何配置,才能生成強制數據類型轉換代碼?
點擊末尾的 “閱讀原文” 下載本文的案例模型
數據類型轉換
要得到:
y1 = (double)u1;
怎么做:
Simulink模型里有三種建模元素:Simulink框圖、Stateflow流程圖以及MATLAB Function模塊里的m腳本。
在Simulink框圖模型里使用Data Type Conversion模塊來實現強制數據類型轉換;在后兩種則使用強制類型轉換語句:out1 = double(in1)。
實例三
1. 建一個簡單的Simulink模型
雙擊上圖中Data Type Conversion模塊設置輸出數據類型為double。MATLAB Function以及Chart里的內容如下圖:
2. 代碼生成基本配置
求解器:定步長—離散求解器
系統目標文件:ert.tlc
3. 新建數據對象
打開Model Explorer,點擊菜單的Add,在Base Workspace里定義輸入輸出信號的數據對象,如圖設置輸入為single類型,輸出為dobule類型:
4. 信號關聯
在信號線上右鍵,將信號與Base Workspace的數據對象關聯在一起。鼠標操作的方式,可以參考之前的帖子里的菜單截圖。因為這里的信號略多,所以可以使用命令的方式來實現:
此時,第一張模型截圖中信號名前方的藍色小叉子就會出現。
5. 生成代碼
Ctrl+B,生成代碼。
如前面所設置的,輸入為real32,輸出為real類型:
但此時從上圖可以看到,由于是single轉double,隱式轉換,并沒有想要的顯示轉換的代碼。
在代碼配置頁面里,配置代碼風格,Casting modes為Standards,符合MISRA的風格:Generate code that casts data types to conform to MISRAstandards
再次生成代碼,得到如圖:
總結
所以說,在Simulink框圖模型里使用Data Type Conversion模塊來實現強制數據類型轉換;在后兩種則使用強制類型轉換語句:out1 = double(in1)。
Tips:可以使用Model Advisor ,來檢查模型的配置,以便生成的代碼符合MISRA C的風格。
其它:保持y1信號名不變,數據類型設置為整形,并相應的設置Data Type Convers輸出為整形。生成代碼,會看到比較有意思的錯誤提示。
-
代碼
+關注
關注
30文章
4887瀏覽量
70269 -
數據類型
+關注
關注
0文章
237瀏覽量
13830
發布評論請先 登錄
IEC101協議可以傳輸什么類型的數據
labview寫入浮點數到匯川 PLC中的數據轉換關鍵
請問ADS1299使用Test Signals ,獲取到的數據類型是什么?
不同類型ACDC轉換器優缺點 ACDC轉換器負載能力分析
不同類型adc的優缺點分析
西門子博途新數據類型之:SINT(8位整數)

AIC23采集到的數據是應該用什么數據類型來接收?int還是unsigned int?
鴻蒙原生應用元服務開發-倉頡基礎數據類型字符串類型
labview數據類型的取值范圍是多少
常見的遙感數據類型有哪些
人體紅外傳感器的數據類型及工作原理
技術干貨驛站 ▏深入理解C語言:基本數據類型和變量

評論