2013-06-27 69 views
0

我在Visual Studio和Eclipse中有一個非常大的C/C++軟件項目。有一些SIMULINK模型形式的第三方軟件。它是目前可能:用於SIMULINK模型的C/C++包裝器

1)寫的C/C++包裝功能Simulink模型? 2)從外部環境(如VS或Eclipse C/C++項目)調用函數以執行集成和進一步的任務?

我知道你可以使用MEX(MATLAB EXEC鍵。),其是C/C++或FORTRAN包裹爲MATLAB使用功能。但這對我來說並不理想。

使用例

我用例是基於建模與仿真,但我的子系統是數據格式方面相當不同。 50%使用C/C++,35%使用SIMULINK模型,其餘使用二進制可執行文件,目標代碼,符號數據等。我正在做一些複雜的系統建模;對不起,但由於保護原因,不能再告訴你。

從我得到的答案,似乎人們都熱衷於只使用MathWorks的東西提供。我的意圖是更像是一個沒有答案,但到目前爲止我也得到了很好的解釋。

UPDATE

我將不得不評估SIMULINK的嵌入式編碼器,看看有多少額外的努力,需要在拋光生成的代碼。我讀到Embedded Coder中有生產級代碼生成工具;應該很有趣。

+0

看來您並不想使用任何主流方法來訪問simulink生成的代碼。你想做什麼? – macduff

+0

@macduff就因爲有一個代碼生成器並不意味着我必須使用它。我試圖找出是否可以使用C/C++包裝來調用SIMULINK模型。我想要做的是創建一個複雜的系統,其中子系統設計是在SIMULINK模型,C/C++源代碼,可執行應用程序,目標文件,二進制數據等。如果你想要具體的細節,抱歉,我不能透露到期保密。 – ha9u63ar

+1

您可以調用Matlab並在co-sim期間使用TCP/IP或其他IPC與模型進行協同仿真。但是,如果生成的c代碼效率不夠高,那麼這種方法可能也不完善。 – macduff

回答

2

有兩種選擇取決於你的需求到底是什麼:

  • 利用Simulink編碼器轉換Simulink模型到C。這有效地讓您擺脫Simulink環境,因此將模型功能集成到您現有的環境中與將其他C代碼整合到一起相同。當然,您需要訪問Simulink Coder來完成此操作。

  • 調用MATLAB Engine。請注意,您不能只調用Simulink。您可以調用MATLAB併發出各種MATLAB命令來加載,執行和詢問Simulink模型。

+0

感謝您的回答。我已經知道SIMULINK編碼器(例如RT Workshop)。道歉,我沒有在我的問題中提到它。問題是生成的代碼效率不高,結構也不完善。對於一個大的+複雜系統,例如4級渦輪發動機,12-13 SIMULINK模型的生成代碼將是一個噩夢來解決。還有另一個風險是,如果你對模型有任何改變(客戶發生變化),生成的代碼需要重新生成,還有其他一些事情。我們還必須小心使用這些第三方模型的供應商知識產權。 – ha9u63ar

+3

@hagubear Simulink Coder背後的理念不是爲了您提到的原因編輯生成的代碼。該模型成爲黃金參考,而不是代碼。如果代碼效率不夠高,您可能需要對其進行優化並使用嵌入式編碼器對其進行定製,該編碼器用於生成生產代碼(與原型代碼相反)。 – am304

+1

如果您正在討論將呼叫合併到一個或多個單獨的模型中,那麼您就不可能使用MATLAB API方法。您需要有一個過程,對模型的任何更改進行標記並重新生成代碼(使用Embedded Coder作爲am304提及)。另外,我不確定IPR在哪裏出現 - 保護編譯模型比Simulink .slx模型要容易得多。 –