Điều khiển nơron mờ thích nghi hệ thống phi tuyến

153 6 0
Điều khiển nơron mờ thích nghi hệ thống phi tuyến

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Luận Văn Thạc Só Chương TỔNG QUAN 1.1 TỔNG QUAN VỀ ĐIỀU KHIỂN THÍCH NGHI Lý thuyết điều khiển thích nghi [5], [6] đời từ năm đầu thập niên 1950 xuất phát từ yêu cầu thiết kế hệ thống điều khiển lái máy bay tự động Máy bay có đặc tính động học thay đổi mạnh thay đổi tốc độ độ cao nên điều khiển điều khiển hồi tiếp có độ lợi cố định, điều khiển phức tạp học thay đổi thích ứng theo đặc tính động thay đổi máy bay Bộ điều khiển thích nghi theo mô hình chuẩn MRAC đề xuất để giải toán điều khiển lái tự động, phương pháp độ nhạy phương pháp độ dốc sử dụng để thiết kế luật thích nghi cho nhiều sơ đồ điều khiển thích nghi khác Thập niên 1960 [10] điều khiển thích nghi cho hệ thống động lónh vực nghiên cứu đầy tiềm Kỹ thuật không gian trạng thái lý thuyết ổn định dựa vào lý thuyết Lyapunov đưa góp phần tạo nên trào lưu nghiên cứu lónh vực Vào năm 1970 nhiều sơ đồ điều khiển thích nghi đời kết kết hợp sơ đồ ước lượng thông số với phương pháp thiết kế điều khiển Mặt khác phát triển kỹ thuật điện tử máy tính giai đoạn cho phép thực thi điều khiển phức tạp điều khiển thích nghi, điều làm gia tăng quan tâm nghiên cứu ứng dụng điều khiển thích nghi Sự thành công giai đoạn 1970 nhanh chóng nối tiếp nghiên cứu, tranh luận Năm 1979 người ta sơ đồ điều khiển thích nghi đưa năm 1970 dễ trở nên ổn định có nhiễu loạn nhỏ Tính không bền vững điều khiển thích nghi vấn đề gây nhiều tranh luận Vào năm đầu thập niên 1980 có nghiên cứu tìm hiểu chế gây ổn định điều khiển thích nghi tìm cách khắc phục Hướng nghiên cứu lý thuyết điều khiển thích nghi từ thập niên 1990 đến nghiên cứu chất lượng hệ điều khiển thích nghi mở rộng kết có thập niên 1980 cho lớp hệ phi tuyến có thông số trước Điều khiển thích nghi tổng hợp kỹ thuật nhằm tự động chỉnh định điều chỉnh mạch điều khiển nhằm thực hay trì mức độ định chất lượng hệ thống thông số trình điều khiển trước thay đổi theo thời gian Vì yếu tố bất định xuất nhiều toán điều khiển thực tế, điều khiển thích nghi hữu ích nhiều lónh vực công nghiệp Trang Luận Văn Thạc Só Nhận dạng Điều kiện làm việc Chỉnh định r(t) e(t) Đối tượng Bộ điều khiển y(t) u(t) Hình 1.1: Sơ đồ tổng quát hệ thống điều khiển thích nghi Trong sơ đồ điều khiển thích nghi cho thấy điều khiển chỉnh định liên tục hệ thống hoạt động Tùy theo cách chỉnh định mà ta có phương pháp điều khiển thích nghi khác Đối với phương pháp hoạch định độ lợi thông số điều khiển thay đổi theo điều kiện làm việc, khối nhận dạng sơ đồ tổng quát không cần thiết Nếu khối nhận dạng ước lượng thông số đối tượng khối chỉnh định tính toán thông số điều khiển theo mô hình đối tượng ta có sơ đồ điều khiển thích nghi gián tiếp Ngược lại khối nhận dạng ước lượng thông số điều khiển ta có sơ đồ điều khiển thích nghi trực tiếp Nếu khối chỉnh định có sử dụng mô hình chuẩn chiến lược chỉnh định tối thiểu sai lệch đầu mô hình chuẩn đầu hệ thống thật ta có sơ đồ điều khiển thích nghi (gián tiếp hay trực tiếp) theo mô hình chuẩn Để tham khảo chi tiết mô hình xem tài liệu [18], [22] Có nhiều phương pháp điều khiển thích nghi hệ phi tuyến điều khiển mô hình ngược thích nghi [1], [17] Điều khiển mô hình nội thích nghi [25] Điều khiển dự báo thích nghi [4] Điều khiển thích nghi hệ phi tuyến dựa nguyên tắc hồi tiếp tuyến tính hóa [5], [20] Các phương pháp có kết khả quan lý thuyết ứng dụng hệ phi tuyến Đa số sơ đồ điều khiển thích nghi đề cập đến phải thỏa điều kiện biến trạng thái đo lường thực tế có nhiều trường hợp đo tín hiệu mà đo biến trạng thái, điều động lực để nhà nghiên cứu kết hợp kết quan sát trạng thái vào sơ đồ điều khiển thích nghi Khâu quan sát kinh điển sử dụng mô hình tương đương với đối tượng, ma trận L phản hồi sai lệch đầu thật đầu mô hình, có nhiệm vụ hiệu chỉnh đặc tính mô hình cho phù hợp với đặc tính đối tượng Logic mờ cung cấp phương thức suy diễn bắt chước khả suy luận người để áp dụng vào hệ thống sở trí thức Dựa lý thuyết tập mờ công cụ biểu diễn xử lý liệu không xác, logic mờ cung cấp sở toán học để mô tả không chắn liên quan đến trình nhận thức người Hệ mờ Trang Luận Văn Thạc Só hệ thống thông tin dựa vào logic mờ suy luận mờ Hai đặc điểm làm cho hệ mờ có nhiều ứng dụng là: - Hệ mờ phù hợp với suy luận không chắn hay gần đúng, đặc biệt hệ thống phức tạp khó rút mô hình toán - Logic mờ cho phép định với giá trị ước lượng điều kiện thông tin không đầy đủ không chắn Thiết kế dựa vào logic mờ giải yếu điểm phương pháp thông thường Điều khiển mờ dựa logic mờ cung cấp kiểu thiết kế mà điều khiển thiết kế cho trình phức tạp, thiếu xác định mà không cần tri thức liệu định lượng liên quan đến quan hệ vào Điều khiển mờ thích nghi trực tiếp gián tiếp tham khảo [3], [5], [12], [13], [21], [22], [23] Mạng nơrôn [2], [6] xem mô hình toán học đơn giản não hoạt động mạng tính toán phân bố song song Tuy nhiên, khác với máy tính thông thường cần phải lập trình để thực công việc đó, phần lớn mạng nơrôn phải huấn luyện, học liên kết mới, quan hệ chức mẫu Mạng nơrôn công cụ để trang bị cho hệ thống thông minh khả học Ưu điểm lớn mạng nơrôn tính thích nghi Mạng nơrôn tự động điều chỉnh thông số để tối ưu hóa hoạt động nhận dạng mẫu, định, điều khiển hệ thống dự báo Tính thích nghi cho phép mạng nơrôn thực tốt chức môi trường hay đối tượng điều khiển thay đổi theo thời gian Trong năm gần đây, mạng nơrôn logic mờ hai phương pháp bổ sung cho việc thiết kế thực thi hệ thống thông minh nhằm phát huy triệt để ưu điểm để giảm thiểu khuyết điểm phương pháp Dưới số kết hợp phổ biến nay: - Hệ mờ nơrôn (Neural Fuzzy System): cung cấp cho hệ mờ hệ thống tự chỉnh dùng công cụ mạng nơrôn, ANFIS (Adaptive Neural Fuzzy Inference Systems) ví dụ điển hình hệ mờ nơrôn - Mạng nơrôn mờ (Fuzzy Neural System): mạng nơrôn số phép toán mạng mờ hóa, ví dụ logic mờ xác định bước học cấu trúc mạng Như kết hợp ưu điểm điều khiển mờ mạng nơrôn, nghóa thể tri thức ngôn ngữ hệ mờ vào mạng nơrôn truyền thống, mạng nơrôn cung cấp thuật toán tính toán mức thấp, cho phép truy xuất thông tin từ hệ thống cần điều khiển Trong đó, hệ mờ cho phép khai thác khả mạng nơrôn, bổ sung cho tri thức chuyên gia Theo cách dịch chuyển khả tính toán học mức thấp mạng nơrôn sang hệ mờ ngược lại thích hợp khả suy diễn dựa luật IF-THEN mức cao hệ mờ sang mạng nơrôn Các công trình [24], [26] đề xuất sơ đồ điều khiển nơrôn mờ thích nghi hồi tiếp ngõ cách sử dụng quan sát để ước lượng biến trạng thái đo lường hệ phi tuyến SISO Tuy nhiên thực tế đa số đối tượng điều khiển phòng thí nghiệm hệ tay máy mềm dẻo, máy bay trực thăng hay hệ thống công nghiệp hệ MIMO nên lý thuyết hệ SISO ứng dụng thực tế Để Trang Luận Văn Thạc Só đưa lý thuyết điều khiển thích nghi vào ứng dụng rộng rãi thực tế, nhiều nổ lực mở rộng kết điều khiển thích nghi hệ SISO cho hệ MIMO Do sở tham khảo báo [24], [26] tham khảo thuật toán điều khiển mờ thích nghi hồi tiếp ngõ cho hệ phi tuyến MIMO báo [3], [7], [13], [21], [22], [23] Tác giả mở rộng thuật toán điều khiển hồi tiếp ngõ cho hệ phi tuyến MIMO dùng mạng nơrôn mờ để thiết kế điều khiển thích nghi trực tiếp (Direct Adaptive Fuzzy-Neural Output Feedback Controller (DAFNOC)) gián tiếp (Indirect Adaptive Fuzzy-Neural Output Feedback Controller (IAFNOC)) Ứng dụng giải thuật để điều khiển hệ lắc ngược đôi [19] 1.2 GIỚI THIỆU LUẬN VĂN 1.2.1 Nhiệm vụ luận văn * Tìm hiểu tổng quan điều khiển thích nghi, trình hình thành phát triển điều khiển thích nghi Vị trí điều khiển thích nghi sản suất công nghiệp Xu hướng phát triển điều khiển thích nghi * Trình bày kiến thức tảng lý thuyết mờ, mạng nơrôn hướng kết hợp hệ mờ mạng nơrôn * Nghiên cứu, mở rộng thuật toán áp dụng cho hệ SISO điều khiển hồi tiếp ngõ nơrôn mờ thích nghi trực tiếp (DAFNOC) gián tiếp (IAFNOC) cho hệ phi tuyến MIMO * Kiểm chứng tính đắn thuật toán mở rộng kết mô điều khiển hệ lắc ngược đôi Một số đề nghị cho hướng nghiên cứu phát triển đề tài 1.2.2 Hướng giải vấn đề Trên sở nghiên cứu thuật toán điều khiển nơrôn mờ thích nghi hồi tiếp ngõ hệ phi tuyến SISO, tác giả mở rộng cho hệ phi tuyến MIMO để ứng dụng cho hệ thống thực tiễn sản xuất phù hợp với hướng nghiên cứu phát triển mạnh Luận văn mở rộng thuật toán điều khiển hồi tiếp ngõ cho hệ phi tuyến MIMO dùng điều khiển nơrôn mờ thích nghi trực tiếp (DAFNOC) gián tiếp (IAFNOC) cho phép chỉnh định on-line thông số ngõ mạng (tương ứng với thông số mệnh đề kết luận hệ mờ) nhờ mà điều khiển có khả thích nghi với thay đổi thông số, điều kiện làm việc đối tượng Bộ điều khiển DAFNOC sử dụng mạng nơrôn mờ singleton để xấp xỉ luật điều khiển với ngõ vào mạng vector sai số ước lượng Các thông số ngõ mạng cập nhật thích nghi on-line Nhờ đó, điều khiển DAFNOC có khả thích nghi giới hạn cho phép thay đổi thông số đối tượng hay tác động điều kiện làm việc, tác động môi trường Bộ điều khiển thích nghi hồi tiếp ngõ thiết kế theo hai cách: Cách thứ nhận dạng trực tiếp luật điều khiển lý tưởng u * (t ) , cách gọi điều khiển hồi tiếp ngõ thích nghi trực tiếp (DAFNOC) Bộ điều khiển DAFNOC sử dụng mạng nơrôn mờ singleton để xấp xỉ luật điều khiển với ngõ vào Trang Luận Văn Thạc Só mạng véc tơ sai số ước lượng Các thông số ngõ mạng cập nhật thích nghi on-line Nhờ đó, điều khiển DAFNOC có khả thích nghi giới hạn cho phép thay đổi thông số đối tượng hay tác động điều kiện làm việc, tác động môi trường Luật điều khiển DAFNOC: u = uf +v Với u f xấp xỉ luật điều khiển , v thành phần để khử nhiễu ngoài, sai số mô hình bù trượt Đối tượng điều khiển x& = A0 x + B[ F ( x) + G ( x)u + d ] y y=C x T yr ~ E1 Bộ quan sát trạng thái E1 Eˆ eˆ uf Mạng nơrôn mờ xấp xỉ luật điều khiển Luật cập nhật thích nghi on-line ~ E1 Hình 1.2: Sơ đồ khối điều khiển DAFNOC Để xấp xỉ luật điều khiển, tức tính u f Bộ điều khiển DAFNOC sử dụng cấu trúc xấp xỉ nơrôn mờ Singleton Cấu hình xấp xỉ nơrôn mờ Singleton gồm có số luật Nếu – Thì chế suy luận mờ Cơ chế suy luận mờ sử dụng luật mờ Nếu – Thì để thực ánh xạ từ vector ngõ vào eˆ = [eˆ1 , eˆ2 , , eˆn ]T ∈ R n Cách thứ hai ước lượng trực tiếp hàm G (x) F (x) , dựa kết ước lượng để tính u * (t ) , cánh gọi điều khiển hồi tiếp ngõ thích nghi gián tiếp (IAFNOC) Bộ điều khiển IAFNOC sử dụng mạng nơrôn mờ singleton để xấp xỉ hàm phi tuyến ma trận độ lợi đầu vào ước lượng Gˆ ( xˆ ) vector đặc tính động học ước lượng Fˆ ( xˆ ) với ngõ vào mạng véc tơ trạng thái ước lượng Các thông số ngõ mạng cập nhật thích nghi on-line Nhờ đó, điều khiển IAFNOC Trang Luận Văn Thạc Só có khả thích nghi giới hạn cho phép thay đổi thông số đối tượng hay tác động điều kiện làm việc, tác động môi trường Đối tượng điều khiển x& = A0 x + B[ F ( x) + G ( x)u + d ] y y = CT x yrr ~ E1 Eˆ1 Bộ quan sát trạng thái u E1 eˆ Luật điều khiển gián tiếp Fˆ Gˆ Mạng nơrôn mờ xˆ Yr ~ E1 Luật cập nhật thích nghi on-line Hình 1.3: Sơ đồ khối điều khiển IAFNOC Luật điều khiển IAFNOC: u = Gˆ −1 ( xˆ )[− Fˆ ( xˆ ) + y r( m ) + K cT eˆ − v] Trong Gˆ ( xˆ ) Fˆ ( xˆ ) ước lượng G (x) vaø F (x) v = [v1 , v , , v p ]T tín hiệu điều khiển bù nhiễu ngoài, sai số mô hình bù trượt Để ước lượng Gˆ ( xˆ ) Fˆ ( xˆ ) điều khiển IAFNOC sử dụng cấu trúc xấp xỉ nơrôn mờ singleton Cấu hình xấp xỉ nơrôn mờ gồm có số luật Nếu – Thì chế suy luận mờ Cơ chế suy luận mờ sử dụng luật mờ Nếu – Thì để thực ánh xạ từ vector ngõ vào xˆ = [ xˆ1 , xˆ , , xˆ n ]T ∈ R n Như luật điều khiển tìm hai cách khác nhau, cách thứ dùng mạng Singleton có ngõ vào mạng vector sai số ước lượng, để xấp xỉ trực tiếp luật điều khiển nên cách gọi điều khiển thích nghi trực tiếp DAFNOC Cách thứ hai dùng mạng Singleton có ngõ vào mạng vector trạng thái ước lượng, để Trang Luận Văn Thạc Só xấp xỉ hàm phi tuyến G (x) F (x) từ tính luật điều khiển nên cách gọi điều khiển thích nghi gián tiếp IAFNOC Vì khối lượng tính toán thuật toán DAFNOC thuật toán IAFNOC nên điều khiển DAFNOC có nhiều ưu điểm so với điều khiển IAFNOC, DAFNOC hữu ích với hệ thống kích thước lớn phức tạp Trên sở lý nguyên cứu thuyết điều khiển thích nghi hồi tiếp ngõ AFNOC, tác giả xây dựng sơ đồ simulink cho điều khiển DAFNOC điều khiển IAFNOC Để minh chứng cho tính hiệu thuật toán mở rộng, tác giả áp dụng để thiết kế điều khiển thích nghi cho hệ phi tuyến MIMO hệ lắc ngược đôi sau: Hình 1.4: Mô hình lắc ngược đôi Hệ thống bao gồm khối lượng M1, M2 gắn đầu lắc, độ cao lắc r Một lò xo có độ cứng k có tác dụng liên kết hai lắc ngược với vị trí trung điểm Khoảng cách hai lắc l Ở l < r để lắc đẩy lẫn vị trí thẳng đứng Ở đầu hai lắc có khối lượng M1, M2 liên kết với hệ vật gồm xe - khâu giảm chấn - lò xo Hệ lắc ngược đôi có đầu vào đầu ra: Tín hiệu lắc góc hợp lắc với phương thẳng đứng y1 y2 Tín hiệu vào điều khiển moment ngẫu lực u1 u2 động servo Nhiệm vụ điều khiển điều khiển ngõ y1 y2 cho góc hợp lắc với phương thẳng đứng bám theo tín hiệu chuẩn mong muốn yr yr Tín hiệu chuẩn yr yr tín hiệu dạng sóng sin, sóng vuông, sóng tam giác Trang Luận Văn Thạc Só 1.2.3 Giới thiệu nội dung luận văn Chương 1: Tổng quan Chương giới thiệu tổng quan điều khiển thích nghi, trình hình thành phát triển điều khiển thích nghi xu hướng phát triển điều khiển thích nghi Đưa hướng nghiên cứu điều khiển hệ phi tuyến MIMO đo trạng thái Đồng thời nêu vấn đề kết hợp ưu điểm điều khiển mờ mạng nơrôn để điều khiển hệ thống động Trong chương giới thiệu mục đích tóm tắt nội dung luận văn Chương 2: Cơ sở lý thuyết Chương giới thiệu thành phần tập mờ, logic mờ Giới thiệu mạng nơrôn, thành phần mạng nơrôn số mạng nơrôn thông dụng Trên sở đánh giá khác biệt điều khiển mờ điều khiển dùng mạng nơrôn từ đưa hướng kết hợp mạng nơrôn hệ mờ cho phép phát huy ưu điểm hai phương pháp Chương 3: Điều khiển thích nghi hồi tiếp ngõ hệ phi tuyến MIMO Chương mở rộng thuật toán điều khiển nơrôn mờ thích nghi trực tiếp (DAFNOC) gián tiếp (IAFNOC) cho hệ phi tuyến MIMO sở tham khảo thuật toán điều khiển hồi tiếp ngõ hệ SISO đo lường ngõ mà không đo trạng thái Chương 4: Ứng dụng Chương việc xây dựng mô hình toán cho đối tượng hệ phi tuyến MIMO hệ lắc ngược đôi Áp dụng lý thuyết trình bày chương để điều khiển cho hệ phi tuyến MIMO hệ lắc ngược đôi, xây dựng mô hình mô hệ thống Mục tiêu chương để kiểm chứng lại thuật toán, đánh giá chất lượng điều khiển AFNOC Chương 5: Kết luận hướng phát triển đề tài Từ kết có chương khẳng định tính đắn thuật toán Vì nội dung chương rút kết luận khả phạm vi ứng dụng thuật toán Một số đề nghị cho hướng nghiên cứu phát triển đề tài Trang Luận Văn Thạc Só Chương CƠ SỞ LÝ THUYẾT 2.1 TẬP HP MỜ VÀ LOGIC MỜ Cơ sở toán học điều khiển mờ lý thuyết tập mờ logic mờ Zadeh đưa lần năm 1965 trường đại học Berkeley - Mỹ Năm 1970 trường Mary Queen- London, Mamdani thành công việc ứng dụng logic mờ để điều khiển máy nước mà ông điều khiển kỹ thuật cổ điển Từ lý thuyết mờ phát triển ứng dụng rộng rãi Tập hợp mờ công cụ chuyển tải khái niệm logic mờ vào thuật toán ứng dụng Đến lượt mình, logic mờ lại dựa tảng tập hợp mờ để phát triển khả nâng cao cho riêng điều khiển mờ, nhận dạng mờ Có thể nói tập hợp mờ logic mờ hai thành phần quan trọng lý thuyết mờ chúng có mối quan hệ hỗ tương lẫn [5], [6], [14] Tuy lý thuyết mờ đời Mỹ, ứng dụng Anh phát triển mạnh mẽ Nhật Trong lónh vực tự động hóa logic mờ ngày ứng dụng rộng rãi Nó thật hữu ích với đối tượng phức tạp chưa biết rõ hàm truyền, logic mờ giải vấn đề mà điều khiển kinh điển không làm 2.1.1 Tập hợp mờ quan hệ mờ Tập hợp mờ * Định nghóa tập mờ ~ Tập mờ A xác định tập sở X tập hợp mà phần tử cặp giá trị (x, µ A~ ( x ) ), x ∈ X µ A~ (x ) ánh xạ: µ A~ : X → [0,1] ~ Ánh xạ µ A~ ( x) gọi hàm liên thuộc tập mờ A , đặc trưng cho độ phụ ~ thuộc phần tử thuộc tập sở X vào tập mờ A ~ Một quy ước phổ biến tập mờ tập mờ A định nghóa tập sở X rời rạc hữu hạn ký hiệu: µ ~ ( xi ) ~ µ ~ (x1 ) µ Α~ ( x ) Α= Α + +L = Σ Α i x1 x2 xi ~ Tập mờ A định nghóa tập sở X liên tục vô hạn ký hiệu: µ ~ (x ) ~ Α=∫ Α x ~ Ký hiệu Α dùng cho tập mờ để phân biệt với tập hợp rõ A Trang 10 (2.1) (2.2) Luận Văn Thạc Só * Hàm liên thuộc mờ Các phần tử không gian sở phụ thuộc vào tập hợp mờ với giá trị Giá trị gọi mức độ phụ thuộc, giá trị gần mức độ phụ thuộc cao Hàm đặc trưng tập mờ gọi hàm liên thuộc (Hình 2.1), thể mức độ phụ thuộc phần tử không gian sở Hình 2.1: Các vùng chức hàm liên thuộc Hàm liên thuộc cho tập mờ có nhiều dạng khác nhau, điều phụ thuộc cách định nghóa tập mờ Hình 2.1 trình bày vùng chức hàm liên thuộc Hàm liên thuộc có dạng tuyến tính đoạn hay dạng trơn Hình 2.2 minh họa số dạng hàm liên thuộc thường gặp µ (x) µ (x) 1 0 x x a) Dạng vai phải b) Dạng vai trái µ (x) µ (x) 1 x c) Dạng hình thang x d) Dạng tam giác Trang 11 Luận Văn Thạc Só q2ref = str2num(get(findobj('Tag','q2refEditH'),'String')); assignin('base','q2ref',q2ref); end if strcmp(get_param('direct_adaptive','SimulationStatus'),'stopped') set_param('direct_adaptive','SimulationCommand','start'); set(hObject,'CData',imread(' \Mics\pause_button.bmp'),'TooltipString','Tam dung mo phong'); set(ProgressTextH,'String','Simulating '); elseif strcmp(get_param('direct_adaptive','SimulationStatus'),'running') set_param('direct_adaptive','SimulationCommand','pause'); set(hObject,'CData',imread(' \Mics\start_button.bmp'),'TooltipString','Tiep tuc mo phong'); set(ProgressTextH,'String','Paused'); else %Dang pause set_param('direct_adaptive','SimulationCommand','continue'); set(hObject,'CData',imread(' \Mics\pause_button.bmp'),'TooltipString','Tam dung mo phong'); set(ProgressTextH,'String','Simulating '); end %********************************************************************** %Khi nhan nut Stop function StopSimulation(hObject, eventdata) set_param('direct_adaptive','SimulationCommand','stop'); clc; %********************************************************************** %Khi nhan nut Exit function ExitAnimation(hObject, eventdata) MainFigureH = findobj('Tag','MainFigureH'); delete(MainFigureH); step2_figure = findobj('Tag','step2_figure'); if ~isempty(step2_figure) set(step2_figure,'Visible','On'); end %********************************************************************** % Khi nhan nut Close (X) tren cua so function CloseRequestAnimation(hObject, eventdata) MainFigureH = findobj('Tag','MainFigureH'); status = []; if ~isempty(find_system('Name','direct_adaptive')) status = get_param('direct_adaptive','SimulationStatus'); end if strcmp(status,'running') | strcmp(status,'paused') Trang 142 Luận Văn Thạc Só msgbox('Phai DUNG mo phong truoc dong cua so minh hoa','Error','error','modal'); else delete(MainFigureH); step2_figure = findobj('Tag','step2_figure'); if ~isempty(step2_figure) set(step2_figure,'Visible','On'); end end %********************************************************************** %Khi nhan nut Q1 tren thi q1 function PlotMore1(hObject, eventdata) PlotMoreFigureH1 = findobj('Tag','PlotMoreFigureH1'); if isempty(PlotMoreFigureH1) PlotMoreFigureH1 = figure('Name','Plot more','NumberTitle','Off','Tag','PlotMoreFigureH1'); else figure(PlotMoreFigureH1); end q1refLineH = findobj('Tag','q1refLineH'); q1LineH = findobj('Tag','q1LineH'); plot(get(q1refLineH,'XData'),get(q1refLineH,'YData'),'r',get(q1LineH,'XData'),get(q1L ineH,'YData'),'b'); xlabel('Thoi gian [s]'); ylabel('Goc quay lac [rad]'); grid title('QUA TRINH DIEU KHIEN CON LAC NGUOC DOI'); legend('q1 ref','q1 respond'); %********************************************************************** %Khi nhan nut Q2 tren thi q2 function PlotMore(hObject, eventdata) PlotMoreFigureH = findobj('Tag','PlotMoreFigureH'); if isempty(PlotMoreFigureH) PlotMoreFigureH = figure('Name','Plot more','NumberTitle','Off','Tag','PlotMoreFigureH'); else figure(PlotMoreFigureH); end q2refLineH = findobj('Tag','q2refLineH'); q2LineH = findobj('Tag','q2LineH'); plot(get(q2refLineH,'XData'),get(q2refLineH,'YData'),'r',get(q2LineH,'XData'),get(q2L ineH,'YData'),'b'); xlabel('Thoi gian [s]'); ylabel('Goc quay lac [rad]'); grid title('QUA TRINH DIEU KHIEN CON LAC NGUOC DOI'); legend('q2 ref','q2 respond'); Trang 143 Luận Văn Thạc Só %********************************************************************** %Khi nhan nut U1 tren thi function PlotMoreu1(hObject, eventdata) PlotMoreFigureu1 = findobj('Tag','PlotMoreFigureu1'); if isempty(PlotMoreFigureu1) PlotMoreFigureu1 = figure('Name','Plot Input 1','NumberTitle','Off','Tag','PlotMoreFigureu1'); else figure(PlotMoreFigureu1); end u1LineH = findobj('Tag','u1LineH'); plot(get(u1LineH,'XData'),get(u1LineH,'YData'),'b'); xlabel('Thoi gian [s]'); ylabel('Moment quay [N.m]'); grid title('MOMENT QUAY DIEU KHIEN CON LAC 1'); %********************************************************************** %Khi nhan nut U2 tren thi function PlotMoreu2(hObject, eventdata) PlotMoreFigureu2 = findobj('Tag','PlotMoreFigureu2'); if isempty(PlotMoreFigureu2) PlotMoreFigureu2 = figure('Name','Plot Input 2','NumberTitle','Off','Tag','PlotMoreFigureu2'); else figure(PlotMoreFigureu2); end u2LineH = findobj('Tag','u2LineH'); plot(get(u2LineH,'XData'),get(u2LineH,'YData'),'b'); xlabel('Thoi gian [s]'); ylabel('Moment quay [N.m]'); grid title('MOMENT QUAY DIEU KHIEN CON LAC 2'); %********************************************************************** %Khi nhan nut Simulink function Simulink(hObject, eventdata) open('direct_adaptive.mdl'); %********************************************************************** %Khi thay doi a1 bang cach keo Slider function a1SliderManualChange(hObject, eventdata) a1EditH = findobj('Tag','a1EditH'); a1 = round(get(hObject,'Value')*100)/100; set(hObject,'Value',a1); set(a1EditH,'String',num2str(a1)); assignin('base','a1',a1); %Cap nhat chieu dai lac nguoc TankLinkH = findobj('Tag','TankLinkH'); TankEdge6H = findobj('Tag','TankEdge6H'); Trang 144 Luận Văn Thạc Só a1min = get(hObject,'Min'); a1max = get(hObject,'Max'); a1HeightMin = 0.3; a1HeightMax = 1; LinkHeight = a1HeightMin + (a1HeightMax-a1HeightMin)/(a1max-a1min)*(a1a1min); pos = get(TankLinkH,'Position'); pos(4) = LinkHeight; set(TankLinkH,'Position',pos); set(TankEdge6H,'YData',[LinkHeight, LinkHeight]); %********************************************************************** %Khi thay doi M1 bang cach keo Slider function a2SliderManualChange(hObject, eventdata) a2EditH = findobj('Tag','a2EditH'); a2 = round(get(hObject,'Value')*10)/10; set(hObject,'Value',a2); set(a2EditH,'String',num2str(a2)); assignin('base','a2',a2); %Cap nhat khoi luong vat nang m1 a2min = get(hObject,'Min'); a2max = get(hObject,'Max'); a2widthmin = 0.5; a2widthmax = 5; Faucet2H = findobj('Tag','Faucet2H'); set(Faucet2H,'LineWidth',a2widthmin+(a2widthmax-a2widthmin)/(a2max-a2min)*(a2a2min)); %********************************************************************** %Khi thay doi M2 bang cach keo Slider function a3SliderManualChange(hObject, eventdata) a3EditH = findobj('Tag','a3EditH'); a3 = round(get(hObject,'Value')*10)/10; set(hObject,'Value',a3); set(a3EditH,'String',num2str(a3)); assignin('base','a3',a3); %Cap nhat khoi luong vat nang m2 a3min = get(hObject,'Min'); a3max = get(hObject,'Max'); a3widthmin = 0.5; a3widthmax = 5; Faucet2H = findobj('Tag','Faucet2H'); set(Faucet2H,'LineWidth',a3widthmin+(a3widthmax-a3widthmin)/(a3max-a3min)*(a3a3min)); % Khi thay doi m1 bang cach keo Slider Trang 145 Luận Văn Thạc Só function a4SliderManualChange(hObject, eventdata) a4EditH = findobj('Tag','a4EditH'); a4 = round(get(hObject,'Value')*10)/10; set(hObject,'Value',a4); set(a4EditH,'String',num2str(a4)); assignin('base','a4',a4); % Cap nhat khoi luong vat nang m1 a4min = get(hObject,'Min'); a4max = get(hObject,'Max'); a4widthmin = 0.5; a4widthmax = 3; Faucet2H = findobj('Tag','Faucet2H'); set(Faucet2H,'LineWidth',a4widthmin+(a4widthmax-a4widthmin)/(a4max-a4min)*(a4a4min)); % Khi thay doi m2 bang cach keo Slider function a5SliderManualChange(hObject, eventdata) a5EditH = findobj('Tag','a5EditH'); a5 = round(get(hObject,'Value')*10)/10; set(hObject,'Value',a5); set(a5EditH,'String',num2str(a5)); assignin('base','a5',a5); % Cap nhat khoi luong vat nang m2 a5min = get(hObject,'Min'); a5max = get(hObject,'Max'); a5widthmin = 0.5; a5widthmax = 3; Faucet2H = findobj('Tag','Faucet2H'); set(Faucet2H,'LineWidth',a5widthmin+(a5widthmax-a5widthmin)/(a5max-a5min)*(a5a5min)); %********************************************************************** % Khi thay doi chieu dai lac Edit text a1 function a1EditManualChange(hObject, eventdata) a1SliderH = findobj('Tag','a1SliderH'); a1min = get(a1SliderH,'Min'); a1max = get(a1SliderH,'Max'); a1 = str2num(get(hObject,'String')); if ~isscalar(a1) a1 = (a1min+a1max)/2; else a1 = max(a1min,min(a1max,a1)); end a1 = round(a1*100)/100; set(hObject,'String',num2str(a1)); Trang 146 Luận Văn Thạc Só set(a1SliderH,'Value',a1); assignin('base','a1',a1); % Cap nhat chieu dai lac TankLinkH = findobj('Tag','TankLinkH'); TankEdge6H = findobj('Tag','TankEdge6H'); a1SliderH = findobj('Tag','a1SliderH'); a1HeightMin = 0.3; a1HeightMax = 1; LinkHeight = a1HeightMin + (a1HeightMax-a1HeightMin)/(a1max-a1min)*(a1a1min); pos = get(TankLinkH,'Position'); pos(4) = LinkHeight; set(TankLinkH,'Position',pos); set(TankEdge6H,'YData',[LinkHeight, LinkHeight]); %********************************************************************** % Khi thay doi khoi luong vat nang m1 Edit text a2 function a2EditManualChange(hObject, eventdata) a2SliderH = findobj('Tag','a2SliderH'); a2min = get(a2SliderH,'Min'); a2max = get(a2SliderH,'Max'); a2 = str2num(get(hObject,'String')); if ~isscalar(a2) a2 = (a2min+a2max)/2; else a2 = max(a2min,min(a2max,a2)); end a2 = round(a2*10)/10; set(hObject,'String',num2str(a2)); set(a2SliderH,'Value',a2); assignin('base','a2',a2); % Cap nhat khoi luong vat nang m1 Faucet2H = findobj('Tag','Faucet2H'); a2widthmin = 0.5; a2widthmax = 5; set(Faucet2H,'LineWidth',a2widthmin+(a2widthmax-a2widthmin)/(a2max-a2min)*(a2a2min)); %********************************************************************** % Khi thay doi khoi luong vat nang Edit text M1 function a3EditManualChange(hObject, eventdata) a3SliderH = findobj('Tag','a3SliderH'); a3min = get(a3SliderH,'Min'); a3max = get(a3SliderH,'Max'); a3 = str2num(get(hObject,'String')); Trang 147 Luận Văn Thạc Só if ~isscalar(a3) a3 = (a3min+a3max)/2; else a3 = max(a3min,min(a3max,a3)); end a3 = round(a3*10)/10; set(hObject,'String',num2str(a3)); set(a3SliderH,'Value',a3); assignin('base','a3',a3); % Cap nhat khoi luong vat nang Faucet2H = findobj('Tag','Faucet2H'); a3widthmin = 0.5; a3widthmax = 5; set(Faucet2H,'LineWidth',a3widthmin+(a3widthmax-a3widthmin)/(a3max-a3min)*(a3a3min)); %********************************************************************** % Khi thay doi khoi luong vat nang Edit text m1 function a4EditManualChange(hObject, eventdata) a4SliderH = findobj('Tag','a4SliderH'); a4min = get(a4SliderH,'Min'); a4max = get(a4SliderH,'Max'); a4 = str2num(get(hObject,'String')); if ~isscalar(a4) a4 = (a4min+a4max)/2; else a4 = max(a4min,min(a4max,a4)); end a4 = round(a4*10)/10; set(hObject,'String',num2str(a4)); set(a4SliderH,'Value',a4); assignin('base','a4',a4); % Cap nhat khoi luong vat nang Faucet2H = findobj('Tag','Faucet2H'); a4widthmin = 0.5; a4widthmax = 3; set(Faucet2H,'LineWidth',a4widthmin+(a4widthmax-a4widthmin)/(a4max-a4min)*(a4a4min)); %********************************************************************** % Khi thay doi khoi luong vat nang Edit text m2 function a5EditManualChange(hObject, eventdata) a5SliderH = findobj('Tag','a5SliderH'); a5min = get(a5SliderH,'Min'); a5max = get(a5SliderH,'Max'); Trang 148 Luận Văn Thạc Só a5 = str2num(get(hObject,'String')); if ~isscalar(a5) a5 = (a5min+a5max)/2; else a5 = max(a5min,min(a5max,a5)); end a5 = round(a5*10)/10; set(hObject,'String',num2str(a5)); set(a5SliderH,'Value',a5); assignin('base','a5',a5); % Cap nhat khoi luong vat nang Faucet2H = findobj('Tag','Faucet2H'); a5widthmin = 0.5; a5widthmax = 3; set(Faucet2H,'LineWidth',a5widthmin+(a5widthmax-a5widthmin)/(a5max-a5min)*(a5a5min)); %********************************************************************** % Khi bat/tat check box Adaptive function AdaptiveChoice(hObject, eventdata) choice = get(hObject,'Value'); adaptiveTextH = findobj('Tag','adaptiveTextH'); if choice==1 set(adaptiveTextH,'String','Adaptive'); else set(adaptiveTextH,'String','Not adaptive'); end assignin('base','adaptive',choice); %********************************************************************** % Khi nhan nut Default function ParamDefault(hObject, eventdata) load thongso.mat a1 a2 a3 a4 a5; a1EditH = findobj('Tag','a1EditH'); a2EditH = findobj('Tag','a2EditH'); a3EditH = findobj('Tag','a3EditH'); a4EditH = findobj('Tag','a4EditH'); a5EditH = findobj('Tag','a5EditH'); a1SliderH = findobj('Tag','a1SliderH'); a2SliderH = findobj('Tag','a2SliderH'); a3SliderH = findobj('Tag','a3SliderH'); a4SliderH = findobj('Tag','a4SliderH'); a5SliderH = findobj('Tag','a5SliderH'); set(a1EditH,'String',num2str(a1)); set(a2EditH,'String',num2str(a2)); Trang 149 Luận Văn Thạc Só set(a3EditH,'String',num2str(a3)); set(a4EditH,'String',num2str(a4)); set(a5EditH,'String',num2str(a5)); set(a1SliderH,'Value',a1); set(a2SliderH,'Value',a2); set(a3SliderH,'Value',a3); set(a4SliderH,'Value',a4); set(a5SliderH,'Value',a5); assignin('base','a1',a1); assignin('base','a2',a2); assignin('base','a3',a3); assignin('base','a4',a4); assignin('base','a5',a5); % Cap nhat chieu dai lac TankLinkH = findobj('Tag','TankLinkH'); TankEdge6H = findobj('Tag','TankEdge6H'); a1min = get(a1SliderH,'Min'); a1max = get(a1SliderH,'Max'); a1HeightMin = 0.3; a1HeightMax = 1; LinkHeight = a1HeightMin + (a1HeightMax-a1HeightMin)/(a1max-a1min)*(a1a1min); pos = get(TankLinkH,'Position'); pos(4) = LinkHeight; set(TankLinkH,'Position',pos); set(TankEdge6H,'YData',[LinkHeight LinkHeight]); % Cap nhat M1 Faucet2H = findobj('Tag','Faucet2H'); a2min = get(a2SliderH,'Min'); a2max = get(a2SliderH,'Max'); a2widthmin = 0.5; a2widthmax = 5; set(Faucet2H,'linewidth',a2widthmin+(a2widthmax-a2widthmin)/(a2max-a2min)*(a2a2min)); % Cap nhat M2 Faucet2H = findobj('Tag','Faucet2H'); a3min = get(a3SliderH,'Min'); a3max = get(a3SliderH,'Max'); a3widthmin = 0.5; a3widthmax = 5; set(Faucet2H,'linewidth',a3widthmin+(a3widthmax-a3widthmin)/(a3max-a3min)*(a3a3min)); % Cap nhat m1 Trang 150 Luận Văn Thạc Só Faucet2H = findobj('Tag','Faucet2H'); a4min = get(a4SliderH,'Min'); a4max = get(a4SliderH,'Max'); a4widthmin = 0.5; a4widthmax = 3; set(Faucet2H,'linewidth',a4widthmin+(a4widthmax-a4widthmin)/(a4max-a4min)*(a4a4min)); % Cap nhat m2 Faucet2H = findobj('Tag','Faucet2H'); a5min = get(a5SliderH,'Min'); a5max = get(a5SliderH,'Max'); a5widthmin = 0.5; a5widthmax = 3; set(Faucet2H,'linewidth',a5widthmin+(a5widthmax-a5widthmin)/(a5max-a5min)*(a5a5min)); %%%%%%% a1 = str2num(get(findobj('Tag','a1EditH'),'String')); assignin('base','a1',a1); a2 = str2num(get(findobj('Tag','a2EditH'),'String')); assignin('base','a2',a2); a3 = str2num(get(findobj('Tag','a3EditH'),'String')); assignin('base','a3',a3); a4 = str2num(get(findobj('Tag','a4EditH'),'String')); assignin('base','a4',a4); a5 = str2num(get(findobj('Tag','a5EditH'),'String')); assignin('base','a5',a5); %********************************************************************** % Khi nhan nut THETA function WParamPlot(hObject, eventdata) global theta1 theta2; WParamFigureH = findobj('Tag','WParamFigureH'); if isempty(WParamFigureH) WParamFigureH = figure('Name','W Param','NumberTitle','Off','Tag','WParamFigureH'); theta1ParamAxesH = subplot(2,1,1); theta1ParamStemH = stem(theta1,'filled'); grid set(theta1ParamStemH,'EraseMode','None','LineWidth',2,'Tag','theta2ParamStemH'); title('Thong so menh de ket luan lac (theta1)'); theta2ParamAxesH = subplot(2,1,2); theta2ParamStemH = stem(theta2,'filled'); grid set(theta2ParamStemH,'EraseMode','None','LineWidth',2,'Tag','theta2ParamStemH'); Trang 151 Luận Văn Thạc Só title('Thong so menh de ket luan lac (theta2)'); else figure(WParamFigureH); end Phuï lục Chương trình: Direct_adaptive_control.m Ý nghóa chương trình điều khiển nơrôn mờ thích nghi trực tiếp hệ thống viết file.m % Direct adaptive neural fuzzy controller of MIMO nonlinear system % with two input and two output %********************************************************************** function [sys,x0,str,ts] = thu(t,x,u,flag,K0,Kc,gama1,gama2,mtt1,mtt2,a,c,sigma,ro1,alpha1,ro2,alpha2,Ts) switch flag case %Khoi tao bien cau truc [sys,x0,str,ts] = mdlInitializeSizes(Ts); %case % sys=mdlDerivatives(t,x,u); case %Tinh ngo cua he sys = mdlOutputs(t,u,K0,Kc,gama1,gama2,mtt1,mtt2,a,c,sigma,ro1,alpha1,ro2,alpha2,Ts); %sys = mdlDerivatives(u,gama1,gama2,mtt1,mtt2); case {1,2,4,9} %Cac truong hop khong su dung sys = []; otherwise error(['Unhandled flag = ',num2str(flag)]); end %********************************************************************** function [sys,x0,str,ts] = mdlInitializeSizes(Ts) sizes = simsizes; %Khoi tao bien cau truc sizes.NumContStates = 0; %So bien trang thai lien tuc sizes.NumDiscStates = 0; %So bien trang thai roi rac sizes.NumOutputs = 2; %So ngo [u] sizes.NumInputs = 4; %So ngo vao sizes.DirFeedthrough = 1; %Su dung u tinh toan sizes.NumSampleTimes = 1; %So thoi gian lay mau = So hang cua ts sys = simsizes(sizes); %Dang ky bien cau truc x0 = []; %Dieu kien dau cho bien trang thai str = []; %Chuoi du tru ts = [Ts 0]; %Chu ky lay mau roi rac la Ts %********************************************************************** function sys = mdlOutputs(t,u,K0,Kc,gama1,gama2,mtt1,mtt2,a,c,sigma,ro1,alpha1,ro2,alpha2,Ts) global tt1 tt2 phi_1 uf1 uf2 v1 v2 theta1 theta2 psi Trang 152 Luận Văn Thạc Só global ehat_1 E1_nga ehat E11_nga E12_nga adaptive=evalin('base','adaptive'); %load theta.mat theta1 theta2 k = round(t/Ts); % Khai bao cac ma tran de xay dung bo quan sat trang thai A=[0 0;0 0 0;0 0 1;0 0 0]; B=[0 0;1 0;0 0;0 1]; C=[1 0 0;0 0]'; % Sai so ngo E1=[u(1)-u(2);u(3)-u(4)]; %********************************************************************** % Xay dung bo quan sat trang thai if k==0 ehat_1=zeros(4,1); sys=zeros(4,1); E1_nga=zeros(2,1); E11_nga=0; E12_nga=0; ehat=zeros(4,1); else % Phuong trinh bo quan sat trang thai BKS=(A-B*Kc')*ehat_1+K0*E1_nga; % Buoc lay tich phan de tinh vector sai so trang thai ehat=ehat_1+Ts*BKS; ehat_1=ehat; % Tinh vector sai so bo quan sat E1_hat=C'*ehat; E1_nga=E1-E1_hat; E11_nga=E1_nga(1); E12_nga=E1_nga(2); end %********************************************************************** psi=[]; % Tinh vec to co so mo nr = length(sigma); for j = 1:nr muy(:,j) = exp(-5*(ehat-c(:,j)).^2./sigma(j).^2); end phi = prod(muy,1); psi = phi/sum(phi); psi=psi'; %********************************************************************** Trang 153 Luận Văn Thạc Só %Tinh Phi=psi*L^-1(s) if k==0 phi_1=zeros(5,1); % Khoi dong thong so phi_1 else phi=(phi_1+Ts*psi)/(1+a*Ts);% y(k)-y(k-1)+a*Ts*y(k)=Ts*r(k) phi_1=phi; end %********************************************************************** if adaptive==1 %Cap nhat on_line theta va uoc luong tin hieu dieu khien if k==0 tt1=rand(5,1); % Khoi dong ngau nhien thong so theta1 tt2=rand(5,1); % Khoi dong ngau nhien thong so theta1 uf1=0; uf2=0; else d1=abs(tt1'*tt1); d2=abs(tt2'*tt2); % Cap nhat theta_dot1 if d1 < mtt1 ttd1=gama1*E11_nga*phi; else ttd1=gama1*E11_nga*phi-(gama1*E11_nga*tt1'*phi*tt1)/d1^2; end; % Cap nhat theta_dot2 if d2 < mtt2 ttd2=gama2*E12_nga*phi; else ttd2=gama2*E12_nga*phi-(gama2*E12_nga*tt2'*phi*tt2)/d2^2; end; % Lay tich phan theta_dot1 theta1=tt1+Ts*ttd1; tt1=theta1; % Lay tich phan theta_dot2 theta2=tt2+Ts*ttd2; tt2=theta2; % Tin hieu dieu khien uoc luong duoc uf1=theta1'*psi; uf2=theta2'*psi; end else theta1=theta1; theta2=theta2; Trang 154 Luận Văn Thạc Só uf1=theta1'*psi; uf2=theta2'*psi; end %********************************************************************** % Tinh phan bu tru sai so v % Tinh v1 if E11_nga>=0 && abs(E11_nga)> alpha1 v1=ro1; elseif E11_nga alpha1 v1=-ro1; else v1=ro1*E11_nga/alpha1; end % Tinh v2 if E12_nga>=0 && abs(E12_nga)> alpha2 v2=ro2; elseif E12_nga alpha2 v2=-ro2; else v2=ro2*E12_nga/alpha2; end %********************************************************************** % Luat dieu khien u u1=uf1+v1; u2=uf2+v2; sys=[u1;u2]; % END OF CONTROLLER Phuï lục Chương trình: uc_mSFunc.m Ý nghóa chương trình tạo điều khiển bù trượt bù sai số xấp xỉ điều khiển IAFNOC function [sys,x0,str,ts] = inverted_model_mSFunc(t,x,u,flag,ro1,alpha1,ro2,alpha2,Ts) switch flag case %Khoi tao bien cau truc [sys,x0,str,ts] = mdlInitializeSizes(Ts); case %Tinh ngo cua he sys = mdlOutputs(u,ro1,alpha1,ro2,alpha2); case {1,2,4,9} %Cac truong hop khong su dung sys = []; otherwise error(['Unhandled flag = ',num2str(flag)]); end Trang 155 Luận Văn Thạc Só %********************************************************************** function [sys,x0,str,ts] = mdlInitializeSizes(Ts) sizes = simsizes; %Khoi tao bien cau truc sizes.NumContStates = 0; %So bien trang thai lien tuc sizes.NumDiscStates = 0; %So bien trang thai roi rac sizes.NumOutputs = 2; %So ngo [uc1 uc2] sizes.NumInputs = 2; %So ngo vao [e_hat1 e_hat2] sizes.DirFeedthrough = 1; %Su dung u tinh toan sizes.NumSampleTimes = 1; %So thoi gian lay mau = So hang cua ts sys = simsizes(sizes); %Dang ky bien cau truc x0 = []; %Dieu kien dau cho bien trang thai str = []; %Chuoi du tru ts = [Ts 0]; %Chu ky lay mau roi rac la Ts %********************************************************************** function sys = mdlOutputs(u,ro1,alpha1,ro2,alpha2) % Tinh uc2 if u(1)>=0 && abs(u(1))> alpha1 output1=ro1; elseif u(1) alpha1 output1=-ro1; else output1=ro1*u(1)/alpha1; end % Tinh uc2 if u(2)>=0 && abs(u(2))> alpha2 output2=ro2; elseif u(2) alpha2 output2=-ro2; else output2=ro2*u(2)/alpha2; end sys(1) = output1; sys(2) = output2; Trang 156 ... hệ phi tuyến điều khiển mô hình ngược thích nghi [1], [17] Điều khiển mô hình nội thích nghi [25] Điều khiển dự báo thích nghi [4] Điều khiển thích nghi hệ phi tuyến dựa nguyên tắc hồi tiếp tuyến. .. luật điều khiển, cách gọi điều khiển thích nghi gián tiếp Các thông số điều khiển chỉnh định trực tiếp hệ thống có tính thích nghi cao 3.2 ĐIỀU KHIỂN THÍCH NGHI HỒI TIẾP NGÕ RA Xét hệ thống phi tuyến. .. giới thiệu tổng quan điều khiển thích nghi, trình hình thành phát triển điều khiển thích nghi xu hướng phát triển điều khiển thích nghi Đưa hướng nghi? ?n cứu điều khiển hệ phi tuyến MIMO đo trạng

Ngày đăng: 09/03/2021, 04:24

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

  • Đang cập nhật ...

Tài liệu liên quan