Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 170 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
170
Dung lượng
3,02 MB
Nội dung
Luận văn thạc sỹ - Phùng Đức Huy CƠNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH Cán hướng dẫn khoa học: (ghi rõ họ tên, học hàm, học vị chữ ký) Cán chấm nhận xét 1: (ghi rõ họ tên, học hàm, học vị chữ ký) Cán chấm nhận xét 2: (ghi rõ họ tên, học hàm, học vị chữ ký) Luận văn thạc sỹ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SỸ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày ….tháng…năm 2008 Luận văn thạc sỹ - Phùng Đức Huy ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, ngày tháng năm 2008 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: PHÙNG ĐỨC HUY Giới tính : Nam Ngày, tháng, năm sinh : 06-12-1980 Nơi sinh : BUÔN MÊ THUỘT Chuyên ngành : TỰ ĐỘNG HĨA Khố (Năm trúng tuyển) : 2006 1- TÊN ĐỀ TÀI: XÂY DỰNG THƯ VIỆN KHỐI THÍCH NGHI ĐIỀU KHIỂN HỆ PHI TUYẾN 2- NHIỆM VỤ LUẬN VĂN: Xây dựng thư viện khối tự chỉnh định Dùng thư viện khối tự chỉnh định để giải tập thích nghi, ước lượng điều khiển đối tượng phi tuyến Xây dựng thư viện khối neural mờ thích nghi trực tiếp điều khiển mơ hình thực cánh tay mềm dẻo hai bậc tự phịng thí nghiệm trọng điểm Quốc Gia C6 3- NGÀY GIAO NHIỆM VỤ : 4- NGÀY HOÀN THÀNH NHIỆM VỤ : 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN (Ghi đầy đủ học hàm, học vị ): Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên Ngành thông qua CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) Luận văn thạc sỹ - Phùng Đức Huy Lời cảm ơn Trước tiên, xin chân thành cảm ơn Cơ Nguyễn Thị Phương Hà người tận tình hướng dẫn truyền đạt kiến thức giúp tơi hồn thành luận án Và quan trọng hết, PGS người gợi mở cho tác giả đề tài, hướng nghiên cứu mẻ, độc đáo, có tính ứng dụng cao, hồn tồn phù hợp với lực tác giả Bên cạnh tơi xin chân thành cảm ơn đến quý thầy cô môn Điều Khiển Tự Động: thầy Huỳnh Thái Hoàng, thầy Trương Đình Châu, thầy Nguyễn Mộng Hùng, thầy Nguyễn Thiện Thành, thầy Nguyễn Đức Thành….đã định hướng hỗ trợ số phần quan trọng cho việc học tập, nghiên cứu phát triển đề tài Tôi xin chân thành cảm ơn bạn cao học khóa 2005 2006 động viên giúp đỡ tơi suốt khóa học Cuối cùng, xin chân thành cảm ơn quan tâm, hỗ trợ, tạo điều kiện động viên vật chất lẫn tinh thần thành viên gia đình suốt thời gian qua Tp.HCM, ngày….tháng….năm 2008 Tác giả PHÙNG ĐỨC HUY Luận văn thạc sỹ - Phùng Đức Huy Tóm tắt luận văn thạc sỹ Sự kết hợp giải thuật thích nghi với thư viện Simulink Matlab ngày ứng dụng rộng rãi lĩnh vực điều khiển tự động Lần đầu tiên, có luận văn đưa nghiên cứu xây dựng thư viện khối thích nghi bao gồm giải thuật điều khiển thích nghi trực tiếp (Direct Adaptive Control) với thuật toán tự chỉnh định (Selt-Tuning Regulator) Neural mờ thích nghi trực tiếp (Direct Adaptive Neural Fuzzy Control) Đặc tính bật thư viện dùng để thiết kế sơ đồ khối điều khiển nhiều đối tượng khác dạng mô ứng dụng để điều khiển thực tế Thuật toán ước lượng ép đối tượng bám theo mơ hình có bậc nhỏ bậc thực tế đối tượng Một số ứng dụng ước lượng điều khiển trình bày để minh họa cho đặc tính vượt trội thư viện khối thích nghi Luận văn đồng thời đưa hướng phát triển mở rộng cho thư viện Hiện thư viện thiết kế dạng mã nguồn mở nên việc thiết kế thêm vào thư viện dễ dàng Trong đó, giải thuật điều khiển thích nghi lại nhiều (MRAC: Model Reference Adaptive Control , MRAS: Model Reference Adaptive System, điều khiển thích nghi gián tiếp: Indirect Adaptive Control …) Vì để thiết kế thư viện khối thích nghi với tất giải thuật thích nghi cần phải có nhiều nhóm nghiên cứu, nhiều tổ chức thực Khi đó, thư viện khối thích nghi trở nên rộng lớn hơn, hữu ích ứng dụng nhiều lĩnh vực điều khiển tự động phát triển mạnh mẽ Luận văn thạc sỹ - Phùng Đức Huy ABSTRACT The intergration between adaptive algorithms and Simulink Library of Matlab is applied wider and wider in area of automatic control Firstly, there is a dissertation which studies to design a block adaptive library consist of Direct Adaptive Neural Fuzzy Control and Selt-Tuning Regulator algorithms The salient characteristic of this library is that you can use it to design block diagrams controlling different objects under imitation and can apply to control in real condition Estimative algorithm forces object to follow a model which has a smaller degree than a real ones Some applications in estimator and controller are also presented to demonstrate the superiority of this block adaptive library In addition, the dissertation also bring out the way of development and expansion for this library At present, the library is designed under open source to add other designs in the library easily Meanwhile, there are too many adaptive algorithms (MRAC: Model Reference Adaptive Control , MRAS: Model Reference Adaptive System, Indirect Adaptive Control …) Thus, designing the block adaptive library with all adaptive algorithms needs many studying groups and organizations work together At this time, the block adaptive library becomes wider, more effective and applied in the area of automatic control which has strongly development in nowadays Luận văn thạc sỹ - Phùng Đức Huy Mục lục Chương 1: Tổng quan 1.1 Tổng quát Simulink thư viện khối Matlab 1.2 Một số kết nghiên cứu thư viện khối điều khiển thích nghi dựa Simulink Matlab 1.3 Phương pháp xây dựng thư viện khối thích nghi 13 1.4 Nội dung tóm lược luận văn 15 Chương 2: Xây dựng thư viện khối tự chỉnh định 2.1 Giới thiệu thư viện 17 2.2 Các khối ước lượng 20 2.3 Khối ước lượng trực tiếp 21 2.4 Khối ước lượng gián tiếp 23 2.5 Khối thiết kế điều khiển phương pháp đặt cực 24 2.6 Khối điều khiển thích nghi [STR] 28 2.7 Khối hàm tổn thất 29 2.8 Kết luận 30 Chương 3: Xây dựng thư viện khối neural mờ thích nghi trực tiếp 3.1 Giới thiệu thư viện 31 3.2 Khối sai số bám 32 3.3 Khối ước lượng trực tuyến 33 3.4 Khối điều khiển trượt 34 Luận văn thạc sỹ - Phùng Đức Huy 3.5 Khối nhận dạng neural mờ 35 3.6 Khối điều khiển neural mờ thích nghi trực tiếp sử dụng tập mờ 39 3.7 Khối điều khiển neural mờ thích nghi trực tiếp sử dụng tập mờ 41 3.8 Kết luận 43 Chương 4: Ứng dụng thư viện tự chỉnh định điều khiển đối tượng phi tuyến 4.1 Giới thiệu tự chỉnh định 45 4.2 Bài tập thích nghi 48 4.3 Khảo sát mô đối tượng cánh tay máy bậc 57 4.4 Khảo sát mô đối tượng bồn nước đôi 74 4.5 Kết luận 84 Chương 5: Điều khiển cánh tay mềm dẻo dùng neural mờ thích nghi trực tiếp 5.1 Giới thiệu 86 5.2 Xây dựng mơ hình tốn cánh tay 88 5.3 Xây dựng mơ hình mơ 97 5.4 Thiết bị kết nối hệ thống điều khiển cánh tay mềm dẻo phòng thí nghiệm C6 101 5.5 Khảo sát khối neural mờ thích nghi trực tiếp sử dụng tập mờ 109 5.5 Khảo sát khối neural mờ thích nghi trực tiếp sử dụng tập mờ 112 5.6 So sánh kết neural mờ thích nghi trực tiếp với LQR 120 5.7 Kết luận 121 Chương 6: Nhận xét kết đạt định hướng phát triển đề tài 6.1 Kết đạt 123 6.2 Một số hạn chế 125 Luận văn thạc sỹ - Phùng Đức Huy 6.3 Hướng phát triển 125 Tài liệu tham khảo 127 Phụ lục 129 Phần A: 129 1.1 Ước lượng lắc mềm dẻo 129 1.2 Khối STR Anti windup 136 Phần B: Code S-function nhúng thư viện STR 138 nzdesign.m 138 nzrstd.m 139 phivector.m 140 rls.m 142 rst.m 145 rstd.m 148 zdesign.m 149 Phần B: Lý Lịch trích ngang 152 Luận văn thạc sỹ - Phùng Đức Huy Danh mục hàm, ký hiệu, từ viết tắt Ký hiệu V: Hàm Lyapunov Q: Ma trận trọng số xác định dương hàm Lyapunov C6: Phịng thí nghiệm trọng điểm Quốc gia.TP.HCM Tip: điểm đầu mút cánh tay mềm dẻo hai bậc tự Từ viết tắt STR: Self-tuning Regulators Bộ tự chỉnh định ISTR: Indirect Self-tuning Regulators Bộ tự chỉnh định gián tiếp DSTR:Direct Self-tuning Regulators Bộ tự chỉnh định trực tiếp MRAS: Model-reference Adaptive Systems Điều khiển thích nghi dùng mơ hình tham chiếu MRAC: Model-reference Adaptive Control Điều khiển thích nghi dùng mơ hình tham chiếu thiết kế cho điều khiển MVC: Moving-average Controllers Bộ trung bình di chuyển MIMO: Multi Input Multi Output Nhiều đầu vào nhiều đầu SISO: Single Input Single Output Một vào DAFN: Driect Adaptive Fuzzy Neural Điều khiển neural mờ thích nghi trực tiếp RLS: Recurrsive Least-squares estimation Thuật tốn ước lượng bình phương cực tiểu đệ qui NN: Neural Network Luận văn thạc sỹ - Phùng Đức Huy Mạng nơrol Danh mục hình vẽ, đồ thị, bảng biểu Hình 1.1 Thư viện khối điều khiển thích nghi trực tếp Viện khoa học Lund Hình 1.2 Khối PI Controller Hình 1.3 Khối Performance Hình 1.4 Sơ đồ khối Điều khiển thích nghi trực tiếp từ thư viện khối Lund Hình 1.5 Thư viện khối thích nghi Lennart Ljung Hình 1.6 Khối Controller Hình 1.7 Khối EKF Adaptive Control Hình 1.8 Demo điều khiển thích nghi lái xe Hình 1.9 Thư viện khối nhận dạng hệ thống động Hình 1.10 Demo nhận dạng hệ SISO liên tục Hình 1.11 Demo nhận dạng hệ SISO rời rạc Hình 1.12 Demo nhận dạng hệ MIMO liên tục Hình 1.13 Demo nhận dạng hệ MIMO rời rạc Hình 1.14 Sơ đồ khối tự chỉnh định Hình 1.15 Khối ước lượng RLS Hình 1.16 Khối thiết kế Bộ điều khiển Hình 1.17 Demo nhận dạng tham số đối tượng dùng khối thư viện khối thích nghi Hình 1.18 Demo nhận dạng trực tuyến thiết kế điều khiển 10 Hình 1.19 Khối tự chỉnh định hệ MIMO 10 Hình 1.20 Thư viện khối neural mờ thích nghi giáo sư Giampero Campa 11 Luận văn thạc sỹ - Phùng Đức Huy Phần B: Code S-function nhúng vào thư viện tự chỉnh định nzdesign.m function [sys,x0,str,ts] = nzdesign(t,x,u,flag,n_a,n_b,n_r,A_m,A_o,A_r,A_s,h); %NZDESIGN M-file S-function performing minimum-degree pole-placement design % without zero cancellation % inputs: u = [B,A], B and A polynomials % outputs: R,S and T polynomials % parameters: n_a, deg A; n_b, deg B; n_r, deg R; A_m, desired % closed-loop polynomial; A_o observer polynomial; A_r A_s % pre-determined factors in R and S; h, sampling interval switch flag, %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% case 0, [sys,x0,str,ts] = mdlInitializeSizes(n_a,n_b,n_r,h); %%%%%%%%%% % Update % %%%%%%%%%% case 2, sys = mdlUpdate; %%%%%%%%%% % Output % %%%%%%%%%% case 3, sys = mdlOutputs(u,n_b,A_m,A_o,A_r,A_s); %%%%%%%%%%%%% % Terminate % %%%%%%%%%%%%% case 9, sys = []; % nothing %%%%%%%%%%%%%%%%%%%% % Unexpected flags % %%%%%%%%%%%%%%%%%%%% otherwise error(['unhandled flag = ',num2str(flag)]); end Trang số - 138- Luận văn thạc sỹ - Phùng Đức Huy %end dsfunc %======================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %======================================================================= function [sys,x0,str,ts] = mdlInitializeSizes(n_a,n_b,n_r,h)% khoi tao bien cau truc sizes = simsizes; %tao bien cau truc sizes tu ham simsizes sizes.NumContStates = 0;%so bien trang thai cua he lien tuc sizes.NumDiscStates = 0;%so bien trang thai cua he roi rac sizes.NumOutputs sizes.NumInputs = 3*(n_r+1);%so ngo cua mo hinh = (n_a+1) + (n_b+1);%so ngo vao cua mo hinh sizes.DirFeedthrough = 1;%so nuoi truc tiep sizes.NumSampleTimes = 1;%so lan lay mau sys = simsizes(sizes); x0 = []; str = []; ts = [h 0]; % end mdlInitializeSizes %======================================================================= % mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements %======================================================================= function sys = mdlUpdate sys = []; %end mdlUpdate %======================================================================= % mdlOutputs % Return Return the output vector for the S-function %======================================================================= function sys = mdlOutputs(u,n_b,A_m,A_o,A_r,A_s) B = u(1:n_b+1)'; A = u(n_b+2:end)'; [R,S,T]=nzrstd(1,B,A,1,A_m,A_o,A_r,A_s); sys = [R,S,T]'; %end mdlUpdate nzrstd.m Trang số - 139- Luận văn thạc sỹ - Phùng Đức Huy function [r,s,t]=nzrstd(bplus,bminus,a,bm1,am,ao,ar,as); % RSTD Polynomial synthesis in discrete time % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO,AR,AS); % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO,AR); % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO); % Polynomial synthesis according to CCS ch 10 to % design a controller R(q) u(k) = T(q) r(k) - S(q) y(k) % Inputs: BPLUS : Part of open loop numerator % BMINUS : Part of open loop numerator % A % BM1 : Additional zeros % AM : Closed loop denominator % AO : Observer polynomial % AR : Pre-specified factor of R, % : Open loop denominator e.g integral part [1 -1]**k % AS % : Pre-specified factor of S, e.g notch filter [1 w^2] % Outputs: R,S,T : Polynomials in controller % See function DAB how the solution to the Diophantine- % Aryabhatta-Bezout identity is chosen if nargin==7, as=1; elseif nargin==6, ar=1; as=1; end; ae = conv(a,ar); be = conv(bminus,as); aoam = conv(am,ao); [r1,s1] = dab(ae,be,aoam); r = conv(conv(r1,ar),bplus); s = conv(s1,as); bm = conv(bminus,bm1); t0 = sum(am)/sum(bm); t = t0*conv(ao,bm1); s = s/r(1); t = t/r(1); r = r/r(1); s=[0,s]; t=[t]; Phivector.m function [sys,x0,str,ts] = phivector(t,x,input,flag,m,n,h) % phivector A M-file S-function for merging y and u to a regression Trang số - 140- Luận văn thạc sỹ - Phùng Đức Huy % vector as: % phi(t-1) = [u(t-1) u(t-m) -y(t-1) -y(t-n)]' % Inputs: u, control signal; y, output % Outputs: phi, regression vector; % Parameters: m, n, number of parameters; h, sampling interval switch flag, %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% case 0, [sys,x0,str,ts] = mdlInitializeSizes(m,n,h); %%%%%%%%%% % Update % %%%%%%%%%% case 2, sys = mdlUpdate(x,input,m,n); %%%%%%%%%% % Output % %%%%%%%%%% case 3, sys = mdlOutputs(x); %%%%%%%%%%%%% % Terminate % %%%%%%%%%%%%% case {1,4,9}, sys = []; % nothing %%%%%%%%%%%%%%%%%%%% % Unexpected flags % %%%%%%%%%%%%%%%%%%%% otherwise error(['unhandled flag = ',num2str(flag)]); end %end rls %======================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %======================================================================= function [sys,x0,str,ts] = mdlInitializeSizes(m,n,h) Trang số - 141- Luận văn thạc sỹ - Phùng Đức Huy sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = n+m; sizes.NumOutputs sizes.NumInputs = n+m; = 2; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = zeros(m+n,1); str = []; ts = [h 0]; % end mdlInitializeSizes %======================================================================= % mdlUpdate % Update theta and P %======================================================================= function sys = mdlUpdate(x,input,m,n) old_u = x(1:m); old_y = x(m+1:m+n); u = input(1); y = input(2); %change vector; old_u = [u;old_u(1:m-1)]; old_y = [y;old_y(1:n-1)]; x = [old_u;old_y]; sys = x; %end mdlUpdate %======================================================================= % mdlOutputs % Return theta and P %======================================================================= function sys = mdlOutputs(x) sys = x; %end mdlOutputs rls.m function [sys,x0,str,ts] = rls(t,x,u,flag,n,theta_0,P_0,lambda,h) % RLS A M-file S-function for a discrete-time recursive % least-squares estimator for a model on the form Trang số - 142- Luận văn thạc sỹ - Phùng Đức Huy % Inputs: phi, regressor vector; y, output % Outputs: theta, parameter vector; P, covariance matrix % Parameters: n, number of parameters; theta_0, initial parameter estimates; % P_0, initial covariance matrix; lambda, forgetting factor; % h, sampling interval switch flag, %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% case 0, [sys,x0,str,ts] = mdlInitializeSizes(n,theta_0,P_0,h); %%%%%%%%%% % Update % %%%%%%%%%% case 2, sys = mdlUpdate(x,u,n,lambda); %%%%%%%%%% % Output % %%%%%%%%%% case 3, sys = mdlOutputs(x); %%%%%%%%%%%%% % Terminate % %%%%%%%%%%%%% case {1,4,9}, sys = []; % nothing %%%%%%%%%%%%%%%%%%%% % Unexpected flags % %%%%%%%%%%%%%%%%%%%% otherwise error(['unhandled flag = ',num2str(flag)]); end %end rls %======================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %======================================================================= Trang số - 143- Luận văn thạc sỹ - Phùng Đức Huy function [sys,x0,str,ts] = mdlInitializeSizes(n,theta_0,P_0,h) sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = n+n^2; sizes.NumOutputs sizes.NumInputs = n+n^2; = n+1; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = mdlPack(theta_0,P_0,n); str = []; ts = [h 0]; % end mdlInitializeSizes %======================================================================= % mdlUpdate % Update theta and P %======================================================================= function sys = mdlUpdate(x,u,n,lambda) % unpack theta,P, phi, and y [theta,P] = mdlUnpack(x,n); phi = u(1:n); y = u(n+1); % compute new estimate and update covariance matrix K = P*phi*inv(lambda + phi'*P*phi); new_theta = theta + K*(y - phi'*theta); new_P = (eye(n) - K*phi')*P/lambda; % repack theta and P in x x = mdlPack(new_theta,new_P,n); sys = x; %end mdlUpdate %======================================================================= % mdlOutputs % Return theta and P %======================================================================= function sys = mdlOutputs(x) sys = x; %end mdlOutputs %======================================================================= Trang số - 144- Luận văn thạc sỹ - Phùng Đức Huy % mdlPack % Pack theta and P in x %======================================================================= function x = mdlPack(theta,P,n) P_vec = []; for j = 1:n P_vec = [P_vec;P(:,j)]; end x = [theta;P_vec]; %end mdlPack %======================================================================= % mdlUnpack % Unpack theta and P from x %======================================================================= function [theta,P] = mdlUnpack(x,n) theta = x(1:n,1); P = []; for j = 1:n P = [P,x(j*n+1:(j+1)*n,1)]; end %end mdlUnpack rst.m function [sys,x0,str,ts] = rst(t,state,input,flag,n,state_0,h) %RST An M-file S-function for a discrete two-degree-of-freedom % linear controller % R(q)u(k) = T(q)u_c(k) - S(q)y(k) % The polynomials R,S, and T (all of degree n) are inputs and may % be changed during the simulation % Inputs: input = [R, S, T, u_c, y]'; controller polynomials R, S, % and T, setpoint u_c, and process value y % Outputs: control signal u % States: state = [old_u, old_y, old_u_c, pre_u]'; % old control signals, old process values, old setpoints, and % precomputed control signal % Parameters: n; degree of R,S, and T, % state_0; initial state, size(3*n+1) % h; sampling interval switch flag, Trang số - 145- Luận văn thạc sỹ - Phùng Đức Huy %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% case 0, [sys,x0,str,ts] = mdlInitializeSizes(n,state_0,h); %%%%%%%%%% % Update % %%%%%%%%%% case 2, sys = mdlUpdate(n,state,input); %%%%%%%%%% % Output % %%%%%%%%%% case 3, sys = mdlOutputs(n,state,input); %%%%%%%%%%%%% % Terminate % %%%%%%%%%%%%% case {1, 4, 9}, sys = []; % nothing %%%%%%%%%%%%%%%%%%%% % Unexpected flags % %%%%%%%%%%%%%%%%%%%% otherwise error(['unhandled flag = ',num2str(flag)]); end %end dsfunc %======================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %======================================================================= function [sys,x0,str,ts] = mdlInitializeSizes(n,state_0,h) sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 3*n+1; sizes.NumOutputs sizes.NumInputs = 1; = 2+3*(n+1); sizes.DirFeedthrough = 1; Trang số - 146- Luận văn thạc sỹ - Phùng Đức Huy sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = state_0; str = []; ts = [h 0]; % end mdlInitializeSizes %======================================================================= % mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements %======================================================================= function sys = mdlUpdate(n,state,input) if n == sys = []; else unpack states and inputs old_u = state(1:n); old_y = state(n+1:2*n); old_u_c = state(2*n+1:3*n); pre_u = state(3*n+1); r = input(1:n+1)'; s = input(n+2:2*n+2)'; t = input(2*n+3:3*n+3)'; u_c = input(3*n+4); y = input(3*n+5); % update u, y and u_c u = 1/r(1)*(t(1)*u_c - s(1)*y + pre_u); u_vec = [u;old_u(1:n-1)]; y_vec = [y;old_y(1:n-1)]; u_c_vec = [u_c;old_u_c(1:n-1)]; % precompute part of u pre_u = t(2:n+1)*u_c_vec - s(2:n+1)*y_vec - r(2:n+1)*u_vec; % pack states state(1:n) = u_vec; state(n+1:2*n) = y_vec; state(2*n+1:3*n) = u_c_vec; state(3*n+1) = pre_u; sys = state; Trang số - 147- Luận văn thạc sỹ - Phùng Đức Huy end %end mdlUpdate %======================================================================= % mdlOutputs % Return Return the output vector for the S-function %======================================================================= function sys = mdlOutputs(n,state,input) if n == % unpack inputs r = input(1); s = input(2); t = input(3); u_c = input(4); y = input(5); % compute u u = 1/r*(-s*y + t*u_c); sys = u; else % unpack states and inputs pre_u = state(3*n+1); r = input(1:n+1)'; s = input(n+2:2*n+2)'; t = input(2*n+3:3*n+3)'; u_c = input(3*n+4); y = input(3*n+5); % compute u u = 1/r(1)*(t(1)*u_c - s(1)*y + pre_u); sys = u; end %end mdlOutputs rstd.m function [r,s,t]=rstd(bplus,bminus,a,bm1,am,ao,ar,as); % RSTD Polynomial synthesis in discrete time % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO,AR,AS); % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO,AR); % [R,S,T]=RSTD(BPLUS,BMINUS,A,BM1,AM,AO); % Polynomial synthesis according to CCS ch 10 to % design a controller R(q) u(k) = T(q) r(k) - S(q) y(k) Trang số - 148- Luận văn thạc sỹ - Phùng Đức Huy % Inputs: BPLUS : Part of open loop numerator % BMINUS : Part of open loop numerator % A % BM1 : Additional zeros % AM : Closed loop denominator % AO : Observer polynomial % AR : Pre-specified factor of R, % : Open loop denominator e.g integral part [1 -1]**k % AS % : Pre-specified factor of S, e.g notch filter [1 w^2] % Outputs: R,S,T : Polynomials in controller % See function DAB how the solution to the Diophantine- % Aryabhatta-Bezout identity is chosen if nargin==7, as=1; elseif nargin==6, ar=1; as=1; end; ae = conv(a,ar); be = conv(bminus,as); aoam = conv(am,ao); [r1,s1] = dab(ae,be,aoam); r = conv(conv(r1,ar),bplus); s = conv(s1,as); bm = conv(bminus,bm1); t0 = sum(am)/sum(bm); t = t0*conv(ao,bm1); s = s/r(1); t = t/r(1); r = r/r(1); s=[0,0,s]; t=[0,t]; zdesign.m function [sys,x0,str,ts] = zdesign(t,x,u,flag,n_a,n_b,n_r,B_m,A_m,A_o,A_r,A_s,h); %NZDESIGN M-file S-function performing minimum-degree pole-placement design % with zero cancellation % inputs: u = [B,A], B and A polynomials % outputs: R,S and T polynomials % parameters: n_a, deg A; n_b, deg B; n_r, deg R; A_m, desired % closed-loop polynomial; A_o observer polynomial; A_r A_s % pre-determined factors in R and S; h, sampling interval switch flag, Trang số - 149- Luận văn thạc sỹ - Phùng Đức Huy %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% case 0, [sys,x0,str,ts] = mdlInitializeSizes(n_a,n_b,n_r,h); %%%%%%%%%% % Update % %%%%%%%%%% case 2, sys = mdlUpdate; %%%%%%%%%% % Output % %%%%%%%%%% case 3, sys = mdlOutputs(u,n_b,B_m,A_m,A_o,A_r,A_s); %%%%%%%%%%%%% % Terminate % %%%%%%%%%%%%% case 9, sys = []; % nothing %%%%%%%%%%%%%%%%%%%% % Unexpected flags % %%%%%%%%%%%%%%%%%%%% otherwise error(['unhandled flag = ',num2str(flag)]); end %end dsfunc %======================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %======================================================================= function [sys,x0,str,ts] = mdlInitializeSizes(n_a,n_b,n_r,h) sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs sizes.NumInputs = 3*(n_r+1); = (n_a+1) + (n_b+1); sizes.DirFeedthrough = 1; Trang số - 150- Luận văn thạc sỹ - Phùng Đức Huy sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = []; str = []; ts = [h 0]; % end mdlInitializeSizes %======================================================================= % mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements %======================================================================= function sys = mdlUpdate sys = []; %end mdlUpdate %======================================================================= % mdlOutputs % Return Return the output vector for the S-function %======================================================================= function sys = mdlOutputs(u,n_b,B_m,A_m,A_o,A_r,A_s) B = u(1:n_b+1)'; A = u(n_b+2:end)'; [R,S,T]=rstd(B/B(1),B(1),A,B_m/B(1),A_m,A_o,A_r,A_s); sys = [R,S,T]'; %end mdlUpdate Trang số - 151- Luận văn thạc sỹ - Phùng Đức Huy LÝ LỊCH TRÍCH NGANG Họ tên : PHÙNG ĐỨC HUY Phái Ngày sinh : 06-12-1980 Nơi sinh : Buôn Ma Thuột Địa liên lạc : Điện thoại : Nam 2/90/5- Thiên Phước –Phường 9-Quận Tân Bình : 0986.047.412 – 0908.148.691 QUÁ TRÌNH ĐÀO TẠO 2000-2004: sinh viên trường Khoa Học Tự Nhiên chuyên ngành Vật Lý Ứng Dụng Với đề tài tốt nghiệp ‘ Tìm hiểu phương pháp phún xạ hệ Magnetron’ 2004-2005: Tham gia nghiên cứu khoa học cấp trường thuộc môn Vật lý chất rắn 2005-2006: học chuyển đổi sang ngành Tự Động Hóa Và thi đậu ngành Tự Động Hóa với số điểm 17.5đ 2006-2008 : Học viên Cao Học trường Đại Học Bách Khoa chuyên ngành Tự Động Hóa Q TRÌNH CƠNG TÁC Từ 2005-2006: Kỹ sư Tự Động Hóa cho Cơng Ty ép nhựa Hùng Nga Từ 2006-2008: Giáo viên Thỉnh Giảng thuộc trường dạy nghề Hùng Vương Tham gia sửa chữa cơng trình ngành Tự Động Hóa thuộc Cơng Ty bên ngồi :máy cắt bánh, máy cắt giấy, máy cắt vải, máy ép nhựa… Từ 11-2008 đến :chuyên gia kỹ thuật Tự Động Hóa cho Cơng Ty TNHH-TMNhật Hào Tham gia thỉnh giảng cho trường dạy nghề Hùng Vương hệ Cao Đẳng Trang số - 152- ... TÀI: XÂY DỰNG THƯ VIỆN KHỐI THÍCH NGHI ĐIỀU KHIỂN HỆ PHI TUYẾN 2- NHIỆM VỤ LUẬN VĂN: Xây dựng thư viện khối tự chỉnh định Dùng thư viện khối tự chỉnh định để giải tập thích nghi, ước lượng điều. .. Simulink Matlab có nhiều khối khác như: thư viện khối liên tục, thư viện khối rời rạc, thư viện khối phép tính …Từ thư viện khối này, nhà nghi? ?n cứu xây dựng thành hệ thống, điều khiển, ước lượng …... phần thư viện khối điều khiển thích nghi, mà điển hình thư viện khối tự chỉnh định điều khiển neural mờ thích nghi trực tiếp Với thư viện khối tạo thành toolbox sau link trực tiếp vào thư viện