2016-05-12 123 views
0

我是Matlab/Simulink的新手,但需要從一個軟件接口與Simulink模型。使用實時輸入運行連續的Simulink模型?

目前我已經創建了一個簡單的Simulink函數'Inc',它有一個輸入到一個常數爲1和輸出的加法塊。我已經使用了To/From Workspace塊,並且可以使用時間/值向量輸入(如simin = [0,0; ​​5,0; 5,1; 10,1])在固定時間內運行仿真。

我想要做的是不斷運行我的模型?實時讀取Workspace值而不是預定義的基於時間的矢量?

我看不出如何設置它? Matlab/Simulink可以做到這一點嗎?總之,我想simin和simout是單個值,即simin = 1,然後在下一個固定步驟simout連續(無限次)運行的模型將更新爲simout = 2。simin更改將在工作區以不同的時間間隔。

回答

3

簡短的答案是你不能(很容易)那樣做,這不是Simulink的工作原理。 MATLAB工作區在仿真開始時被讀取/訪問並傳遞給Simulink引擎,即使仿真結束之前工作區中的值發生了變化,運行Simulink模型也不會考慮到這一點。

有辦法解決這個問題,但如果你是MATLAB的新手,請注意,這些都是相當先進的技術,我建議先熟悉一下Simulink。

看一看對於這些建議,類似的問題如何做你想要什麼:

顯然,您需要將模擬結束時間更改爲Inf或某些大數字。

+0

謝謝。我有一些使用事件監聽器技術的工作,並使用tcpclient從外部系統將實時更新流式傳輸到模型中。我注意到,儘管我需要向在事件監聽器上運行的腳本添加一個暫停(TimeStep),以將模型減慢到實時執行速度。這感覺不對,我錯過了某個地方的設置嗎? – MattP

+1

是的,Simulink本身並不是一個實時系統。首先,它運行在Windows或其他不是實時的O/S上,但模型本質上運行得儘可能快。由於模型的複雜性,它可能比實時更快或更慢。如果速度更快,那麼可以使用工具來將執行速度減慢到僞實時,例如http://uk.mathworks.com/matlabcentral/fileexchange/21908-simulink%C2%AE-real-time-執行。 – am304

+1

甚至是那個:http://uk.mathworks.com/matlabcentral/fileexchange/29107-real-time-pacer-for-simulink – am304