Professional Documents
Culture Documents
Nhóm 17
HÀ NỘI, 7/2023
MỤC LỤC
Trục x
Trục y
Sử dụng công cụ tuning của Matlab ta chọn được các bộ thông số dưới đây:
Đặc điểm Trục x Trục y
P 4.37879677683833 4.084064424305
D 0.108545544825106 0.084035639357702
N 45.1777162549826 68.416742180801
Thời gian quá độ (s) 0.0672 0.0522
Độ quá điều chỉnh (%) 1.23 0
1
Sai lệch tĩnh (%) 0 0
2
Hình 1.5 Điện áp điều khiển trục y
3
CHƯƠNG 2. TĂNG TỐC, GIẢM TỐC TRƯỚC NỘI SUY
√
L
V max ' = 1 1
+
2A 2D
4
• Gia tốc tăng tốc cho phép: A = 100 (mm/ s2)
• Gia tốc giảm tốc cho phép: D = 100 (mm/ s2 ¿
• Chu kỳ nội suy thô: T ipo= 5 (ms)
• Chu kỳ nội suy tinh: T pos= 1 (ms)
• Tốc độ tối đa cần đạt: V max = 20 (mm/s)
Theo yêu cầu bài tập lớn ta chỉ quan tâm đến quá trình tăng giảm tốc hình thang
(tức L L ≤ L) , ta có:
V max
• Thời gian tăng tốc: T A= =0.2 s
A
V
• Thời gian giảm tốc: T D = max =0.2 s
D
L−LL
• Thời gian vận tốc không đổi: T C = =0.05 s
V max
5
2.2.1 Nội suy thô
Trong đó: V(i) là vận tốc của khoảng thời gian thứ i và V(0) = 0
L(i) là độ dịch chuyển của lần lấy mẫu thứ I
2 2
V i+1 −V i
Li =
2A
TA
- Số lần nội suy: N A = =40
T ipo
6
2.2.1.2. Quá trình vận tốc không đổi
- Chuyển động đều với vận tốc F, vận tốc sau mỗi chu kỳ không đổi.
TC
N C= =10
T ipo
- Tương tự như quá trình tăng tốc trên ta xác định được:
∆ Lc =V max .T ipo =0.1 mm
x e −x s
∆ X=∆ L c . cos(φ)=∆ Lc . =0.08 mm
L
ye− y s
∆ Y =∆ Lc .sin (φ)=∆ Lc . =0.06 mm
L
2.2.1.3. Quá trình giảm tốc
- Chuyển động chậm dần đều, vận tốc sẽ giảm từ V max về 0 với gia tốc D.
- Tương tự quá trình tăng tốc, ta xác định được:
V (i+1)=V (i)−D .T ipo
∆ L D=V (i).T ipo
x e −x s
∆ X (i)=∆ LD . cos (φ)=∆ LD .
L
ye− ys
∆ Y (i)=∆ LD . sin( φ)=∆ L D .
L
TD
N D= =40
T ipo
2.2.1.4. Mô phỏng MATLAB nội suy thô
Sau khi tiến hành mô phỏng trong Matlab khi nội suy thô đường thẳng từ
điểm A(6,7) đến B(10,10) ta thu được các đồ thị sau:
Hình 2.7 Kết quả mô phỏng nội suy thô đường thẳng
7
Hình 2.8 Kết quả nội suy vận tốc
8
Hình 2.9 Kết quả mô phỏng nội suy tinh đường thẳng
9
2.2.3 Mô phỏng điều khiển quỹ đạo nội suy đường thẳng
Sơ đồ mô phỏng trên Simulink:
Sau khi mô phỏng với bộ điều khiển PD ta thu được quỹ đạo di chuyển từ A(6,7)
đến B(10,10) và tiến hành so sánh với lượng đặt ban đầu:
* Kết quả mô phỏng:
Hình 2.11 So sánh quỹ đạo sau điều khiển với quỹ đạo sau nội suy
10
Hình 2.12 So sánh quỹ đạo trục X sau điều khiển với quỹ đạo nội suy
Hình 2.13 So sánh quỹ đạo trục Y sau điều khiển với quỹ đạo nội suy
11
Hình 2.15 Quỹ đạo nội suy và quỹ đạo sau điều khiển sau khi phóng to
12
2 2
F F
F L− −
T D = (Thời gian giảm tốc) 2 A 2 D (Thời gian tốc độ không
D T C=
F
đổi)
2.3.1 Nội suy thô
- Tính toán thời tăng, giảm tốc và vận tốc ko đổi:
F 5
T A= = =0.125 s s
A 40
2 2
F F
φ− −
2 A 2D s
T c= =0.185
F
F 5
T D = = =0.125 s
D 40
A
13
2.3.1.1. 1.1. Quá trình tăng tốc
T A 0.125
N A= = =25
T ipo 0.005
- Ta có tốc độ quay sau mỗi chu kì nội suy: F(i+1) = F(i) + A.T ipo
2 2
F (i) −F (i−1)
=> θi=
2A
14
2.3.1.4. Mô phỏng nội suy thô đường tròn bằng MATLAB
Hình 2.16 Đồ thị mô phỏng quỹ đạo vị trí nội suy thô theo đường tròn
Hình 2.18 Đồ thị mô phỏng quỹ đạo vị trí nội suy tinh đường tròn
16
Hình 2.19 So sánh kết quả nội suy thô và nội suy tinh
2.4.1 Mô phỏng điều khiển quỹ đạo nội suy đường tròn
- Ta chọn bộ điều khiển PD tương tự với nội suy quỹ đạo đường thẳng
- Kết quả mô phỏng:
17
Hình 2.20 So sánh quỹ đạo trục X sau điều khiển với quỹ đạo nội suy
Hình 2.21 So sánh quỹ đạo trục Y sau điều khiển với quỹ đạo nội suy
18
Hình 2.22 Mô phỏng quỹ đạo sau bộ điều khiển
Hình 2.23 Quỹ đạo nội suy và sau bộ điều khiển theo trục X khi phóng to
19
CHƯƠNG 3. MÔ PHỎNG DI CHUYỂN THEO HÌNH CHỮ
20
- Tăng tốc và giảm tốc
- Simulink
21
Hình 3.26 Đáp ứng vị trí trục X
22
Hình 3.29 Đáp ứng vận tốc trục Y
24
Ket qua Simulink
600
X 100 X 299.9989
Y 500.0739 Y 500.0007
500
400
Y axis (mm)
300
200
100
X 100 X 300
Y 0 Y -0.098704
0
25
Hình 3.33 Đáp ứng vận tốc theo trục X
26
CHƯƠNG 4. TĂNG TỐC VÀ GIẢM TỐC SAU NỘI SUY
Hình 4.36 Lưu đồ thuật toán tăng tốc, giảm tốc sau nội
suy
Để thực hiện quy trình tăng tốc, giảm tốc sau nội suy ADCAI, ta cần phải
tính toán khoảng dịch chuyển trên các trục x và y trong các khoảng thời gian nội
suy. Thực hiện điều khiển tăng tốc, giảm tốc độc lập cho từng trục sau đó thực
hiện phép nội suy tinh để tăng độ chính xác của giá trị dịch chuyển.
4.1.2 Bộ lọc số
Với X(z) là tín hiệu nội suy bước di chuyển theo 1 trục, sau khi qua bộ lọc
số H(z) ta sẽ thu được tín hiệu Y(z) có dạng hình thang tương ứng quá trình tăng
tốc và giảm tốc.
Ta có: Y(z)=X(z).H(z)
Biến đổi Z ngược cả 2 vế ta thu được: y[n]=x[n]*h[n]
27
Phép tích chập giữa x[n] và h[n] được tính theo công thức:
i + j=n
y ( n )= ∑ x ( i ) . h( j)
i, j
Để bộ lọc số vẫn đảm bảo tổng của tín hiệu đầu vào (x[n]) giống như tổng
của tín hiệu đầu ra (y[n]) thì ta sẽ có điều kiện: ∑ h(k )=1
Theo dạng quỹ đạo hình thang thì bộ lọc số sẽ có hàm truyền:
−m
1 1−z
H ( z )= .
m 1−z −1
1
V L0 ( k )= ( V ( k )−V i ( k−m) ) + V L 0 ( k−1 )
m i
Trên miền thời gian thì h[n] là 1 tín hiệu có chiều dài bằng m. m là hệ số lọc
của bộ lọc số và cũng chính bằng số bước trong quá trình tăng/giảm tốc.
Do 1 bước sẽ tương ứng với 1 chu kì nội suy T ns, suy ra m bước sẽ tương
ứng thời gian là m .T ns và đó cũng chính là thời gian trong quá trình tăng tốc T A
TA F
Suy ra: m .T ns=T A → m= (với T A= )
T ns A
x B−x A y −y
- Cosφ= , Sinφ= B A (φ là góc lệch giữa AB và trục Ox)
L L
28
- Thời gian di chuyển: T = L/F=7.8103
- Số bước nội suy: N = floor(T/Tipo) + 1=1563
- Khoảng dịch chuyển: ΔL=F.Tipo=0.05 = 0.05
- Khoảng dịch chuyển trục X: Δx=ΔL.sin φ = 0.032
- Khoảng dịch chuyển trục Y: Δy=ΔL.cos φ = 0.0384
Hình 4.37 x
29
Hình 4.38 Nội suy vận tốc trên trục
30
Hình 4.40 Quỹ đạo dịch chuyển
31
Hình 4.43 Điện áp điều khiển
x B− x A y B− y A
Vecto chỉ phương đơn vị: n=( ; )
d d
y − y x −x
Vecto pháp tuyến đơn vị: n 1=( B A ; B A )
d d
√
2
Khoảng cách từ tâm tới đoạn thẳng AB: h= R 2− d
4
Toạ độ tâm có thể tính theo: c=m+ z ×h × n1
32
x B+ x A yB− y A yB+ y A x B−x A
a= + z ×h ,b= + z ×h
2 d 2 d
N=floor ( 2 ×alpha
π
)+1
4.3.1.4. Tăng tốc giảm tốc sử dụng bộ lọc số
₋ Thời gian tăng tốc: Tacc = F/A
33
₋ Số bước tăng tốc: m = floor(Tacc/Tipo)+1
₋ Sử dụng bộ lọc số kiểu tuyến tính (dạng hình thang)
1
V L0 ( k )= ( V ( k )−V i ( k−m) ) + V L 0 ( k−1 )
m i
Ta có:
1
Δx 0 ( k )= ( Δx ( k )−Δx ( k −m ) ) + Δx 0 ( k −1 )
m
1
Δy 0 ( k )= ( Δy ( k )−Δy ( k−m ) ) + Δy 0 ( k−1 )
m
- Vận tốc trục x: Vx= Δx 0 /Tipo
- Vận tốc trục y: Vy= Δy 0 /Tipo
- Vận tốc di chuyển: V =√ Vx2 +Vy 2
- Quỹ đạo theo trục x: x0(k+1) = x0(k) + Δx 0 (k )
- Quỹ đạo theo trục y: y0(k+1) = y0(k) + Δy 0 (k )
34
Hình 4.45 Vận tốc theo trục y
35
Hình 4.48 Quỹ đạo theo trục x
36
TÀI LIỆU THAM KHẢO
[1] Theory and Design of CNC Systems - Suk-Hwan Suh • Seong-Kyoon Kang
Dae-Hyuk Chung • Ian Stroud.
https://math.stackexchange.com/questions/27535/how-to-find-center-of-an-arc-
given-start-point-end-point-radius-and-ar
37
PHỤ LỤC
end
% Sử dụng bộ lọc
m=floor(Tacc/Tipo)+1;
delta_x0=zeros(1, N+m);
delta_y0=zeros(1, N+m);
38
%denta_x=[delta_x, zeros(1,m)];
%denta_y=[delta_y, zeros(1,m)];
delta_x0(1)=delta_x(1)/m;
delta_y0(1)=delta_y(1)/m;
for k=2:m
delta_x0(k)=delta_x(k)/m+delta_x0(k-1);
delta_y0(k)=delta_y(k)/m+delta_y0(k-1);
end
for k = m+1: N
delta_x0(k)=(delta_x(k)-delta_x(k-m))/m + delta_x0(k-
1);
delta_y0(k)=(delta_y(k)-delta_y(k-m))/m + delta_y0(k-
1);
end
for k = (N+1): (N + m)
delta_x0(k)=-delta_x(k-m)/m+delta_x0(k-1);
delta_y0(k)=-delta_y(k-m)/m+delta_y0(k-1);
end
for i=1:N+m
vx(i)=delta_x0(i)/Tipo;
vy(i)=delta_y0(i)/Tipo;
v(i)=sqrt(vx(i)^2+vy(i)^2);
end
for i=1:N+m
x0(1)=xA;
x0(i+1)=x0(i)+delta_x0(i);
y0(1)=yA;
y0(i+1)=y0(i)+delta_y0(i);
end
39
Tk=Tipo*(N+m);
tt=[0:Tipo:Tk];
Th=Tipo*(N+m-1);
tn=[0:Tipo:Th];
figure;
x_point=[xA xB];
y_point=[yA yB];
plot(x0,y0,'r','LineWidth',2)
hold on;
title('Nôi suy trên 2 truc');
axis([0 100 0 100]);
axis on
axis equal
grid on
xlabel('X axis(mm)')
ylabel('Y axis(mm)')
figure;
plot(tn,v,'g','LineWidth',1.2);
hold on;
title('Nôi suy van toc trên 2 truc');
legend({'Van toc'});
axis([0 10 0 12]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity (mm/s)');
figure;
plot(tn,vx,'g','LineWidth',1.2);
hold on;
title('Noi suy van toc trên truc X');
legend({'Van toc truc X'});
axis([0 10 0 12]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity X(mm/s)');
40
figure;
plot(tn,vy,'g','LineWidth',1.2);
hold on;
title('Noi suy van toc trên truc Y');
legend({'Van toc truc Y'});
axis([0 10 0 20]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity Y(mm/s)');
figure;
plot(tt,x0,'b','LineWidth',1.2);
hold on;
title('Noi suy truc X ');
legend({'Truc X'});
axis([0 10 0 80]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('Truc X');
figure;
plot(tt,y0,'b','LineWidth',1.2);
hold on;
title('Noi suy truc Y ');
legend({'Truc Y'});
axis([0 10 20 100]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('Truc Y');
41
A=8; %Gia tốc tăng tốc
D=8; %Gia tốc giảm tốc
Tipo=0.005; %Chu kỳ nội suy thô
BLU=0.01;
dir = 1; % Hướng quay: 1 ngược chiều kim đồng hồ, -1 cùng
chiều kim đồng hồ
goc = 1; % Góc quay: 1 với góc quay nhỏ hơn 180 độ, -1 với
góc quay lớn hơn 180 độ
Tacc=F/A;
J1=floor(Tacc/Tipo)+1;
if goc==1
sigma=abs(acos((xA-x0)*(xB-x0)+(yA-y0)*(yB-y0)));
else
sigma=2*pi-abs(acos((xA-x0)*(xB-x0)+(yA-y0)*(yB-y0)));
end
42
dx0(i)=(cos(anpha)-1)*(X(i)-x0)-sin(anpha)*(Y(i)-y0);
dy0(i)=(cos(anpha)-1)*(Y(i)-y0)+sin(anpha)*(X(i)-x0);
if(dir==1)
X(i+1) = X(i)+dx0(i);
Y(i+1) = Y(i)+dy0(i);
else
X(i+1) = X(i)-dx0(i);
Y(i+1) = Y(i)-dy0(i);
end
end
dx(1)=dx0(1)/J1;
dy(1)=dy0(1)/J1;
for k=2:J1
dx(k)=dx0(k)/J1+dx(k-1);
dy(k)=dy0(k)/J1+dy(k-1);
end
for k = J1+1: N
dx(k)=(dx0(k)-dx0(k-J1))/J1 + dx(k-1);
dy(k)=(dy0(k)-dy0(k-J1))/J1 + dy(k-1);
end
for k = (N+1): (N + J1)
dx(k)=-dx0(k-J1)/J1+dx(k-1);
dy(k)=-dy0(k-J1)/J1+dy(k-1);
end
for i=1:N+J1
vx(i)=dx(i)/Tipo;
vy(i)=dy(i)/Tipo;
v(i)=sqrt(vx(i)^2+vy(i)^2);
if(dir==1)
x(1)=xA;
x(i+1)=x(i)+dx(i);
y(1)=yA;
43
y(i+1)=y(i)+dy(i);
else
x(1)=xA;
x(i+1)=x(i)-dx(i);
y(1)=yA;
y(i+1)=y(i)-dy(i);
end
end
Tk=Tipo*(N+J1);
tt=[0:Tipo:Tk];
Th=Tipo*(N+J1-1);
tn=[0:Tipo:Th];
figure;
x_point=[xA xB];
y_point=[yA yB];
plot(x,y,'r','LineWidth',2)
hold on;
title('Nôi suy trên 2 truc');
axis([0 20 0 20]);
axis on
axis equal
grid on
xlabel('X axis(mm)')
ylabel('Y axis(mm)')
figure;
plot(tn,v,'g','LineWidth',1.2);
hold on;
title('Nôi suy van toc trên 2 truc');
44
legend({'Van toc'});
axis([0 10 0 4]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity (mm/s)');
figure;
plot(tn,vx,'g','LineWidth',1.2);
hold on;
title('Noi suy van toc trên truc X');
legend({'Van toc truc X'});
axis([0 10 -4 2]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity X(mm/s)');
figure;
plot(tn,vy,'g','LineWidth',1.2);
hold on;
title('Noi suy van toc trên truc Y');
legend({'Van toc truc Y'});
axis([0 10 0 4]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('velocity Y(mm/s)');
figure;
plot(tt,x,'b','LineWidth',1.2);
hold on;
title('Noi suy truc X ');
legend({'Truc X'});
axis([0 10 0 20]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('Truc X');
45
figure;
plot(tt,y,'b','LineWidth',1.2);
hold on;
title('Noi suy truc Y ');
legend({'Truc Y'});
axis([0 10 0 20]);
axis on;
grid on;
xlabel('Time(s)');
ylabel('Truc Y');
ADCBI đường thẳng
F=20; %toc do an dao 10mm/s^2
A=100; %gia toc tang toc cho phep
D=100; %gia toc giam toc cho phep
L=5; %chieu dai
T=5e-3; %chu ky noi suy
Tdk=1e-3;%chu ky dieu khien
Nt=T/Tdk;
I=(F*F)/(2*A)+(F*F)/(2*D)-L;
%%tinh toan thoi gian tang toc giam toc
Ta=F/A;%time acc
Td=F/D;%time dec
Sa=(F*F)/(2*A);
Sd=(F*F)/(2*D);
Tc=(L-Sa-Sd)/F;%time const
xA = 6; yA=7;
%%Noi suy
Va0=0;
Vd0=F;
Na=Ta/T;
Nd=Td/T;
Nc=Tc/T;
Va=[Va0:T*A:F];%Vi+1=Vi+A*T
Vd=[Vd0:-T*D:0];%Vi+1=Vi-A*T
Vc=ones(1,Nc+1)*F;
ta=[0:T:Ta];
td=[Tc+Ta:T:(Tc+Ta+Td)];
tc=[Ta:T:(Ta+Tc)];
%Tinh toan khoang tang toc noi suy tho
deltaL1=Va*T;
deltaX1=deltaL1*0.8;
deltaY1=deltaL1*0.6;
syms i
X1=zeros(1,Na+1);Y1=zeros(1,Na+1);
X1(1,1)=6;Y1(1,1)=7;
for i=2:Na+1
X1(1,i)=X1(1,i-1)+deltaX1(1,i);
Y1(1,i)=Y1(1,i-1)+deltaY1(1,i);
end
%Tinh toan khoang Const noi suy tho
deltaL2=Vc*T;
deltaX2=deltaL2*0.8;
deltaY2=deltaL2*0.6;
46
syms j
X2=zeros(1,Nc+1);Y2=zeros(1,Nc+1);
X2(1,1)=X1(1,Na+1); Y2(1,1)=Y1(1,Na+1);
for j=2:Nc+1
X2(1,j)=X2(1,j-1)+deltaX2(1,j);
Y2(1,j)=Y2(1,j-1)+deltaY2(1,j);
end
%Tinh toan khoang giam toc noi suy tho
deltaL3=Vd*T;
deltaX3=deltaL3*0.8;
deltaY3=deltaL3*0.6;
syms k
X3=zeros(1,Nd);Y3=zeros(1,Nd);
X3(1,1)=X2(1,Nc+1);Y3(1,1)=Y2(1,Nc+1);
for k=2:Nd+1
X3(1,k)=X3(1,k-1)+deltaX3(1,k);
Y3(1,k)=Y3(1,k-1)+deltaY3(1,k);
end
%Tinh toan khoang acc ns tinh theo pp tuyen tinh
syms i j
X1c=zeros(1,Na*Nt+1);X1c(1,Na*Nt+1)=deltaX1(1,Na+1)/Nt;%khoang
tang toc ns tinh truc X
Y1c=zeros(1,Na*Nt+1);Y1c(1,Na*Nt+1)=deltaY1(1,Na+1)/Nt;%khoang
tang toc ns tinh truc Y
for i=1:Na
for j=(Nt*i-Nt+1):(Nt*i)
X1c(1,j)=deltaX1(1,i)/Nt;
Y1c(1,j)=deltaY1(1,i)/Nt;
end
end
syms p
X11=zeros(1,Na*Nt+1);
Y11=zeros(1,Na*Nt+1);
X11(1,1)=6; Y11(1,1)=7;
for p=2:Na*Nt+1
X11(1,p)=X11(1,p-1)+X1c(1,p);
Y11(1,p)=Y11(1,p-1)+Y1c(1,p);
end
%Tinh toan khoang cons ns tinh theo pp tuyen tinh
syms i j
X2c=zeros(1,Nc*Nt+1);X2c(1,Nc*Nt+1)=deltaX2(1,Nc+1)/Nt;
Y2c=zeros(1,Nc*Nt+1);Y2c(1,Nc*Nt+1)=deltaY2(1,Nc+1)/Nt;
for i=1:Nc
for j=(Nt*i-Nt+1):(Nt*i)
X2c(1,j)=deltaX2(1,i)/Nt;
Y2c(1,j)=deltaY2(1,i)/Nt;
end
end
X21=zeros(1,Nc*Nt+1);Y21=zeros(1,Nc*Nt+1);
X21(1,1)=X11(1,Na*Nt+1);Y21(1,1)=Y11(1,Na*Nt+1);
for k=2:Nc*Nt+1
X21(1,k)=X21(1,k-1)+X2c(1,k);
Y21(1,k)=Y21(1,k-1)+Y2c(1,k);
end
%Tinh toan khoang dec ns tinh theo pp tuyen tinh
syms i j%ns tuyen tinh
X3c=zeros(1,Na*Nt+1); X3c(1,1)=deltaX3(1,1)/Nt;
47
Y3c=zeros(1,Na*Nt+1); Y3c(1,1)=deltaY3(1,1)/Nt;
for i=2:Nd
for j=(Nt*(i-1)-Nt+2):(Nt*(i-1)+1)
X3c(1,j)=deltaX3(1,i)/Nt;
Y3c(1,j)=deltaY3(1,i)/Nt;
end
end
syms l
X31=zeros(1,Nd*Nt+1);Y31=zeros(1,Nd*Nt+1);
X31(1,1)=X21(1,Nc*Nt+1);Y31(1,1)=Y21(1,Nc*Nt+1);
for l=2:Nd*Nt+1
X31(1,l)=X31(1,l-1)+X3c(1,l);
Y31(1,l)=Y31(1,l-1)+Y3c(1,l);
end
trajct.time = [];%iput simulink
sum=[X11,X21,X31;Y11,Y21,Y31]';
trajct.signals.values = sum;
trajct.signals.dimensions = 2;
48
ylabel('Y axis(mm)')
legend({'SetPoints','Controllers'},'Location','northwest','NumCo
lumns',2)
title('PD Controllers')
49
td=Tc+Ta:T:(Tc+Ta+Td);
tc=Ta:T:(Ta+Tc);
tas=0:Tdk:Ta;
tds=Tc+Ta:Tdk:(Tc+Ta+Td);
%Noi suy tho duong tron
X_tam=2;
Y_tam=1;
R=4;
Va=Wa*R;%w=v/r noi suy toc do tang toc
alpha=Wa*T;%noi suy goc alpha khi tang toc
tong=sum(alpha);%tong quang duong tang toc
Vc=F*R;%toc do cons
tong1=pi/2-tong-tong2;%quang duong cons
Tc_dtr=tong1/F;%Thoi gian cons
Nc_dtr=round(Tc_dtr/T);% so lan noi suy cons
Wc_dtr=ones(1,Nc_dtr+1)*F;%toc do cons
alpha1=Wc_dtr*T;% noi suy goc alpha cons
50
X12(1,m)=(X12(1,m-1)-X_tam)*A_dtr2(1,m-1)-(Y12(1,m-1)-
Y_tam)*B_dtr2(1,m-1)+X_tam;
Y12(1,m)=(Y12(1,m-1)-Y_tam)*A_dtr2(1,m-1)+(X12(1,m-1)-
X_tam)*B_dtr2(1,m-1)+Y_tam;
end
51
X12c=zeros(1,Nd*Nt+1);Y12c=zeros(1,Nd*Nt+1);
X12c(1,1)=X11c(1,Nc_dtr*Nt+1);Y12c(1,1)=Y11c(1,Nc_dtr*Nt+1);
syms m
for m=2:Nd*Nt+1
X12c(1,m)=(X12c(1,m-1)-X_tam)*A1_dtr2(1,m-1)-(Y12c(1,m-1)-
Y_tam)*B1_dtr2(1,m-1)+X_tam;
Y12c(1,m)=(Y12c(1,m-1)-Y_tam)*A1_dtr2(1,m-1)+(X12c(1,m-1)-
X_tam)*B1_dtr2(1,m-1)+Y_tam;
end
%input simulink
trajct.time = [];
sum=[X10c,X11c,X12c;Y10c,Y11c,Y12c]';
trajct.signals.values = sum;
trajct.signals.dimensions =2;
%V? ?? th?
figure;
plot(ta,Wa,'r',tc,Wc,'g',td,Wd,'b','LineWidth',1.2)
axis([0 0.45 0 6]);
legend({'Acc','Constant','Dec'},'Location','northeast','NumColum
ns',3)
xlabel('Time(s)')
ylabel('Velocity(mm/s)')
title('Velocity Interpolation')
grid on
figure;
[x4z,y4z]=stairs(X10c,Y10c);[x5z,y5z]=stairs(X11c,Y11c);
[x6z,y6z]=stairs(X12c,Y12c);
plot(x4z,y4z,'r',x5z,y5z,'g',x6z,y6z,'b','LineWidth',1.2)
axis([0 6 0 7]);
axis on
grid on
xlabel('X axis(mm)')
ylabel('Y axis(mm)')
legend('Acc','Cons','Dec')
figure;
[x1z,y1z]=stairs(X10,Y10);
plot(x1z,y1z,'b',x4z,y4z,'r','LineWidth',1.2);
xlabel('X axis(mm)')
ylabel('Y axis(mm)')
legend({'Noi suy tho','Noi suy tinh'})
figure;
plot(X10c,Y10c,'r',X11c,Y11c,'g',X12c,Y12c,'b','LineWidth',1.2)%
duong thang sau khi noi suy
hold on
plot(out.x_st,out.y_st,'--r','LineWidth',1.2)%duong tròn sau khi
qua bo dk
hold on
legend({'Input Simulink','OutputSimulink'})
52