Giới thiệu:
Mình xin giới thiệu với các bạn một phương pháp lập trình PLC rất là “kinh điển” nhưng rất hiệu quả trên thực tế mà hình như mình thấy ít bạn biết: Phương pháp lập trình tuần tự

Như tên gọi của nó, phương pháp này được áp dụng hiệu quả trong quá trình lập trình các quá trình điều khiển tuần tự, hết bước 1 thì chuyển sang bước 2.. lần lượt tới bước n. Do đó phương pháp này cực kỳ hiệu quả với việc lập trình các trạm trong môn MPS của ngành Cơ – Điện tử.

Trước tiên, mình sẽ nêu lên ưu điểm của phương pháp này để các bạn hứng thú theo dõi. Thứ nhất là phương pháp này rất dễ viết, và dễ đọc chương trình. Khi bạn đã biết cách rồi thì viết rất nhanh (hầu như chỉ copy, paste và edit thôi). Thứ hai là phương pháp này không dùng SET và RESET. Nếu các bạn đã lập trình PLC rồi thì các bạn cũng biết là khi dùng SET và RESET thì mình phải kiểm soát luồng chương trình rất chặt chẽ. Không thì nó “mâu thuẫn” với nhau và bị sai ngay. Thứ ba là phương pháp này rất hiệu quả (mình đã dùng từ “kinh điển” để nói về nó). Đặc biệt là môn Thực tập PLC (các bài với Pittong Xilanh khí nén) hoặc MPS thì đây là phương pháp “số 1”!

Quảng cáo nhiều quá rồi, bây giờ xin giới thiệu cách lập trình theo phương pháp này.

 Lý thuyết:
Bước 1: Viết quy trình và tóm tắt quy trình hoạt động. Quy trình có thể bạn sẽ nhận được trên đề bài, trên yêu cầu do giáo viên đưa ra hoặc bạn sẽ phải viết lại theo yêu cầu thực tế của bài toán điều khiển (Ví dụ như môn MPS thì bạn phải viết lại theo Quy trình hoạt động của từng trạm). Nên sử dụng các ký hiệu ngắn gọn và dễ gợi nhớ để viết tóm tắt quy trình này.
Chia tầng cho quy trình (mỗi tầng là đơn giản là thực hiện một thao tác hoặc nhiều thao tác song song (diễn ra cùng một lúc).

Bước 2: Lập trình “nuôi” các biến nhớ tạm (đánh dấu tầng đang thực hiện). Bước này được thực hiện như sau:
Đầu tiên là điều kiện bắt đầu một tầng. Thường thì tầng mới được bắt đầu khi tầng cũ đã hoàn thành xong nhiệm vụ của nó. Ví dụ điều kiện bắt đầu tầng 2 là đang ở tầng 1 và gặp công tắc hành trình nào đó (báo hiệu thực hiện xong nhiệm vụ)
Tiếp theo là PHỦ ĐỊNH (Not) của các điều kiện kết thúc tầng đó (thường là tầng tiếp theo được bắt đầu hoặc khi nhấn nút Stop, Reset..). Cũng xin được nhắc lại định luật De–Morgan:
~(A.B.C) = ~A+ ~B + ~C
~(A+B+C) = (~A).(~B).(~C)

Ví dụ: điều kiện để ngắt tầng 2 là: tầng 3 được thực thi HOẶC nút Stop được nhấn. Dưới dạng biểu thức, ta có: DKNT = TANG3 + STOP. Vậy PHỦ ĐỊNH của điều kiện này là ~DKNT= ~TANG3 . ~STOP. Hay diễn đạt dưới dạng câu chữ thì là (Not của TANG3) AND với (Not của nút STOP). Not của TANG3 luôn là tiếp điểm thường đóng NC còn Not của nút nhấn thì còn tùy thuộc vào nút nhấn loại gì.
(Hình ảnh này dùng cho nút Stop thường đóng NC)

aaa
aaa1

Điều kiện ngắt tầng 2 và Not điều kiện ngắt tầng 2

Cuối cùng là lấy tiếp điểm để tự nuôi nó. Tiếp điểm được đưa vào trong chương trình song song với điều kiện bắt đầu một tầng.
aaa2 aaa3

Bước 3: Tập họp các trường hợp cho ngõ ra vật lý (các cơ cấu chấp hành). Giả sử TANG 1, TANG 3 tác động tới cơ cấu chấp hành
aaa3

 Ví dụ thực tế:
Lấy ví dụ ở trạm 1 của hệ thống MPS để viết chương trình và giải thích cho các bạn dễ hình dung. (Các bạn không phải là sinh viên ngành Cơ – Điện tử hoặc chưa tiếp xúc với trạm này thì các bạn đừng lo, tôi sẽ trình bày cụ thể). À, cũng nói rõ là quy trình hoạt động của trạm này do người viết đặt ra (có thể không giống trên lớp học đâu nhé!).

Giải thích phần cứng: Trạm này thực hiện nhiệm vụ cung cấp phôi.
* Trạm có 3 cơ cấu chấp hành:
Một Xy lanh khí nén để đẩy phôi ra và kẹp phôi, Xy lanh này hoạt động được điều khiển bởi một Valse khí nén. Nó hoạt động thế này: bạn cấp 24V cho cuộn dây điều khiển của Valse thì Xy lanh sẽ đẩy phôi ra, bạn giữ nguyên 24V cho cuộn dây điều khiển thì Xy lanh vẫn giữ nguyên trạng thái kẹp phôi; bạn ngắt điện, Xy lanh đi về, không kẹp phôi nữa. 

Một tay gắp sử dụng khí nén. Tay gắp này được điều khiển bởi một Valse khí nén. Tay này hoạt động như sau: khi bạn cấp điện cho cuộn Y1 (tạm gọi như vậy) thì tay máy đi về phía có phôi (để lấy phôi). Khi bạn cấp điện cho cuộn Y2 thì tay máy sẽ đi về phía trạm 2 (để cấp phôi cho trạm này). Khi bạn ngừng cấp điện hay cấp điện đồng thời cả 2 cuộn dây thì tay máy sẽ đứng yên tại vị trí đang đứng.

Một giác hút chân không để hút phôi. Nó có hai cuộn dây để điều khiển. Cấp điện cho một cuộn thì nó sẽ hút phôi (tạo chân không để hút). Cấp điện cho cuộn còn lại thì nó sẽ nhả phôi ra. 

* Trạm còn có ba nút nhấn để điều khiển: 
Start (thường hở – NO).
Stop (thường đóng – NC).
Reset (thường hở – NO).

* Cảm biến được dùng trong trạm
Trạm dùng 1 cảm biến quang để phát hiện có vật tại vị trí ống chứa phôi. Cảm biến này thường đóng – NC. Bình thường không có phôi, bên phát phát ra ánh sáng, bên thu sẽ nhận được nên có mức Logic ngỏ ra là mức 1 (mức cao). Khi có phôi trong ống chứa phôi thì nó chắn ánh sáng này làm bên thu không nhận được ánh sáng nên nó sẽ có ngõ ra là mức 0 (mức thấp). Để thuận tiện cho sử dụng, tôi đặt ký hiệu là cảm biến COVAT.

Xy lanh đẩy vật có hai Công tắc hành trình phát hiện hết hành trình (đi ra hết hoặc đi về hết). Hai cảm biến này là cảm biến Điện từ (mình nhớ man mán vậy). Tức là nó sẽ nhận biết được Nam châm. Ở trong Xy lanh khí nén người ta có bố trí miếng nam châm ở cuối xy lanh. Khi xy lanh đi tới hết hành trình thì sẽ tác động lên các cảm biến đã được bố trí ở đó. Công tắc khi Pittong đi hết về phía đẩy ra và kẹp phôi tôi sẽ ký hiệu là KEP và khi pittong đi hết hành trình về phía ngược lại tôi ky hiệu là KHONGKEP.

Tay gắp có hai công tắc hành trình báo kết thúc hành trình. Công tắc này là tiếp điểm Cơ khí. Khi tay gắp đi tới cuối hành trình thì nó sẽ “đá” các công tắc này. Công tắc hành trình bị tác động khi tay gắp ở vị trí có phôi tôi ký hiệu là VETRAM1, và công tắc bị tác động khi tay găp ở vị trí phía bên trạm 2 tôi ký hiệu là QUATRAM2.

Giác hút có một cảm biến phát hiện đã hút được vật. Cảm biến này thực ra là một cảm biến áp suất. Nếu áp xuất nhỏ hơn một áp xuất giá trị nhất định thì ngõ ra sẽ lên mức 1 (cao). Tôi ký hiệu công tắc này là COHUT.

Mô tả phần cứng như vậy là đã rõ ràng rồi phải không các bạn? Tuy nó hơi chán một chút nhưng rất cần thiết cho việc theo dõi chương trình về sau.

Phương pháp lập trình: bước từng bước
* Bước 1: Xác định quy trình làm việc và tóm tắt lại quy trình.
A, Quy trình làm việc như sau:
Ban đầu, tay gắp ở vị trí phôi, giác hút không hút vật và Xy lanh đẩy phôi không đẩy phôi ra.
Khi bạn nhấn Start. Nếu có phôi ở vị trí cấp phôi thì quy trình sẽ diễn ra theo trình tự như sau: 
1, Tay gắp đi qua vị trí trạm 2. 
2, Xy lanh đẩy phôi đi ra và kẹp phôi. 
3, Tay gắp quay về phía trạm 1
4, Bật giác hút lên để hút phôi. 
5, Xy lanh lui về (không kẹp phôi nữa)
6, Tay gắp đi về phía trạm 2.
7, Nhả phôi ra.
8, Tay gắp trở lại vị trí ban đầu (trạm 1) để không làm cản trở hoạt động của trạm 2.
Kết thúc chu trình. Chu trình có thể tiếp tục khi bạn nhấn nút Start.

B, Ký hiệu các cơ cấu chấp hành:
Xy lanh kẹp phôi: A
Quá trình kẹp phôi là A+
Trở về (không kẹp phôi nữa) là A-
Tay gắp : B
Đi qua phía trạm 2 : B+
Đi về vị trí cấp phôi (đi về phía trạm 1): B-
Giác hút : C
Hút vật : C+
Nhả vật : C-

C, Tóm tắt quy trình hoạt động và chia tầng :
aaa4
Ở đây Xy lanh kẹp vật trong suốt quá trình tay gắp trở về và quá trình hút vật nên A+ được thực hiện song song với B- và C+ ở tầng thứ 3 và tầng 4

* Bước 2: Lập trình nuôi các biến nhớ tạm (các tầng)
Các tầng ở đây chính là các biến nhớ tạm M
aaa5

Điều kiện bắt đầu tầng 1 diễn ra khi đang có vật phát hiện bởi cảm biến COVAT (tiếp điểm thường đóng NC) VÀ (AND) với nhấn nút Start.
Điều kiện kết thúc tầng 1 là tầng 2 bắt đầu HOẶC (OR) nhấn nút Stop (thường đóng – NC). Chúng ta phải lấy PHỦ ĐỊNH của điều kiện kết thúc tầng để đưa vào Ladder.
Vậy network của tầng 1 được viết như sau :
aaa6 aaa7 aaa8

Tương tự, điều kiện bắt đầu tầng 2 là đang ở tầng 1 và tay gắp vật B đi qua tới trạm 2 (tác động công tắc hành trình QUATRAM2)
Điều kiện kết thúc tầng 2 là bắt đầu sang tầng 3 hoặc nút Stop được nhấn. Ta có network cho tầng 2 như sau :
aaa7
Tương tự, điều kiện bắt đầu tầng 3 là đang ở tầng 2 và Xy lanh đẩy phôi đã đẩy phôi ra đến vị trí cho tay gắp thực hiện gắp và kẹp phôi ở đó (cảm biến KEP được tác động)
Điều kiện kết thúc tầng 3 là bắt đầu sang tầng 4 hoặc nút Stop được nhấn. Ta có network cho tầng 3 như sau :
aaa8

Bạn dễ dàng nhìn thấy là mỗi môt thời điểm chỉ có một tầng duy nhất được thực hiện. Khi tầng 2 được thực hiện, nó đã ngắt tầng 1 (phía trước nó). Và khi tầng 2 thực hiện xong (xy lanh đẩy phôi ra xong) thì tầng 3 bắt đầu và tầng 3 sẽ ngắt tầng 2.

Bạn cũng dễ dàng rút ra nhận xét là : các network này na ná giống nhau, nên bạn chỉ cần Copy, Paste và Edit cho phù hợp mà thôi (nhớ Edit cẩn thận nhá, edit sót hay nhầm là không chạy được đâu)
Tương tự cho các network, các tầng khác

* Bước 3: Tổ hợp các tầng để điều khiển các cơ cấu chấp hành
Giả sử ta có phần ký hiệu cho các cơ cấu chấp hành như sau :
aaa9

Trong quy trình ở bước 1, ta thấy thao tác A+ tác động vào xy lanh để đẩy phôi ra và kẹp phôi ở vị trí được thực hiện ở các tầng 2, tầng 3, tầng 4. Do đó, ta có network như sau:
aaa10

Ở đây, A+ là một ngõ ra của PLC để tác động tới cuộn dây đẩy phôi ra
Thao tác A- ở tầng 5 không cần tác động tới ngõ ra nào, vì chỉ cần ngắt điện ở cuộn dây A+ thì xy lanh sẽ tự động lùi về

Thao tác B- cần được thực hiện ở tầng 3 và 8 nên ta có network sau:
aaa11
Tiếp tục cho tất cả các cơ cấu chấp hành khác

Kết thúc:
Bây giờ thì chương trình của bạn cũng xong rồi. Không hề dùng tới một phép Set hoặc Reset nào, nhưng vẫn rất lôgic, hợp lý. Và tôi đảm bảo với bạn là có thể chạy tốt nữa!

Các bạn cứ làm thử, nhất là các bạn đang học thực tập MPS. Và cho mình biết kết quả nhé. Viết mệt quá trời, cũng phải biết mình viết có giúp được gì cho các bạn không chứ ! Và nếu chưa đúng, chưa hay thì cũng biết ở chỗ nào để còn sửa lại nữa. Nếu các bạn ủng hộ thì mình sẽ viết tiếp một số chủ đề khác nữa như PCS hay Vi điều khiển AVR…