simulink自帶工具用於生成C和C++代碼,其中C代碼可以無需修改用於C工程中,由於生成的C++代碼為標准值代碼,而Qt為C++的實現,調用simulink生成的C++程序也可正常工作。
軟件版本:
simulink:2016a
Qt:5.7
1,搭建一個簡單的數學運算模型,本模型沒有輸入,只有一個輸出。如下:

2,配置模型
2.1 設置模型為固定步長,運行結束時間inf。
2.2設置輸出格式為“Structure”,也可設置為其他,如Array

2.3選擇代碼生成語言C++,具體設置如下,其中目標文件為grt.tlc,即Generic real-time Target。

2.4 設置代碼接口在 C++ Class中,在Qt調用中可以避免一些莫名其妙的錯誤。

2.5 檢查設置,在2.3步驟中單擊“check Model”按鈕,檢查配置是否正確,如果有錯誤或警告,則按照推薦的設置,最后結果如下:

3,編譯模型,Ctrl+B或者單擊如下按鈕

4,編譯后會在當前目錄下生成后綴grt_rtw的文件夾,里面即是編譯后的程序。
5,在Qt中創建一個簡單的widght程序,名字為testModel.
6,將步驟4中生成的.h,.cpp文件添加到Qt工程中,並把所有依賴的.h文件一並加入(在MATLAB安裝文件中),最終增加的如下:

7,在mainwindow.cpp的構造函數中增加如下代碼(相關的變量聲明未單獨列出):
pModel = new testModelClass(); pModel->initialize(); pModel->step(); qDebug()<<"simulink output:"<<pModel->test_Y.Out2;
8,運行Qt程序輸出結果如下,和期望的一致:
simulink output: 12
以上表明Qt是可以調用simulink的C++代碼的,進一步的可以將模型的輸入在也Qt程序中設置。
