GIỚI THIỆU THUẬT TOÁN điều KHIỂN PID

10 4.5K 124
GIỚI THIỆU THUẬT TOÁN điều KHIỂN PID

Đang tải... (xem toàn văn)

Thông tin tài liệu

GIỚI THIỆU THUẬT TOÁN ĐIỀU KHIỂN PID 1. Giới thiệu bộ điều khiển PID: Bộ điều khiển PID là một bộ điều khiển vòng kín được sử dụng rộng rãi trong công nghiệp. Sử dụng bộ điều khiển PID để điều chỉnh sai lệch giữa giá trị đo được của hệ thống (process variable) với giá trị đặt (setpoint) bằng cách tính toánđiều chỉnh giá trị điều khiển ở ngõ ra. Sơ đồ một hệ thống điều khiển dùng PID: Hình 1 – Sơ đồ hệ thống điều khiển dùng PID Một bộ điều khiển PID gồm 3 thành phần: P (proportional) – tạo tín hiệu điều khiển tỉ lệ với sai lệch (error – e), I (integral) – tạo tín hiệu điều khiển tỉ lệ với tích phân theo thời gian của sai lệch, và D (derivative) – tạo tín hiệu điều khiển tỉ lệ với vi phân theo thời gian của sai lệch. 1.1. Khâu P: Khâu P tạo ra tín hiệu điều khiển tỉ lệ với giá trị của sai lệch. Việc này được thực hiện bằng cách nhân sai lệch e với hằng số K P – gọi là hằng số tỉ lệ. Khâu P được tính dựa trên công thức: Với: P out : giá trị ngõ ra K P : hằng số tỉ lệ e: sai lệch: e = SP – PV Sơ đồ khối của khâu P: Hàm truyền: p p G (s) = K Nếu chỉ có khâu P thì trong mọi trường hợp sai số tĩnh luôn xuất hiện, trừ khi giá trị đầu vào của hệ thống bằng 0 hoặc đã bằng với giá trị mong muốn. Trong hình sau thể hiện sai số tĩnh xuất hiện khi thay đổi giá trị đặt. Hình 2 – Đáp ứng của khâu P Nếu giá trị khâu P quá lớn sẽ làm cho hệ thống mất ổn định. 1.2. Khâu I: Khâu I cộng thêm tổng các sai số trước đó vào giá trị điều khiển. Việc tính tổng các sai số được thực hiện liên tục cho đến khi giá trị đạt được bằng với giá trị đặt, và kết quả là khi hệ cân bằng thì sai số bằng 0. Khâu I được tính theo công thức: Với: I OUT : giá trị ngõ ra khâu I K i : hệ số tích phân e: sai số: e = SP – PV Sơ đồ khối khâu I: Hàm truyền: I I. K U(s) 1 G(s) = = = E(s) s T s Khâu I thường đi kèm với khâu P, hợp thành bộ điều khiển PI. Nếu chỉ sử dụng khâu I thì đáp ứng của hệ thống sẽ chậm và thường bị dao động. Hình sau chỉ ra sự khác biệt giữa khâu I và PI: Hình 3 – Đáp ứng của khâu I và PI Ta có thể nhận thấy là khâu I làm cho đáp ứng của hệ thống bị chậm đi rất nhiều, còn khâu PI giúp triệt tiêu sai số xác lập. 1.3. Khâu D: Khâu D cộng thêm tốc độ thay đổi sai số vào giá trị điều khiển ở ngõ ra. Nếu sai số thay đổi nhanh thì sẽ tạo ra thành phần cộng thêm vào giá trị điều khiển. Điều này cải thiện đáp ứng của hệ thống, giúp trạng thái của hệ thống thay đổi nhanh chóng và mau chóng đạt được giá trị mong muốn. Khâu D được tính theo công thức: Với: D OUT: ngõ ra khâu D K D : hệ số vi phân e: sai số: e = SP – PV Sơ đồ khối khâu D: Hàm truyền: ( ) ( ) ( ) d U s G s K s E s = = Khâu D thường đi kèm với khâu P thành bộ PD, hoặc với PI để thành bộ PID. Hình 4 – Đáp ứng của khâu D và PD Theo hình trên, bộ PD tạo đáp ứng có thời gian tăng trưởng nhỏ hơn so với bộ P. Nếu giá trị D quá lớn sẽ làm cho hệ thống không ổn định. 1.4. Tổng hợp ba khâu – Bộ điều khiển PID: Bộ điều khiển PID là cấu trúc ghép song song giữa 3 khâu P, I và D. Phương trình vi phân của bộ PID lý tưởng: ∫ P I D de(t) u(t) = K e( t)+ K e(t)dt + K dt Sơ đồ khối: Đáp ứng của bộ PID: Hình 5 – Đáp ứng của khâu P, PI và PID 1.5. Rời rạc hóa bộ điều khiển PID: Bộ điều khiển số không thể lấy mẫu liên tục theo thời gian, nó cần được rời rạc ở một vài mức. Khi cho hệ số lấy mẫu ngắn bên trong thời gian vi phân có thể đạt được xấp xỉ một sai phân có giới hạn và tích phân qua việc lấy tổng. Chúng ta sẽ quan tâm mỗi dạng ở một thời điểm, và sai số được tính ở mỗi khoảng lấy mẫu: e(n) = X(n) – Y(n) Bộ PID rời rạc đọc sai số, tính toán và xuất ngõ ra điều khiển theo một khoảng thời gian xác định (không liên tục) – thời gian lấy mẫu T. Thời gian lấy mẫu cần nhỏ hơn đơn vị thời gian của hệ thống. Không giống các thuật toán điều khiển đơn giản khác, bộ điều khiển PID có khả năng xuất tín hiệu ngõ ra dựa trên giá trị trước đó của sai số cũng như tốc độ thay đổi sai số. Điều này giúp cho quá trình điều khiển chính xác và ổn định hơn. Hình 6 – Sơ đồ khối PID Hàm truyền của hệ thống: Hàm chuyển đổi: Tính gần đúng theo công thức: Với n là bước rời rạc tại t. Kết quả thu được: Với: 2. Thiết kế bộ điều khiển PID: Luật điều khiển thường được chọn trên cơ sở đã xác định được mô hình toán học của đối tượng phải phù hợp với đối tượng cũng như thỏa mãn yêu cầu của bài toán thiết kế. Trong trường hợp không thể xác định được mô hình toán học của đối tượng, có thể tìm luật điều khiển cũng như các tham số của bộ điều khiển thông qua thực nghiệm. Ziegler và Nichols đã đưa ra phương pháp xác định thông số tối ưu của bộ PID là dựa trên đồ thị hàm quá độ của đối tượng hoặc dựa trên các giá trị tới hạn thu được qua thực nghiệm. 2.1. Sử dụng hàm quá độ của đối tượng: Phương pháp này còn có tên là phương pháp thứ nhất của Ziegler – Nichols. Nó có nhiệm vụ xác định các thông số K p , T N , T V cho các bộ điều khiển P, PI và PID trên cơ sở đối tượng có thể mô tả xấp xỉ bởi hàm truyền đạt dạng: t -T s Ke G(s) = Ts+1 Sao cho hệ thống nhanh chóng về trạng thái xác lập và độ vọt lố max δ không vượt quá một giới hạn cho phép, khoảng 40% so với ∞→ =∞ t thh )(lim)( : %40 )( max max ≤ ∞ ∆ = h h δ Ba tham số T t (thời gian trễ), K (hệ số khuếch đại) và T (hằng số thời gian quán tính) của mô hình xấp xỉ có thể xác định được gần đúng từ đồ thị hàm quá độ h(t) của đối tượng. Nếu đối tượng có dạng như hình 7a mô tả thì từ đồ thị hàm h(t) đó ta đọc ra được: - T t là khoảng thời gian tín hiệu ra h(t) chưa có phản ứng ngay với tín hiệu kích thích 1(t) tại đầu vào. - K là giá trị giới hạn ∞→ =∞ t thh )(lim)( - Gọi A là điểm kết thúc khoảng thời gian trễ , tức là điểm trên trục hoành có hoành độ bằng T t . Khi đó T là khoảng cần thiết sau T t để tiếp tuyến của h(t) tại A đạt được giá trị K. a) b) Hình 7 – Xác định tham số cho mô hình xấp xỉ bậc nhất có trễ Trường hợp hàm quá độ h(t) không có dạng lý tưởng như ở hình 7a, nhưng có dạng gần giống như hình chữ S của khâu quán tính bậc 2 hoặc bậc n như mô tả ở hình 7b thì ba tham số K, T t , T được xác định xấp xỉ như sau : - K là giá trị giới hạn )(∞h . - Kẻ đường tiếp tuyến của h(t) tại điểm uốn của nó. Khi đó T t sẽ là hoành độ giao điểm của tiếp tuyến với trục hoành và T là khoảng thời gian cần thiết để đường tiếp tuyến đi được từ giá trị 0 tới được giá trị K. Như vậy ta thấy điều kiện để áp dụng được phương pháp xấp xỉ mô hình bậc nhất có trễ của đối tượng là đối tượng phải ổn định, không có dao động và ít nhất hàm quá độ của nó phải có dạng chữ S. Sau khi đã có các tham số cho mô hình xấp xỉ của đối tượng, ta chọn các thông số của bộ điều khiển theo bảng sau : Bộ điều khiển K P T N T V P t TK T . _ _ PI t TK T . 9,0 t T 3 10 _ PID t TK T . 2,1 t T.2 t T.5,0 Bảng 1 – Tính toán thông số bộ điều khiển Từ đó suy ra : Hệ số tích phân : P I N K K = T Hệ số vi phân : D P V K = K .T 2.2. Sử dụng các giá trị tới hạn thu được từ thực nghiệm: Trong trường hợp không thể xây dựng phương pháp mô hình cho đối tượng thì phương pháp thiết kế thích hợp là phương pháp thực nghiệm. Thực nghiệm chỉ có thể tiến hành nếu hệ thống đảm bảo điều kiện: khi đưa trạng thái làm việc của hệ đến biên giới ổn định thì mọi giá trị của tín hiệu trong hệ thống điều phải nằm trong giới hạn cho phép. Phương pháp này còn có tên là phương pháp thứ hai của Ziegler – Nichols. Điều đặc biệt là phương pháp này không sử dụng mô hình toán học của đối tượng điều khiển, ngay cả mô hình xấp xỉ gần đúng. Các bước tiến hành như sau : - Trước tiên, sử dụng bộ P lắp vào hệ kín (hoặc dùng bộ PID và chỉnh các thành phần K I và K D về giá trị 0). Khởi động quá trình với hệ số khuếch đại K P thấp, sau đó tăng dần K P tới giá trị tới hạn K gh để hệ kín ở chế độ giới hạn ổn định, tức là tín hiệu ra h(t) có dạng dao động điều hòa. Xác định chu kỳ tới hạn T gh của dao động. Hình 8 – Mô hình điều khiển với K gh Hình 9 – Xác định hệ số khuếch đại tới hạn - Xác định thông số của bộ điều khiển theo bảng sau : Bộ điều khiển K P T N T V P 0,5 K gh _ _ PI 0,45 K gh 0,83 T gh _ PID 0,6 K gh 0,5 T gh 0,125 T gh Bảng 2: Thông số bộ điều khiển theo thực nghiệm Lưu đồ chương trình PID: PID Controller Error = SP - PV P_term = Kp * Error I_term = Ki * SumE D_term = Kd * (Error – Pre_error) PID = P_term + I_term + D_term PID_out = 0 <= PID <= 255 Update PWM * CONTROLLER FUNCTION: pid_controller() // pid_out = U(n) = Kp(E(n) + (Ts/Ti)SumE + (Td/Ts)[E(n) - E(n-1)]) * */ void pid_controller(){ prop_term =0 ; integ_term = 0; deriv_term = 0; pid_out = 0; //****************** // calculate error error = SP - PV; //***************** //error = set_vel - cur_vel; error = set_counter - cur_counter; //******************************** // Propotional term calc of PID //******************************* prop_term = kp*(float)error; //******************************** // Integeral term calc of PID //******************************* if (ki != 0) { sumE += error; integ_term = ki*(float)sumE; } //******************************** // Derivative term calc of PID //******************************* if (kd != 0) { deriv_term = kd*(float)(error - prev_error); prev_error = error; } // pid_out = U(n) = Kp(E(n) + (Ts/Ti)SumE + (Td/Ts)[E(n) - E(n-1)]) pid_out = (prop_term + integ_term + deriv_term)/2.4; pid_update = (int)pid_out; if(pid_update >= 255) pid_update = 255; if(pid_update <= 0) pid_update = 0; OCR0 = pid_update; }

Ngày đăng: 22/01/2014, 08:26

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan