25/05/2018, 09:38

Mô hình hệ thống điều khiển tự động

MỤC TIÊU Trong bài thí nghiệm này chúng ta sẽ tìm hiểu phương pháp mô hình hóa một hệ điều khiển tự động, bao gồm: Hàm truyền và phương trình trạng thái của hệ thống Đáp ứng vòng hở và đáp ứng vòng ...

MỤC TIÊU

Trong bài thí nghiệm này chúng ta sẽ tìm hiểu phương pháp mô hình hóa một hệ điều khiển tự động, bao gồm:

  • Hàm truyền và phương trình trạng thái của hệ thống
  • Đáp ứng vòng hở và đáp ứng vòng kín của hệ thống
  • Xây dựng bộ điều khiển PID
  • Chỉnh định thông số của bộ đỉều khiển và khảo sát đáp ứng của hệ thống.
Hình 5.1 – Một mô hình hệ thống điều khiển tiêu biểu

THAM KHẢO

[1]. The Mathworks Inc., Matlab Notebook User’s Guide – Control toolbox, 2003.

[2]. Phạm Văn Tấn, Bài giảng môn Cơ sở Tự động học, Bộ môn Viễn Thông và Tự động hóa, khoa Công nghệ Thông tin, Đại học Cần Thơ, 2001.

[3]. Nguyễn Công Định, Phân tích và Tổng hợp các hệ thống Điều khiển bằng máy tính, NXB Khoa học và Kỹ thuật, 2002.

[4]. http://www.engin.umich.edu/group/ctm

[5]. http://www.shu.ac.uk/schools/eng/teaching/rw/pidtutorial.htm

THỰC HÀNH

Để có thể thực hiện tốt bài thí nghiệm, sinh viên cần nắm vững các kiến thức cơ bản về Điều khiển tự động (Cơ sở tự động học). Do đó, bài này không bắt buộc đối với các sinh viên Tin học (nếu có) và các sinh viên Điện tử theo hướng Viễn thông. Trong trường hợp đó, có thể sinh viên đã thực tập bài 4 hoặc sinh viên có thể chuyển sang bài 7.

Hàm truyền và phương trình trạng thái của hệ thống

Trong điều khiển tự động, người ta thường biểu diễn một hệ thống vật lý bằng hàm truyền (transfer function) hay phương trình trạng thái (state-space equation) của nó (đối với các hệ phi tuyến, để đạt được điều này, người ta phải dùng phương pháp tuyến tính hóa từng đoạn).

Giả sử có hệ thống điều khiển tốc độ motor DC như hình vẽ 5.2 [4]. Trong đó:

J = 0.01 kgm2/s2 là moment quán tính của rotor

b = 0.1 Nms hệ số ma sát

K=Ke=Kt=0.01 Nm/Amp các hằng số sức điện động

R = 1 ohm điện trở

L = 0.5 H điện cảm

I: dòng điện chạy trong cuộn dây của motor

V: điện áp trên hai đầu cuộn dây motor – ngõ vào

θ: vị trí trục – ngõ ra

Hình 5.2 – Mô hình toán một hệ điều khiển tốc độ motor DC

Phương trình vi phân mô tả hệ thống như sau:

J d 2 θ dt 2 + b dθ dt = Ki L di dt + Ri = V − K dθ dt alignl { stack { size 12{J { {d rSup { size 8{2} } θ} over { ital "dt" rSup { size 8{2} } } } +b { {dθ} over { ital "dt"} } = ital "Ki"} {} # L { { ital "di"} over { ital "dt"} } + ital "Ri"=V - K { {dθ} over { ital "dt"} } {} } } {}

1. Hàm truyền: Biến đổi Laplace 2 vế của phương trình trên ta được:

s ( Js + b ) Θ ( s ) = KI ( s ) ( Ls + R ) I ( s ) = V − Ks Θ ( s ) alignl { stack { size 12{s ( ital "Js"+b ) Θ ( s ) =KI ( s ) } {} # size 12{ ( ital "Ls"+R ) I ( s ) =V - ital "Ks"Θ ( s ) } {} } } {}

Suy ra: (Ls+R)(Js+b)+K2sΘ=KV size 12{ left [ ( ital "Ls"+R ) ( ital "Js"+b ) +K rSup { size 8{2} } right ]sΘ=KV} {} hay θV=K(Ls+R)(Js+b)+K2 size 12{ { { {θ} cSup { size 8{ cdot } } } over {V} } = { {K} over { ( ital "Ls"+R ) ( ital "Js"+b ) +K rSup { size 8{2} } } } } {}

Biểu diễn hàm truyền này trong Matlab ta thực hiện như sau (sinh viên nên lưu thành file.m):

>>J=0.01;

>>b=0.1;

>>K=0.01;

>>R=1;

>>L=0.5;

>>num=K; % tử số của hàm truyền

>>den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; % mẫu số hàm truyền

>>hamtruyen = tf(num,den)

  • Đáp ứng bước vòng hở:

>>step(num,den) % hoac

>>step(hamtruyen)

  • Đáp ứng xung vòng hở:

>>impulse(hamtruyen)

2. Phương trình trạng thái: Dạng tổng quát:

X = AX + BU Y = CX + DU alignl { stack { size 12{ {X} cSup { size 8{ cdot } } =AX+"BU"} {} # Y="CX"+"DU" {} } } {}

với X là véctơ trạng thái, U là véctơ tín hiệu vào và Y là véctơ tín hiệu ra.

  • Biến trạng thái và phương trình trạng thái: Từ phương trình vi phân mô tả hệ thống, nếu đặt x1=θ size 12{x rSub { size 8{1} } = {θ} cSup { size 8{ cdot } } } {}và x2=i size 12{x rSub { size 8{2} } =i} {}, ta có:
  • Biểu diễn phương trình trạng thái trong Matlab như sau:

>>J=0.01;

>>b=0.1;

>>K=0.01;

>>R=1;

>>L=0.5;

>>A = [-b/J K/J; -K/L -R/L];

>>B = [0; 1/L];

>>C=[1 0];

>>D=0;

  • Đáp ứng bước vòng hở:

>>step(A,B,C,D)

  • Đáp ứng xung vòng hở:

>>impulse(A,B,C,D)

3. Ta có thể chuyển đổi qua lại giữa hàm truyền và phương trình trạng thái bằng lệnh sau:

>>[num,den]=ss2tf(A,B,C,D) % từ PT trạng thái sang hàm truyền

>>[A,B,C,D]=tf2ss(num,den) % từ hàm truyền sang PT trạng thái

4. Khảo sát đáp ứng vòng hở của hệ thống đối với tín hiệu bất kỳ

(Hình 5.3)

Phải đảm bảo rằng trong Workspace còn biến hamtruyen của câu 1, sinh viên có thể dùng lệnh lsim để khảo sát đáp ứng của hệ đối với tín hiệu bất kỳ. Giả sử đó là tín hiệu sin:

>>close all

>>t=0:0.1:2*pi;

>>u=sin(pi/4*t);

>>lsim(hamtruyen,u,t) % mo phong dap ung voi tin hieu vao u

Bộ điều khiển PID

Cấu trúc một hệ thống điều khiển PID như hình sau:

Hình 5.4 – Sơ đồ khối hệ điều khiển PID

Trong đó hàm truyền của khâu PID là: KP+KIs+KDs=KDs2+KPs+KIs size 12{K rSub { size 8{P} } + { {K rSub { size 8{I} } } over {s} } +K rSub { size 8{D} } s= { {K rSub { size 8{D} } s rSup { size 8{2} } +K rSub { size 8{P} } s+K rSub { size 8{I} } } over {s} } } {}

với: KP là độ lợi của khâu tỉ lệ (Proportional gain)

KI là độ lợi của khâu tích phân (Integral gain)

KD là độ lợi khâu vi phân (Derivative gain)

Việc hiệu chỉnh phù hợp 3 thông số KP, KI và KD sẽ làm tăng chất lượng điều khiển. Ảnh hưởng của 3 thông số này lên hệ thống như sau:

1. Bộ điều khiển tỉ lệ P:

Hình 5.5 – Bộ điều khiển tỉ lệ P

  • Thực hiện trong Matlab: Ta có hàm truyền của motor DC như III.1.1:

>>J=0.01;

>>b=0.1;

>>K=0.01;

>>R=1;

>>L=0.5;

>>num=K;

>>den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];

Khi thêm vào khâu tỉ lệ P, ta có hàm truyền vòng hở:

>>Kp=100;

>>numa=Kp*num;

>>dena=den;

Xác định hàm truyền vòng kín của hệ thống ta dùng lệnh cloop:

>>[numac,denac]=cloop(numa,dena)

Đáp ứng Step vòng kín của bộ điều khiển tỉ lệ như sau:

>>t=0:0.01:2;

>>step(numac,denac)

  • Sinh viên hãy so sánh với đáp ứng của hệ khi chưa có bộ điều khiển tỉ lệ, ở câu III.1.1 (lưu ý đến các thông số: thời gian lên, độ vọt lố, thời gian quá độ).
  • Tương tự, sinh viên hãy so sánh với đáp ứng xung.

2. Bộ điều khiển Vi tích phân tỉ lệ PID:

Hình 5.6 – Bộ điều khiển PID

Khi thêm bộ điều khiển PID, hàm truyền hở của hệ thống là:

>>Kp=100;

>>Ki=1;

>>Kd=1;

>>numc=[Kd, Kp, Ki];

>>denc=[1 0];

>>numa=conv(num,numc); % tích chập tử số

>>dena=conv(den,denc); % tích chập mẫu số

Hàm truyền vòng kín hồi tiếp âm đơn vị:

>>[numac,denac]=cloop(numa,dena);

Đáp ứng Step của hệ điều khiển PID:

>>step(numac,denac)

  • Sinh viên so sánh với đáp ứng của bộ điều khiển tỉ lệ P ở câu 1, nhận xét.
  • Dựa vào bảng tổng kết ảnh hưởng của KP, KD và KI đối với hệ thống điều khiển, sinh viên hãy thay đổi 3 thông số này và kiểm chứng đáp ứng của hệ thống.

Hiệu chỉnh thông số của bộ điều khiển PID

Một phương pháp cổ điển nhưng đơn giản và hiệu quả để chỉnh định 3 thông số KP, KI và KD của bộ điều khiển PID là phương pháp Ziegler-Nichols (Ziegler Nichols Tuning Method). Thủ tục chỉnh định như sau:

1. Chỉ điều khiển hệ thống bằng bộ điều khiển tỉ lệ KP (đặt KI=KD=0).

2. Tăng KP đến giá trị KC mà ở đó hệ thống bắt đầu bất ổn (bắt đầu xuất hiện sự giao động - điểm cực của hàm truyền kín nằm trên trục ảo jω). Xác định tần số ωc của giao động vừa đạt.

Từ 2 giá trị KC và ωc vừa đạt, các thông số số KP, KI và KD được xác định như bảng sau:

3. Tinh chỉnh lại 3 thông số này để đạt được đáp ứng như mong muốn.

1. Ví dụ: Giả sử cần thiết kế bộ điều khiển PID cho hệ thống sau:

  • Bước 1: Điều khiển hệ thống chỉ với bộ điều khiển tỉ lệ:
  • Bước 2: Xác định KC và ωc mà ở đó hệ thống bắt đầu giao động - dùng hàm rlocus của Matlab (sinh viên nên lưu thành file .m hoặc thao tác trong Matlab Editor sau đó copy và dán vào Workspace cả đoạn lệnh để dễ dàng cho việc hiệu chỉnh các thông số ở phần sau):

>>close all

>>num=5;

>>den=[1 10 100 0];

>>[numc,denc]=cloop(num,den);

>>htkin=tf(numc,denc) % ham truyen vong kin

>>rlocus(htkin); %ve qui dao nghiem

>> axis([-10 10 -15 15])

Xác định Kc và ωc bằng hàm rlocfind:

>>[Kc,Omegac] = rlocfind(htkin)

Nhấp chuột vào điểm giao nhau giữa quĩ đạo nghiệm và trục ảo của đồ thị, trong WorkSpace ta được:

Kc =

199.5793

Omegac =

-10.0145

0.0072 +10.0072i

0.0072 - 10.0072i

Như vậy ta được KC=200 và ωc = 10. Suy ra thông số của bộ điều khiển PID:

KP = 0.6KC = 120

KI = 0.318KPωc = 381.6

KD = 0.785KPc = 9.4

Thử đáp ứng của hệ:

>>Kp=120; Ki=381.5; Kd=9.4;

>>numc=[Kd, Kp, Ki];

>>denc=[1 0]; % ham truyen cua PID

>>[numac,denac]=cloop(conv(num,numc),conv(den,denc))

>>step(numac,denac)

  • Bước 3: Thực hiện tương tự như III.2.2, sinh viên hãy điều chỉnh một lượng nhỏ 3 thông số KP, KD và KI để được đáp ứng tốt hơn.

2. Sinh viên hãy thiết kế bộ điều khiển PID cho hệ thống sau:

TỰ CHỌN

1. Sinh viên hãy thiết kế bộ điều khiển Vi phân tỉ lệ (Proportional-Derivative controller):

2. Sinh viên hãy thiết kế bộ điều khiển Tích phân tỉ lệ (Proportional-Integral controller):

0