
e: Phương pháp lập trình cho PLC
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)
Đ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.
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
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.

