Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.57 MB, 48 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>BÀI 1: THIẾT KẾ BỘ ĐIỀU KHIỂN VỊ TRÍ CHO TỪNG TRỤC X, Y </b>...<b> 5 </b>
<b>BÀI 2: TĂNG GIẢM TỐC TRƯỚC NỘI SUY (ADCBI) </b>...<b> 8 </b>
2.1<b>Nội suy theo quỹ đạo đường thẳng</b> ... 10
2.2<b>Nội suy theo quỹ đạo đường tròn</b> ... 15
<b>BÀI 3: THIẾT KẾ QUỸ ĐẠO VẼ CHỮ P, S </b>... 24
3.1<b>Chữ P</b> ... 24
3.2<b>Chữ S </b>... 25
<b>BÀI 4: TĂNG GIẢM TỐC SAU NỘI SUY (ADCAI) </b>...<b> 26 </b>
4.1<b>Bộ lọc số</b> ... 26
4.2<b>Nội suy đường thẳng</b> ... 28
4.3<b>Nội suy đường tròn</b> ... 31
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Hình 1: Mơ hình bộ điều khiển vị trí cho trục X ... 5
Hình 2: Thông số cho bộ điều khiển PD của trục X ... 5
Hình 3: Đáp ứng của trục X ... 6
Hình 4: Tín hiệu điều khiển U cho trục X ... 6
Hình 5: Mô hình bộ điều khiển vị trí cho trục Y ... 7
Hình 6: Thông số cho bộ điều khiển PD của trục Y ... 7
Hình 7: Đáp ứng của trục Y ... 7
Hình 8: Tín hiệu điều khiển U cho trục Y ... 8
Hình 9: Cấu trúc nội suy ADCBI...8
Hình 10: Hai dạng tốc độ ... 9
Hình 11: Kiểm tra dạng quỹ đạo ... 9
Hình 12: Lựa chọn dạng nội suy ... 10
Hình 13: Normal block và Short block...11
Hình 14: Nội suy thô dường thẳng ... 11
Hình 15: Nội suy tuyến tính ... 12
Hình 16: Sơ đồ khối trong simulink ... 13
Hình 17: Đồ thị sau khi nội suy thô (đường thẳng) ... 13
Hình 18: Đồ thị sau khi nội suy tinh (đường thẳng) ... 14
Hình 19: Đồ thị vận tốc 2 trục X, Y ... 14
Hình 20: Vị trí trục X, Y ... 15
Hình 21: Quỹ đạo sau khi đi qua bộ điều khiển ... 15
Hình 22: Các trường hợp lựa chọn tâm ... 16
Hình 23: Normal block (circle) ... 17
Hình 24: Short block (circle) ... 18
Hình 25: Phương pháp trích mẫu dữ liệu ... 19
Hình 26: Nội suy theo phương pháp tuyến tính ... 20
Hình 27: Quỹ đạo sau khi nội suy tinh ... 21
Hình 28: Quỹ đạo sau khi nội suy thơ có so sánh với nội suy tinh ... 21
Hình 36: Minh họa bộ lọc dạng linear ... 27
Hình 37: Quỹ đạo nội suy thơ có bộ lọc (thẳng) ... 28
Hình 38: Quỹ đạo nội suy tinh có bộ lọc (thẳng) ... 28
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">1� �<sub>1</sub>( )
1++++++ <small>1</small>�
1+0.08∗∗∗ ∗
Hình 1: Mơ hình bộ điều khiển vị trí cho trục X
Hình 2: Thông số cho bộ điều khiển PD của trục X
Hình 4: Tín hiệu điều khiển U cho trục X
Hình 6: Thơng số cho bộ điều khiển PD của trục Y
Hình 7: Đáp ứng của trục Y
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Hình 11: Kiểm tra dạng quỹ đạo
Hình 16: Sơ đồ khối trong simulink
Hình 19: Đồ thị vận tốc 2 trục X, Y
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Hình 21: Quỹ đạo sau khi đi qua bộ điều khiển
-
Hình 22: Câc trường hợp lựa chọn tđm
Hình 26: Nội suy theo phương pháp tuyến tính
Hình 28: Quỹ đạo sau khi nội suy thơ có so sánh với nội suy tinh
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Hình 30: Vận tốc và quỹ đạo trục Y
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Hình 35: Bộ lọc số
�
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Hình 37: Quỹ đạo nội suy thơ có bộ lọc (thẳng)
Hình 38: Quỹ đạo nội suy tinh có bộ lọc (thẳng)
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">Hình 40: Vận tốc và quỹ đạo trục Y có bộ lọc
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">Hình 42: So sánh bước dịch chuyển Y
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Hình 43: Quỹ đạo đường trịn có bộ lọc
L = sqrt((X_start-X_end)^2+(Y_start-Y_end)^2); cosphi = (X_end-X_start)/L;
sinphi = (Y_end-Y_start)/L;F = 60; % toc do an dao
A = 15; % gia toc tang toc cho phep
D = 15; % gia toc giam toc cho phep
Va0 = 0; %Van toc khi bat dau tang toc
Vd0 = F; %Van toc khi bat dau giam toc
Tipo = 5e-3;Tdk = 1e-3; V_start=0; V_end = 0;
%Kiem tra quy dao nhap la Normal Block hay Short block
if F^2/(2*A)+F^2/(2*D) < LTacc = (F-V_start)/A;
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">Tacc = (F-V_start)/A;J1 = ceil(Tacc/Tipo);Tdec = (F-V_end)/D; J3 = ceil(Tdec/Tipo);
%Recaculate max speed
F = 2*L/((J1+J3)*Tipo);a1 = (F-V_start)/(J1*Tipo);a3 = (V_end-F)/(J3*Tipo); J2 = 0;
% Linear Acc/Dec Function%compute the time spent to acc
Nipo = round(J1+J2+J3); %Tong so chu ky noi suy tho
Va = linspace(0,F,J1);%Vi+1 = Vi+a1*T
Vd = linspace(F,0,J3); Vc = ones(1,J2)*F;V = [Va,Vc,Vd];VX = V*cosphi; VY = V*sinphi; dL = V(1)*Tipo;for i = 2:Nipo
dL(end+1) = Tipo*(V(i)+V(i-1))/2;end
dx = dL*cosphi;dy = dL*sinphi;
%Quy dao noi suy tho
X_rough = X_start; Y_rough = Y_start; for i=2:length(dL)
X_rough(end+1) = X_rough(end)+dx(i); Y_rough(end+1) = Y_rough(end)+dy(i);end
X_rough_Acc = X_rough(1:J1); X_rough_Const = X_rough(J1+1:J1+J2); X_rough_Dec = X_rough(J1+J2+1:end); Y_rough_Acc = Y_rough(1:J1); Y_rough_Const = Y_rough(J1+1:J1+J2); Y_rough_Dec = Y_rough(J1+J2+1:end);
plot(X_rough_Acc,Y_rough_Acc, ,X_rough_Const,Y_rough_Const,'y' 'b',X_rough_Dec,Y_ro ugh_Dec,'r' 'LineWidth', ,1)
xlabel('Truc X(mm)')ylabel('Truc Y(mm)')title('Quy dao sau khi noi suy tho') grid on
%Noi suy tinh
kT = Tipo/Tdk;dX_new=[]; dY_new=[]; for i=1:length(dL)
aX=ones(1,kT)*dx(i)/kT; aY=ones(1,kT)*dy(i)/kT;end
dX_new=[dX_new aX]; dY_new=[dY_new aY];
%tinh ra gia tri X, Y (gia tri sau khi noi suy tinh)
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">+dX_new(i); Yt(end+1)=Yt(end)+dY_new(i);end
%Van toc
VX_A=VX(1:J1); VX_C=VX(J1+1:J1+J2); VX_D=VX(J1+J2+1:end);VY_A=VY(1:J1); VY_C=VY(J1+1:J1+J2); VY_D=VY(J1+J2+1:end);
%Thoi gian noi suy
time_ns=linspace(0,Tsum,Nipo); time_dk=linspace(0,Tsum,kT*Nipo);
%NS tho
time_ns_A=time_ns(1:J1); time_ns_C=time_ns(J1+1:J1+J2); time_ns_D=time_ns(J1+J2+1:end);
time_dk_A=time_dk(1:Na); time_dk_C=time_dk(Na+1:Na+Nc); time_dk_D=time_dk(Na+Nc+1:end);
%do thi hai truc X Y%% figure1
figure subplot(2,1,1);
plot(time_dk_A,Xa, ,time_dk_C,Xc, ,time_dk_D,Xd,'y' 'b' 'r' 'LineWidth', ,1) ylabel('X (mm)')
xlabel('Time (s)') title('Vi tri truc X') grid on
subplot(2,1,2);
plot(time_dk_A,Ya, ,time_dk_C,Yc, ,time_dk_D,Yd,'y' 'b' 'r' 'LineWidth', ,1) ylabel('Y (mm)')
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">title('Vi tri truc Y') grid on
figure subplot(2,1,1);
plot(time_ns_A,VX_A,'y',time_ns_C,VX_C, ,time_ns_D,VX_D,'b' 'r' 'LineWidth', ,1) ylabel('vX (mm/s)')
xlabel('Time (s)') title('Van toc truc X')grid on
subplot(2,1,2);
plot(time_ns_A,VY_A,'y',time_ns_C,VY_C, ,time_ns_D,VY_D,'b' 'r' 'LineWidth', ,1) ylabel('vY (mm/s)')
xlabel('Time (s)') title('Van toc truc Y')grid on
%% Xuat sang simulink
Tsimulink=Tsum;sp_T.time=[];
sp_T.signals.values=[Xt;Yt]';sp_T.signals.dimensions =2;
xs = 0; ys = 0;%toa do diem bat dau
xe = 40; ye = 0;% toa do diem ket thuc
R = 20;%ban kinh cung tron
A = 30;% gia toc tang toc
D = 30;%gia toc giam toc
F = 60;%toc do an dao
Tipo = 5e-3;% chu ki noi suy
Tpos= 1e-3;% chu ki dieu khien
Kt = 5;% ti so Tns/Tdk
BLU= 1;
clockwise = 1;%1 neu di cung chieu kim dong ho, 0 neu di nguoc chieu kim dong ho
shortline = 0;%1 neu di theo cung tron ngan, 0 neu di theo cung tron dai%% Quy doi mm/s sang degree/s
Ac=(360*A)/(2*pi*R); %chuyen tu mm/s^2 -> deg/s^2
Dc=(360*D)/(2*pi*R); %chuyen tu mm/s -> deg/s%kiem tra dieu kien R
d = sqrt((xe - xs)^2 + (ye - ys)^2); if R>=d/2
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">y2 = ys-h;if(xe>xs)
if(clockwise==1) if(shortline==1)
xI=x1; yI=y2;else
xI=x1; yI=y1;else <sup>end</sup>
if(shortline==1) xI=x1; yI=y1;else
xI=x1; yI=y2;end
if(clockwise==1) if(shortline==1)
xI=x1; yI=y1;else
xI=x1; yI=y2;else <sup>end</sup>
if(shortline==1) xI=x1; yI=y2;else
xI=x1; yI=y1;end
end end
h = sqrt(R^2-(abs(ye-ys)/2)^2); y1 = (ye+ys)/2; y2= y1;x1 = xs+h;x2 = xs-h;if(ye>ys)
if(clockwise==1)if(shortline==1)
xI=x1; yI=y1;else
xI=x2; yI=y1;else
if(shortline==1) xI=x2; yI=y1;else
xI=x1; yI=y1;end
if(clockwise==1) if(shortline==1)
xI=x2; yI=y1;else
endxI=x1; yI=y1;
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">xI=x1; yI=y1;else
xI=x2; yI=y1;else
M = (((xe^2-xs^2)+(ye^2-ys^2))/(2*(ye-ys)));N = (xe-xs)/(ye-ys);
a = 1 + N^2;
b = -2*xs + 2*N*ys - 2*M*N;c = xs^2 + ys^2 - 2*ys*M + M^2 - R^2; delta = b^2 - 4*a*c;
if (delta == 0)x1 = -b/(2*a);x2 = x1;
elseif (delta > 0)delta = sqrt(delta);x1 = (-b + delta)/ (2*a);x2 = (-b - delta)/ (2*a);else
x1 = (-b/2*a)+(1*sqrt(-delta))/(2*a);x2 = conj (x1);
endy1 = M - x1*N;y2 = M - x2*N;if (xe > xs)
if (clockwise == 0)if (shortline == 1 )
if (y1 > y2)yI = y1; xI = x1;else
yI = y2; xI = x2;end
elseif (y1 > y2)
yI = y2; xI = x2; else
yI = y1; xI = x1;end
if (shortline == 1 ) if (y1 > y2)
yI = y2; xI = x2; else
yI = y1; xI = x1;end
elseif (y1 > y2)
yI = y1; xI = x1;
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">yI = y2; xI = x2;end
endendelse (xe < xs)
if (clockwise == 0)if (shortline == 1 )
if (y1 > y2)yI = y2; xI = x2; else
yI = y1; xI = x1;end
elseif (y1 > y2)
yI = y1; xI = x1; else
yI = y2; xI = x2;end
if (shortline == 1 ) if (y1 > y2)
yI = y1; xI = x1; else
yI = y2; xI = x2;end
elseif (y1 > y2)
yI = y2; xI = x2; else
yI = y1; xI = x1;
%goc can di chuyen (tu vi tri bat dau den ket thuc)
if shortline==1 % cung tron ngan
phi=abs(phie-phis);else% cung tron dai phi=360-
L = phi;
D_alpha = (2*BLU*180)/(L*pi*R);n = ceil(L/D_alpha);
m = ceil((D_alpha*R)/(Ac*Tipo^2)); alpha_euler = ones(1,n+1)*D_alpha; alpha_LO = zeros(1, n+m+1);
</div>