You are on page 1of 44

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN
----------

BÁO CÁO BÀI TẬP LỚN CNC

GIÁO VIÊN HƯỚNG DẪN: TS.Dương Minh Đức


NHÓM SINH VIÊN THỰC HIỆN: MSSV
Nguyễn Hữu Phúc 20174118
Nguyễn Đình Mạnh 20174051
Ngô Quý Thiên 20174233

Hà Nội, ngày 7 tháng 5 năm 2021


MỞ ĐẦU
Máy tiện CNC là máy công cụ phổ biến trong mọi xưởng cơ khí. Máy tiện
CNC được dùng để gia công mặt trục hoặc côn, chẳng hạn trục, vòng chặn, bánh
xe, lỗ, ren,… Nguyên công tiện thông dụng nhất là cắt bỏ vật liệu từ phôi trục, sử
dụng dao tiện để cắt mặt ngoài. Máy tiện còn được dùng để gia công lỗ, cắt rãnh,
cắt ren,… nếu dùng dụng cụ cắt thích hợp. Máy tiện quay (revolve) thường có
khả năng gia công yếu hơn máy tiện thông dụng, mỗi lần chỉ lắp một hoặc hai
dao cắt, nhưng năng lực gia công lớn hơn.
Gia công tiện phổ biến được điều khiển bằng hệ thống máy CNC sử dụng các
máy trong công nghiệp được gọi là trung tâm tiện CNC hoặc đơn giản là máy tiện
CNC.
Thuật ngữ “trung tâm tiện CNC” ít được sử dụng nhưng có ý nghĩa chính xác
hơn, được hiểu là máy tiện máy tính hóa (máy tiện CNC) có thể được dùng cho
nhiều nguyên công chỉ với một xác lập máy. Ví dụ, ngoài các nguyên công tiện
tiêu chuẩn, như tiện mặt ngoài, tiện lỗ, máy tiện CNC còn có thể được dùng đế’
khoan, cắt rãnh, cắt ren, chà gai nhám, đánh bóng. Máy có thể được dùng trong
các chế độ khác nhau, chẳng hạn gia công với mâm cặp, ống kẹp, cấp phôi thanh,
hoặc giữa các tâm, ngoài ra còn có nhiều tổ hợp khác. Máy tiện CNC được thiết
kế để lắp nhiều dụng cụ cắt trong giá xoay, chúng có thể có đồ gá phay, mâm cặp
phân độ, trục phụ, ụ động, gối tựa và nhiều tính năng khác, có thể không có trong
máy tiện truyền thống. Máy tiện với hơn bôi trục bắt đầu trở nên phổ biến. Với
các tiến bộ liên tục trong công nghệ máy công cụ, ngày càng nhiều máy tiện CNC
trên thị trường được thiết kế để thực hiện nhiều nguyên công trong một chế độ
xác lập máy, đa số các nguyên công đó trước đây chỉ thực hiện trên máy phay
hoặc trung tâm gia cồng.
Trong bài báo cáo lần này nhóm em sẽ sử dụng kiến thức đã học trên lớp để
thiết kế hệ thống dịch chuyển của 2 trục X và Y theo quỹ đạo mong muốn.
I. Yêu cầu bài toán
Đề bài :
• Thiết kế bộ điều khiển vị trí cho 2 trục X và Y .Với động cơ cho trục x có
Vx K1
hàm truyền giữa đầu vào điện áp và đầu ra là tốc độ = với
U x T1.s + 1
Vy K2
K1=10,T1=0.08;động cơ cho trục y có hàm truyền = với
Uy T2 .s + 1
K2=10,T2=0.08 .Bộ điều khiển có yêu cầu :
- Độ quá điều chỉnh nhỏ hơn 5% ,
- Sai lệch tĩnh nhỏ hơn 0.1%,
- U dk  10V, thời gian xác lập nhỏ nhất .
• Thực hiện nội suy đường thẳng và cung tròn với chu kì nội suy là
Tipo=5ms, chu kì điều khiển vị trí là Tdk=1ms .Tăng tốc và giảm tốc theo
profile hình thang .
• Quỹ đạo cần vẽ
Y-Axis

X-Axis

Hình1.Dạng quỹ đạo


II. Thiết kế bộ PID điều khiển vị trí cho động cơ 2 trục.
- Bộ điều khiển PID là đặc trưng của các hệ thống điều khiển quy trình hiện
đại, vì chúng tự động hóa các nhiệm vụ quy định mà nếu không thì phải thực
hiện thủ công. Mặc dù chế độ điều khiển tỷ lệ là động lực chính trong bộ điều
khiển, mỗi chế độ đáp ứng một chức năng duy nhất. Các chế độ điều khiển
theo tỷ lệ và tích phân là rất cần thiết cho hầu hết các vòng điều khiển, trong
khi chế độ đạo hàm là tuyệt vời cho điều khiển chuyển động. Kiểm soát nhiệt
độ là một ứng dụng điển hình sử dụng cả ba chế độ điều khiển.
- Chọn thông số cho hai động cơ như nhau từ đó sẽ thiết kế 1 bộ PID dùng
được cho cả 2 động cơ :

Hình2.Cấu trúc điều khiển vị trí

Ta có:
VX VY 10
= = , K1 = K 2 = 10
U X U Y 0.08t + 1
T1 = T2 = 0.08  0.1

Udk  10(V)
- Cấu trúc điều khiển vị trí cho trục x (tương tự cho trục y) được mô tả như
hình dưới: Cấu trúc bộ điều khiển vị trí trong matlab

10
 Hàm truyền đối tượng : G(s) = => khâu tích phân quán tính
s(0.08s + 1)
bậc nhất

=>> Sử dụng PID tuning trên matlab simulink.


-Thiết kế bộ điều khiển PID sử dụng Tuning trong Simulink
Nhóm sử dụng bộ điều khiển PI tuning trong matlab với các thông số của
bộ điều khiển là P=0.53917; D=0.0486;

Hình 3.Tham số bộ điều khiển và các thông số chất lượng bđk


-Ta kiểm chứng kết đáp ứng đầu ra bộ điều khiển và điện áp Udk
Hình4. Đáp ứng đầu ra bộ điều khiển

Hình 5.Điện áp điều khiển


-Nhận xét thấy rằng khi sử dụng bộ điều khiển Tuning của matlab thì :
+Độ quá điều chỉnh <5%
+Sai lệch tĩnh e <0.1%
+Thời gian đáp ứng của hệ thống là 0.2s
+Do sử dụng khâu bão hoà nên điện áp đầu ra bộ điều khiển đáp ứng yêu
cầu bài toán Udk  10(V)
III. Cấu trúc chương trình .
-Có 2 cấu trúc chương trình ADCAI và ADCBI, cấu trúc ADCBI.Cấu trúc
ADCBI tạo cấu trúc tăng tốc/giảm tốc trước thực hiện nội suy thô ,không dẫn đến
lỗi gia công (machining error) như ADCAI (gây ra lỗi gia công theo tỉ lệ tiến dao
F .Do đó cấu trúc ADCBI ưu tiên sử dụng cho các hệ gia công tốc độ cao và độ
chính xác cao

Hình 6.Cấu trúc ADCAI Hình 7.Cấu trúc ADCBI


1. Nội suy đường thẳng
* Bài toán: Nội suy đường thằng từ toạ độ A(30;30) đến điểm B(60;70)
-Chiều dài L=50 mm;
-Gia tốc tăng tốc cho phép A=50mm/s2;
-Gia tốc giảm tốc cho phép D=50mm/s2;
-Tốc độ tiến dao cho phép F = 30mm/s;
-Chu kì nội suy Tipo=5 ms
-Chu kì điều khiển Tdk=1ms
1.1 Xây dựng profile tốc độ cho chuyển động đường thẳng
• Trình tự thực hiện xây dựng profile tốc độ cho đường thẳng

Bước 1: Kiểm tra quỹ đạo là thuộc dạng normal hay short block
F2 F2
+ L
2 A 2D

Thường có hai loại profile tốc độ: Normal Block và Short Block

Hình 8.Profile tốc độ

Nếu thoả mãn công thức trên thì là shortblock, ngược lại là dạng normal block
F2 F2
Thay các tham số ở trên ta được + = 18  50 ➔ quỹ đạo tốc độ thuộc Normal
2 A 2D
block.
Bước 2: Tính toán thời gian tăng tốc, thời gian giảm tốc, thời gian tốc độ
không đổi trong profile Normal block
F 30
-Thời gian tăng tốc: Ta = = = 0.6s
A 50
F 30
-Thời gian giảm tốc: Td = = = 0.6s
D 50
F2 F2
L− −
-Thời gian tốc độ không đổi: Tc = 2 A 2 D = 0.7333s
F

V(mm/s2)

30

t(s)
Ta Td

Hình 9.Profile cho đường thẳng


Ta *1000
-Số chu kì nội suy trong khoảng thời gian tăng tốc : Na = = 120
Tipo
Td *1000
-Số chu kì nội suy trong thời gian giảm tốc là : Nd = = 120
Tipo
Tc
-Số chu kì nội suy trong thời gian tốc độ không đổi là Nc = *1000 = 146
Tipo
Bước 3: Tính tốc độ tại mỗi thời điểm nội suy
vi = vi −1 + a.Tipo
a1: acc _ period
Trong đó a = 0 : const _ period
a3: decc _ period

Ta có tốc độ tại một vài thời điểm nội suy.
+Tại điểm nội suy với i=1: v1 = v0 = 0mm / s
+Tại điểm nội suy với i=2: v2 = v1 + 50*Tipo = 0.25mm / s
+Tại điểm nội suy với i=3: v3 = v2 + 50*Tipo = 0.5mm / s
+Tại điểm nội suy với i=4: v4 = v3 + 50*Tipo = 0.75mm / s
+Tại điểm nội suy với i=5: v5 = v4 + 50*Tipo = 1mm / s

Hình10.Vận tốc tại một vài thời điểm nội suy


1.2 Nội suy thô quỹ đạo đường thẳng
-Tiến hành nội suy thô từ điểm A đến điểm B

B(60, 70) X Y
L Y

X

X
A(30,30)
Y

Tipo Tipo

O(0,0) O O
t t

Hình11.Nội suy thô đường thẳng


• Trình tự thực hiện nội suy thô đường thẳng
Bước 1: Tính toán độ dài của quỹ đạo, độ dài quỹ đạo chiếu xuống
trục x và trục y
 L = L 2 + L 2 = 50
 Lx = xB − x A  x y

 →
 Ly = yB − y A L 3 L 4
cos  = x = ;sin  = y =
 L 5 L 5
Bước 2: Tính độ dời của quỹ đạo, độ dời quỹ đạo theo trục x, độ dời
quỹ đạo theo trục y
L = V * Tipo

x = L *cos 
y = L *sin 

Lưu giá trị L, x, y vào khối FIFO block
Bước 4: Tại mỗi thời điểm lấy mẫu, điểm nội suy có thể được tính
như sau:
 xi +1 = xi + x

 yi +1 = yi + y
* Code thực hiện nội suy tinh được thực hiện trong file m matlab
(trình bày phần phục lục)
-Quãng đường đi được tại 1 thời điểm nội của trục x và y là
+Tại thời điểm nội suy thứ 2:
L = V * Tipo = 1.25*10−3 (mm)
  x2 = x A + x = 30.00075
x = L *cos  = 7.5*10 (mm) → 
−4

y = L *sin  = 10−3 (mm)  y2 = y A + y = 30.001



+Tại thời điểm nội suy thứ 3:
L = V * Tipo = 2.5*10−3 (mm)
  x3 = x2 + x = 30.00225
x = L *cos  = 1.5*10 (mm) → 
−3

y = L *sin  = 2*10−3 (mm)  y3 = y2 + y = 30.003



+Tại thời điểm nội suy thứ 4
L = V * Tipo = 3.75*10−3 (mm)
  x4 = x3 + x = 30.0045
x = L *cos  = 2.25*10 (mm) → 
−3

y = L *sin  = 3*10−3 (mm)  y4 = y3 + y = 30.006


• Kết quả nội suy thô sử dụng phần mềm matlab để vẽ:

Hình12.Nội suy thô quỹ đạo trục x


Nội suy thô quỹ đạo theo trục x

Hình13.Nội suy thô quỹ đạo theo trục y

1.3 Nội suy tinh quỹ đạo đường thẳng


*Khi khoảng thời gian lấy mẫu cho nội suy thô(5ms) và tập xung
sau khi tăng/giảm tốc lớn hơn khoảng thời gian lấy mẫu của điều
khiển vị trí(1ms) thì nội suy tinh được thực hiện .Cứ mỗi 5ms thì
kênh xung nội suy được lưu trong CPU chính , nội suy tinh cứ sau 1
ms do CPU phụ trách điều khiển chuyển động .Có 2 phương pháp
nội suy tinh chính : nội suy tuyến tính và nội suy theo trung bình
.Bài báo cáo này nhóm em sẽ sử dụng nội suy tuyến tính vì cách sử
dụng đơn giản .Đầu ra của nội suy tinh sẽ là giá trị đặt đưa vào bộ
điều khiển vị trí.
-Về mặt hình thức thì phương trình biểu diễn cho nội suy tuyến tính
được thể hiện công thức như sau:
p(i )
a( j ) = , i  j  i + Tipo
N
Trong đó a(j) là giá trị nội suy tinh , p(i) là giá trị nội suy thô
Y
50 50

40 40

30 30

20

10 10

6 6

1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 50 51 52 53 54 55

Hình14.Nội suy tinh tuyến tính


-Code của chương trinh nội suy tinh đường thẳng được trình bày
trong phần phục lục của báo cáo.
• Ta có kết quả nội suy tinh quỹ đạo cho trục x và y như sau:
-Trục x:

Hình15. Nội suy thô trục x

Hình16.Nội suy tinh trục x Phóng to

-Trục Y

Hình17.Nội suy thô trục y


Nội suy tinh truc y Phóng to

1.4 Điều khiển vị trí


-Cấu trúc bộ điều khiển trong matlab với giá trị đặt từ khối nội suy tinh

Hình18.Cấu trúc mô phỏng bộ đk vị trí trong matlab

Hình19.Cấu trúc bên trong bộ điều khiển vị trí X,Y


• Kết quả mô phỏng
-Lượng đặt quỹ đạo mong muốn cho vào bộ điều khiển vị trí là:

Hình20.Lượng đặt cho trục x y

Hình21.Đáp ứng điều khiển vị trí trục X,Y

-Điện áp điều khiển động cơ các trục

Hinh22.Điện áp điều khiển động cơ trục x


Hình22.Điện áp điều khiển động cơ trục y
2. Nội suy đường tròn
Bài Toán: Nội suy đường tròn tâm O(50;30) bán kính R=20mm .Ta tiến
hành nội suy nửa cung tròn bắt đầu từ điểm A(30,30) đến điểm B(70,30)

Hình23.Quỹ đạo nửa cung tròn


2.1 Xây dựng quỹ đạo vận tốc cho nội suy đường tròn
Tương tự với xác định quỹ đạo vận tốc của đường thẳng ta giả thiết các
tham số như sau:
-Gia tốc tăng tốc cho phép A=50mm/s2;
-Gia tốc giảm tốc cho phép D=50mm/s2;
-Tốc độ tiến dao cho phép F = 30mm/s;
-Chu kì nội suy Tipo=5 ms
-Chu kì điều khiển Tdk=1ms
* Các bước thực hiện để xây dựng quỹ đạo vận tốc cho nội suy đường
tròn
Bước1: Kiểm tra quỹ đạo thuộc dạng normalblock hay shortblock
-Xác định góc quay của cả quỹ đạo cần vẽ
  y ( A) − y ( I ) 
 s = arctan  
  x( A) − x( I ) 
 →  1 =  e − s = 180
 = arctan  y ( B ) − y ( I ) 
 e  
  x( B) − x( I ) 

Đặt L =  1

-Kiểm tra công thức


F2 F2
+ L
2 A 2D

Thường có hai loại profile tốc độ: Normal Block và Short Block

Hình24.Profile tốc độ

Nếu thoả mãn công thức trên thì là shortblock, ngược lại là dạng normal block
F2 F2
Thay các tham số ở trên ta được + = 18  180 ➔ quỹ đạo tốc độ thuộc
2 A 2D
Normal block.
Bước 2 : Tính toán thời gian tăng tốc , thời gian giảm tốc , thời gian tốc độ
không đổi trong profile Normal block
F 30
-Thời gian tăng tốc: Ta = = = 0.6s
A 50
F 30
-Thời gian giảm tốc: Td = = = 0.6s
D 50
F2 F2
L− −
-Thời gian tốc độ không đổi: Tc = 2 A 2 D = 0.7333s
F

V(mm/s2)

30

t(s)
Ta Td

Hình25.Profile cho đường thẳng


Ta *1000
-Số chu kì nội suy trong khoảng thời gian tăng tốc: Na = = 120
Tipo
Td *1000
-Số chu kì nội suy trong thời gian giảm tốc là: Nd = = 120
Tipo
Tc
-Số chu kì nội suy trong thời gian tốc độ không đổi là Nc = *1000 = 146
Tipo

Bước3: Tính tốc độ góc tại mỗi thời điểm nội suy
Wi +1 = Wi + a.Tipo

a1: acc _ period


Trong đó a = 0 : const _ period
a3: decc _ period

-Code tính toán tốc độ góc của quỹ đạo tốc độ được viết trong file m (Phụ
Lục)
Hình26.Tốc độ góc quỹ đạo đường tròn
2.2 Nội suy thô quỹ đạo cung tròn

• Trình tự thực hiện nội suy thô đường thẳng


Bước 1: Tính độ dời của góc đã di chuyển được tại thời điểm thứ i
 = Wi *Tipo
-Tính góc đã đi được tại thời điểm thứ i
 (i + 1) =  (i) + 

Bước 2: Tính toạ độ trên trục X,Y tại thời điểm thứ i
 xi +1 = xi + R * ( cos  (i + 1) − cos  (i) )

 yi +1 = yi + R * ( cos  (i + 1) − cos  (i) )

 DX i = xi +1 − xi
 DX = y − y
 i i +1 i
* Code thực hiện nội suy thô được thực hiện trong file m matlab
(trình bày phần phục lục)
-Quãng đường đi được tại 1 thời điểm nội của trục x và y là
+Tại thời điểm nội suy thứ 2:
L = V * Tipo = 1.25*10−3 (mm)
  x2 = x A + x = 30.00075
x = L *cos  = 7.5*10 (mm) → 
−4

y = L *sin  = 10−3 (mm)  y2 = y A + y = 30.001



+Tại thời điểm nội suy thứ 3:
L = V * Tipo = 2.5*10−3 (mm)
  x3 = x2 + x = 30.00225
x = L *cos  = 1.5*10 (mm) → 
−3

y = L *sin  = 2*10−3 (mm)  y3 = y2 + y = 30.003



+Tại thời điểm nội suy thứ 4
L = V * Tipo = 3.75*10−3 (mm)
  x4 = x3 + x = 30.0045
x = L *cos  = 2.25*10 (mm) → 
−3

y = L *sin  = 3*10−3 (mm)  y4 = y3 + y = 30.006


• Kết quả nội suy thô sử dụng phần mềm matlab để vẽ:

Hình27.Nội suy thô quỹ đạo trục x

Hình28.Nội suy thô quỹ đạo theo trục y


2.3 Nội suy tinh quỹ đạo đường tròn
*Khi khoảng thời gian lấy mẫu cho nội suy thô(5ms) và tập xung
sau khi tăng/giảm tốc lớn hơn khoảng thời gian lấy mẫu của điều
khiển vị trí(1ms) thì nội suy tinh được thực hiện. Cứ mỗi 5ms thì
kênh xung nội suy được lưu trong CPU chính , nội suy tinh cứ sau 1
ms do CPU phụ trách điều khiển chuyển động .Có 2 phương pháp
nội suy tinh chính : nội suy tuyến tính và nội suy theo trung bình
.Bài báo cáo này nhóm em sẽ sử dụng nội suy tuyến tính vì cách sử
dụng đơn giản .Đầu ra của nội suy tinh sẽ là giá trị đặt đưa vào bộ
điều khiển vị trí.
-Về mặt hình thức thì phương trình biểu diễn cho nội suy tuyến tính
được thể hiện công thức như sau:
p(i )
a( j ) = , i  j  i + Tipo
N
Trong đó a(j) là giá trị nội suy tinh , p(i) là giá trị nội suy
Y
50 50

40 40

30 30

20

10 10

6 6

1 2 3 45 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 50 51 52 53 54 55

thô
Hình25.Nội suy tinh tuyến tính
-Code của chương trinh nội suy tinh đường thẳng được trình bày
trong phần phục lục của báo cáo.
→Ta có kết quả nội suy quỹ đạo cho trục X và Y
Hình26.Nội suy tinh trên trục x

Hình27.Nội suy tinh trục y


2.4.Điều khiển vị trí
- Cấu trúc bộ điều khiển trong matlab với giá trị đặt từ khối nội suy tinh
giống với nội suy đường thẳng đã nêu ở trên
-Quỹ đạo đặt mong muốn:

Hình28.Quỹ đạo đặt nửa cung tròn


-Đáp ứng vị trí của trục x
Hình28.Đáp ứng vị trí của trục x
Đáp ứng vị trí trục Y:

Hình29

-Điện áp điều khiển động cơ các truc X,Y


Udk truc X

Hình29.Udk truc Y
-Đáp ứng quỹ đạo sau khi qua bộ điều khiển vị trí

Hình30.Đáp ứng đầu ra trục X,Y


IV. Nội suy quỹ đạo chữ O
1.Giả thiết đề bài: Nội suy quỹ đạo chữ O , bắt đầu tại điểm
A(30,30) di chuyển ngược chiều kim đồng hồ’
Profile đối tượng cần vẽ
Hình 31.Toạ độ của đối tượng trong hệ toạ độ XY
-Chương trình điều khiển máy CNC :

N10 G00 G17 X30 Y30 M03;


N20 G90 G03 X70 Y30 I-20 F30;
N30 Y70;
N40 G03 X30 Y70 I-20;
N50 Y30;
N60 M30;
-Giải thích chương trình :
Chương trình chạy với chế độ chạy nhanh cắt gọt (G00), mặt phẳng gia
công XY . Ban đầu toạ độ của X,Y ở (30,30) sau đó nội suy theo đường
cung tròn bán kính 20mm(I-20) ngược chiều kim đồng hồ đến toạ độ
(70/30) với tốc độ tiến dao 30mm/s,tiếp theo nội suy đường thẳng đến vị
trí (30,70) . Kế tiếp là nội suy đến cung tròn ngược chiều kim đồng hồ bán
kính 20mm đến vị trí (30,70). Cuối cùng là nội suy đường thẳng đến vị trí
ban đầu (30;30).Lệnh M30 để kết thúc chương trình ,M03 bắt đầu chương
trình.
• Trình tự nội suy đường tròn tạo ra giá trị đặt cho bộ điều khiển
Nội suy cung tròn Nội suy đường thẳng Nội suy cung tròn Nội suy đường
thẳng Lượng đặt BĐK Bộ Điều Khiển
thứ nhất thứ nhất thứ hai X=[X1 X2 X3 X4]
[X1 Y1] [X2 Y2] [X3 Y3] thứ hai Vị Trí
[X4 Y4] Y=[Y1 Y2 Y3 Y4]

2.Thực hiện mô phỏng điều khiển cho 2 trục X, Y trên matlab simulink
-Sơ đồ mô phỏng:

Hình 32.Sơ đồ điều khiển trong matlab simulink


-Đáp ứng bộ điều khiển vị trí cho trục X
Đáp
ứng
đầu
ra
điều
khiển
vị trí
cho
trục
X
-Đáp ứng đầu ra cho trục Y

Hình 33.Đáp ứng đầu ra điều khiển vị trí cho trục X


-Điện áp điều khiển động cơ

Hình 34.Điện áp điều khiển động cơ trên trục x


Hình 35.Điện áp điều khiển động cơ trên trục x
-Quỹ đạo trên trục X, Y sau khi qua bộ điều khiển vị trí

Hình 36.Quỹ đạo đặt ước lượng từ bộ nội suy tinh


Hình 37.Đáp ứng quỹ đạo điều khiển
Phụ Lục
%% Chướng trình code file m trong matlab

1.Chương trình nội suy đường thẳng


2.Chương trình nội suy cung tròn
2.Nội suy hình chữ O

You might also like