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

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

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 (203.11 KB, 18 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
BỘ MÔN: TỰ ĐỘNG HÓA CÔNG NGHIỆP

BÀI TẬP DÀI SỐ 1
MÔN HỌC:
MÔ HÌNH HÓA VÀ MÔ PHỎNG

Giảng viên hướng dẫn: TS. Đỗ Mạnh Cường
Sinh viên thực hiện: Nhóm 1
1. Lê Văn Thanh

MSSV: 20112270

2. Hồ Trọng Đạt

MSSV: 20112569

3. Nguyễn Hoàng Thạch

MSSV: 20112216

4. Nguyễn Anh Ngọc

MSSV: 20112634

5. Nguyễn Trùng Dương

MSSV: 20111319



HÀ NỘI, 9-2015


Mục lục

MỤC LỤC
DANH SÁCH HÌNH VẼ..........................................................................2
ĐỀ BÀI.................................................................................................3
1. Thiết lập phương trình sai phân.....................................................5
2. Viết chương trình...........................................................................6
3. Khảo sát lại hệ bằng Simulink và so sánh với kết quả tính toán. 14
TÀI LIỆU THAM KHẢO........................................................................16


Danh sách hình vẽ

DANH SÁCH HÌNH VẼ

Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình

-


1:
2:
3:
4:
5:
6:
7:
8:
9:

Sơ đồ cấu trúc.....................................................................3
Nhập số liệu........................................................................9
Đặc tính quá độ...................................................................9
Đặc tính quá độ.................................................................10
Đặc tính quá độ, giai đoạn xác lập...................................10
Đặc tính quá độ.................................................................11
Kết quả..............................................................................12
Sơ đồ simulink...................................................................13
Đặc tính quá độ.................................................................13


Đề bài

ĐỀ BÀI
Đề bài tập dài số 1: Mô hình hóa hệ thống liên tục
Nội dung: Dùng máy tính khảo sát quá trình quá độ của hệ điều khiển tự động.
Yêu cầu:
1. Lập phương trình sai phân của hệ thống.
2. Chọn thời gian cắt mẫu
3. Viết chương trình tính toán mô phỏng hệ với tín hiệu vào dạng bước nhảy, gồm:

-

Số bước tính: tối thiểu 1000 bước.

-

Vẽ đồ hoạ đặc tính quá độ từ dữ liệu đã tính.

-

Chương trình mô phỏng cho phép nhập và mô phỏng với các giá trị tham số tuỳ ý.

-

In ra màn hình các chỉ tiêu đánh giá:
+) 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
+) Thời gian đạt giá trị y[k]ôđ
+) 100 giá trị tính toán: y[10*i] (các giá trị cách nhau 10 bước tính)
+) Khảo sát lại hệ bằng Simulink và so sánh với kết quả tính toán.

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

Hình - 1: Sơ đồ cấu trúc

U(t)=1(t);



Đề bài

K1= 100; K2 = 1; T1 = 0,01; T2 = 0,03; Thời gian trích mẫu T = 0,001.


Thiết lập phương trình sai phân

1. Thiết lập phương trình sai phân
Đối tượng điều khiển có hàm truyền như sau:

Sử dụng phương pháp ZOH ta chuyển sang miền Z thời gian trích mẫu T:
Nên
Trong đó

Số hóa bộ điều khiển tích phân ta có:
Hàm truyền của hệ kín trên miền Z như sau:
Trong đó:
b1k= T*b1; b2k= T*b2;
a1k= a1+T*b1-1; a2k= a2-a1+b2*T;
a3k=-a2;
Từ hàm truyền hệ kín trên miền Z ta có phương trình sai phân sau:
y(k)= u(k-1)*b1k + b2k*u(k-2) – y(k-1)*a1k – y(k-2)*a2k – y(k-3)*a3k;


Viết chương trình

2. Viết chương trình
Viết chương trình tính toán mô phỏng hệ với tín hiệu vào dạng bước nhảy, sử dụng
Turbo C++ gồm:
Số bước tính: tối thiểu 1000 bước.

Vẽ đồ hoạ đặc tính quá độ từ dữ liệu đã tính.
Chương trình mô phỏng cho phép nhập và mô phỏng với các giá trị tham số tuỳ ý.
In ra màn hình các chỉ tiêu đánh giá:
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
Thời gian đạt giá trị y[k]ôđ
100 giá trịtính toán: y[10*i] (các giá trị cách nhau 10 bước tính)
Để thực hiện yêu cầu trên thì chương trình được viết trên Turbo C++
Chương trình C như sau:
// khai bao các thư viện cần dùng
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<snap.h>
#include<math.h>
void main()
{
int mh=0,mode=0,i,k;
//so lieu dau vao float K1,K2,T1,T2,T;


Viết chương trình

//cac bien su dung float a,b;
float b1,b2,a1,a2;
float b1k,b2k,a1k,a2k,a3k;

float yk3,yk2,yk1,yk,uk2,uk1,uk;
float Tod,Tod1,ytren,yduoi,yod,overshoot; float Tmax=0,ymax;
int counter;
system("cls");//xóa màn hình
//nhập số liệu đầu vào printf("nhap K1="); scanf("%f",&K1); printf("\nnhap K2=");
scanf("%f",&K2); printf("\nnhap T1="); scanf("%f",&T1); printf("\nnhap T2=");
scanf("%f",&T2); printf("\nnhap T="); scanf("%f",&T);
// khoi tao a=exp(-T/T1);
b=exp(-T/T2);
b1=K1*(-a*T1+b*T2+T1-T2)/(T1-T2); b2=K1*(a*b*(T1-T2)+T2*a-T1*b)/(T1-T2);
a1=-(a+b);
a2=a*b; b1k=T*b1; b2k=T*b2;
a1k=a1+T*b1-1; a2k=a2-a1+b2*T; a3k=-a2;
//tính toán thời gian ổn định Tod và giá trị xác lập yod yk3=0;
yk2=0; yk1=0; yk =0; uk2=0; uk1=0; uk =1; Tod=0; Tod1=0;
ytren=1.05;yduoi=0.95;counter=0;// sai so 5% for(i=0;i<2500;i++)
{
yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k; if
((ytren>=yk)&&(yk>=yduoi))
{ Tod1=i*T; counter++; } else {Tod1=0;counter=0;} if (counter==1) Tod=Tod1;
yk3=yk2;
yk2=yk1; yk1=yk; uk2=uk1; uk1=uk;
}
yod=yk;
//tính toán độ quá điều chỉnh overshoot , giá trị cực đại ymax và thời gian đạt giá trị cực
đại Tmax
yk3=0; yk2=0; yk1=0; uk2=0; uk1=0; uk=1; ymax=yk; Tmax=0;
for(i=0;i<2500;i++)



Viết chương trình

{
yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k; if(ymax{Tmax=i*T;ymax=yk;}
yk3=yk2; yk2=yk1; yk1=yk; uk2=uk1; uk1=uk;
}
overshoot=(ymax-yod)/yod*100;
// ve do thi mh=mode=0;
initgraph(&mh,&mode,"C:\\TC\\BGI");
setbkcolor(15); setcolor(8);
line(0,240,639,240); //buoc nhay 1 don vi outtextxy(8,232,"1");
line(0,228,639,228);//gioi han tren outtextxy(8,220,"1.05"); line(0,252,639,252);//duoi
han duoi outtextxy(8,244,"0.95"); line(4,0,4,480);//tung do line(0,472,630,472);//hoanh
do
yk3=0; yk2=0; yk1=0;
yk =0; uk2=0; uk1=0; uk =1;
for(i=0;i<640;i++)
{
yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k; yk3=yk2;
yk2=yk1; yk1=yk; uk2=uk1; uk1=uk; if(iputpixel(i,getmaxy()-floor(yk*240),1);
}
delay(1000); cleardevice();
setbkcolor(15); setcolor(8);
line(0,240,639,240); //buoc nhay 1 don vi outtextxy(8,232,"1");
line(0,228,639,228);//gioi han tren
outtextxy(8,220,"1.05"); line(0,252,639,252);//duoi han duoi outtextxy(8,244,"0.95");
line(0,472,630,472);//hoanh do for(i=0;i<640;i++)
{

yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k; yk3=yk2;
yk2=yk1; yk1=yk; uk2=uk1; uk1=uk; if(iputpixel(i,getmaxy()-floor(yk*240),1);


Viết chương trình

}
delay(1000); cleardevice();
setbkcolor(15); setcolor(8);
line(0,240,639,240); //buoc nhay 1 don vi outtextxy(8,232,"1");
line(0,228,639,228);//gioi han tren
outtextxy(8,220,"1.05"); line(0,252,639,252);//duoi han duoi outtextxy(8,244,"0.95");
line(0,472,630,472);//hoanh do for(i=0;i<640;i++)
{
yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k; yk3=yk2;
yk2=yk1; yk1=yk; uk2=uk1; uk1=uk; if(iputpixel(i,getmaxy()-floor(yk*240),1);
}
delay(1000);
capture("C:\\TC\\Capture\\Capture1.jpg"); closegraph();//đóng màn hình đồ họa
printf("gia tri cuc dai cua tin hieu ra : y[k]max=%f",ymax); printf("\ndo qua dieu chinh
: overshoot=%f %",overshoot); printf("\ngia tri on dinh cua tin hieu ra : yod=
%f",yod);
printf("\nthoi gian dat gia tri y[k]max
gian dat gia tri y[k]od : Tyod=%f s",Tod);

: Tymax=%f s",Tmax); printf("\nthoi

printf("\n100 gia tri tinh toan : y[10*i] (cac gia tri cach nhau 10 buoc tinh)\n"); yk3=0;

yk2=0; yk1=0; yk=0; uk2=0; uk1=0; uk=1; i=0;
counter=0; for(k=0;k<1000;k++)
{ yk=uk1*b1k + b2k*uk2 - yk1*a1k - yk2*a2k - yk3*a3k;
yk3=yk2; yk2=yk1; yk1=yk; uk2=uk1; uk1=uk; i++;
if(i==10) {printf("%.4f ",yk);i=0;counter++;}
if(counter==10) {counter=0;printf("\n");}
}
getch();
}


Viết chương trình

Khi chạy chạy chương trình màn hình sẽ hiện ra số liệu cần nhập như sau:

Hình - 2: Nhập số liệu

Sau khi nhập số liệu Turbo C++ sẽ vẽ đặc tính quá độ từ dữ liệu đã tính :

Hình - 3: Đặc tính quá độ


Viết chương trình

Hình - 4: Đặc tính quá độ

Hình - 5: Đặc tính quá độ, giai đoạn xác lập


Viết chương trình


Hình - 6: Đặc tính quá độ

Tiếp theo in ra màn hình các chỉ tiêu đánh giá:
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
Thời gian đạt giá trị y[k]ôđ
100á trịtính toán: y[10*i] (các giá trị cách nhau 10 bước tính)


Viết chương trình

Hình - 7: Kết quả


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

3. Khảo sát lại hệ bằng Simulink và so sánh với kết quả tính toán.

Hình - 8: Sơ đồ simulink

Hình - 9: Đặc tính quá độ


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

Thời gian ổn định là 1.0028 Giá trị ổn định là 0.9999
Giá trị cực đại của tín hiệu ra : 1.7782 Thời gian đạt giá trị max : 0.0692s Độ quá điều

chỉnh :77,82%
Nhận xét : với thời gian trích mẫu T=0.001 thì đặc tính quá độ vẽ từ phương trình sai
phân xấp xỉ với đối tượng liên tục.


Tài liệu tham khảo

TÀI LIỆU THAM KHẢO
[1] GS. TS. Nguyễn Công Hiền, TS. Nguyễn Phạm Thục Anh. Mô hình hóa hệ thống
và mô phỏng. Nhà xuất bản Khoa học và kỹ thuật Hà Nội. 2006.
[2] Nguyễn Doãn Phước. Lý thuyết điều khiển tuyến tính. Nhà xuất bản Khoa học và kỹ
thuật Hà Nội. 2009.
[3] Kannan M. Moudgalya. Digital control. John Wiley & Sons, Ltd. 2007.



×