1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thực tập Điều khiển hệ thống Điện công nghiệp bài tuần 8 tìm hiểu plc

22 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Thực Tập Điều Khiển Hệ Thống Điện Công Nghiệp Bài Tuần 8: Tìm Hiểu PLC
Tác giả Vũ Đăng Duy, Lê Chí Danh, Nguyễn Viết Thuận
Người hướng dẫn PGS.TS. Trương Việt Anh
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Tp. Hcm
Chuyên ngành Công Nghệ Kỹ Thuật Điện - Điện Tử
Thể loại báo cáo thực tập
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 797,46 KB

Nội dung

Kiểu dữ liệu Boolean chỉ có hai trạng thái True 1 hoặc False 0 Điều khiển tín hiệu nhị phân, trạng thái relay, tín hiệu logicByte 8 bit 1 byte Kiểu Byte dùng để lưu trữ các giá trị số

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM

KHOA ĐIỆN – ĐIỆN TỬ NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN - ĐIỆN TỬ



BÁO CÁO THỰC TẬP ĐIỀU KHIỂN HỆ THỐNG ĐIỆN CÔNG NGHIỆP

BÀI TUẦN 8: TÌM HIỂU PLC

GVHD: PGS.TS TRƯƠNG VIỆT ANH

Lớp: NHÓM LỚP 19CLC NHÓM 4 : VŨ ĐĂNG DUY – 21142505

LÊ CHÍ DANH – 21142503

NGUYỄN VIẾT THUẬN – 21142188

Tp Hồ Chí Minh, tháng 9 năm 2024

Trang 2

MỤC LỤC

1 Cấu tạo PLC 1

2 Nguyên lý hoạt động PLC 2

3 Chức năng các chân PLC 2

4 Cách kết nối 3

5 Kiểu dữ liệu 6

6 Cách lập trình 7

Trang 3

NỘI DUNG

1 Cấu tạo PLC

PLC (viết tắt của Programmable Logic Controller) là thiết bị cho phép lập trình thực hiện các thuật toán điều khiển logic

Cấu tạo của PLC gồm có các bộ phận chính sau:

- Bộ nhớ chương trình: RAM, ROM, ngoài ra có thể sử dụng vùng nhớ ngoài là

EPROM

- Bộ xử lý trung tâm CPU

- Module input/output Thông thường module I/O được tích hợp sẵn trên PLC, khi có nhu cầu mở rộng thêm I/O có thể lắp thêm module I/O mua từ bên ngoài

Ngoài ra, PLC còn có các bộ phận khác như:

- Cổng kết nối giữa PLC và máy tính: Bao gồm các cổng RS232, RS422, RS485 được

sử dụng me tải chương trình và giám sát chương trình

- Cổng truyền thông: PLC thường tích hợp cổng truyền thông Modbus RTU Tùy thuộcvào hãng và dòng sản phẩm, PLC có thể hỗ trợ thêm các loại thông tin khác như

Profibus, Profinet, CANopen, EtherCAT,…

Trang 4

2 Nguyên lý hoạt động của PLC

Đầu tiên, các tín hiệu từ thiết bị ngoại vi (cảm biến, công tắc, vv) được đưa vào đầu vào mô-đun thông qua CPU Sau khi nhận tín hiệu, xử lý CPU và gửi đầu mô-đun điều khiển tín hiệu đến các thiết bị ngoại vi, chương trình đã được cài đặt sẵn

Quá trình này bao gồm các bước: đọc đầu vào tín hiệu, thực hiện chương trình, truyền thông tin nội bộ, tự kiểm tra lỗi và gửi ra ngoài điều khiển tín hiệu Mỗi chu kỳ như vậy được gọi là một "chu kỳ quét" hoặc "vòng quét" (Chu kỳ quét)

Thông thường, một vòng quét diễn ra rất nhanh, trong khoảng từ 1ms đến 100ms Thờigian này phụ thuộc vào tốc độ xử lý của PLC, chương trình dài và tốc độ giao tiếp tiếp theo giữa PLC và các thiết bị ngoại vi

Trang 5

- DI.0, DI.1, DI.2,… mỗi chân nhận tín hiệu 24 VDC từ thiết bị đầu vào.

- 1M là chân nối đất chung cho các tín hiệu digital input

* Ngõ vào tín hiệu tương tự ( Analog Inputs ): nhận tín hiệu từ các cảm biến tương tự nhưnhiệt độ, áp suất,…

- AI.0, AI.1,… Các chân này nhận tín hiệu dạng 0 – 10V hoặc 4 – 20mA

- 2M là chân nối đất chung cho các tín hiệu analog inputs

* Ngõ ra tín hiệu số: Các chân này dùng để điều khiển các thiết bị đầu ra như đèn, relay, vanđiện từ,…

- DQ.0, DQ.1,…

4 Cách kết nối PLC

* Cách đấu nối đầu vào input PLC

Khi kết nối kiểu Source đầu vào (input) với PLC, nguồn cấp dương (+) được đưa đến các chân tín hiệu đầu vào của PLC, còn cực âm (GND) được kết nối với các chân M (mass) của PLC Đây là kiểu kết nối

mà thiết bị đầu vào sẽ cung cấp dòng dương (24V DC) đến chân đầu vào số (DI) của PLC.

Trang 6

Trong kết nối kiểu Source, chân tín hiệu đầu vào của PLC nhận điện áp dương (+24V DC) từ thiết bị đầu vào (ví dụ như nút nhấn, công tắc, cảm biến, ) Chủ yếu là các cảm biến PNP.

Kiểu sink ( âm chung ) chân mass sẽ được nối chung với các tín hiệu đầu vào, nguồn dươngcủa PLC sẽ được kết nối với trực tiếp với 1M, các tín hiệu từ thiết bị đầu vào sẽ đóng vai tròcung cấp cực âm về DI của PLC

Là kiểu ngược lại với kiểu Source, các cảm biến dùng là NPN

* Kết nối ngõ vào cảm biến với PLC

Trang 7

* Kết nối đầu ra output của PLC

Trang 8

Ngõ ra transistor có chức năng đóng ngắt dòng điện để điều khiển thiết bị Transistor sẽ hoạtđộng như một công tắc điện tử, mở khi tín hiệu đầu ra kích hoạt và đóng khi tín hiệu không hoạtđộng.

Ngõ ra DC/DC/DC nghĩa là nguồn cấp cho ngõ ra và tải được sử dụng là nguồn điện mộtchiều (DC)

5 Kiểu dữ liệu

Boolean chỉ có hai trạng thái True (1) hoặc False (0)

Điều khiển tín hiệu nhị phân, trạng thái relay, tín hiệu logicByte 8 bit ( 1 byte ) Kiểu Byte dùng để

lưu trữ các giá trị số nguyên không dấu trong phạm vi từ 0 đến 255

Thường được sử dụng cho các cụm dữ liệu nhỏ như địa chỉ,

mã trạng thái.

Word 16 bit ( 2 byte ) là một chuỗi 16 bit,

dùng để lưu trữ các giá trị số nguyên không dấu từ 0 đến 65,535.

Lưu trữ các mã trạng thái, dữ liệu điều khiển.

Double Word 32 bit (4 byte) là một chuỗi 32 bit,

dùng để lưu trữ các số nguyên không dấu từ 0 đến 4,294,967,295.

Dữ liệu điều khiển phức tạp hoặc địa chỉ lớn.

Integer 16 bit (2 byte) là số nguyên có dấu,

giá trị nằm trong khoảng từ -32,768 đến 32,767.

Thường được sử dụng trong các phép tính số học đơn giản, đếm số lượng.

Real ( Float ) 32 bit (4 byte) là số thực (dạng dấu Các phép tính yêu

Trang 9

chấm động) có dấu, với

độ chính xác 7 chữ số thập phân Giá trị của

nó nằm trong khoảng từ

±1.18 × 10 ³⁸ ⁻ đến ±3.4

× 10³⁸.

cầu độ chính xác cao, điều khiển các giá trị tương tự (analog), như nhiệt độ, áp suất, dòng điện.

* Các loại miền nhớ chính:

- I : input lấy tín hiệu đầu vào của PLC, nút nhấn, công tắc hành trình,…

- Q: Output Xuất tín hiệu đầu ra cho PLC như động cơ, van,…

- M: Miền memory miền nhớ trung gian, sử dụng nhiều khi lập trình PLC

- L : Miền nhớ nội, miền nhớ tạm : Dùng cho các Block cho PLC

- DB: Khối cơ sở dữ liệu: Dùng để lưu cơ sở dữ liệu với nhiều định dạng khác nhau DB như

1 file excel trong PLC

- T ( Timer ) : Miền nhớ phục vụ bộ thời gian

- C ( Counter ) : Miền nhớ phục vụ bộ đếm

6 Cách lập trình

Ngôn ngữ lập trình Ladder (Ladder Logic) là một loại ngôn ngữ lập trình phổ biến trong lĩnhvực tự động hóa, đặc biệt là trong việc lập trình các bộ điều khiển logic khả trình (PLC -Programmable Logic Controllers) Ngôn ngữ này được thiết kế để mô phỏng sơ đồ điện điềukhiển trong các hệ thống công nghiệp, vì vậy nó có hình thức rất giống với sơ đồ mạch điện.Đặc điểm của Ladder Logic:

- Cấu trúc giống sơ đồ mạch điện: Ngôn ngữ Ladder Logic được mô phỏng dưới dạng các

"bậc thang" (ladder), với các dòng ngang là các "điều kiện" (contacts), và các dòng dọc là các

"hành động" (coils hoặc outputs) Nó dễ dàng cho người kỹ thuật cơ điện, những người quen với

sơ đồ mạch điện, hiểu và sử dụng

- Mỗi bậc thang (Ladder rung): Là một đoạn mã mô tả một chu trình điều khiển Mỗi bậcthang có thể bao gồm các điều kiện (input) và hành động (output) Khi điều kiện là đúng (mạchđược đóng), thì hành động tương ứng sẽ được thực hiện

Các tiếp điểm cơ bản

Tiếp điểm thường hở NO ( Normally Open): Tiếp điểm NO là tiếp điểm mà khi không có tínhiệu (hoặc khi nút nhấn chưa được ấn), nó sẽ ở trạng thái mở Khi có tín hiệu đầu vào ví dụ, nútnhấn được ấn, cảm biến hoạt động, tiếp điểm này sẽ đóng và cho phép dòng điện đi qua, kíchhoạt một hành động nào đó Hoặc khi bit chứa tiếp điểm được set = 1

Trang 10

Tiếp điểm thường đóng NC: là tiếp điểm mà khi không có tín hiệu (hoặc khi nút nhấn chưađược ấn), nó sẽ ở trạng thái đóng Khi có tín hiệu đầu vào (ví dụ, nút nhấn được ấn, cảm biếnhoạt động), tiếp điểm này sẽ mở và ngừng cho phép dòng điện đi qua, ngưng hoạt động củahành động liên quan.

Cuộn dây ngõ ra: Đây là tiếp điểm trung gian cho ngõ ra Khi có tín hiệu cấp cho ngõ ra thì bítngõ ra được set = 0 Khi mất tín hiệu thì trở về = 0

Còn ngõ ra đảo thì khi có tín hiệu vào ngõ vào thì bit ngõ ra set = 0 Và ngược lại khi không

có tín hiệu ở ngõ ra thì bit được set = 1

Các phép toán dung trong bit logic

Phép toán AND: khi tất cả các điều kiện có trạng thái bit = 1 thì toán tử AND sẽ xuất ra 1 vàngược lại

Trang 11

Phép toán OR: khi có 1 trong tất cả các điều kiện lên 1 thì set ngõ ra OR = 1 Khi không cóđiều kiện nào bằng có bit = 1 thì OR = 0.

Toán tử NOT

Bạn sử dụng lệnh "Đảo ngược RLO" để đảo ngược trạng thái tín hiệu của kết quả hoạt độnglogic (RLO) Nếu trạng thái tín hiệu là "1" ở đầu vào của lệnh thì đầu ra của lệnh có trạng thái tínhiệu là "0" Nếu trạng thái tín hiệu là "0" ở đầu vào của lệnh thì đầu ra có trạng thái tín hiệu "1"

Lệnh set và reset

Trang 12

Bạn có thể sử dụng lệnh đặt đầu ra để đặt trạng thái tín hiệu của toán hạng đã chỉ định thành

"1"

Lệnh chỉ được thực thi nếu kết quả của phép toán logic ở đầu vào của cuộn dây là "1" Nếudòng điện chạy vào cuộn dây (RLO = "1"), toán hạng đã chỉ định được đặt thành "1" Khi ngõvào quay lại về 0 thì ngõ ra vẫn không thay đổi

Bạn có thể sử dụng lệnh đặt lại đầu ra để đặt lại trạng thái tín hiệu của toán hạng đã chỉ định

về "0"

Lệnh chỉ được thực thi nếu kết quả của phép toán logic ở đầu vào của cuộn dây là "1" Nếudòng điện chạy vào cuộn dây (RLO = "1"), toán hạng đã chỉ định sẽ được đặt lại về "0" Khi ngõvào quay lại về 0 thì ngõ ra vẫn không thay đổi

Các bộ dò quá độ dương và âm

Trang 13

Tiếp điểm P: Có thể sử dụng lệnh để xác định xem có thay đổi "0" thành "1" trong trạng tháitín hiệu của toán hạng được chỉ định hay không Lệnh so sánh trạng thái tín hiệu hiện tại của vớitrạng thái tín hiệu của lần quét trước đó, được lưu trong bit bộ nhớ cạnh Nếu lệnh phát hiện sựthay đổi trong kết quả của hoạt động logic từ "0" thành "1", thì có một cạnh tăng lên.

Tiếp điểm N: Có thể sử dụng lệnh để xác định xem có thay đổi "1" thành "0" trong trạng tháitín hiệu của toán hạng được chỉ định hay không Lệnh so sánh trạng thái tín hiệu hiện tại của vớitrạng thái tín hiệu của lần quét trước đó, được lưu trong bit bộ nhớ cạnh Nếu lệnh phát hiện sựthay đổi trong kết quả của hoạt động logic từ "1" thành "0", thì có một cạnh giảm xuống

Trang 14

Cuộn dây P: Có thể sử dụng lệnh để đặt toán hạng được chỉ định khi có thay đổi từ "0" đến

"1" trong kết quả của hoạt động logic Lệnh so sánh hiện tại với từ truy vấn trước đó, được lưutrong bit bộ nhớ cạnh Nếu lệnh phát hiện sự thay đổi trong RLO từ "0" thành "1", thì đó là cạnhtín hiệu dương

Cạnh tín hiệu dương được truy vấn mỗi khi lệnh thực thi Khi phát hiện thấy cạnh tín hiệudương, được đặt ở trạng thái tín hiệu "1" trong một chu kỳ chương trình Trong tất cả các trườnghợp khác, toán hạng có trạng thái tín hiệu "0"

Cuộn dây N: Có thể sử dụng lệnh để đặt toán hạng được chỉ định khi có thay đổi "1" thành

"0" trong kết quả của hoạt động logic Lệnh so sánh hiện tại với từ truy vấn trước đó, được lưu

Trang 15

trong bit bộ nhớ cạnh Nếu lệnh phát hiện sự thay đổi trong từ "1" thành "0", thì có cạnh tín hiệuâm.

Cạnh tín hiệu âm được truy vấn mỗi khi lệnh thực thi Khi phát hiện cạnh tín hiệu âm, đượcđặt ở trạng thái tín hiệu "1" trong một chu kỳ chương trình Trong tất cả các trường hợp khác,toán hạng có trạng thái tín hiệu "0"

Lệnh P_trig: Bạn có thể sử dụng lệnh để đặt toán hạng được chỉ định khi có thay đổi "1"thành "0" trong kết quả của hoạt động logic Lệnh so sánh hiện tại với từ truy vấn trước đó, đượclưu trong bit bộ nhớ cạnh Nếu lệnh phát hiện sự thay đổi trong từ "1" thành "0", thì có cạnh tínhiệu âm

Sử dụng lệnh "Quét để tìm cạnh tín hiệu dương" để truy vấn sự thay đổi "0" thành "1" trongtrạng thái tín hiệu của kết quả hoạt động logic Lệnh so sánh trạng thái tín hiệu hiện tại của vớitrạng thái tín hiệu của truy vấn trước đó, được lưu trong bit bộ nhớ cạnh Nếu lệnh phát hiện sựthay đổi trong hoạt động logic từ "0" thành "1", thì đó là cạnh tín hiệu dương

Cạnh tín hiệu dương được truy vấn mỗi khi lệnh thực thi Ngay khi phát hiện thấy một cạnhdương, đầu ra Q của lệnh sẽ trả về trạng thái tín hiệu "1" trong suốt chu kỳ chương trình Trongtất cả các trường hợp khác, đầu ra trả về trạng thái tín hiệu "0"

Lệnh N_trig: Sử dụng lệnh "Quét hoạt động logic để tìm cạnh tín hiệu âm" để truy vấn sự thayđổi "1" thành "0" trong trạng thái tín hiệu của kết quả hoạt động logic Lệnh so sánh trạng thái tínhiệu hiện tại của RLO với trạng thái tín hiệu của truy vấn trước đó, được lưu trong bit bộ nhớcạnh Nếu lệnh phát hiện sự thay đổi trong từ "1" thành "0", thì có cạnh tín hiệu âm

Cạnh tín hiệu âm được truy vấn mỗi khi lệnh thực thi Ngay khi phát hiện thấy một cạnh âm,đầu ra Q của lệnh sẽ trả về trạng thái tín hiệu "1" trong suốt chu kỳ chương trình Trong tất cảcác trường hợp khác, trạng thái tín hiệu ở đầu ra của lệnh là "0"

Trang 16

Các khối Timer:

Giải thích các khối cơ bản:

- TP: Tạo 1 xung On ở đầu ra Q trong thời gian PT set khi đầu vào IN kích on Khi đầu vàomất tín hiệu thì vẫn hoạt động

Trang 17

- TON: Timer delay, On ở đầu ra Q sau một thời gian đặt PT khi đầu vào In lên 1 Khi IN = 0trong lúc đếm thì đâu ra Q về 0 và PT về 0.

- TOF: Timer of delay, Timer đếm khi đầu vào In chuyển từ 1 về 0 dừng đếm khi lên 1 Đầu ra

Q lên 1 từ thời điểm đầu vào IN ở trạng thái 1 đến khi timer đếm xong

Trang 18

TONR: timer đếm khi đầu vào In lên 1, khi chưa đếm xong mà đầu vào về 0 thì giữ thời gian

đã đếm sau khi đầu vào lên 1 lại thì tiếp tục đếm Đầu ra Q lên 1 khi timer đếm xong Timer sẽreset khi đầu vào R lên 1

Trang 19

Các khối Couter

- CTU-Couter up: Giá trị của bộ đếm CV sẽ tang lên 1 khi tín hiệu ngõ vào CU chuyển từ 0lên 1 Ngõ ra Q sẽ lên 1 khi giá trị đếm thực thế lớn hơn hoặc bằng giá trị đếm cài đặt( CV>=PV) Bộ đếm sẽ bị reset về 0 khi chân R của bộ đếm ở giá trị 1

CTD: (đếm xuống) Giá trị của bộ đếm CV sẽ giảm xuống 1 đơn vị khi tín hiệu ngõ vào CDchuyển từ 0 lên 1 Ngõ ra Q sẽ lên 1 khi giá trị đếm thực tế nhỏ hơn hoặc bằng 0 (CV<= 0 ) Khitag LD lên 1 thì bộ đếm đưa giá trị tư PV vào CV

CTUD ( đếm lên xuống): Đây là bộ đếm kết hợp của 2 bộ đếm lên và bộ đếm xuống

- Giá trị bộ đếm Cv sẽ tang lên 1 khi tín hiệu ngõ vào CU chuyển từ 0 lên 1

- Giá trị bộ đếm CV giảm xuống 1 đơn vị khi tín hiệu ngõ vào CD chuyển từ 0 lên 1

- Giá trị bộ đếm CV về 0 nếu chân R có giá trị 1

- Ngõ ra QU sẽ lên 1 khi giá trị đếm thực tế ( CV) lớn hơn hoặc bằng giá trị cài đặt PV

- Ngõ ra QD sẽ lên 1 khi giá trị đếm thực tế lớn nhỏ hơn hoặc bằng 0 ( CV <=0)

- Khi tag LD lên 1 thì giá trị thực tế CV sẽ bằng PV ( đưa giá trị cài PV vào CV)

Trang 20

Các lệnh so sánh

1 CMP == so sánh 2 giá trị bằng nhau hay không

2 CMP<> so sánh 2 giá trị khác nhau hay không

3 CMP >= so sánh giá trị 1 >= giá trị 2 hay không

4 CMP<= so sánh giá trị 1 <= giá trị 2 hay không

5 CMP > so sánh giá trị 1 > giá trị 2 hay không

6 CMP < so sánh giá trị 1 < giá trị 2 hay không

7 In_Range so sánh giá trị VAL có nằm trong khoảng từ giá trị Min tới MAXhay không

8 OUT_Range so sánh giá trị VAL có nằm ngoài khoảng từ giá trị MIN tớiMAX hay không

Trang 21

9 OK Kiểm tra giá trị có phải là số thực floating-point

10 NOT_OK kiểm tra giá trị không phải là số thực floating-point

6 MOD: phép chia lấy dư

7 NEG: đảo giá trị vào IN âm thành dương và dương thành âm ở đầu ra

Trang 22

8 INC: tăng giá trị IN/OUT lên 1 đơn vị khi EN kích on 1 xung cạnh lên

9 DEC: Giảm giá trị IN/OUT xuống 1 đơn vị khi EN kích on 1 xung cạnh lên

10 ABS: trả về giá trị out luôn dương

11 MIN: trả về giá trị IN nhỏ nhất ở đầu ra OUT trong một số các IN đầu vào

12 MAX: trả về giá trị IN lớn nhất ở đầu ra OUT trong một số các IN đầu vào

13 LIMIT: trả về giá trị IN ở đầu ra OUT nếu IN nằm trong giới hạn ở giá trị

MN (min) và MX(max)

14 SQR: bình phương bậc 2

15 SQRT: căn bậc 2

16 LN: logarithm cơ số e = 2.718282

17 EXP: trả về giá trị OUT

Ở dưới là các hàm lượng giác, sin, cos, tan, asin, acos, atan…

Cấu trúc chương trình trong Tia portal

Trong TIA Portal, cấu trúc chương trình PLC thường được tổ chức theo các phần chính sau:

- OBs (Organization Blocks):

+ Đây là các khối tổ chức, chứa các chương trình chính của PLC OB1 là khối chương trìnhchính, nơi hệ thống bắt đầu thực thi chương trình

+ Ngoài ra còn có các OB khác như OB35 (gọi theo chu kỳ), OB100 (chạy khi PLC khởiđộng), OB82 (ngắt ngoại lệ), v.v

- FBs (Function Blocks): Đây là các khối chức năng, được dùng để chứa các logic điều khiển

cụ thể FB có thể sử dụng cùng với các khối dữ liệu DB để lưu trữ trạng thái

- FCs (Functions): Đây là các khối hàm, chứa các đoạn mã thực thi logic nhưng không lưu trữtrạng thái FCs thường dùng cho các tính toán hay xử lý không cần lưu dữ liệu

- DBs (Data Blocks): Các khối dữ liệu được sử dụng để lưu trữ thông tin và trạng thái của các

FB DB có thể là toàn cục (global) hoặc cục bộ (local) tùy thuộc vào phạm vi sử dụng

- Global Variables (Biến toàn cục): Các biến này có thể được sử dụng và truy cập từ nhiềuphần khác nhau trong chương trình Chúng thường được định nghĩa trong các DB toàn cục

- PLC Tags: Các thẻ PLC là các biến được liên kết với đầu vào/đầu ra vật lý hoặc dùng trongcác khối logic

- Libraries (Thư viện): Trong TIA Portal, bạn có thể tạo và sử dụng các thư viện để tái sửdụng các khối chương trình, thẻ và cấu trúc dữ liệu

Ngày đăng: 29/11/2024, 20:45

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w