Phép chọn lọc và lai tạo:

Một phần của tài liệu Ứng dụng lý thuyết hiện đại thiết kế Modul điều khiển động cơ DC (Trang 25 - 34)

– Tìm cá thể thích nghi bằng tái sinh chọn lọc ngẫu nhiên: Trong quần thể chỉ

định, các cá thể tồn tại là độc lập và xác xuất tồn tại như nhau khi chưa có biến cố đào thải của tự nhiên, khi xảy ra biến động về điều kiện sinh tồn, những cá thể thích nghi được sẽ tiếp tục tồn tại, các cá thể không thích nghi hoặc sẽ bị đào thải, hoặc phải tiến hóa thành dạng khác, phép chọn lọc đầu sa thải toàn bộ những cá thể không thích nghi. Ta giữ lại phần quần thể đã thích nghi ban đầu hoặc sẽ chọn trong quần thể đấy một vài cá thể tốt nhất để lai ghép.

ƒ Thuật GA tái sinh: Lấy ngẫu nhiên một lượng lớn cá thể(bộ thông số

KP, KI, KD) trong quần thể được chọn, thử độ thích nghi của chúng với hàm phạt: min(ITAE(closeloop(PID.HS))) cá thể tốt nhất sẽ được chọn.

– Lai tạo cá thể trội để tìm cá thể mạnh: Từ cá thể tìm được bằng hàm phạt trên,

ta xây dựng thêm luật sinh tồn: L(POT,steady_state_error,settling_time), cá thể sinh ra bằng cách giữ cố định KP, lặp vòng KI và KD, tìm cá thể tốt nhất trong quần thể lai mới. Đấy có thể là cá thể được chọn nếu đã thỏa yêu cầu đặt ra của ta. Nếu không, phải cho KP thay đổi, hoặc bắt đầu lại thuật tóan tái sinh để tìm cá thể trội mới! Có thể gặp trường hợp xấu, trong quần thể không có cá thể nào đáp ứng nổi với luật sinh tồn, lúc đó, buộc ta chấp nhận phải thay đổi lại luật để tìm cá thể thích nghi, nếu không như thế, toàn bộ cấu trúc loài bị diệt vong! Bài toán vô nghiệm!

ƒ Thuật GA lai tạo: Lấy cá thể tồn tại sau biến cố ban đầu, cho phép nó

sinh sản thành những tập đoàn cá thể mới, thử độ thích nghi của chúng với luật sinh tồn: f(POT,state_error,settling_time), cá thể nào đáp ứng được các yêu cầu đặt ra sẽ tồn tại, và tất cả các cá thể khác bị bỏ đi, không xét tới nữa, thuật lai tạo kết thúc.

Ghi chú: Các hàm ITAE, POT, state_error, settling_time có trên http://www.khvt.com trong

phần Matlab>

Đáp ứng của hệ thống với bộ thông số: (2,1,0.0005)

Hình IV.2.3.6 Đáp ứng của hệ thống khi tín hiệu thử là 1000+500sin(0.02t) (v/p) chu kì lệnh 1 giây

(IV.2.3.2) Thut toán GA-Neural để tìm b thông s PID

Sai số lý thuyết:

Hình IV.2.3.7 Hình phóng to sai số giữa tín hiệu đặc và tín hiệu đáp ứng (vòng/phút) với chu kì lệnh là 1 giây.

Theo lý thuyết và mô phỏng, kết quả tương đối tốt, bây giờ, ta thực hiện vào giải thuật điều khiển cho MCU P89LPC922.

Hình IV.2.3.8 Đáp ứng của hệ thống thực khi tín hiệu đặt là 20+10*sin(0.05*t) với chu kì lệnh chọn là 10xung/lệnh.

(IV.2.3.2) Thut toán GA-Neural để tìm b thông s PID

Nhận xét: Do sai số của phần cứng nên ta chưa thể phân tích giá trị đáp ứng có tốt hay

không? Chỉ có thể nói giá trị xác lập đúng với tín hiệu đặt và sai số xác lập bằng sai số phần cứng.

Chương trình giải thuật có thể viết như sau:

/************************************************************************ Chuc nang : Ham PID la khau tao tin hieu dieu khien de tao Chuc nang : Ham PID la khau tao tin hieu dieu khien de tao

tin hieu dieu xung dua vao chan PWM. Dau vao : Khong co

Dau ra : Khong co, gia tri dieu khien cap nhat trong ham Tac gia : Bui Trung Hieu, Webmaster: http://www.khvt.com Su dung : Duoc phep su dung mien phi voi moi muc dich. Khoi tao : 9h59PM ngay 10 thang 11 nam 2005

Lien he : Moi trao doi xin lien lac qua email: buitrunghieu@khvt.com Tai lieu tham khao cho khau PID so:

-Sach "LT Dieu Khien tu dong" - NXB DHQG TPHCM

Nguyen Thi Phuong Ha (Chu bien) -Huynh Thai Hoang -Co tai http://www.khvt.com/Documents/DKTD.html

-“The PID Control Algorithm: ‘How it works, how to tune it, and how to use it’- John A. Shaw

Cac thong so Kp,Ki,Kd cho khau PID so duoc tim bang chuong trinh Matlab 7.0 (C) Mathworks /*************************************************************************/ void PID (void)

{

double temp; (adsbygoogle = window.adsbygoogle || []).push({});

temp=(double)control_value/k1; //k1 la he so ho*.p thu*’c

temp+=(double)Know*(double)ek+(double)Klast*(double)ekp1+(double)Klast_last*(double)ekp2; temp=temp*k1;

(temp>255)?(temp=255):(temp<20?temp=20:(temp=temp)); //Khau bao hoa control_value=(unsigned char)(temp);

timers_setdutycycle1(control_value); }

(IV.2.3.2) Thut toán GA-Neural để tìm b thông s PID

Sơđồ gii thut tham kho:

Hình IV.2.3.9 Sơ đồ giải thuật điều khiển vòng kín chưa chỉnh hướng chỉ dùng khâu PID kinh điển

(IV.2.3.2) Thut toán GA-Neural để tìm b thông s PID

Kết qu thc tế: Khi chỉ dùng khâu PID (2,1,0.0005)

Hình IV.2.3.10 Đáp ứng vòng kín khi chỉ có khâu PID với các tốc độ khác nhau

Nhận xét:

™ Đáp ứng quá độ của hệ thống tương đối tốt. Khâu PID là tốt với đáp ứng xác lập, sai số xác lập bằng chính sai số của phần cứng.(+/- 1 encoder/Ts).

™ Khi thử gây nhiễu tải, đáp ứng của hệ thống tương đối nhanh. Đạt yêu cầu đặt ra. ™ Mặc dù kết quả không hoàn toàn giống như mô phỏng nhưng chấp nhận được do khi mô phỏng, ta đã bỏ qua sai số và giới hạn phần cứng.

Khi dùng PID kết hp vi ON-OFF: Không dẫn kết quả ra ở đây vì điều khiển kết hợp như vậy tốt nhất nên dùng lúc kéo tải, khi moment quán tính lớn.

DC Motor Control Module IV.Gii quyết vn đề:

IV.1. Định hướng chương trình:

IV.2. Phác thảo giải thuật

IV.2.1.Đọc Encoder:

IV.2.2.Điều xung

IV.2.3. Khâu điều khiển kinh điển PID:

IV.2.3.1 Khâu PID rời rạc:

IV.2.3.2 Thiết kế khâu điều khiển mờ PID rời rạc dùng MATLAB(Tìm bộ thông số Kp,Ki,Kd bằng thuật toán GA kết hợp mạng neural):

IV.2.3.3 Mở rộng chiến lược điều khiển, tìm cách tối ưu hóa đáp ứng quá độ của hệ thống-nhận dạng đối tượng và điều khiển sử dụng mạng neural truyền thẳng:

ƒ Nhận dạng các thông số mô hình-huấn luyện mạng: Ta có thể nhận dạng các

đặc tính của động cơ DC và xây dựng một hàm vận tốc theo dòng điện và điện áp điều biến xung, tuy nhiên, với MCU P89LPC922, ta chỉ nên nhận dạng một phần: hàm PWM=f(v_command). Cách thức tiến hành như sau:

ƒ Lần lượt tăng duty cycle từ min đến max để có được đặc tuyến dutycycle theo vận tốc. Sơ đồ giải thuật:

(IV.2.3.3) Xây dng mô hình và điu khin s dng mng nơron

(IV.2.3.3) Xây dng mô hình và điu khin s dng mng nơron

Xử lý bằng Matlab, ta tìm được mối quan hệ đáng chú ý sau:

Hình IV.2.3.2 Đặc tính điều xung theo vận tốc (xung/Ts) (adsbygoogle = window.adsbygoogle || []).push({});

Phương trình đặc tính tìm trên được sử dụng để làm mô hình tham chiếu chuẩn cho động cơ.

(IV.2.3.3) Xây dng mô hình và điu khin s dng mng nơron

Hình IV.2.3.3 Đáp ứng khi vận tốc thay đổi của khâu hiệu chỉnh kết hợp <Code here>

Có tại: http://www.khvt.com/robotics/dcmotor/code/CloseloopMode.zip

Nhận xét: sai số xác lập bằng với sai số quy định bởi phần cứng. đáp ứng quá độ rất tốt, độ

vọt lố rất ít, động cơ nhanh chóng tìm được giá trị xác lập đúng.

Đến đây, ta có thêm phương án lựa chọn để điều khiển thích hợp theo yêu cầu đặt ra:

ƒ Đáp ứng nhanh. ƒ Vọt lố ít. ƒ Không có sai số xác lập. ƒ Chống nhiễu? ƒ Nhiễu tải ƒ Nhiễu đo

Phần này không phải đi xây dựng hệ MRAS, các thông số của mô hình được nhận dạng tương đối đầy đủ, người viết không có ý định xây dựng một MRAS với các thông số cập nhật theo luật MIT trong khi đang sử dụng nhân điều khiển 8bit và phần nhận dạng thông qua chương trình trung gian chứ không điều khiển ‘online’ và chạy ‘Real time’! Phần trình bày trên được viết theo ý định điều khiển vòng hở sử dụng mạng nơron sau khi đi tìm(nhận dạng) mối quan hệ PWM(velocity.)

Quá trình điều khiển vòng hở sau nhận dạng các thông số như trên đúng trong trường

hợp tải là cố định nếu chỉ có thông số phản hồi từ encoder. Để xây dựng một mô hình tốt hơn, cần phải cập nhật thêm thông số phản hồi khác như dòng điện. Tất nhiên, lúc ấy, hàm xây dựng PWM=f(velocity,current) sẽ tương đối phức tạp. Tuy ta không quan tâm đến mức độ phức tạp của hàm sẽ xây dựng <nhờ nội suy trong matlab> nhưng sẽ phải quan tâm đến thời gian thực hiện để tìm ra giá trị PWM đúng của MCU từ hàm trên.

DC Motor Control Module

Một phần của tài liệu Ứng dụng lý thuyết hiện đại thiết kế Modul điều khiển động cơ DC (Trang 25 - 34)