Tải bản đầy đủ (.docx) (11 trang)

Bài tập môn mô hình hóa mô phỏng HUST

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (111.47 KB, 11 trang )

MỤC LỤC

1


1.

Sơ đồ cấu trúc của hệ điều khiển tự động:

Tham số của hệ :
U(t)=1(t)
K1=10; K2=0.1 ;
Bước cắt mẫu chọn : T=0.1
2.

Lập phương trình sai phân của hệ thống
Phương trình máy tính có dạng sai phân. Vì vậy để mơ phỏng hệ điều

khiển tự động (ĐKTĐ) trên máy tính người ta phải tìm cách viết được phương
trình sai phân của hệ. Ở đây nhóm sử dụng cách tìm phương trình sai phân
bằng phương pháp toán tử.

Thay ta được:

Hàm truyền trên biến đổi thành:

2


Trong đó:
A=


B=
C=
Ta có hàm sai phân như sau :


Dùng tính chất dịch hàm gốc của biến đổi Z ta tìm được phương trình sai phân
tương ứng phương trình trên:

Tín hiệu đầu vào là xung đơn vị nên:

Vậy ta có:

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à:

3.

Chọn thời gian cắt mẫu

Để đảm bảo khả năng khơi phục lại tín hiệu liên tục từ dãy tín hiệu gián
đoạn thì tần số lấy mẫu ít nhất f m phải lớn hơn hoặc bằng 2.f max trong đó fmax là
tần số tín hiệu vào cao nhất. Thỏa mãn điều kiên fm ≥ 2.f max thì có thể khơi
phục lại tín hiệu mà khơng bị méo.
3


Đối với hệ thống điều khiển thì theo kinh nghiệm nên chọn bước cắt mẫu
sao cho : trong đó Tmin là hằng số thời gian nhỏ nhất trong hàm truyền của hệ
thống.
Đối với hệ đã cho thì hằng số thời gian nhỏ nhất là : T min = nên thời gian
trích mẫu được chọn cần thỏa mãn : 0.0625 ≤ T ≤ 0.25 . Ở đây do hệ là hệ tích

phân quán tính bậc nhất nên ta chọn chu kỳ trích mẫu là: T= 0.1s

Chương trình mơ phỏng bằng Pascal

4.

Từ phương trình sai phân ta viết chương trình máy tính để tìm đáp ứng
ra của hệ y(t) khi tín hiệu vào là hàm nhảy cấp 1(t). Sau đây là chương trình
Pascal mơ hình hóa hệ ĐKTĐ đã cho. Chương trình cho ra 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
ra kết quả dưới dạng đường cong quá độ của hệ ĐKTĐ và tính các đặc tính q
độ : Ymax, Y ơđ, бmax, Tmax, Tơđ

Program MO_HINH_HOA;
uses crt,graph;
var
a,b,c,max,k1,k2,t,tm,tod,Xicma:real;
gd,gm,km,ky,i,k:integer;
y:array[0..1000] of real;
st:string;
BEGIN
Clrscr;
write('Nhap k1 =');readln(k1);
write('Nhap k2 =');readln(k2);
4


write('Nhap chu ky trich mau T =');readln(t);
y[0]:=0;y[1]:=0;y[2]:=0;
a:=4+8*t+k1*k2*t*t;

b:=2*k1*k2*t*t-8;
c:=4-8*t+k1*k2*t*t;
for k:=0 to 997 do
y[k+2]:=(-b*y[k+1]-c*y[k]+4*k1*t*t)/a;
writeln('100 gia tri cach nhau');
for k:=0 to 100 do
begin
write(' y[',k*10:3,']=',y[k*10]:8:5);
if(k mod 4)=0 then writeln;
if k=80 then readln;
end;
{tim gia tri ymax}
Max:=y[1];
km:=0;
for k:=1 to 1000 do
if y[k]>max then
Begin
Max:=y[k];
km:=k;
end;
{tim khoang thoi gian on dinh Tod}
for k:=1 to 1000 do
if abs((y[k]-(1/k2))/(1/k2))<=0.05 then
begin
tod:=k*t;
break;
end;
5



{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:\Program Files\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 CUC DAI: Tmax='+st);
str(xicma:4:2,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);
6



line(620,350,615,347); {ve mui ten truc t}
line(620,350,615,353);
for k:=1 to 7 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 7 do { khac do truc y}
begin
str(k/(5*k2):4:2,st);
outtextxy(5,345-round(ky*k/(5*k2)),st);
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);
moveto(50,350);
setlinestyle(Dottedln,0,1);
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 }
{ ve do thi }
For k:=1 to 1000 do
Begin
If graphResult<>grOK then

Halt(1);
setlinestyle(Solidln,$C3,ThickWidth);
7


setcolor(Blue);
lineto(k+50,350-round(ky*y[k]));
end;
repeat until keypressed;
closegraph;
END.

8


-

Sau khi chạy chương trình ta được kết quả :

9


-Đặc

tính q độ của hệ thống do chương trình mơ phỏng trên Pascal vẽ :

5.

Khảo sát lại hệ bằng Simulink


-

Ta có sơ đồ khối của hệ thống trong Simulink :

-

Kết quả đáp ứng quá độ của hệ thống do Matlab vẽ :

10


Nhận xét: hai đường cong do Pascal và Matlab giống nhau. Điều đó chứng tỏ
thuật tốn đã dùng là đúng đắn.
Chú ý :
-

Khi chạy fie mô phỏng Pascal cần kiểm tra file Graph.TPU đã có trong
thư mục TP\BGI của Pascal hay chưa. Nếu chưa có cần bổ sung.

-

Trước khi chạy cần chuyển thư mục làm việc của Pascal về thư mục
BGI.

-

Nên nhập hệ số giãn trục ky =15

11




×