Categories
Fuzzy Controller

SISO for DC Motor

Ở bài viết trước chúng ta đã tìm hiểu về công cụ Fuzzy Logic Designer trong MATLAB. Để hiểu rõ hơn về cách sử dụng nó, ở bài viết này chúng ta sẽ tìm hiểu quá trình thiết kế bộ điều khiển mờ cho mô hình động cơ DC trên MATLAB – Simulink với yêu cầu như sau:

” Hãy thiết kế và mô phỏng bộ điều khiển mờ SISO cho đối tượng động mô hình cơ DC để ổn định tốc độ động cơ tại 2 rad/s. Trong đó, các tham số của động cơ DC như sau: Mô-men quán tính J = 0.01 (kg.m2/s2); hệ số ma sát b = 0.1 (Nms); điện cảm cuộn dây L = 1 (H); điện trở cuộn dây R = 0.5(W); hằng số sức điện động K = 0.01 (Nm/Amp).”

Mô tả hàm truyền của động cơ DC

Đối tượng điều khiển là động cơ DC được mô tả bằng cách sử dụng khối hàm truyền trong thư viện Simulink. Đa thức tử số và mẫu số của khối “Transfer Function” lần lượt là numeratordenominator, được nhập thông qua Script file như sau:

Script mô tả thông số mô hình của động cơ DC
Kết quả khi chạy file trên.

Thiết kế bộ điều khiển mờ

Ta sẽ dựa vào thứ tự các bước ở Chapter I Fuzzy Control System Designer để tiến hành thiết kế bộ điều khiển mờ. Ta có giá trị tốc độ động cơ mong muốn hay giá trị đặt là yref = 2 rad/s với sơ đồ như sau:

Mô hình Cybernetics_SISO_Dcmotor_Modeling trên Simulink

Bước 1 Khảo sát đối tượng

Tiến hành xác định giới hạn của các biến ngôn ngữ vào ra của bộ điều khiển mờ. Bộ điều khiển mờ có các biến ngôn ngữ ngõ vào và ngõ ra lần lượt là e và u được mô tả như hình sau:

Hình ảnh giao diện bộ điều khiển SISO.

Tiếp theo ta cần xác định khoảng giới hạn giá trị của biến ngõ vào e nằm trong khoảng [emin , emax] và ngõ ra u nằm trong khoảng [umin , umax]. Nhiệm vụ chính của bước này là xác định các khoảng giá trị này.

Xác định giới hạn giá trị ngõ vào e

Từ sơ đồ điều khiển ta sẽ thấy e = yref – y và ta đã chọn tốc độ động cơ DC quanh giá trị yref = 2 rad/s. Nên mô hình động cơ ta thấy tốc độ động cơ y sẽ biến thiên từ ymin = 0 đến ymax = 2 (rad/s) và do ta đã chọn giá trị yref = 2 (rad/s) là giá trị đặt mong muốn. nên yref  cũng biến thiên từ yrefmin = 0 đến yrefmax = 2 (rad/s). Ta có:

emin = yrefmin – ymax =  0 – 2 = -2 (rad/s) là sai số nhỏ nhất giữa giá trị mong muốn yref và giá trị ngõ ra y của động cơ.

Ngược lại ta có:

emax = yrefmax – ymin =  2 – 0  = 2 (rad/s) là sai số lớn nhất giữa giá trị mong muốn yref và giá trị ngõ ra y của động cơ.

Do khi tốc độ động cơ ymin = 0 tức động cơ ngừng quay là lúc sai số giữa giá trị mong muốn yref và giá trị ngõ ra y là lớn nhất 2 rad/s. Từ đó ta giới hạn giá trị ngõ vào e thuộc khoảng [-2, 2].

Xác định giới hạn giá trị ngõ ra u

Việc xác định giới hạn ngõ ra u đòi hỏi ta phải khảo sát ngõ vào của đối tượng nhằm tìm được giá trị U của ngõ vào để tốc độ động cơ đạt được 2 (rad/s). Để thực hiện được điều này, ta tiến hành khảo sát đáp ứng vòng hở của động cơ thông qua mô hình Simulink như sau:

Mô hình Simulink khảo sát đáp ứng vòng hở của động cơ DC.

Ta thu được đáp ứng ngõ ra như sau:

Đáp ứng vòng hở của động cơ DC với ngõ vào 20 V.

Từ kết quả trên ta thấy, để ngõ ra của động cơ y đạt tốc độ 2 (rad/s) như ta đã chọn thì giá trị ngõ vào của động cơ umax = U = 20 (V). Như vậy, nếu muốn điều khiển động cơ quay một chiều thì điện áp ngõ vào u sẽ biến thiên từ 0 V (động cơ dừng) đến umax = 20 V (động cơ chạy đúng theo giá trị đặt).

Theo kinh nghiệm thiết kế, khi chọn phương pháp giải mờ điểm trọng tâm ở bước tiếp theo thì ta cần chọn giá trị umax lớn hơn giá trị tìm được lớn hơn giá trị U tìm được trước đó. Ở đây ta chọn umax = 2U, tức u thuộc khoảng [0, 40].

Sau khi kết thúc bước đầu tiên của quá trình thiết kế, ta đã xác định được giới hạn ngõ vào e nằm trong khoảng [-2, 2]. Giới hạn ngõ ra u nằm trong khoảng [0, 40]. Tuy nhiên, trong thực tế ta có thể tiến hành thay đổi các khoảng giá trị này như tăng hoặc giảm để có được chất lượng điều tốt nhất.

Bước 2 Mờ hoá các biển ngôn ngữ vào/ra

Trong bước này chúng ta cần xác định số lượng tập mờ và hình dạng các hàm liên thuộc cho mỗi biến ngôn ngữ ngõ vào e và ngõ ra u.

Ở bước này chúng ta sẽ tiến hành biểu diễn các biến ngôn ngữ cho ngõ vào e và ngõ ra u bằng các giá trị ngôn ngữ. Mỗi giá trị ngôn ngữ sẽ được biểu diễn bằng 1 hàm liên thuộc. Mỗi biến ngôn sẽ thường được biểu diễn bởi từ 3 đến 9 hàm liên thuộc. Với bài toán này, ta sẽ tiến hành mờ hóa ngõ vào e và u bằng 5 hàm liên thuộc dạng tam giác chia đều cho các khoảng giá trị đã xác định ở Bước 1. Mờ hóa ngõ vào e bằng các giá trị ngôn ngữ sau {RN – rất nhỏ, N – nhỏ, K – không, L – lớn, RL – rất lớn} và ngõ ra u {RC – rất chậm, C – chậm, TB – trung bình, N – nhanh, RN – rất nhanh} hay còn được viết như sau:

Mờ hóa ngõ vào e và ngõ ra u

Ở giai đoạn bắt đầu, ta nên chọn hàm liên thuộc dạng tam giác và chia đều các tập mờ trong miền giá trị đã được giới hạn ở Bước 1. Sau khi có nhiều kinh nghiệm hơn, chúng ta hoàn toàn có thể thay đổi kiểu hàm liên thuộc và dịch chuyển các tập mờ trong miền giá trị của biến ngôn ngữ, để thu được đáp ứng tốt nhất. Việc lựa chọn số lượng và hình dạng các hàm liên thuộc đều tùy thuộc vào kinh nghiệm của người thiết kế. Ngoài ra, chúng ta có thể thay đổi và thực hện lại bước này nhiều lần khi kết quả điều khiển chưa đạt yêu cầu. Tiến hành mờ hóa trên MATLAB và ta thu được kết quả sau:

Mờ hóa ngõ vào bằng 5 hàm liên thuộc hình tam giác. Range là khoảng giá trị xác định ở Bước 1.
Mờ hóa ngõ ra bằng 5 hàm liên thuộc hình tam giác. Range là khoảng giá trị xác định ở Bước 1.

Bước 3 Lập luật điều khiển

Đây là bước quan trọng và khó nhất trong quá trình thiết kế bộ diễn khiến mờ. Việc xây dựng luật điều khiển phụ thuộc vào kiến thức và kinh nghiệm vận hành hệ thống của các chuyên gia và người thiết kế. Đôi khi, luật điều khiển mà phải được hiệu chỉnh nhiều lần để thu được đáp ứng tốt nhất.

Từ sơ đồ điều khiển vòng kín ta thấy ngõ vào bộ điều khiển e = yref – y biến thiên theo thời gian. Ta xét 2 trường hợp sau:

Trường hợp 1: Ta xét e > 0, tức là thời điểm mà đáp ứng y còn thấp hơn giá trị tham khảo yref, lúc đó đòi hỏi bộ điều khiển phải cung cấp tín hiệu điều khiển u đủ lớn để lại đáp ứng nhanh đạt được trị yref.

Trường hợp 2: Ngược lại, khi e < 0 là thời điểm đáp ứng y của động cơ đã lớn hơn giá trị trị tham khảo yref. Khi đó hiện tượng vot lố đã xuất hiện, do vậy ta cần giảm giá trị u để tốc độ động cơ nhanh được ổn định ở giá trị tham khảo.

Ngoài ra, khi e = 0 tức hệ thống đã được ổn định đây là mục tiêu điều khiển nên ta không cần quan tâm đến trường hợp này.

Từ 2 trường hợp trên ta rút ra được nhận xét như sau:

+ Khi e < 0 | y > yref , y đã vọt lố do vậy cần giảm u để y quay về giá trị yref nên u cần giảm.

+ Khi e > 0 | y < yref , y thấp hơn yref do vậy cần tăng u để y nhanh đạt đến giá trị yref nên u cần tăng.

Từ 2 nhận xét trên ta sẽ lập luật điều khiển thông qua bảng sau:

Thứ tựLuật mờ
R1If e is RN then u is RC
R2If e is N then u is C
R3If e is K then u is TB
R4If e is L then u is N
R5If e is RL then u is RN

Các luật sẽ được hiểu như sau, ta lấy R1 làm ví dụ. If e is RN then u is RC tức nếu sai số e là Rất nhỏ (RN) thì ngõ ra u sẽ là Rất chậm (RC). Vì khi e là RN tức e < 0 ta xét trường hợp 2, ta cần phải giảm u ở ngõ ra nên u sẽ là RC để hệ thống nhanh được ổn định. Tương tự với các luật còn lại.

Quá trình này được tiến hành trên MATLAB như sau ta sẽ chọn giá trị e, chọn giá trị u và nhấn “Add rule” để thêm luật.

Cửa sổ thiết lập luật mờ.

Như vậy ở bước này ta đã thiết kế bộ điều khiển mờ xong. Tiếp theo ta cần xuất bộ điều khiển sang Workspace hoặc file của MATLAB để tiến hành mô phỏng kiểm chứng và sử dụng. Ta chọn File > Export > To Workspace và nhập tên của bộ điều khiển ví dụ như “Cybernetics_SISO_Theory” như trên để tiến hành mô phỏng.

Ngoài ra ta có thể chọn To File và nhập tên để lưu bộ điều khiển trong máy tính. Khi muốn mở một bộ điều khiển mờ dưới dạng file với phần mở rộng là .fis ta cần nhớ câu lệnh sau:

<Tên bộ điều khiển> = readfis(“<tên file của bộ điều khiển>”) như như hình sau:

Script mô tả thông số mô hình của động cơ DC
Xem luật mờ thông qua câu lệnh showrule().
Các giá trị trên Workspace.

Lưu ý khi có bất cứ điều chỉnh nào trong bộ điều khiển mờ ta cần thực hiện lại bước này để cập nhật tất cả thay đổi để chuyển sang các bước kế tiếp.

Bước 4 Chọn cơ chế suy diễn mờ và phương pháp giải mờ

Do ở giai đoạn mới bắt đầu, để dễ dàng sử dụng ta sẽ giữ cơ chế suy diễn mờ mặc định của MATLAB là cơ chế suy diễn mờ MAX-MIN. Tương tự ta cũng giữ mặc định giải mờ bằng phương pháp điểm trọng tâm. Dĩ nhiên, sau khi đã thành thạo và chủ động được việc thiết kế ta có thể sử dụng các cơ chế suy diễn và các phương pháp giải mờ khác để kiểm chứng.

Cửa sổ Rule Viewer hiển thị quan hệ giá trị vào ra.
Mặt đặc tính biểu thị quan hệ vào ra của bộ điều khiển.

Bước 5 Tối ưu hệ thống

Ở bước này ta sẽ tiến hành mô phỏng bộ điều khiển vừa thiết kế trong Simulink. Trở lại với sơ đồ “Cybernetics_SISO_Dcmotor_Modeling”. Trước hết ta sẽ chạy Script file Parameter.m ở Bước 3 để cập nhật các thông số cho mô hình động cơ DC được mô tả thông qua khối “Transfer Function” với tử số (numerator) và mẫu số (denominator) được cung cấp như sau.

Mô hình Cybernetics_SISO_Dcmotor_Modeling trên Simulink
Thiết lập thông số cho khối Transfer Fcn

Sau đó sử dụng bộ điều khiển vừa thiết kế bằng cách nhập tên của bộ điều khiển vào khối Fuzzy Logic Controller để sử dụng.

Nhập tên bộ điều khiển mờ được sử dụng vào khối Fuzzy Logic Controller

Cuối cùng tiến hành chạy mô phỏng hệ thống trên Simulink, ta thu được đồ thị biểu diễn đáp ứng vào ra của hệ thống như sau:

Đáp ứng ngõ ra y và giá trị đặt y_ref.

Như vậy ta đã hoàn thành việc xây dựng bộ điều khiển mờ cho mô hình động cơ DC trên MATLAB Simulink. Phần trình bày trên chỉ thỏa mãn việc điều khiển tốc độ động cơ ở một chiều. Ta có thể điều khiển cả 2 chiều của động cơ bằng cách thay đổi khoảng giá trị giới hạn ngõ ra u thành [-40, 40] và điều chỉnh luật mờ. Các bạn có thể xem như đây là một thử thách để các bạn tự tay thiết kế lại bộ điều khiển trên để có thể điều khiển 2 chiều của mô hình động cơ.

Theo Chapter I thì Bước 5 ngoài mô phỏng kiểm chứng, ta còn bước cải thiện hệ thống. Đầy là một bước tương đối khó khăn ở giai đoạn này nên việc cải thiện bộ điều khiển mờ nói chung sẽ được đề cập trong các Chapter tiếp theo.

Nếu có thắc mắc hay cần trao đổi thêm mình sẽ hỗ trợ các bạn. Cứ để lại bình luận bên dưới !!!

Leave a comment