VÍ DỤ MINH HỌA

Một phần của tài liệu Tài liệu học tập mô hình hóa và mô phỏng hệ thống điều khiển (Trang 32 - 41)

Cho hệ điều khiển tự động sau cú sơ đồ cấu trỳc như trờn hỡnh4.7 với cỏc tham số như sau: u(t) = 1(t);

K1 = 100; T1 = 0,01; K2 = 0,5; T2 = 0,02.

Bước cắt mẫu chọn T = 0,001 Hóy mụ hỡnh húa hệ trờn mỏy tớnh, viết chương trỡnh trờn mỏy tớnh

bằng ngụn ngữ Pascal với cỏc yờu cầu cụ thể sau:

- Tỡm hàm quỏ độ.

In ra 100 kết quả bằng số.

- Vẽđường cong quỏ độ y(t).

T z 1 2 z 1 + − U(z) [U(k)] Y(z) [Y(k)] Hỡnh 4.6. Sơ đồ cấu trỳc của tớch phõn số 1 s 1 1 2 K (T s 1)(T s 1)+ + K2 u(t) u(t)

33

- Dựng phần mềm Matlab để kiểm tra kết quả tớnh.

Giải

1. Tỡm phương trỡnh sai phõn ca h

Ta cú hàm truyền hệ kớn như sau:

+ + = = + + + + + + + 1 1 2 1 3 2 1 2 1 2 1 2 1 2 1 2 K 1 s (T s 1)(T s 1) K W(s) K K 1 T T s (T T )s s K K 1 s (T s 1)(T s 1) Thay = − + 2 z 1 s

T z 1ta nhận được hàm truyền giỏn đoạn của hệ W(z):

+ + + = = + + + 3 3 2 3 2 KT (z 3z 3z 1) Y(z) W(z) Az Bz Cz D U(z) , trong đú: A = 8T1T2 + 4T1T + 4T2T + 2T2 + K1K2T3 B = 24T1T2 - 4T1T - 4T2T + 2T2 + 3K1K2T3 C = 24T1T2 - 4T1T - 4T2T - 2T2 + 3K1K2T3 D = 8T1T2 + 4T1T + 4T2T - 2T2 + 3K1K2T3 Ta cú hàm sai phõn sau:

Az3Y(z)+Bz2Y(z)+CzY(z)+DY(z) = K1T3[z3U(z)+3z2U(z)+3zU(z)+U(z)]

Dựng tớnh chất dịch gốc của biến đổi Z ta tỡm được phương trỡnh sai phõn tương ứng với phương trỡnh trờn:

AY[k+3]+BY[k+2]+CY[k+1]+DY[k]=K1T3(U[k+3]+3U[k+2]+3U[k+1]+U[k]) Vỡ tớn hiệu vào là tớn hiệu nhảy cấp u(t) = 1(t) nờn ta cú:

U[k+3]=U[k+2]=U[k+1]=U[k]=1

Vậy ta cú: AY[k+3]+BY[k+2]+CY[k+1]+DY[k] = 8K1T3

Cuối cựng ta tỡm được phương trỡnh sai phõn của hệ điều khiển tự động là: Y[k+3] = (-BY[k+2]-CY[k+1]-DY[k] + 8K1T3)/A

Từ phương trỡnh sai phõn ta viết chương trỡnh mỏy tớnh để tỡm đỏp ứng ra y(t) của hệ khi tớn hiệu vào là hàm nhảy cấp 1(t). Ở phần sau là chương trỡnh mụ hỡnh húa của hệ đó cho được viết bằng ngụn ngữ Pascal.

2. Chương trỡnh Pascal program MO_HINH_HOA; uses crt,graph;var a,b,c,d,max,k1,k2,t1,t2,t,tm,tod,xicma:real; gd,gm,k,km,ky,i:integer; y:array[0..1000]of real; st:string; BEGIN

34 clrscr; k1:=100; k2:=0.5; t1:=0.01; t2:=0.02; t:=0.002; y[0]:=0; y[1]:=0; y[2]:=0; a:=8*t1*t2+4*t1*t+4*t2*t+2*t*t+k1*k2*t*t*t; b:=-24*t1*t2-4*t1*t-4*t2*t+2*t*t+3*k1*k2*t*t*t; c:=24*t1*t2-4*t1*t-4*t2*t-2*t*t+3*k1*k2*t*t*t; d:=-8*t1*t2+4*t1*t+4*t2*t-2*t*t+k1*k2*t*t*t; for k:=0 to 997 do begin y[k+3]:=(-b*y[k+2]-c*y[k+1]-d*y[k]+8*k1*t*t*t)/a; {in ra 100 gia tri}

end;

writeln('100 gia tri cach nhau'); for k:=1 to 100 do

begin

write('y[',k*10:3,']=',y[k*10]:5:4); if (k mod 6)=0 then writeln; if k=102 then readln;

end; writeln; {tim gia tri ymax} max:=y[0]; for k:=0 to 1000 do if y[k]>max then begin max:=y[k]; km:=k; end;

{Tim khoang thoi gian on dinh Tod} k:=1000;

while abs((y[k]-(1/k2))/(1/k2))<=0.05 do k:=k-1;

35 {in cac gia tri ra man hinh}

writeln('Thoi gian on dinh la Tod:',tod:8:4); xicma:=(max-1/k2)*100/(1/k2);

writeln('Gia tri cuc dai la ymax=',max:8:4);

writeln('Do qua dieu chinh xicma=',xicma:8:4,'%'); writeln('Thoi gian dat cuc dai la tm=',km*t:8:4); {Ve hinh}

write('Hay cho he so gian truc y:ky='); readln(ky); gd:=detect;

initgraph(gd,gm,'C:\TP\BGI'); setbkcolor(white);

setcolor(blue); outtextxy(53,5,'Y');

outtextxy(600,360,'t(s)'); {Ve cac truc toa do}

outtextxy(240,390,'KHAO SAT QTQD HE THONG'); str(max:8:4,st);

outtextxy(20,410,'GIA TRI CUC DAI LA:Ymax='+st); str(km*t:8:4,st); outtextxy(320,410,'THOI GIAN DE DAT CUC DAI:Tmax='+st); str(xicma:8:4,st);

outtextxy(20,430,'DO QUA DIEU CHINH LA: xicma%='+st); str(Tod:8:4,st);

outtextxy(320,430,'THOI GIAN ON DINH LA: Tod='+st); setcolor(5);

line(50,350,620,350); {Ve truc toa do} line(50,5,50,350);

line(50,5,47,15); {Ve mui ten truc y} line(50,5,53,15);

line(620,350,615,347); {Ve mui ten truc t}

line(620,350,615,353); for k:=1 to 6 do {Khac do truc t} begin

str(100*(k-1)*t:2:1,st); outtextxy(k*100-60,357,st);

line(k*100-50,347,k*100-50,353); end;

for k:=0 to 10 do {khac do truc y} begin

str(k/(5*k2):4:2,st);

36 line(47,350-round(ky*k/(5*k2)),53,350-round(ky*k/(5*k2))); end; str(max:6:4,st); outtextxy(round(tm/t)+60,340-round(ky*max),'Ymax='+st); str(1/k2:2:1,st); outtextxy(560,335-round(ky/k2),'Yod='+st); outtextxy(km+50,330,'Tmax'); outtextxy(round(tod/t)+50,330,'Tod'); outtextxy(round(tod/t)+70,315-round(ky/k2),'5%Yod'); moveto(50,350); setlinestyle(Dottedln,0,1); line(round(tod/t)+49,350-round(ky*y[round(tod/t)]),round(tod/t)+49,350); line(50,350-round(ky*max),km+50,350-round(ky*max)); line(km+50,350-round(ky*max),km+50,350);

line(50,350-round(1.05*ky/k2),620,350-round(1.05*ky/k2)); {duong sai so} line(50,350-round(0.95*ky/k2),620,350-round(0.95*ky/k2));

setlinestyle(SolidLn,0,1);

line(50,350-round(ky/k2),620,350-round(ky/k2)); {duong on dinh} line(round(tod/t)+100,350-round(1.05*ky/k2),round(tod/t)+100,330- round(1.05*ky/k2)); line(round(tod/t)+100,350-round(1.05*ky/k2),round(tod/t)+97,340- round(1.05*ky/k2)); line(round(tod/t)+100,350-round(1.05*ky/k2),round(tod/t)+103,340- round(1.05*ky/k2)); line(round(tod/t)+100,350-round(0.95*ky/k2),round(tod/t)+100,370- round(0.95*ky/k2)); line(round(tod/t)+100,350-round(0.95*ky/k2),round(tod/t)+97,360- round(0.95*ky/k2)); line(round(tod/t)+100,350-round(0.95*ky/k2),round(tod/t)+103,360- round(0.95*ky/k2)); {Ve do thi} for k:=1 to 560 do begin if GraphResult<>grOK then halt(1); setlinestyle(SolidLn,$C3,ThickWidth); setcolor(Blue);lineto(k+50,350-round(ky*y[k])); end; delay(1000);

37 repeat until keypressed;

closegraph; END.

Chạy chương trỡnh cho ta kết quả như sau:

Cỏc kết quả tớnh toỏn được chạy bằng chương trỡnh mụ phỏng y[10] = 0.04337 y[20] = 0.29299 y[30] = 0.75050 y[40] = 1.31746 y[50] = 1.87936 y[60] = 2.34186 y[70] =2.64644 y[80] = 2.77405 y[90] = 2.74026

y[100] = 2.58526 y[110] = 2.36174 y[120] = 2.12303 y[130] = 1.91377 y[140] = 1.76399 y[150] = 1.68700 y[160] = 1.68067 y[170] = 1.73107 y[180] = 1.81739 y[190] = 1.91701 y[200] = 2.00984 y[210] = 2.08120 y[220] = 2.12331 y[230] = 2.13507 y[240] = 2.12090 y[250] = 2.08878 y[260] = 2.04810 y[270] = 2.00773 y[280] = 1.97460 y[290] = 1.95293 y[300] = 1.94404 y[310] = 1.94674 y[320] = 1.95810 y[330] = 1.97431 y[340] = 1.99153 y[350] = 2.00656 y[360] = 2.01725 y[370] = 2.02267 y[380] = 2.02301 y[390] = 2.01929 y[400] = 2.01301 y[410] = 2.00581 y[420] = 1.99914 y[430] = 1.99403 y[440] = 1.99105 y[450] = 1.99025 y[460] = 1.99132 y[470] = 1.99366 y[480] = 1.99660 y[490] = 1.99951 y[500] = 2.00188 y[510] = 2.00343 y[520] = 2.00405 y[530] = 2.00383 y[540] = 2.00300 y[550] = 2.00182 y[560] = 2.00058 y[570] = 1.9995 y[580] = 1.99874 y[590] = 1.99836 y[600] = 1.99834 y[610] = 1.99862 y[620] = 1.99907 y[630] = 1.99959 y[640] = 2.00007 y[650] = 2.00044 y[660] = 2.00065 y[670] = 2.00070 y[680] = 2.00062 y[690] = 2.00045 y[700] = 2.00024 y[710] = 2.00003 y[720] = 1.99986 y[730] = 1.99975 y[740] = 1.99971 y[750] = 1.99972 y[760] = 1.99979 y[770] = 1.99987 y[780] = 1.99996 y[790] = 2.00004 y[800] = 2.00009 y[810] = 2.00012 y[820] = 2.00012 y[830] = 2.00010 y[840] = 2.00007

38 y[850] = 2.00003 y[860] = 1.99999 y[870] = 1.99997

y[880] = 1.99995 y[890] = 1.99995 y[900] = 1.99996 y[910] = 1.99997 y[920] = 1.99998 y[930] = 2.00000 y[940] = 2.00001 y[950] = 2.00002 y[960] = 2.00002 y[970] = 2.00002 y[980] = 2.00002 y[990] = 9.00001

y[1000] = 2.00000

3. Chương trỡnh Matlab

Dựng phần mềm Matlab vẽ đường đặc tớnh quỏ độ của hệ điều khiển tự động nhằm đối chứng với kết quả của chương trỡnh mụ phỏng.

K1 = 100; K2 = 0.5; T1 = 0.01; T2 = 0.02;

Num = K1;%Tu so cua ham truyen W(s)

Den =

[T1*T2,T1+T2,K1*K2]; step(Num,Den)

title('Dac tinh qua do cua he DKTD')

Hỡnh 4.8. Kết quả mụ phỏng bằng ngụn ngữ Pascal

39 xlabel('t (s)')

ylabel('y(t)')

Kết qủa mụ phỏng bằng Matlab như hỡnh 4.9

4. Nhn xột v kết qu mụ phng

Chương trỡnh cho kết quả là tớn hiệu ra y(k) dưới dạng số, cứ cỏch 10 số in ra một số liệu. Chương trỡnh cũng cho kết quả dưới dạng đồ thị đường cong quỏ độ của hệ điều khiển tự động và tớnh cỏc đặc tớnh quỏ độ như: ymax, yụđ, max, Tmax, Tụđ. Kết quả cho thấy hai đường cong do chương trỡnh mụ hỡnh húa và phần mềm Matlab vẽ ra trựng nhau, điều đú chứng tỏ thuật toỏn mụ hỡnh húa là đỳng.

NỘI DUNG THẢO LUẬN

1. Nội dung phần thảo luận 1: Khỏi niệm chung về hệ thống và mụ hỡnh hệ thống 2. Nội dung phần thảo luận 2: Triển vọng phỏt triển của phương phỏp mụ hỡnh hoỏ hệ thống và mụ hỡnh hệ thống

TểM TẮT NỘI DUNG CỐT LếI

Hiểu rừ khỏi niệm và đặc điểm vai trũ của mụ hỡnh húa hệ thống và mụ phỏng. Nắm được sự triển vọng phỏt triển của cỏc phương phỏp mụ hỡnh húa hệ thống.

BÀI TẬP ỨNGDỤNG, LIấN HỆTHỰCTẾ

1. Bài tập ứng dụng, liờn hệ thực tế 1.

Tỡm hàm sai phõn của hệ liờn tục cú hàm truyền sau: = + + 2 K W(s) s(s 2a Ks K) 2. Bài tập ứng dụng, liờn hệ thực tế 2.

Hóy dựng mỏy tớnh mụ phỏng và khảo sỏt quỏ trỡnh quỏ độ của hệ liờn tục cú sơ đồ cấu trỳc như hỡnh 4.8 với cỏc thụng số sau:

K1 = 50; K2 = 0,2; T1 = 0,5; T2 = 0,1 Bước cắt mẫu T = 0,01; số bước tớnh k = 1000

Yờu cầu: - Tớnh và in ra cỏc chỉ tiờu đỏnh giỏ chất lượng sau đõy:

+ Giỏ trị cực đại của tớn hiệu ra: y(k)max. + Độ quỏ điều chỉnh: max.

+ Giỏ trị ổn định của tớn hiệu ra: y(k)ụđ. + Thời gian đạt giỏ trị y(k)max: Tmax.

+ Thời gian đạt giỏ trị y(k)ụđ: Tqđ.

- Dựng Matlab vẽ đường cong quỏ trỡnh quỏ độ của hệ trờn. So sỏnh cỏc kết quả và rỳt ra cỏc kết luận về phương phỏp mụ phỏng. 1 1 2 K (T s 1)(T s 1)+ + K2 u(t) u(t)

40

HƯỚNGDẪNTỰỞ NHÀ

Tham s ca h thng: u(t) = 1(t), T - bước cắt mẫu, tự chọn, K1 = 100, K2 = 0,5 , K2 = 0,2 T1 = 0,5, T2 = 0,2

Nhiệm vụ: - Viết phương trỡnh sai phõn của hệ điều khiển tự động.

- Sử dụng phần mềm Matlab/ Simulink, Tustin,… vẽ đường cong quỏ trỡnh quỏ độ của hệ thống đó cho. Rỳt ra kết luận. 2 1 2 K (T p 1)(T p 1)+ + K3 u(t) K (1 0,5p)1 + y(t)

41

CHƯƠNG 5

Mễ HèNH HểA CÁC HỆNGẪU NHIấN

MỤC TIấU CỦACHƯƠNG

- Hiểu rừ khỏi niệm chung về phương phỏp mụ hỡnh húa cỏc hệ ngẫu nhiờn. - Nắm được sự phõn bố xỏc suất của cỏc biến ngẫu nhiờn

- Vận dụng cỏc phương phỏp tạo số ngẫu nhiờn cú phõn bố mong muốn.

- Về thỏi độ: Học sinh, Sinh viờn hiểu rừ khỏi niệm và đặc điểm mụ hỡnh húa cỏc hệ ngẫu nhiờn.

Một phần của tài liệu Tài liệu học tập mô hình hóa và mô phỏng hệ thống điều khiển (Trang 32 - 41)

Tải bản đầy đủ (PDF)

(108 trang)