Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
1,19 MB
Nội dung
Bài XÂY DỰNG MƠ HÌNH HĨA MƠ PHỎNG HÊ THỐNG GIẢM SĨC TRÊN CƠNG CỤ GUIDE CỦA PHẦN MỀM MATLAB I Mục đích - Giúp sinh viên hiểu phương pháp xây dựng mơ hình hóa mơ hệ thống vật lý - Thu thập phân tích bảng liệu hệ thống - Đánh giá kết mô phỏng, so sánh độ tương đồng kết mơ mơ hình với tính chất đối tượng thực - Đưa kết luận phương án điều chỉnh cho đối tượng thực dựa kết mơ sau phân tích chúng II Yêu cầu thực hành - Máy vi tính cài đặt sẵn phần mềm Matlab với đầy đủ ứng dụng Math Work cung cấp - Yêu cầu sinh viên trang bị phần lý thuyết môn Tin học chun ngành, hết chương mơn Mơ hình hóa - Tuân thủ nội quy, quy định thực hành phịng thí nghiệm III Nội dung thực hành 3.1 Bài tốn u cầu Hãy dùng máy tính số để mô độ dịch chuyển xi(t) xo(t) hệ thống vật lý có sơ đồ sau: - Độ cứng lò xo K = 10 - Hệ số giảm lắc C = 20; - Khối lượng m = 10(kg); - Chu kỳ lấy mẫu T =1s 3.2 Các bước tiến hành Bước Tìm phương trình sai phân hệ Từ đồ thị tổng lực tác động lên vật m ta chiếu lên trụctọa độ nằm ngang Theo định luật II Newton ta có: * Biến đổi Laplace: Thay số biến đổi Laplace với điều kiện ban đầu triệt tiêu ta có m.s2 X0(s) + C.s.X0(s) + KX0(s) = KXi(s) * Phương trình đại số: W(s) = X0(s)/Xi(s) = K/(ms2 + Cs + K) * Tìm hàm truyền đạt số: Thay s = (2/T).((z-1)/(z+1)) ta có: W(z) = X0(z)/Xi(z) = (K.T2.z2 + 2K.T2.z + K.T2)/[(K.T2+2CT+4m)z2+(2KT2-8m)z+(4m-2CT+KT2)] Đặt A = K.T2+2CT+4m; B = 2KT2-8m; D= 4m-2CT+KT2 W(z) = X0(z)/Xi(z) = (K.T2.z2 + 2K.T2.z + K.T2)/[Az2+Bz+D] * Tìm phương trình sai phân hệ thống Az2 X0(z) + Bz.X0(z) + D.X0(z) = K.T2.z2 Xi(z) + 2K.T2.z Xi(z) + K.T2 Xi(z) A.x0(k+2) + B.x0(k+1) + D.x0(k) = K.T2xi (k+2) +2K.T2xi(k+1) + K.T2xi(k) Nếu xét tín hiệu vào hàm xi = 1(t) ta có Xi [k+2] = Xi [k+1] = Xi [k] =1 A.x0(k+2) + B.x0(k+1) + D.x0(k) = 4K.T2 x0(k+2) = (- B.x0(k+1) - D.x0(k) + 4K.T2)/A Bước Xây dựng giao diện mô hệ thống điều khiển tự động (1) Khởi tạo guide phần mềm Matlab (2) Thiết lập bảng điều khiển giao diện - Chọn công cụ Panel - Thay đổi tên cho Panel cách kích đúp vào Panel thay tên phần Title từ tên - Panel sang tên “Bang dieu khien” - - Chọn công cụ Push Button để khai báo nút khảo sát hệ thống Đổi tên PushButton String Inspector nút sang tên khảo sát hệ thống + Kết thu + Tương tự ta lấy nút có tên gọi “Thốt khỏi hệ thống” - Chọn cơng cụ Panel để khai báo bảng nhập giá trị + Tương tự ta lập bảng xuất giá trị tính tốn ra: > Giá trị cực đại xuất Edit6 > Thời gian đạt cực đại xuất Edit11 > Thời gian ổn định xuất Edit7 > Độ điều chỉnh xuất Edit8 Bước Viết Code cho nút điều khiển (1) Nút thoát khỏi hệ thống Nhấn chuột phải vào Nút “ Thoat khoi he thong” chọn View callBacks/Callback + Ta lập trình sau: hoi=questdlg('Ban muon thoat khoi chuong trinh?', 'THUC SU MUON THOAT?','Yes','No','No'); if strcmp(hoi,'Yes') close if strcmp(hoi,'No') return; end end (2) Nút “Khao sat he thong” Nhấn chuột phải vào Nút “Khao sat he thong” chọn View callBacks/Callback + Ta lập trình: function varargout = Bai2(varargin) % BAI2 MATLAB code for Bai2.fig % BAI2, by itself, creates a new BAI2 or raises the existing % singleton* % % H = BAI2 returns the handle to a new BAI2 or the handle to % the existing singleton* % % BAI2('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in BAI2.M with the given input arguments % % BAI2('Property','Value', ) creates a new BAI2 or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before Bai2_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to Bai2_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help Bai2 % Last Modified by GUIDE v2.5 05-Mar-2013 22:11:55 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Bai2_OpeningFcn, 'gui_OutputFcn', @Bai2_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before Bai2 is made visible function Bai2_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Bai2 (see VARARGIN) % Choose default command line output for Bai2 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Bai2 wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = Bai2_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pushbutton1 function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Ch??ng trình ví du 3.1 v? v? ?? th? c?a h? th?ng ?i?u khi?n t? ??ng disp('MO PHONG HE THONG DIEU KHIEN TU DONG - THM') clc; % Khai bao bien syms a b c d max k1 k2 t1 t2 tm tod xichma gd gm k km y = ones(1,1000);%Khai bao y la mot ma tran hang 1000 cot K = get(handles.edit1,'String');% Nh?n chu?i ký t? ? edit1 gán cho k1 K = str2num(K); %Chuy?n ??i t? chu?i ký t? sang d?ng s? m = get(handles.edit2,'String');% Nh?n chu?i ký t? ? edit2 gán cho k2 m = str2num(m); %Chuy?n ??i t? chu?i ký t? sang d?ng s? C = get(handles.edit3,'String');% Nh?n chu?i ký t? ? edit3 gán cho t1 C = str2num(C); %Chuy?n ??i t? chu?i ký t? sang d?ng s? T = get(handles.edit4,'String');% Nh?n chu?i ký t? ? edit4 gán cho t2 T = str2num(T); %Chuy?n ??i t? chu?i ký t? sang d?ng s? A = K*T*T+2*C*T+4*m; B = 2*K*T*T-8*m; D=4*m-2*C*T+K*T*T; y(1,1)=0; % Khai bao phan tu y(1) = y(1,2)=0; % Khai bao phan tu y(2) = y(1,3)=0; % Khai bao phan tu y(3) = for k =1:998 y(1,k+2)=(-B*y(1,k+1)-D*y(1,k)+4*K*T*T)/A; end % Ch??ng trình ví du 3.1 v? v? ?? th? c?a h? th?ng ?i?u khi?n t? ??ng % Tim gia tri lon nhat max = y(1,1); for k =1:998 if y(1,k)>max max = y(1,k); km = k; end end set(handles.edit6,'String',max); set(handles.edit11,'String',T*km); %================================ %Tim khoang thoi gian on dinh k =1000; while abs((y(1,k)-1))