Ứng dụng Labview vào nghiên cứu 33 

Một phần của tài liệu Điều khiển mô hình con lắc ngược đôi bằng phương pháp LQG (Trang 50)

Tính tốn mơ hình khơng gian trạng thái thực từ phương trình trạng thái được tính bởi Maple.

Mơ phỏng mơ hình khơng gian trạng thái thực, quan sát các cực trên mặt phẳng phức. Mơ phỏng mơ hình khơng gian trạng thái thực với ma trận điều khiển K (được tính bởi phương pháp điều khiển LQR), quan sát độ ổn định của hệ thống.

CHƯƠNG 3 : NGHIÊN CỨU MƠ HÌNH

3.1 Mơ hình khơng gian trạng thái thực

Sau khi tìm được mơ hình khơng gian trạng thái dưới dạng các biến phương trình, ta có thể nhập các ma trận A, B, C, D vào các phần mềm để tính tốn như maple, matlab, labview…Ở đây người dùng sử dụng labview để tính tốn các ma trận A, B, C, D.

3.1.1 Tính ổn định

Độ ổn định của một hệ thống có thể được xác định từ các cực của nó. Hệ thống ổn định chỉ có những cực nằm bên trái mặt phẳng phức.

Hệ thống khơng ổn định có ít nhất một cực nằm bên phải mặt phẳng phức(như mơ phỏng trên ta cũng có thể thấy được hệ thống không ổn định).

Hệ thống ở biên giới ổn định có ít nhất một cực trên trục ảo và các cực khác đều nằm bên trái mặt phẳng phức [9].

Các cực là nghiệm của phương trình đặc trưng của hệ thống. Từ không gian trạng thái, phương trình đặc trưng của hệ thống có thể được tìm thấy bằng cách sử dụng phương trình:

det(sI - A) = 0

Trong đó det () là hàm tính định thức, s là tốn tử Laplace và I là ma trận đơn vị. Đây là các giá trị riêng của ma trận không gian trạng thái A.

Ở đây ta dùng Maple để tìm phương trình đặc trưng (Ta cũng thấy được hệ thống là không ổn định).

3.1.2 Tính điều khiển được

Các phương trình khơng gian trạng thái tuyến tính là:

x Ax Bu

y Cx Du

Một hệ thống được gọi là điều khiển được hoàn toàn nếu tồn tại luật điều khiển u(t) có khả năng chuyển hệ từ trạng thái ban đầu tại x( ) đến trạng thái cuối x( ) bất kỳ trong khoảng thời gian hữu hạn . Điều này có nghĩa là hệ thống có thể điều khiển được nếu mỗi biến trạng thái của hệ đều có thể bị ảnh hưởng bởi tín hiệu điều khiển u(t). Tuy nhiên, nếu một hoặc vài biến trạng thái khơng bị ảnh hưởng bởi u(t) thì các biến trạng thái này không thể bị điều khiển bởi u(t) trong khoảng thời gian hữu hạn và trong trường hợp này hệ thống khơng điều khiển được hồn tồn [1].

Để kiểm tra tính điều khiển được của hệ thống, ta thành lập ma trận C (ma trận điều khiển được).

C = [B AB A B A B ….. A B]

Điều kiện cần và đủ để hệ thống điều khiển được là:

rank (C) = n

Đối với hệ thống một đầu vào – một đầu ra (SISO) thì ma trận C là ma trận vng cấp n. Do đó điều kiện trở thành:

det (C) # 0

3.1.3 Tính quan sát được

Một hệ thống được gọi là quan sát được hoàn toàn nếu cho tín hiệu điều khiển u(t) và đầu ra c(t) trong khoảng ta có thể xác định được trạng thái đầu x( ).

Hệ thống là quan sát được nếu mỗi biến trạng thái của hệ đều ảnh hưởng đến đầu ra c(t). Thường, chúng ta muốn xác định thông tin về trạng thái của hệ thống dựa vào việc đo c(t). Tuy nhiên nếu chúng ta không quan sát được một hay nhiều trạng thái từ việc đo c(t) thì hệ thống khơng quan sát được hồn tồn [1].

Để kiểm tra tính quan sát được của hệ thống, ta thành lập ma trận C (ma trận quan sát được). C = C CA ⋮ CA

Điều kiện cần và đủ để hệ thống quan sát được là: rank(C) = n

Đối với hệ thống một đầu vào (SISO) thì ma trận C là ma trận vng cấp n. Do đó điều kiện trở thành:

Kiểm tra tính điều khiển được và quan sát được bằng phần mềm matlab:

Kết quả hạng của các ma trận C bằng với bậc của n (6). Vậy hệ thống có thể điều khiển được và quan sát được hoàn toàn.

3.2 Điều khiển hồi tiếp trạng thái

Để hệ thống ổn định, chúng ta cần tìm ma trận K của vector điều khiển tối ưu: u(t)= -Kx(t) , thỏa mãn chỉ tiêu chất lượng J đạt giá trị cực tiểu. Lúc này mô hình khơng gian trạng thái sẽ trở thành [9]:

x A BK x

y Cx

Vòng điều khiển hồi tiếp trạng thái như hình:

Hình 3.3 Xét tính ổn định bằng matlab

Trạng thái đặt được xác định: = [ 0 0 0 0 0] Và tín hiệu điều khiển là: u = K ( –x )

Nếu xd bằng 0 thì u = -Kx, là luật điều khiển được sử dụng trong thuật tốn LQR. Để hệ thống ổn định, ta có thể tăng cường hệ thống để bao gồm một bộ tích hợp (xem thêm trong tài liệu đính kèm từ nhà sản xuất để biết thêm chi tiết) sao cho:

 = 0

1 0  + B0 u

Trong đó A và B là các ma trận khơng gian trạng thái đã được xác định và các trạng thái là [9]: = [ α   α   dt] Và  = [ 0 0 0 0 0  dt] Với  (t) =  dt u = K ( - )

Để tính được giá trị K ta có thể dùng matlab hay labview, ở đây sử dụng matlab để tìm K:

Giá trị của Q và R được lấy từ tài liệu đi kèm của nhà sản xuất.

Q 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0.5 Và R = 30

Để góc  ít dao động hơn, người dùng đã đặt Q (4, 4) là 5, Để tạo ra một lợi ích nhỏ tích phân cho các theo dõi góc  của servo, Q (7, 7) được thiết lập là 0.5 [9].

Ta tìm được:

K = [0.4776 -14.4435 -43.1858 0.5390 -5.5365 -4.3338 0.1291]

Kiểm tra lại tính ổn định của hệ thống với ma trận K, tìm phương trình đặc trưng mới của hệ thống bằng maple.

Ở đây ta thấy hệ đã ổn định (ta có thể xét tính ổn định bằng các tiêu chuẩn ổn định đại số như tiêu chuẩn Routh, Hurwitz…).

3.3 Mô phỏng

3.3.1 Phần mềm cần thiết

Đảm bảo LabVIEW được cài đặt với các tiện ích bổ sung cần thiết sau: LabVIEW (ở đây người dùng sử dụng labview 2014)

NI-DAQmx

NI LabVIEW™ Control Design and Simulation Module NI LabVIEW™ MathScript RT Module

Quanser Rapid Control Prototyping Toolkit

3.3.2 Thiết lập cho mô phỏng

1. Mở ứng dụng LabVIEW

2. Mở dự án Lab Double Pendulum.lvproj LabVIEW, được hiển thị trong Hình 3.7.

3. Mở DBIP Modelling.vi được hiển thị trong Hình 3.8.

4. Theo mặc định, các tham số con lắc ngược và SRV02 đã được đặt. Chạy VI để tạo mơ hình khơng gian trạng thái tuyến tính.

5. Trong tên mẫu, nhập tên của mơ hình bạn và nhấp vào OK. Điều này sẽ lưu mơ hình khơng gian trạng thái trong thư mục Mơ hình DBIP. Bạn có thể đóng VI này ngay bây giờ.

6. Mở DBIP Contrl Design.vi thiết kế điều khiển VI, hiển thị trong Hình 3.9. 7. Sử dụng điều khiển đường dẫn tệp, chọn tệp model

Hình 3.7 Lab Double Pendulum.lvproj

8. Chạy VI. Các mơ hình khơng gian trạng thái được tải lên. Bây giờ bạn đã sẵn sàng để thiết kế điều khiển LQR của mình và mơ phỏng hồi tiếp trạng thái.

Theo mặc định, mô phỏng chạy trong 100 giây. Các scope hiển thị đáp ứng như Hình 3,8. Lưu ý rằng trong scope servo, đường màu xanh là vị trí đặt và đường màu đỏ là vị trí mơ phỏng [10].

3.3.3 Nhận xét kết quả:

Kết quả mơ phỏng rất tốt khi tín hiệu ngõ ra bám rất tốt tín hiệu đặt (tín hiệu đặt là xung vuông). Độ vọt lố thấp, thời gian đáp ứng khá nhanh.

3.4 Điều khiển thực

3.4.1 Thiết lập vận hành mơ hình thực

Thực hiện theo quy trình này:

1. Đặt biên độ điều khiển bằng 0 để tắt điểm đặt của động cơ servo.

2. Đảm bảo ma trận K được đặt đúng với giá trị bạn tìm thấy trong mơ phỏng Hình 3.9.

3. Đảm bảo cụm con lắc ngược ở vị trí treo hướng xuống và đứng yên. Biểu đồ Simulink sẽ đo góc α của con lắc dưới là -180 độ.

4. Mở DBIP Control.vi, được hiển thị trong Hình 3.10.

5. Định cấu hình DAQ: Đảm bảo khối Khởi tạo HIL được định cấu hình cho thiết bị DAQ được cài đặt trong hệ thống của bạn. Để thực hiện việc này, hãy chuyển đến sơ đồ khối (CTRL-E) và nhấp đúp chuột vào HIL Khởi tạo Express VI được hiển thị trong Hình 3.11.

Hình 3.10 DBIP Control.vi

Hình 3.11 HIL Khởi tạo Express VI [9]

6. Trong tab chính, chọn thiết bị thu thập dữ liệu được cài đặt trên hệ thống của bạn như Hình 3.12.( ở đây là ni_pcie_6351 )

7. Run để chạy điều khiển thực.

Hình 3.12 Chọn thiết bị thu thập dữ liệu

8. Xoay thủ công cụm con lắc đến vị trí thẳng đứng một cách từ từ và giữ cho các con lắc dưới cùng và trên cùng thẳng đứng với nhau. Khi có tín hiệu điều khiển tham gia, ngay lập tức nhả con lắc và để cho servo cân bằng các liên kết. Các scope hiển thị các đáp ứng tương tự như Hình 3.13. Lưu ý rằng trong scope của theta (deg), đường màu xanh là vị trí đặt, đường màu đỏ là vị trí đo đạt được.

9. Để dừng thử nghiệm, nhấp vào nút Stop nhưng đảm bảo bạn bắt được con lắc trước khi cánh tay của nó rơi xuống. Điều này sẽ ngăn chặn cánh tay chạm vào bề mặt bàn.[9]

3.4.2 Nhận xét và đánh giá:

Hệ thống đã được điều khiển tốt, nhưng điện áp vẫn cịn có nhiễu, góc theta vẫn dao động chưa được đều và ổn định. Điều này cho ta hướng để nghĩ đến việc lọc nhiễu cho quá trình điều khiển bằng phương pháp LQG.

CHƯƠNG 4 : PHƯƠNG PHÁP NGHIÊN CỨU MỚI DÙNG LQG

4.1 Phương pháp

Để có thể thực hiện nghiên cứu bằng phương pháp LQG ta cần sử dụng ma trận điều khiển hồi tiếp trạng thái K, và thiết kế bộ lọc Kalman.

4.2 Mô phỏng LQR với nhiễu tự tạo

Tự tạo nhiễu vơi khối CD Correlated Gaussian Random Noise (One Vector)

Chương trình và mơ phỏng LQR với nhiễu. (tự tạo với nhiễu hệ thống là 0.01, nhiễu các góc đo được là 0.001).

Hình 4.1 CD Correlated Gaussian Random Noise (One Vector)

Kết quả mô phỏng:

Nhận xét: Ta thấy được khi có nhiễu hệ thống và nhiễu đo góc sẽ ảnh hưởng rất nhiều đến q trình điều khiển, đã có độ dao động trên đường bám của góc theta, điện áp điều khiển cũng bị ảnh hưởng nhiều do nhiễu.

Hình 4.4 Kết quả mơ phỏng LQR có nhiễu Hình 4.3 Chương trình và mơ phỏng LQR với nhiễu

4.3 Mô phỏng LQG để khử nhiễu

Ta cần tạo ra các ma trận không gian trạng thái A, B, C để tính tốn ma trận lọc nhiễu L và thiết kế bộ lọc Kalman.

Chương trình block diagram:

Hình 4.6 Chương trình mơ phỏng LQG Hình 4.5 Chương trình mơ phỏng LQG

Kết quả mơ phỏng:

Nhận xét: Kết quả lọc nhiễu tốt hơn khi mơ phỏng LQR có nhiễu, giống như mơ phỏng LQR khi khơng có nhiễu hệ thống và sai số.

4.4 Chạy thực với thí nghiệm LQG

Để có thể tạo ra được bộ lọc Kalman, ta cần sử dụng vector X có 7 thành phần.

X = [ α   α   ]

Tìm ma trận L bằng phương pháp thử sai.

Nếu giá trị của ma trận L là khơng chính xác sẽ dẫn đến mất ổn định và khơng thể điều khiển được.

Vì chỉ có thể dị ma trận Q và R , G là ma trận đơn vị. Nên khi dị ta chỉ có thể thay đổi Q và R như sau:

Khi Q > R , ta nhận được ma trận L có thể điều khiển được nhưng độ dao động của điện áp lớn, đường chéo chính của ma trận L là lớn (Điều này được ghi lại khi thí nghiệm với Q =3.4E – 5 và R =1E – 10). Đường chéo của ma trận được ghi lại là [580 530 570 630 680 680 580].

Khi Q < R , ta thấy độ dao động của điện áp đã được loại bỏ, nhưng hệ thống khơng thể điều khiển được. Vì giá trị đường chéo chính thay đổi, nhỏ đi rất nhiều.

Để có thể điều khiển được mà có thể loại bỏ được dao động biên độ điện áp.

Ta chọn L với các giá trị của đường chéo chính lớn [200 150 190 250 300 300 200], giá trị này được lấy theo quy luật tìm được ở thí nghiệm trên và sau nhiều lần thử sai. Các giá trị cịn lại (khác đường chéo chính) của ma trận L tương ứng với trường hợp độ nhiễu

Q = 1E-16 và R = 1E-5 (khi L ở giá trị này thì độ nhiễu lọc tốt).

Tiến hành điều khiển thực với ma trận L được chọn. Chương trình điều khiển:

Kết quả:

4.4.1 Nhận xét và đánh giá:

Khi có bộ lọc Kalman ta thấy điện áp điều khiển đã được lọc nhiễu đi khá tốt, điện áp điều khiển cũng ổn định hơn. Góc vị trí theta cũng ổn định hơn khi chỉ điều khiển với LQR. Độ dao động và biên độ dao động của điện áp và góc theta tốt hơn khá nhiều.

4.4.2 Hướng phát triển:

Vì thời gian nghiên cứu cịn hạn chế nên nhóm chỉ có thể hồn thành hướng nghiên đến đây. Nếu còn thời gian và cơ hội để nghiên cứu và học tập, nhóm muốn thử nhiều phương pháp điều khiển hiện đại khác như điều khiển thích nghi, điều khiển bền vững, điều khiển trượt,…Để có thể so sánh, đánh giá tính ổn định mà các phương pháp đem lại khi

điều khiển mơ hình. Từ đó có thể rút ra được nhiều kinh nghiệm cũng như kiến thức vững chắc về lý thuyết điều khiển hiện đại.

TÀI LIỆU THAM KHẢO

[1] NGUYỄN THỊ PHƯƠNG HÀ, HUỲNH THÁI HOÀNG. LÝ THUYẾT ĐIỀU KHIỂN TỰ ĐỘNG, NXB ĐHQG TP HCM, 2011.

[2] PGS.TS HUỲNH THÁI HOÀNG. BÀI GIẢNG LÝ THUYẾT ĐIỀU KHIỂN NÂNG CAO. ĐẠI HỌC BÁCH KHOA TP HCM.

[3] TS. DƯƠNG MIÊN KA. BÀI GIẢNG KỸ THUẬT ROBOT. ĐẠI HỌC CÔNG NGHIỆP TP HCM.

[4] ĐATADA – ĐHNL 30/10/2009 .

http://www2.hcmuaf.edu.vn/data/dtdanh/MapleV6.pdf

[5] HÁI NAM, CHƯƠNG 3. PHẦN MỀM LABVIEW.

https://www.academia.edu/7985901/CH%C6%AF%C6%A0NG_3_PH%E1%BA %A6N_M%E1%BB%80M_LABVIEW

[6] ĐỖ TRUNG HIẾU, CYBERLABJSC.

http://www.dientuvietnam.net/forums/forum/l%E1%BA%ADp- tr%C3%ACnh-v%C3%A0-m%C3%B4-ph%E1%BB%8Fng/matlab-labview- 20sim/189969-labview-t%E1%BB%B1-h%E1%BB%8Dc-labview [7] http://www.ni.com/en-vn.html [8] http://hnue.edu.vn/Portals/0/TeachingSubject/tungpk/d98ac0db-fdfa-4146- 861c-95a2b645fb12MHH---C2---Mo-hinh-hoa.pdf

[9] Rotary Double Inverted Pendulum - Laboratory Guide.pdf [10] Rotary Double Inverted Pendulum – Quick-Start-Guide.pdf [11] Rotaru Double Inverted Pendulum – User Manual.pdf

[12] PGS.TS. TRẦN ANH DŨNG, THS. NGUYỄN TIẾN DŨNG. NGHIÊN CỨU XÂY DỰNG HỆ THỐNG MƠ HÌNH CON LẮC NGƯỢC.

http://www.khcn.vimaru.edu.vn/sites/khcn.vimaru.edu.vn/files/nghien_cuu_xay_d ung_he_thong_dieu_khien_mo_hinh_con_lac_nguoc.pdf

[14] https://vi.wikipedia.org/wiki/Maple

[15] https://tailieu.vn/doc/ky-thuat-robot-chuong-3-cac-phep-bien-doi-thuan-nhat- 695346.html

PHỤ LỤC

A CHƯƠNG TRÌNH THÀNH LẬP BẢNG TÍNH MAPLE

a) Thiết lập dữ liệu

Để cài đặt các gói Quanser_Tools, sao chép hai tập tin quanser.ind và quanser.lib vào một thư mục của sự lựa chọn của bạn, ví dụ như: "C: \ Program Files \ Quanser \ Maple Repository"

Để sử dụng các gói Quanser_Tools trong một bảng tính Maple, thêm đường dẫn đến vị trí đĩa của nó đến Maple bởi lệnh libname . Ví dụ: điều này có thể đạt được bằng lệnh Maple sau:

libname: = "C: / Chương trình tập tin / Quanser / Kho lưu trữ Maple", libname:

b) Khởi tạo bảng tính

restart: interface( imaginaryunit = j ): with( LinearAlgebra ):

libname := "C:/Program Files/Quanser/Maple Repository", ".", libname: with( Quanser_Tools );

Order := 2: Np := 2:

q := [ theta(t), alpha(t), phi(t) ]; Nq := nops( q ): qd := map( diff, q, t ); Tính các ma trận chuyển đổi : T_0_1 := matrix(4,4,[ cos(q[1]),-sin(q[1]),0,L[r]*cos(q[1]), sin(q[1]),cos(q[1]),0,L[r]*sin(q[1]), 0,0,1,0, 0,0,0,1]); T_1_2 := matrix(4,4,[

1,0,0,0, 0,cos(q[2]),-sin(q[2]),-l[p1]*sin(q[2]), 0,sin(q[2]),cos(q[2]),l[p1]*cos(q[2]), 0,0,0,1]); T_1_h := matrix(4,4,[ 1,0,0,0, 0,cos(q[2]),-sin(q[2]),-L[p1]*sin(q[2]), 0,sin(q[2]),cos(q[2]),L[p1]*cos(q[2]), 0,0,0,1]); T_h_3 := matrix(4,4,[ 1,0,0,0, 0,cos(q[3]),-sin(q[3]),-l[p2]*sin(q[3]), 0,sin(q[3]),cos(q[3]),l[p2]*cos(q[3]), 0,0,0,1]); T_0_2 := evalm( T_0_1 &* T_1_2 ); T_0_h := evalm( T_0_1 &* T_1_h ); T_0_3 := evalm( T_0_h &* T_h_3 ); Vị trí cartesian: x[1] := T_0_1[1,4]; y[1] := T_0_1[2,4]; z[1] := T_0_1[3,4]; x[2] := T_0_2[1,4]; y[2] := T_0_2[2,4]; z[2] := T_0_2[3,4]; x[h] := T_0_h[1,4]; y[h] := T_0_h[2,4]; z[h] := T_0_h[3,4]; x[3] := T_0_3[1,4];

y[3] := T_0_3[2,4]; z[3] := T_0_3[3,4];

Đạo hàm vị trí ( vận tốc của cartesian ):

xd[1] := diff( x[1], t ); yd[1] := diff( y[1], t ); zd[1] := diff( z[1], t ); xd[2] := diff( x[2], t ); yd[2] := diff( y[2], t ); zd[2] := diff( z[2], t ); xd[h] := diff( x[h], t ); yd[h] := diff( y[h], t ); zd[h] := diff( z[h], t ); xd[3] := diff( x[3], t ); yd[3] := diff( y[3], t ); zd[3] := diff( z[3], t );

Biến không gian trạng thái:

subs_Xq := { seq( q[i] = X[i], i=1..Nq ) };

subs_Xqd := { seq( qd[i] = X[i+Nq], i=1..Nq ) }; #subs_U := { V[m] = U[1] }:

subs_U := { tau[m] = U[1] }:

Một phần của tài liệu Điều khiển mô hình con lắc ngược đôi bằng phương pháp LQG (Trang 50)

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

(93 trang)