2014-02-25 103 views
1

當我試圖在系統識別工具箱(SIT)內創建的Simulink中導入和測試傳輸函數時,我認爲我做了一些根本性錯誤。在Simulink中使用系統識別工具箱傳輸功能

給我一個簡單的例子,我在做什麼。 我有一個輸入是一個從12秒到25秒的偏移正弦波,振幅爲1,頻率爲1.5rad/s,可以給出測量輸出。

我用SIT創建它提供了以下協議一個簡單的2極1零換乘功能: SIT fit

然後我試圖導入此傳遞函數到Simulink在下面的配置具有調查頻率1.5rad/s的正弦輸入和起始t = 12。該LTI系統塊是指在工作區中的傳遞函數變量: Simulink schematic

當我運行這個模擬13秒輸入塊是預期,但後傳遞函數信號表明什麼將預期沒有達成一致並且是一個數量級。

前: PRE signal

後: POST signal

可能有人給任何洞察到哪裏我錯了,爲什麼在Simulink中tf輸出顯示一點相似於顯示的模型輸出坐。我對控制理論有一個基本的把握,但我正在努力弄清楚這一點。

+0

這些是各自的傳輸前和傳輸功能示波器: https://dl.dropboxusercontent.com/u/8037738/project/pre.PNG ; https://dl.dropboxusercontent.com/u/8037738/project/post.PNG – Jimog

回答

1

這可能是由於SimuLink和SI Toolbox中使用的初始條件不同,後者應該使用該模型估算初始條件,而Simulink對初始條件沒有任何特殊要求,除非您自己指定它們。

對我來說,似乎你的原始信號處於週期性狀態,因爲你的輸出看起來幾乎就像一個正弦波。在週期性制度下,初始條件影響不大。您可以通過模擬您的模型更長時間來驗證我的假設:如果最終,您的信號在數據中達到正確的幅度和相位滯後,您將知道初始條件是錯誤的。 在任何情況下,您都可以從工具箱中獲得估計的初始狀態,我認爲使用生成對象的InitialState屬性。

可能出問題的另一件事,是你在Simulink中使用的情況下,你估計持續時間模型(一個在拉普拉斯變量s,而不是在zq)的時間離散。

編輯:在這種情況下,我建議你查閱一下Simulink中使用到的離散CT模型,利用Matlab軟件c2d和像在Simulink如下所示的設置。在MATLAB中,您還可以使用lsim「模擬」CT模型的響應,您必須指定離散化方法。

enter image description here

這種設置允許在一個CT模型和離散變體(在這種情況下,狀態空間)加載。通過比較信號,您可以看到您使用的離散化方法是否與SimuLink使用的方法相同(這取決於您在設置中設置的積分方法)。

+0

長時間運行模擬不會導致輸出達到預期值或相關性。儘管看起來SIT的GUI在顯示圖表時使用'COMPARE'來預測一些初始條件,所以你可能是正確的。我相信爲了收集初始條件,我必須將'tf'轉換成狀態空間模型,並使用FINDSTATES來收集估計的初始值。然而,我計算了一個新的初始條件爲零的tf,但是這再次表明了SIM中的不良關聯。一個固定的時間步長求解器和連續的'tf'會導致問題嗎? – Jimog

+0

您使用的求解器可以確定您以主導方式獲得的結果。我使用SL原理圖對我的答案進行了調整,以檢查Simulink中的離散化。 – Egon

+0

你是正確的,這是最初的條件。 (1)將tf轉換爲狀態空間模型'sys_ss = ss(sys)'2)將ss模型隱藏爲idss格式'sys_idss = idss(sys_ss)'3)將模型與數據進行比較找到初始狀態'state = findstates(sys_idss,data)'4)使用'sys_ss'在Simulink中使用LTI塊並收集狀態。非常感謝你強調這是埃貢的問題,非常感謝。 – Jimog