2012-06-26 47 views
0

我正在使用Matlab 2012a和Simulink Coder (aka Real-Time Workshop)。我想使用Simulink編碼器編譯模型,但保留了模型回調的功能。使用模型回調和Simulink編碼器


考慮下面的簡單例子。我有一個Simulink模型,callBackTest,它讀入一個常量並輸出爲since。 input1myValues.m中定義,並使用PreLoadFcn model callback加載到模型工作區中。 PreLoadFcn回調在模型第一次打開時執行。通過使用PreLoadFcn回調,input1將在每次打開模型時自動定義。

Simulink Blocks

PreLoadFcn

假設myValues.m最初被編碼爲input1=1。當你運行模擬時,yout將是一個1的數組。另外,如果我使用Simulink編碼器編譯模型,輸出也將是1的數組。但是,如果我修改myValues.m以便input1 = 2並且不重新編譯,則實時輸出仍然爲1.這是錯誤的,那麼如何使用編譯模型將文件中的變量從文件讀入模型工作區?

回答

0

您無法生成模型回調的代碼。如果您不想在每次更改輸入時都重新生成代碼,則可以嘗試使用可從.mat文件讀取數據的「From File」塊。當你想改變你的數據時,你可以運行MATLAB代碼並將輸出數據保存到同一個.mat文件中。這個塊的代碼生成支持哪些類型的數據有一些限制。有關詳細信息,請查看該塊的文檔。

如果你的數據不是太大,你也可以編輯生成的源來修改數據。來自常量塊的數據通常會嵌入到生成的源代碼中。編輯後,您可以編譯生成的代碼以生成新的二進制文件。

另一種方法是編寫定製的C S-功能,您可以從您自己的數據源讀取數據。您需要編寫一個TLC文件來支持此S函數的代碼生成。

您需要重新編譯你的模型,如果這些不爲你工作。文檔http://www.mathworks.com/help/simulink/ug/importing-signal-data-in-simulink.html列出了將信號數據導入Simulink的不同方式。

0

這並不回答你關於Model回調的問題,但它可能會有所幫助。

如果「內聯參數」選項被簽入: 首選項 - >優化 - >信號和參數

也沒有辦法,因爲他們是硬編碼的改變已編譯的模型值。一旦你關閉了這個選項並重新編譯,你可以例如連接外部模式並運行你的myValues.m腳本,這些值將被更新(除非你已經將它們標記爲不可調整)。

相關問題