Lập trình trong giao diện file (.m)

Một phần của tài liệu Đồ án môn học thiết kế hệ thống cơ điện: Thiết kế và mô phỏng điều khiển robot 3 bậc tự do RRR (Trang 48 - 53)

CHƯƠNG III: Thiết kế mạch mô phỏng điều khiển và GUI

1. Thiết kế mô phỏng điều khiển và GUI với version First

1.4. Lập trình giao diện GUI trong matlab

1.4.2. Lập trình trong giao diện file (.m)

Sau khi ta thiết kế xong nhấn Run và lưu file (.gui ) vào thư mục Robot khi đó ta sẽ có thêm một file .m để lập trình và thêm Code để có thể điều khiển được robot

Biến Pushbutton1

- Slider1_Callback: thêm code

function slider1_Callback(hObject, eventdata, handles) ModelName = 'robot3dof';

global var;%khai báo bien

t1=get(handles.slider1,'value'); %lay gia tri tu thanh slider1 gan vao bien t1

set(handles.edit1,'string',num2str(t1));% chuyen chuoi gia tri ve dang ki tu va dat vao thanh edti1

t2=get(handles.slider2,'value'); %lay gia tri tu thanh slider2 gan vao bien t2

set(handles.edit2,'string',num2str(t2));% chuyen chuoi gia tri ve dang ki tu va dat vao thanh edti2

t3=get(handles.slider3,'value');%lay gia tri tu thanh slider3 gan vao bien t3

set(handles.edit3,'string',num2str(t3));% chuyen chuoi gia tri ve dang ki tu va dat vao thanh edti3

set_param([ModelName '/Slider

Gain'],'Gain',num2str(t1))%bien t1 duoc dua vao khoi slider gain trong mach dk

set_param([ModelName '/Slider

Gain1'],'Gain',num2str(t2))%bien t2 duoc dua vao khoi slider gain trong mach dk

set_param([ModelName '/Slider

Gain2'],'Gain',num2str(t3))%bien t3 duoc dua vao khoi slider gain trong mach dk

b1=[cosd(t1) 0 sind(t1) 0 ;sind(t1) 0 -cosd(t1) 0 ;0 1 0 900;0 0 0 1];%ma tran DH khâu 1

b2=[cosd(t2) -sind(t2) 0 650*cosd(t2) ;sind(t2) cosd(t2) 0 650*sind(t2) ;0 0 1 0 ;0 0 0 1];%ma tran DH khâu 2

b3=[cosd(t3) -sind(t3) 0 400*cosd(t3);sind(t3) cosd(t3) 0 400*sind(t3); 0 0 1 0 ; 0 0 0 1];%ma tran DH khâu 3

c=b1*b2*b3;%phuong trinh dongng hoc xac dinh khâu thao tác px=c(1,4);%lay gia tri hang 1, cot 4 tu ma tran c

py=c(2,4);%lay gia tri hang 2, cot 4 tu ma tran c pz=c(3,4);%lay gia tri hang 3, cot 4 tu ma tran c

set(handles.edit4,'string',num2str(px));%chuyen chuoi gia tri px thanh dang ki tu va dat vao thanh edti4

set(handles.edit5,'string',num2str(py));%chuyen chuoi gia tri px thanh dang ki tu va dat vao thanh edti5

set(handles.edit6,'string',num2str(pz));%chuyen chuoi gia tri px thanh dang ki tu va dat vao thanh edti6

- Slider2, slider3 tương tự slider1

- Pushbutton1_Callback: Thêm code vào nút Default

function pushbutton1_Callback(hObject, eventdata, handles)

%dua robot ve vi tri ban dau t1=0,t2=0,t3=0 ModelName = 'robot3dof';

global var; %khai bao bien t1=0; %goc theta1=0

set(handles.edit1,'string',num2str(t1));

t2=0; %goc theta2=0

set(handles.edit2,'string',num2str(t2));

t3=0; %goc theta3=0

set(handles.edit3,'string',num2str(t3));

set_param([ModelName '/Slider Gain'],'Gain',num2str(t1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(t2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(t3))

t1=[cosd(t1) 0 sind(t1) 0 ;sind(t1) 0 -cosd(t1) 0 ;0 1 0 135;0 0 0 1];

t2=[cosd(t2) -sind(t2) 0 100*cosd(t2) ;sind(t2) cosd(t2) 0 100*sind(t2) ;0 0 1 0 ;0 0 0 1];

t3=[cosd(t3) -sind(t3) 0 60*cosd(t3);sind(t3) cosd(t3) 0 60*sind(t3); 0 0 1 0 ; 0 0 0 1];

c=t1*t2*t3;

px=c(1,4);

py=c(2,4);

pz=c(3,4);

set(handles.edit4,'string',num2str(px));

set(handles.edit5,'string',num2str(py));

set(handles.edit6,'string',num2str(pz));

- Pushbutton2_Callback: Thêm code vào nút Set

function pushbutton2_Callback(hObject, eventdata, handles)

%bai toan dong hoc nguoc ModelName = 'robot3dof';

global var; %khai bao bien

px=get(handles.slider4,'value');%lay gia tri tu thanh slider4 gan vào bien px

set(handles.edit4,'string',num2str(px));%chuyen chuoi giá tri px thành ki tu va dat no vao thanh edit4

py=get(handles.slider5,'value'); %lay gia tri tu thanh slider5 gan vào bien py

set(handles.edit5,'string',num2str(py));%chuyen chuoi giá tri py thành ki tu va dat no vao thanh edit5

pz=get(handles.slider6,'value');%lay gia tri tu thanh slider6 gan vào bien pz

set(handles.edit6,'string',num2str(pz));%chuyen chuoi giá tri pz thành ki tu va dat no vao thanh edit6

%%%%%%%tim cac goc theta d1=900; a2=650; a3=400;

theta1=atan2d(py,px);

m=cosd(theta1)*px+sind(theta1)*py;

n=pz-d1;

theta3=acosd((m^2+n^2-a3^2-a2^2)/(2*a2*a3));

theta2=atan2d(((cosd(theta3)*a3+a2)*n-

m*sind(theta3)*a3),(cosd(theta3)*a3+a2)*m+n*sind(theta3)*a 3);

guidata(hObject,handles);%luu su thay doi

set(handles.edit1,'string',num2str(theta1));%voi giá tri theta1 tim duoc chuyen thanh dang ki tu và dat gia tri do vao thanh edit1

set_param([ModelName '/Slider

Gain'],'Gain',num2str(theta1))%dat gia tri theta1 vào khoi silder gain trong mach dk

set(handles.edit2,'string',num2str(theta2));%tuong tu nhu tren

set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2))

set(handles.edit3,'string',num2str(theta3));%tuong tu nhu tren

set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3))

- Pushbutton3_Callback: Thêm code vào nút close

function pushbutton3_Callback(hObject, eventdata, handles)

%nut dong bang dieu khien close;

- Slider4_callback: thêm code

function slider4_Callback(hObject, eventdata, handles) px=get(handles.slider4,'value');%lay gia tri tu thanh slider4 gan vao bien px

set(handles.edit4,'string',num2str(px));%dat px vao thanh edit4

- Slider5,6,7 tương tự

❖ Giao diện bảng điều khiển được chạy như sau:

- Bài toán thuận:

- Bài toán nghịch:

Một phần của tài liệu Đồ án môn học thiết kế hệ thống cơ điện: Thiết kế và mô phỏng điều khiển robot 3 bậc tự do RRR (Trang 48 - 53)

Tải bản đầy đủ (PDF)

(70 trang)