dlh matlab simulink - hcmuaf.edu.vn · 10 lệnh “step” cho xem ghế của xe đáp ứng...

28
1 MATLAB Ví d

Upload: others

Post on 30-Aug-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

1

MATLAB

Ví dụ

Page 2: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

2

Mô hình vật lý

Khối 1:Lực Biểu thức toán ChiềuGravitational Force m1g DownSpring Force 1 k1(yg(t) - y1) UpDamper Force 1 b1 (yg(t)' - y1') UpInertial Force m1 y1“ DownSpring Force 2 k2(y1 - y2) DownDamper Force 2 b2(y1' - y2') Down

Page 3: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

3

Khối 2:Lực Biểu thức toán ChiềuGravitational Force m2g DownSpring Force 2 k2(y1 - y2) UpDamper Force 2 b2(y1' - y2') UpInertial Force m2 y2" Down

m1:0 = -m1y1" + b1(yg(t)' - y1') + k1(yg(t) - y1) - b2(y1' - y2') - k2(y1 - y2) - m1g

m2:0 = -m2y2" + b2(y1' - y2') + k2(y1 - y2) - m2g

Page 4: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

4

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)

0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

y1 = z1 + y1eqy1' = z1' y1" = z1"

y2 = z2 + y2eqy2' = z2‘y2" = z2"

Phần tử chứa năng lượng Quan hệ Biến trạng thái

Spring 1 ½ k1(yg - z1)^2 z1

Mass 1 ½ m1v1^2 v1

Spring 2 ½ k2(z1 - z2)^2 (z1 - z2) = Δ

Mass 2 ½ m2v2^2 v2

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 5: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

5

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Biến trạng thái - State variables:z1'= v1Δ'= z1' - z2' = v1 - v2 X={z1, Δ}T

Đầu ra - Input: yG Đầu vào - Output: y = z1-Δ

m1 = 10,000kgm2 = 150kgb1= 180,000Nm/sb2 = 400Nm/sk1 = 80,000Nmk2= 700Nm

Khái báo trong Matlab

Page 6: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

6

Page 7: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

7

Lệnh Step: xem đáp ứng của hệ thống theo đầu vào bước

Lệnh bode (xem đáp ứng theo tần số)

>> bode(fourth_ss)

Page 8: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

8

Xây dựng hàm truyền từ mô tả bằng không gian trạngthái: TRANSFER FUNCTION FROM STATE SPACE (ss2tf):

>> [num,den] = ss2tf(A, B, C, D)

num = 1.0e+003 * 0 0.0000 0.2400 2.2800 0.7333den =1.0e+003 *0.0010 0.0381 0.3244 2.2800 0.7333

Transfer function:

240 s^2 + 2280 s + 733.3--------------------------------------------------------------s^4 + 38.12 s^3 + 324.4 s^2 + 2280 s + 733.3

Hiện hàm truyền trực bằng lệnh tf

>> fourth_tf = tf(fourth_ss)

Transfer function:

240 s^2 + 2280 s + 733.3-------------------------------------------------------------s^4 + 38.12 s^3 + 324.4 s^2 + 2280 s + 733.3

Page 9: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

9

(m1s^2 + (b1 + b2)s + (k1 + k2))Z1(s) - (b2s + k2)Z2(s) = (b1s + k1)Yg(s)

-(b2s + k2)Z1(s) + (m2s^2 + b2s + k2)Z2(s) = 0

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Hàm truyền - Transfer function

>> m1 = 10000; m2 = 150; b1 = 300000; b2 =1200; k1 =100000; k2 = 11000;

>> s = tf('s');! tf function allows the variable s to be used symbolically in the frequency domains

>> higher_tf = (b2*s+k2)*(b1*s+k1)/((m1*s^2 + (b1+b2)*s +(k1+k2))*(m2*s^2+b2*s+k2)-(b2*s+k2)^2)

Transfer function:3.6e008 s^2 + 3.42e009 s + 1.1e009-----------------------------------------------------------------------------------------------1.5e006 s^4 + 5.718e007 s^3 + 4.867e008 s^2 +3.42e009 s + 1.1e009

Khai báo hàm truyền trực tiếp

Page 10: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

10

Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặpmột thay đổi đột ngột về độ cao yg = 0.1m như gặp vỉa hè.

>> yg = 0.1;>> step(yg * higher_tf)

Xem đáp ứng theo tần số bằng giản đồ Bode – mô tả xe đáp ứng thế nào khi xe đivào đường lồi lõm theo nhiều tần số khác nhau.

>> bode(higher_tf)

Page 11: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

11

POLES AND ZEROSCác poles - cực xuất hiện khi hàm truyền đạt vôi định do mẫu số bằng 0.

>> pole(higher_tf)ans =-29.7661-4.0084 + 7.5498i-4.0084 - 7.5498i-0.3372! For this system there are two real poles and one pair of complex conjugates.

Các điểm không – zeros xuất hiện khi giá trị của hàm truyền bằng không do tử sốbằng 0.

>> tzero(higher_tf)ans =-9.1667-0.3333

Giản đồ cực và điểm không trong mặt phẳng phức.

>> pzmap(higher_tf)

Page 12: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

12

>> pole(higher_tf)ans =-29.7661-4.0084 + 7.5498i-4.0084 - 7.5498i-0.3372

NATURAL FREQUENCYHệ bậc 2 đánh giá bằng tần số tự nhiên (tần số riêng - naturalFrequency), tần số cộng hưởng (resonant frequency) và hệ số giảm chấn (damping ratio).

Hệ bậc cao hơn: các tần số riêng, tần số cộng hưởng và hệ số giảm chấn tạo thànhtừng cặp điểm cực liên hợp (cặp số phức liên hợp - pair of complex conjugate poles). Có thể có nhiều tần số riêng tùy theo số cặp cực liên hợp.

Tần số riêng bằng biên độ - magnitude của mỗi cặp cực liên hợp.

1 cặp cực liên hợp – 1 tần số riêng xác định theo định lý Pythagorian:

>> wn = sqrt(4.0084^2 + 7.5498^2)wn = 8.5479

RESONANT FREQUENCYTần số công hưởng liên hệ với tần số riêng nhưng không hoàn toàn giống hệt.Tần số cộng hưởng có chịu ảnh hưởng của tính giảm chấn của hệ thống.

Tần số cộng hưởng (rad/s) bằng phần ảo của cạp cực liên hợp.

Ơ đây chỉ có 1 tần số cộng hưởng 7.5498 rad/s.

>> pole(higher_tf)ans =-29.7661-4.0084 + 7.5498i-4.0084 - 7.5498i-0.3372

Page 13: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

13

DAMPING RATIOHệ số giảm chấn của hệ thống có thể xác định nhờ lệnh:

>> damp(higher_tf)

Eigenvalue Damping Freq. (rad/s)-3.37e-001 1.00e+000 3.37e-001-4.01e+000 + 7.55e+000i 4.69e-001 8.55e+000-4.01e+000 - 7.55e+000i 4.69e-001 8.55e+000-2.98e+001 1.00e+000 2.98e+001

Hệ số giảm chấn của hệ thống có thể xác địnhbằng tính toán như tỉ số phần thực và phần ảocủa cặp cực liên hợp:>> damp = 4.0084 / sqrt(4.0084^2 + 7.5498^2)damp =0.4689

DC GAINDC gain là giới hạn của hàm truyền khi s tiến về 0.

Lẽ thường thì DC gain của hệ thống ghế - xe bằng 1 (vì sau khi gặp một cú sốctrên đường chạy, sau một lúc dao động hệ thống trở lại vị trí cũ).

Dung lệnh của MATLAB tìm DC gain:

>> dcgain(higher_tf)ans =1

Có hai cách khác tìm DC gain:- Nhìn giản đồ Bode, quan sát biên độ thế nào khi tần số dần về 0.DC Gain = 10 M(0)/20

Page 14: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

14

Khi tần số dần về 0, biên độ cũng dần về 0, vậy:

>> dcgain = 10^(0/20)dcgain =1

- Hay xác định giá trị hàm truyền khi s bằng 0:Cho s=0 và tính hàm truyền:

>> s=0;

>> (b2*s+k2)*(b1*s+k1)/((m1*s^2 + (b1+b2)*s +(k1+k2))*(m2*s^2+b2*s+k2)-(b2*s+k2)^2)

ans =1

Page 15: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

15

SETTLING TIMEThời gian thiết lập ổn định (settling time) xác định bằng cách quan sát đáp ứngbước (step response) khi nào thì đạt “dao động chỉ còn trong khoảng 2% của giá trịổn định cuối cùng” (khi đỉnh hay đáy dao động trong khoảng 0.98 và 1.02).

Theo đồ thị đáp ứng tathấy thời gian thiết lậpổn định là 1.15 s.

Simulink

Page 16: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

16

Các khối của Simulink

Sum: y = x1 + x2++

integrator: dq / dt = x, y = q1/s

* Multiplier: y = x1 * x2

c Gain: y = c * x

cConstant: y = c

f(x)Function: y = f(x)

Sinusgenerator: y = sin (t)

Subsystem: Placeholder for a subnetwork model

1Inport: Input from an external model

1Outport: Output to an external model

Hệ bậc 1– constant input to exponential decay

òx + q

-c

( , ) ( )

At equilibrium,

0 = /eq

dqf q x f q x cq

dt

dqx cq q x c

dt

= = -

= - ® =

( ) ( )difference t x cq t= -

/eqq x c=

Page 17: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

17

Hệ bậc 2 - Giao động có giảm chấn

F(t)

x

d

k

m òF(t) + v

-d

ò x

-k

(a) (b)

m = 1

Page 18: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

18

Page 19: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

19

Ví dụ:0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 20: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

20

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 21: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

21

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 22: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

22

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 23: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

23

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

0 = -m1z1" + b1(yg(t)' - z1') + k1(yg(t) - z1) - b2(z1' - z2') - k2(z1 - z2)0 = - m2z2" + b2(z1' - z2') + k2(z1 - z2)

Page 24: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

24

>> m1 = 10000; m2 = 150; b1 = 300000; b2 =1200; k1 = 100000;k2 = 11000;

SQUARE WAVE RESPONSE

Báo lỗi:Warning: Unable to reduce the step size without violating a minimum step size of3.552713678800488e-015 at time 1.000000000000002 for model 'higher'.

Warning: Unable to meet the relative error tolerance of 0.001, using an effective relative tolerance of 0.004666960926886673.

Warning: Unable to reduce the step size without violating a minimum step size of3.5527136788005e-015 at time 1.000000000000003 for model 'higher'.

Warning: Unable to reduce the step size without violating a minimum step size of3.552713678800513e-015 at time 1.000000000000007 for model 'higher'.

Warning: Unable to reduce the step size without violating a minimum step size of7.105427357600962e-015 at time 2.000000000000002 for model 'higher'.

Lỗi do: khối “đạo hàm” không thể đạo hàm hàm tín hiệu hình sóng vuông không liêntục.

Page 25: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

25

Ta thay thế khối “đạo hàm” bằng khối “hàm truyền - transfer function” gần đúng với“khối đạo hàm” (transfer function with a high pass filter that is a good approximation of a derivative). Ở đây chọn tần số cao cỡ 100 lần của tần số hệthống

t bằng 1/100 hằng số thời gian nhỏ nhất của hệ thống (t = 0.001) (hằng số tời gian nhỏ nhất 0,2 s).

Page 26: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

26

SINUSOIDAL RESPONSE

Page 27: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

27

Phóng to khu vực 1 khung sóngvuông

Page 28: DLH Matlab simulink - hcmuaf.edu.vn · 10 Lệnh “Step” cho xem ghế của xe đáp ứng thế nào với đầu vào bước – xe gặp một thay đổi đột ngột về

28

STEP RESPONSETrong Simulink Library Browser – Simulink, chọn Sources và lấy Step source từ cột bên phải. Nối đuôi của yg(t) với Step source output. Lưu ý thay đổi khối đạohàm bằng khối hàm truyền gần đúng để đạo hàm input dạng bước.