• 沒有找到結果。

System Identification Toolbox

在文檔中 控制系統識別 (頁 21-51)

• A=[1 -0.5 0.7];

B=[0 1 0.5];

th0=poly2th(A,B);

u=idinput(500,'rbs');

y=idsim([u,randn(500,1)],th0);

z=[y u];

ir=cra(z);

System Identification Toolbox

0 2 4 6 8 10 12 14 16 18 20

-1 -0.5 0 0.5 1

1.5 Impulse response estimate

lags

System Identification Toolbox

• A=[1 -0.5 0.7];B=[0 1 0.5]; m0=idpoly(A,B);

u=iddata([],idinput(300,'rbs'));e=iddata([],idinput(300));

y=sim(m0,[u e]);z=[y u];m=arx(z,[2 2 1]) bode(m)

• Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)

• A(q) = 1 - 0.4631 q^-1 + 0.6884 q^-2

• B(q) = 1.039 q^-1 + 0.5507 q^-2

System Identification Toolbox

10-2 10-1 100 101

10-1 100 101

Amplitude

From u1 to y1

10-2 10-1 100 101

-300 -250 -200 -150 -100 -50 0

Phase (degrees)

Frequency (rad/s)

卡爾曼濾波估測理論介紹

我們通常利用一些觀測方式設法得到系統的狀態描述。

由於觀測器也受到隨機干擾的影響,使得量測值亦產生 誤差。估測問題的實質就是如何從量測值中精確的確定 系統狀態的真實值及變化過程。

輸入事先之估測值 及 之初值

擴展型卡爾曼濾波器

模擬結果與分析

• Simulation1. 一階二階系統實驗

模擬結果與分析

• Simulation1. 一階二階系統實驗

• 探點極點位置及阻尼大小對 response 的影響

模擬結果與分析

• 系統識別的基本程序

Step1. 識別實驗的設計

硬體 , 識別輸入 , 取樣週期的選定 Step2. 識別實驗

識別對象之輸入輸出資料的收集 Step3. 輸入輸出資料的前處理

1. 時間領域 : 異常數據的去除 , 資料的擷取 2. 頻率領域 : 濾波 , 刪除

模擬結果與分析

• 系統識別的基本程序 Step4. 結構識別

1. 模型的形式 2. 線性 , 離散時間 , 參數選定 Step5.( 線性 , 離散時間 ) 系統辨識法

1. 非參數模型辨識法 2. 參數模型辨識法 Step6. 模型妥當性之評價

1. 時間領域 ,S 或 Z 領域 , 頻率領域 2. 識別殘差的白色性實驗

3. 使用基於識別模型的補償氣之閉迴路測試

模擬結果與分析

• Simulation2. 以吹風機的模型為識別對象 ! 此時輸入 為加入電熱線電壓 , 輸出為出風口的溫度

模擬結果與分析

• Simulation2. 系統識別的基本程序 Step1. 識別實驗的設計

輸入信號 :PWM 二值信號 , 取樣週期 :80ms Step2. 識別實驗

從所收集的 1000 筆資料 , 取前 300 筆來作識 別實驗

Step3. 輸入輸出資料的前處理

由輸入輸出資料知 , 信號含有 DC+AC 信號 , 所 以去

DC

模擬結果與分析

• %Step2 load dryer2

z2=[y2(1:300) u2(1:300)];

figure(1)

idplot(z2,1:300,0.08);

%Step3 figure(2)

z3=dtrend(z2) % 去 DC idplot(z3,1:300,0.08);

模擬結果與分析

模擬結果與分析

模擬結果與分析

Step4. 結構識別

使用非參數模型識別法來推測脈衝響應 Step5.( 線性 , 離散時間 ) 系統辨識法

脈衝響應前三個推測為 0, 所以延遲時間為 3, 用 LS

來推測 ARX 模型中的參數 !

y(k)+a1y(k-1)+a2y(k-2)=b1u(k-3)+b2u(k-4)+e(k)

Step6. 模型妥當性之評價

使用 700-1000 筆資料 , 來驗證參數的正確性

模擬結果與分析

• %Step4 figure(3)

ir=cra(z3); % 推測脈衝響應

%Step5

th=arx(z3,[2 2 3]); % 用 LS 來推測 ARX 模型中的參 數 !

th=sett(th,0.08);

present(th)

模擬結果與分析

• %Step6

u=dtrend(u2(800:900));

y=dtrend(y2(800:900));

yh=idsim(u,th); % 驗證參數的正確性

figure(4) plot(y) hold on

plot(yh,'y--')

模擬結果與分析

• 相關法分析的頻率響應

0 2 4 6 8 10 12 14 16 18 20

-0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1 0.12

0.14 Impulse response estimate

lags

模擬結果與分析

• 藍色線為原始信號 , 黃色線為識別參數的輸出值

0 20 40 60 80 100 120

-1.5 -1 -0.5 0 0.5 1 1.5

模擬結果與分析

模擬結果與分析

• Simulation3. 系統識別的基本程序 Step1. 識別實驗的設計

輸入信號 :PWM 二值信號 , 取樣週期 :0.1s Step2. 識別實驗

取 400 筆來作識別實驗 Step3.( 連續時間 ) 系統辨識法

d/dtx(t)=Ax(t)+bu(k)+Kw(t) y(t)=Cx(t)+du(k)+w(t)

模擬結果與分析

• 原始輸入輸出 ( 角位移 ) 信號

0 5 10 15 20 25 30 35 40 45

-15 -10 -5 0 5 10

Time Angle

0 5 10 15 20 25 30 35 40 45

-10 -5 0 5 10

Voltage

Time

模擬結果與分析

模擬結果與分析

clear all;

close all;

load dcmdata

z = iddata(y,u,0.1); % The IDDATA object z.InputName = 'Voltage';

z.OutputName = {'Angle';'AngVel'};

plot(z)

As = [0 1; 0 NaN];

Bs = [0; NaN];

Cs = [1 0; 0 1];

Ds = [0; 0];

Ks = [0 0;0 0];

X0s = [0;0];

模擬結果與分析

ms=modstruc(As,Bs,Cs,Ds,Ks,X0s);

th_guess=[-1 0.28] % 初始值

dcmodel=ms2th(ms,‘c’,th_guess,[],0.1); %c 為連續時間 ,0.1 為取樣週期 dcmodel=pem(z,dcmodel,'trace','on');

present(dcmodel)

>>

dx/dt = A x(t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t)

模擬結果與分析

A = [ 0 1

0 -4.0131 +-0.032]

B = [0

1.0023 +-0.008]

C = [1 0 0 1]

D=[0 0]

K = [0 0

0 0]

x(0) = [0 0]

模擬結果與分析

模擬結果與分析

• 左圖載體軌跡 ( 藍色為原始軌跡 , 綠色為估測軌跡 )

• 右圖為載體速度 ( 藍色為原始速度 , 綠色為估測速度 )

0 500 1000 1500 2000 2500

0

在文檔中 控制系統識別 (頁 21-51)

相關文件