
Tín hiệu Interrupt trong PLC: Lập trình, Độ ưu tiên và Cách thực thi
1. Tìm hiểu tín hiệu Interrupt trong PLC
Interrupt (ngắt) trong PLC (Programmable Logic Controller) là một cơ chế cho phép tạm dừng quá trình quét (Scan) của chương trình chính để thực hiện một chương trình có mức ưu tiên cao hơn.
Thay vì phải chờ đến chu kỳ quét tiếp theo, PLC sẽ:
ngay lập tức chuyển sang chương trình xử lý Interrupt (Interrupt Service Routine – ISR),
thực hiện chương trình này cho đến khi hoàn thành,
sau đó quay trở lại đúng vị trí trong chương trình chính mà nó đã tạm dừng trước đó.
Điểm khác biệt quan trọng: Chương trình chính không dừng hoàn toàn, mà chỉ tạm dừng tác vụ (Task) đang được thực thi. Trạng thái của các tín hiệu I/O và dữ liệu trong bộ nhớ (Data Memory - DM) vẫn được giữ nguyên và có thể được thay đổi bởi chương trình Interrupt. Sau khi Interrupt kết thúc, chương trình chính tiếp tục chạy từ đúng vị trí đã bị gián đoạn.
2. Cách PLC thực thi Interrupt
Chu kỳ quét (Scan Cycle) của PLC thông thường diễn ra theo trình tự:
Đọc Input
↓
Thực thi chương trình
↓
Cập nhật OutputKhi xuất hiện điều kiện kích hoạt Interrupt (ví dụ: đầu vào tốc độ cao, lỗi phần cứng hoặc tín hiệu theo lịch), PLC sẽ thực hiện các bước sau:
Hoàn thành lệnh hiện đang thực thi.
Lưu lại Program Counter và trạng thái hiện tại.
Chuyển đến chương trình Interrupt đã được gán.
Thực thi toàn bộ chương trình Interrupt.
Quay trở lại chương trình chính tại đúng vị trí đã tạm dừng.
3. Các loại Interrupt trên từng nền tảng PLC
Nền tảng | Loại Interrupt | Tài liệu tham khảo |
|---|---|---|
Allen-Bradley ControlLogix | Event Task, Periodic Task | 1756-RM003 |
Siemens S7-300/400 | Organization Block (OB40–OB47) | 19.4 |
Omron CJ2M | Task Interrupt (IN/INT) | W463 |
Mitsubishi FX Series | Interrupt Input (I000–I050) | SH(NA)-080036E |
AutomationDirect DL06 | Interrupt Subroutine (INT) | D0-DL06-M |
4. Lập trình chương trình Interrupt
Chương trình Interrupt được lập trình giống như chương trình PLC thông thường bằng:
Ladder Logic
Structured Text (ST)
Function Block Diagram (FBD)
Điểm khác biệt chính gồm:
Điều kiện kích hoạt (Trigger): Được xác định bởi đầu vào phần cứng hoặc khoảng thời gian định kỳ.
Mức ưu tiên (Priority): Luôn cao hơn các Task chạy liên tục hoặc Task định kỳ.
Thời gian thực thi: Cần hoàn thành trong thời gian ngắn để tránh làm tăng thời gian Scan của PLC.
Ví dụ: Cấu hình Event Task trong Allen-Bradley RSLogix 5000
Các tham số cấu hình Event Task:
Trigger: Digital Input Point (Local:0:I.Data[0].0)
Priority: 1 (mức ưu tiên cao nhất trong dải từ 1 đến 15)
Watchdog: 10 ms (thời gian thực thi tối đa cho phép)
Action: Thực thi chương trình Ladder có tên ISR_HighSpeed
Ví dụ: Interrupt OB trên Siemens S7-300 (Structured Text)
// OB40: Hardware Interrupt tại Input I0.0
// Được kích hoạt khi xuất hiện cạnh lên
VAR_TEMP
// Biến tạm
END_VAR
BEGIN
// Logic bộ đếm tốc độ cao
MW10 := MW10 + 1;
// Bật Output ngay lập tức
Q4.0 := TRUE;
// Xác nhận Interrupt
L 0;
T PEEK(16#000,0);
END_ORGANIZATION_BLOCK5. Thứ tự ưu tiên của các Task
Trong PLC hiện đại, các Task được thực hiện theo thứ tự ưu tiên như sau:
Safety Task (PES)
Ưu tiên cao nhất.
Luôn phải được thực hiện trước mọi Task khác.
Interrupt/Event Task
Được kích hoạt bởi các điều kiện đặc biệt.
Mức ưu tiên thường nằm trong khoảng 1–15.
Periodic Task
Được thực hiện theo chu kỳ cố định.
Ví dụ:
mỗi 10 ms
mỗi 100 ms
Continuous Task
Là chương trình quét thông thường của PLC.
Đây là Task có mức ưu tiên thấp nhất.
Lưu ý quan trọng: Trên PLC ControlLogix và CompactLogix, tham số Watchdog quy định thời gian thực thi tối đa của một Task Interrupt. Nếu vượt quá giới hạn này, PLC sẽ ghi nhận lỗi Fault Code 16#0201. Khi có thể, nên giữ thời gian thực thi của Interrupt dưới 1 ms.
6. Các ứng dụng phổ biến
Ứng dụng | Vai trò của Interrupt |
|---|---|
Bộ đếm tốc độ cao | Đếm xung Encoder có tần số vượt quá tốc độ Scan của PLC |
Điều khiển chuyển động | Phát hiện Home Switch, Limit Switch hoặc vị trí đã đạt |
Hệ thống an toàn | Xử lý nút Emergency Stop hoặc Light Curtain |
Lỗi quan trọng | Quá nhiệt động cơ, van xả áp khẩn cấp |
Truyền thông | Xử lý khi bộ đệm nhận dữ liệu đã sẵn sàng |
7. Các nguyên tắc thiết kế
Giữ chương trình Interrupt càng ngắn càng tốt. Chỉ nên đặt các lệnh tối thiểu, ví dụ ghi cờ (Flag), sau đó xử lý chi tiết trong Periodic Task.
Tránh sử dụng các lệnh có thời gian thực thi dài như:
WAIT
MSG
hoặc các lệnh chờ khác.
Khi nhiều Task cùng sử dụng chung dữ liệu, nên sử dụng Semaphore Flag hoặc cơ chế đồng bộ để tránh xung đột.
Thiết lập giá trị Watchdog phù hợp để cân bằng giữa khả năng bảo vệ và thời gian thực thi.
Luôn kiểm tra chương trình khi hệ thống hoạt động ở tải lớn nhằm đảm bảo Interrupt vẫn phản hồi đúng với tốc độ cập nhật I/O cao nhất.
8. Khắc phục các lỗi thường gặp
Hiện tượng | Nguyên nhân | Cách khắc phục |
|---|---|---|
Chương trình hoạt động không ổn định | ISR và chương trình chính cùng ghi vào một Tag | Sử dụng Tag riêng cho ISR hoặc xử lý dữ liệu chung trong Periodic Task |
Thời gian Scan tăng bất thường | ISR thực hiện quá nhiều lệnh | Giảm logic trong ISR và chuyển phần xử lý sang Periodic Task |
Bỏ lỡ Interrupt | Interrupt mới xuất hiện khi ISR trước vẫn đang chạy | Tăng mức ưu tiên hoặc thiết kế ISR không tái nhập (Non-Reentrant) |
Lỗi 16#0201 | Watchdog vượt quá thời gian cho phép | Tăng giá trị Watchdog hoặc tối ưu thời gian thực thi ISR |
9. Tóm tắt
Interrupt trong PLC cho phép hệ thống phản hồi nhanh chóng và có tính xác định (Deterministic) đối với các sự kiện quan trọng mà không cần chương trình chính liên tục kiểm tra điều kiện.
Khi Interrupt xảy ra:
Chương trình chính chỉ tạm dừng, không bị kết thúc.
Sau khi ISR hoàn thành, PLC tiếp tục chạy từ đúng vị trí đã bị gián đoạn.
Toàn bộ trạng thái của I/O và dữ liệu trong bộ nhớ vẫn được giữ nguyên, đồng thời phản ánh mọi thay đổi mà chương trình Interrupt đã thực hiện.






