Kỹ thuật điện tử & Điện lạnh

Ngôn ngữ lập trình PLC LAD/LD (Ladder Logic/Ladder Diagram) kiến thức mới năm 2023

Ngôn ngữ lập trình PLC LAD/LD (Ladder Logic/Ladder Diagram) – Cập nhật kiến thức mới nhất năm 2023

Ladder Logic hay Ladder Diagram (LD/LAD) là một trong năm ngôn ngữ lập trình PLC được chỉ định sử dụng theo tiêu chuẩn IEC 61131-3. Ladder trực quan hơn nhiều so với hầu hết các ngôn ngữ lập trình, bởi vậy mọi người thường thấy nó dễ học hơn rất nhiều.

Trong hướng dẫn lập trình bằng ngôn từ Ladder này, bạn sẽ học mọi thứ cơ bản mà bạn cần biết về ngôn từ lập trình PLC sơ đồ bậc thang ( LAD ). Bạn sẽ hoàn toàn có thể mở màn tạo các chương trình PLC thực với ngôn từ LAD trong hầu hết các ứng dụng lập trình PLC .

Xem chi tiết về các dòng sản phẩm PLC:

Ladder Logic là gì?

Ladder Logic (còn được gọi là sơ đồ bậc thang hoặc LD/LAD) là một ngôn ngữ lập trình được sử dụng để lập trình PLC (Programmable Logic Controller). Nó là một ngôn ngữ lập trình PLC đồ họa thể hiện các hoạt động logic với ký hiệu tượng trưng. Logic bậc thang được tạo ra từ các nấc thang logic, tạo thành thứ trông giống như một cái thang – do đó có tên là “Ladder Logic” hay “Ladder Diagram”.

Tại sao sử dụng ngôn ngữ LAD để lập trình PLC?

Lý do Ladder Logic là ngôn từ được sử dụng để lập trình PLC là bởi các nhà phong cách thiết kế, tích hợp mạng lưới hệ thống tinh chỉnh và điều khiển bắt đầu đã quen với các mạch tinh chỉnh và điều khiển Relay. Và Ladder Logic là một ngôn từ đồ họa bắt trước ( miêu tả ) rất giống với mạch tinh chỉnh và điều khiển Relay. Họ thích sử dụng sơ đồ bậc thang ( ladder ) thay vì sử dụng các ngôn từ lập trình dựa trên văn bản như C, BASIC, Pascal và FORTRON. Một nguyên do khác khiến sơ đồ bậc thang được sử dụng là bởi nhân viên cấp dưới bảo dưỡng xí nghiệp sản xuất đã hiểu cách đọc mạch tinh chỉnh và điều khiển rơ le nên việc sử dụng sơ đồ bậc thang để lập trình PLC có nghĩa là họ hoàn toàn có thể thuận tiện khắc phục sự cố mạng lưới hệ thống tinh chỉnh và điều khiển .
Ngôn ngữ lập trình PLC LD/LAD, FBD, ST/STL, SFC, IL, C/C++
LAD giúp bạn hình thành các biểu thức logic ở dạng đồ họa theo nhu yếu để hoàn toàn có thể triển khai xong lập trình cho ứng dụng PLC. Chúng đại diện thay mặt cho các biểu thức điều kiện kèm theo, nguồn vào và đầu ra dưới dạng ký hiệu. Vì vậy việc viết chương trình PLC bằng sơ đồ bậc thang cũng tương tự như như việc vẽ mạch tinh chỉnh và điều khiển rơ le .
Sơ đồ bậc thang ( LD ) là tên chính thức được đưa ra trong tiêu chuẩn lập trình PLC quốc tế IEC-61131. Tuy nhiên, thời nay các thuật ngữ sơ đồ bậc thang, sơ đồ logic bậc thang, bản vẽ bậc thang, tinh chỉnh và điều khiển bậc thang, mạch bậc thang, sơ đồ logic điều khiển và tinh chỉnh và sơ đồ logic đều được sử dụng để diễn đạt các mạch logic rơle và lập trình logic bậc thang. Bởi vậy, đừng quá vướng vào định nghĩa đơn cử của từng biểu thức này, chúng thường có nghĩa giống nhau .

Cách viết chương trình LD/LAD (Ladder Diagram)

LAD là một ngôn từ lập trình đồ họa sử dụng một loạt các đường ray và bậc thang chứa các ký hiệu logic và được tích hợp để tạo thành các biểu thức ra quyết định hành động. Ladder Logic thực sự trông giống như một bậc thang và thường được gọi là lập trình LAD .
Các đường ray trong sơ đồ bậc thang đại diện thay mặt cho các dây cung ứng của mạch tinh chỉnh và điều khiển logic rơle. Có một đường ray cấp điện áp dương ở phía bên trái và một đường ray cấp điện áp bằng không ở phía bên tay phải. Trong sơ đồ bậc thang, luồng logic là từ thanh ray bên trái sang thanh ray bên phải .
Các bậc thang trong sơ đồ bậc thang đại diện thay mặt cho các dây liên kết các thành phần của mạch tinh chỉnh và điều khiển rơ le. Trong sơ đồ bậc thang, các ký hiệu được sử dụng để trình diễn các thành phần rơle. Các ký hiệu được đặt trong bậc thang để tạo thành một mạng lưới các biểu thức logic .
Khi tiến hành chương trình logic bậc thang trong PLC, có bảy phần cơ bản của sơ đồ bậc thang cần biết. Chúng là đường ray, bậc thang, nguồn vào, đầu ra, biểu thức logic, ký hiệu địa chỉ / tên biến và nhận xét. Một số yếu tố này là thiết yếu và những yếu tố khác là bổ trợ .
Để giúp hiểu cách vẽ sơ đồ logic bậc thang, mình sẽ trình diễn bảy phần cơ bản của biểu đồ bậc thang một cách chi tiết cụ thể dưới đây :

Cách viết chương trình LAD Ladder Logic

  1. Đường ray: có hai đường ray trong một sơ đồ bậc thang được vẽ thành các đường thẳng đứng chạy dọc xuống phần cuối cùng của trang. Ở trong mạch rơ le, chúng sẽ đại diện cho nguồn điện, nơi dòng điện đi từ phía bên trái sang bên tay phải.
  2. Rungs (nấc thang): các bậc thang được vẽ thành các đường ngang và nối các đường ray với các biểu thức logic. Trong mạch rơle, chúng sẽ đại diện cho các dây kết nối nguồn điện với các thành phần chuyển mạch (nút nhấn, công tắc,..) và rơle.
  3. Đầu vào: là các tác động điều khiển bên ngoài chẳng hạn như nút nhấn đang được nhấn hoặc công tắc hành trình được kích hoạt. Các đầu vào thực sự được nối cứng với các đầu cuối PLC và được biểu diễn trong sơ đồ bậc thang bằng biểu tượng tiếp điểm thường mở (NO) hoặc thường đóng (NC).
  4. Đầu ra: là các thiết bị bên ngoài được bật và tắt như động cơ điện hoặc van điện từ. Các đầu ra cũng được nối cứng với các đầu cuối PLC và được biểu diễn trong sơ đồ bậc thang bằng ký hiệu cuộn dây rơ le.
  5. Biểu thức Logic: được sử dụng kết hợp với các đầu vào và đầu ra để hình thành các quá trình hoạt động điều khiển mong muốn.
  6. Ký hiệu địa chỉ & tên biến: ký hiệu địa chỉ mô tả cấu trúc, xác định địa chỉ trong bộ nhớ biểu thức logic cho các đầu vào, đầu ra của PLC. Các tên biến là mô tả cho các địa chỉ được phân bổ.
  7. Nhận xét (chú thích, bình luận): thường được hiển thị ở đầu mỗi bậc thang và được sử dụng để mô tả các biểu thức logic và quá trình hoạt động điều khiển mà bậc thang hoặc các nhóm bậc thang đang thực hiện. Việc hiểu sơ đồ bậc thang trở nên dễ dàng hơn rất nhiều bằng cách sử dụng các nhận xét.

Các biểu tượng (ký hiệu đồ họa) & ý nghĩa trong Ladder Logic

Bởi các hình tượng ( ký hiệu đồ họa ) ngôn từ lập trình Ladder Logic của các hãng sản xuất PLC sẽ tương tự như nhau. Nhờ vậy, mình sẽ sử dụng thư viện hình tượng của một hãng đơn cử để hoàn toàn có thể trình diễn được cụ thể và rõ ràng hơn. Mình sẽ sử dụng các tập lệnh Ladder của Step7 Micro / Win mà hãng Siemens phân phối ( các hãng còn lại hoàn toàn có thể dựa vào và nghiên cứu và phân tích tựa như ) .

Nhập/Xuất giá trị tiếp điểm trong Ladder Logic

Lệnh nhập

Tiếp điểm thường mở trong LAD

Tiếp điểm thường mở trong LAD Ladder Logic

  • Tiếp điểm thường mở sẽ được đóng nếu giá trị bit =1
  • Toán hạng bit: I,Q,M,SM,T,C,V
Tiếp điểm thường đóng trong LAD

Tiếp điểm thường đóng trong LAD Ladder Logic

  • Tiếp điểm thường đóng sẽ được mở khi giá trị bit = 1 và ngược lại.
  • Toán hạng bit: I,Q,M,SM,T,C,V
Tiếp điểm thường mở (đóng tức thời) trong LAD

Tiếp điểm thường mở trong LAD Ladder Logic

  • Tiếp điểm thường mở sẽ được đóng tức thời trong một chu kỳ máy khi giá trị bit = 1
  • Toán hạng bit: I
Tiếp điểm thường đóng (mở tức thời) trong LAD

Tiếp điểm thường đóng trong LAD Ladder Logic

  • Tiếp điểm thường đóng sẽ được mở tức thời trong một chu kỳ máy khi giá trị bit = 1
  • Toán hạng bit: I

Lệnh xuất

Đầu ra trong LAD

Đầu ra trong LAD Ladder Logic

  • Cuộn dây đầu ra ở trạng thái kích thích khi có dòng điều khiển đi qua.
  • Toán hạng bit: I,Q,M,SM,T,C,V
Đầu ra tức thời trong LAD

Đầu ra tức thời trong LAD Ladder Logic

  • Cuộn dây đầu ra được kích thích tức thời khi có dòng điều khiển đi qua.
  • Toán hạng bit: Q

Gán/Xóa giá trị cho tiếp điểm trong Ladder Logic

Lệnh dùng để đóng và ngắt các tiếp điểm gián đoạn đã được phong cách thiết kế. Trong dạng LAD, logic điều khiển và tinh chỉnh dòng điện đóng hoặc ngắt các cuộn dây đầu ra. Khi dòng tinh chỉnh và điều khiển tới các cuộn dây thì các cuộn dây đóng hoặc mở các tiếp điểm ( hoặc một dãy các tiếp điểm ) .

Gán giá trị tiếp điểm trong LAD

Gán giá trị tiếp điểm trong LDLadder Diagram

Đóng một mảng gồm N các tiếp điểm kể từ bit đặt trước .
Toán hạng :

  • bit: I, Q, M, SM, T, C, V.
  • N: IB, QB, MB, SMB, VB, AC, Hằng số.

Xóa giá trị tiếp điểm trong LAD

Xóa giá trị tiếp điểm trong LDLadder Diagram

Ngắt một mảng gồm N các tiếp điểm kể từ bit đặt trước .
Toán hạng :

  • bit: I, Q, M, SM, T, C, V.
  • N: IB, QB, MB, SMB, VB, AC, Hằng số.

Chú thích : Nếu bit đặt trước lại chỉ vào Timer hoặc Counter thì lệnh sẽ xoá bit đầu ra của Timer hoặc Counter đó .

Gán giá trị tiếp điểm tức thời trong LAD

Gán giá trị tiếp điểm tức thời trong LDLadder Diagram

Đóng tức thời một mảng gồm N các tiếp điểm kể từ bit đặt trước
Toán hạng :

  • bit: Q.
  • N: IB, QB, MB, SMB, VB, AC, Hằng số.

Xóa giá trị tiếp điểm tức thời trong LAD

Xóa giá trị tiếp điểm tức thời trong LDLadder Diagram

Ngắt tức thời một mảng gồm N các tiếp điểm kể từ bit đặt trước .
Toán hạng :

  • bit: Q.
  • N: IB, QB, MB, SMB, VB, AC, Hằng số.

Tiếp điểm đặc biệt trong Ladder Logic

Tiếp điểm đảo trạng thái trong LAD

Tiếp điểm NOT trong LAD

Tiếp điểm hòn đảo trạng thái của dòng phân phối. Nếu dòng cung ứng có tiếp điểm hòn đảo thì nó bị ngắt mạch, nếu không có tiếp điểm hòn đảo thì nó thông mạch .

Tiếp điểm lấy sườn dương trong LAD

Tiếp điểm P trong LAD Ladder Logic

Tiếp điểm quy đổi dương được cho phép dòng phân phối thông mạch trong một vòng quét khi sườn xung tinh chỉnh và điều khiển chuyển từ 0 lên 1

Tiếp điểm lấy sườn âm trong LAD

Tiếp điểm N trong LAD Ladder Logic

Tiếp điểm quy đổi âm được cho phép dòng cung ứng thông mạch trong một vòng quét khi sườn xung tinh chỉnh và điều khiển chuyển từ 1 xuống 0

Tiếp điểm tạo xung trong LAD

Tiếp điểm SM0.5 trong LAD Ladder Logic

Tiếp điểm sử dụng bit bộ nhớ đặc biệt quan trọng tạo dạng sóng vuông tuần hoàn với chu kỳ luân hồi là 1 s ( 0.5 s có xung, 0.5 s không có xung )

Timer (bộ định thời gian) trong Ladder Logic

Timer là bộ tạo thời hạn trễ giữa tín hiệu vào và tín hiệu ra nên trong tinh chỉnh và điều khiển vẫn thường được gọi là khâu trễ. Có ba kiểu Timer của S7-200 phân biệt với nhau ở phản ứng của nó so với trạng thái tín hiệu nguồn vào ( TON, TOF và TONR ) .

TON trong LAD

TON trong trong LAD Ladder Logic

Các toán hạng:

  • TON: lệnh đếm thời gian tác động đóng trể không nhớ.
  • Txxx: Khai báo xxx kiểu TON định độ phân giải có giá trị tra theo bảng.
  • IN: đầu vào cho phép lệnh đếm thời gian hoạt động.

Bảng định độ phân giải TON:

1 ms 32.767 s (0.546 min) T32, T96
10 ms 32.767 s (0.546 min) T33 đến T36, T97 đến T100
100 ms 32.767 s (0.546 min) T37 đến T63, T101 đến T255

TONR trong LAD

TONR trong LAD Ladder Logic

Các toán hạng :

  • TONR: lệnh đếm thời gian tác động đóng trể có nhớ.
  • Txxx: Khai báo xxx kiểu TONR định độ phân giải có giá trị tra theo bảng
  • IN: Đầu vào cho phép lệnh đếm thời gian hoạt động.
  • PT: Giá trị đặt trước.

Bảng định độ phân giải TONR:

1 ms 32.767 s (0.546 min) T0, T64
10 ms 32.767 s (0.546 min) T1 đến T4, T65 đến T68
100 ms 32.767 s (0.546 min) T5 đến T31, T69 đến T95

TOF trong LAD

TOF trong LAD Ladder Logic

Các toán hạng :

  • TOF: Lệnh đếm thời gian tác động mở trể không nhớ.
  • Txxx: Khai báo xxx kiểu TOF định độ phân giải có giá trị tra theo bảng.
  • IN: đầu vào cho phép lệnh đếm thời gian hoạt động.
  • PT: Giá trị đặt trước.

Counter (bộ đếm) trong Ladder Logic

CTU trong LAD

CTU trong LAD Ladder Logic

Các toán hạng :

  • CTU: Lệnh đếm lên tác động sườn lên.
  • Cxxx: Khai báo địa chỉ lệnh, với xxx là số nguyên có giá trị từ 0 đến 255.
  • CU ( Count Up): Đầu vào tác động lệnh đếm lên.
  • R ( Reset ): Xoá giá trị thanh ghi số đếm về 0.
  • PV ( Preset Value ): Giá trị đặt trước, là số nguyên có giá trị đến +32.767.

CTUD trong LAD

CTUD trong LAD Ladder Logic

Các toán hạng :

  • CTUD: Lệnh đếm lên xuống tác động sườn lên.
  • Cxxx: Khai báo địa chỉ lệnh, với xxx là số nguyên có giá trị từ 0 đến 255.
  • CU ( Count Up): Đầu vào tác động lệnh đếm lên.
  • CD ( Count Down): Đầu vào tác động lệnh đếm xuống.
  • R ( Reset ): Xoá giá trị thanh ghi số đếm về 0.
  • PV ( Preset Value ): Giá trị đặt trước, là số nguyên có giá trị từ -32.768 đến +32.767.

CTD trong LAD

CTD trong LAD Ladder Logic

Các toán hạng :

  • CTD: Lệnh đếm xuống tác động sườn lên.
  • Cxxx: Khai báo địa chỉ lệnh, với xxx là số nguyên có giá trị từ 0 đến 255.
  • CD ( Count Down): Đầu vào tác động lệnh đếm xuống.
  • LD ( Load ): Nạp giá trị PV vào thanh ghi số đếm.
  • PV ( Preset Value ): Giá trị đặt trước, là số nguyên.

Lệnh so sánh trong Ladder Logic

So sánh Byte trong LAD

So sánh Byte trong LD Ladder Diagram

  • Lệnh so sánh theo kiểu Byte ( từ ) được dùng để so sánh hai giá trị IN1 và IN2.
  • Trong lệnh so sánh theo kiểu Byte bao gồm: IN1==IN2, IN1>=IN2, IN1<=IN2, IN1IN2, IN1 <>IN2.,>
  • Tiếp điểm đóng nếu phép so sánh là đúng
  • Byte được so sánh dạng không dấu.
  • Toán hạng đầu vào: IB, QB, MB, SMB, VB, SB, LB, AC, hằng số.

So sánh số nguyên trong LAD

So sánh số nguyên trong LD Ladder Diagram

  • Lệnh so sánh theo kiểu số nguyên được dùng để so sánh hai giá trị IN1 và IN2.
  • Trong lệnh so sánh theo kiểu số nguyên bao gồm: IN1==IN2, IN1 >=IN2, IN1<=IN2, IN1 IN2, IN1 <>IN2.,>
  • Tiếp điểm đóng nếu phép so sánh là đúng
  • Số được so sánh dạng có dấu.
  • Toán hạng đầu vào: IW, QW,  MW, SMW, VW,  SW,  LW,  AC, T, C, hằng số.

So sánh Double Word trong LAD

So sánh double word trong LD Ladder Diagram

  • Lệnh so sánh theo kiểu Double Word ( từ kép ) được dùng để so sánh hai giá trị IN1 và IN2.
  • Trong lệnh so sánh theo kiểu số nguyên bao gồm: IN1==IN2, IN1 >=IN2, IN1<=IN2, IN1IN2, IN1<>IN2.,>
  • Tiếp điểm đóng nếu phép so sánh là đúng
  • Số được so sánh dạng có dấu.
  • Toán hạng đầu vào: ID, QD, MD, SMD, VD, SD, LD, AC, hằng số.

MOVE trong Ladder Logic

Trong S7_200 có các hàm Move sau:

  • MOV_B: Di chuyển các giá trị cho nhau trong giới hạn 1 Byte
  • MOV_W: Di chuyển các giá trị nguyên cho nhau trong giới hạn 1 Word
  • MOV_DW: Di chuyển các giá trị nguyên cho nhau trong giới hạn 1 Dword
  • MOV_R: Di chuyển các giá trị thực cho nhau trong giới hạn 1 R

MOV_B trong LAD

MOV B trong LAD Ladder Logic

  • EN: ngõ vào cho phép
  • IN Ngõ vào: VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *LD, *AC
  • OUT Ngõ ra: VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC

Khi có tín hiệu ở ngõ được cho phép, lệnh sẽ chuyển nội dung của ô nhớ trong ( IN ) sang ô nhớ trong OUT

MOV_W trong LAD

MOV W trong LAD Ladder Logic

  • EN: ngõ vào cho phép
  • IN Ngõ vào: VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, Constant, AC, *VD,*AC, *LD
  • OUT Ngõ ra: VW, T, C, IW, QW, SW, MW,SMW, LW, AC, AQW, *VD,*AC, *LD

Khi có tín hiệu ở ngõ được cho phép, lệnh sẽ chuyển nội dung của ô nhớ trong ( IN ) sang ô nhớ trong OUT

MOV_DW trong LAD

MOV DW trong LAD Ladder Logic

  • EN: ngõ vào cho phép
  • IN Ngõ vào: VD, ID, QD,  MD,  SD,  SMD, LD, HC, &VB, &IB, &QB, &MB, &SB, &T, &C, &SMB, &AIW, &AQW AC, Constant, *VD, *LD, AC
  • OUT Ngõ ra: VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC

Khi có tín hiệu ở ngõ được cho phép, lệnh sẽ chuyển nội dung của ô nhớ trong ( IN ) sang ô nhớ trong OUT

MOV_R trong LAD

MOV R trong LAD Ladder Logic

  • EN: ngõ vào cho phép
  • IN Ngõ vào: VD ,ID ,QD ,MD ,SD, SMD, LD, AC, Constant, *VD, *LD, *AC, *LD
  • OUT Ngõ ra: VD, ID, QD, MD, SD,SMD, LD, AC, *VD, *LD, *AC,*LD

Khi có tín hiệu ở ngõ được cho phép, lệnh sẽ chuyển nội dung của ô nhớ trong ( IN ) sang ô nhớ trong OUT
Chú ý : Các tín hiệu ngõ vào cũng như ngõ ra của các lệnh Move phải được chọn đúng loại theo đã định như vùng định Dword so với Move_R và Move_DW … Nếu chọn sai định dạng sai thì chương trình biên dịch cũng bị sai .

Lệnh xoay vòng bit trong Ladder Logic

SHRB trong LAD

SHRB trong LAD Ladder Logic

Lệnh xoay vòng thanh ghi theo kiểu BIT :
Khi đầu vào EN có một xung sẽ cho phép nhập tài liệu từ đầu vào DATA vào thanh ghi dịch S_BIT
N số Bit trong thanh ghi dịch sẽ được nhập vào bit nhớ đặc biệt quan trọng SM1. 1
Các toán hạng :

  • DATA, S_BIT: I, Q, M, SM, T, C, V, S, L
  • N: VB, IB, QB, MB, SB, SMB, LB, AC, hằng số

Ngoài những hình tượng ( ký hiệu ), cú pháp, câu lệnh cơ bản ở trên thì còn những câu lệnh khác, các bạn tự tìm hiểu và khám phá tiếp ha .

Ví dụ chương trình LAD

Một số ví dụ về chương trình PLC được viết bằng ngôn ngữ lập trình Ladder:

Trên đây, MESIDAS đã san sẻ cho các bạn những kiến thức và kỹ năng cơ bản về ngôn từ lập trình LAD / LD ( Ladder Logic / Ladder Diagram ) cho PLC. Hy vọng rằng, với những thông tin ở phía trên sẽ giúp ích được cho các bạn trong quy trình nghiên cứu và điều tra, khám phá, học tập hay thao tác với ngôn từ lập trình LAD / LD ( Ladder Logic / Ladder Diagram ). Xin cảm ơn !

5
5
votes

Article Rating

Kết thúc
Ngoài các bài viết tin tức, bài báo hàng ngày của https://www.kythuatcodienlanh.com/, nguồn nội dung cũng bao gồm các bài viết từ các cộng tác viên chuyên gia đầu ngành về chuỗi kiến thức kỹ thuật điện, điện lạnh, điện tử, cơ khí,…,.. được chia sẽ chủ yếu từ nhiều khía cạnh liên quan chuỗi kiến thức này.
Bạn có thể dành thời gian để xem thêm các chuyên mục nội dung chính với các bài viết tư vấn, chia sẻ mới nhất, các tin tức gần đây từ chuyên gia và đối tác của Chúng tôi. Cuối cùng, với các kiến thức chia sẻ của bài viết, hy vọng góp phần nào kiến thức hỗ trợ cho độc giả tốt hơn trong hoạt động nghề nghiệp cá nhân!
* Ý kiến được trình bày trong bài viết này là của tác giả khách mời và không nhất thiết phải là SEMTEK. Nhân viên tác giả, cộng tác viên biên tập sẽ được liệt kê bên cuối bài viết.
Trân trọng,
Các chuyên mục nội dung liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button