
Timer và Counter trong PLC: Nguyên lý hoạt động và cách lập trình (đa hãng)
Nếu Ladder Logic là "bảng chữ cái" của lập trình PLC, thì Timer (bộ định thời) và Counter (bộ đếm) chính là hai "từ vựng" được dùng nhiều nhất. Gần như không có chương trình PLC nào trong thực tế — dù là điều khiển đèn giao thông, băng tải hay dây chuyền đóng gói — mà không cần đến ít nhất một trong hai loại lệnh này. Bài viết này tổng hợp và biên dịch từ các nguồn kỹ thuật quốc tế uy tín, giúp bạn hiểu rõ bản chất, phân biệt các loại Timer/Counter, và biết cách áp dụng trên nhiều hãng PLC phổ biến tại Việt Nam.
1. Vì sao PLC cần Timer và Counter?
Trước khi có PLC, các kỹ sư dùng rơ-le thời gian (timing relay) cơ khí để tạo độ trễ, và bộ đếm cơ khí (mechanical counter) để đếm sản phẩm. PLC đã số hóa hoàn toàn hai chức năng này thành các khối hàm (function block) phần mềm — không còn linh kiện cơ khí hao mòn, độ chính xác cao hơn, và có thể thay đổi giá trị đặt (preset) chỉ bằng vài thao tác phần mềm thay vì phải thay cả rơ-le vật lý.
Theo Instrumentation Tools, timer trong PLC về bản chất là các khối hàm (Function Block - FB) cung cấp chức năng định thời tương tự một rơ-le thời gian cơ khí, nhưng mỗi lần sử dụng cần một vùng nhớ dữ liệu (data instance) riêng để lưu toàn bộ thông tin vận hành của timer đó.
2. Các loại Timer trong PLC
Có 4 loại timer cơ bản, xuất hiện dưới nhiều tên gọi khác nhau tùy hãng, nhưng bản chất hoạt động giống nhau.
2.1. TON — On-Delay Timer (Timer trễ khi bật)
Nguyên lý: khi tín hiệu đầu vào (IN) chuyển từ 0 lên 1, timer bắt đầu đếm thời gian. Nếu tín hiệu vào duy trì đủ lâu để đạt tới giá trị đặt trước (PT - Preset Time), đầu ra (Q/DN) mới được bật lên 1. Nếu tín hiệu vào tắt trước khi đạt PT, timer sẽ reset về 0 và đầu ra không bao giờ được kích hoạt.
Ứng dụng điển hình: trễ khởi động một động cơ sau khi nhấn nút Start (ví dụ: đợi 5 giây để bơm mồi trước khi bật động cơ chính), tạo độ trễ an toàn giữa các bước trong quy trình tuần tự.
2.2. TOF — Off-Delay Timer (Timer trễ khi tắt)
Nguyên lý: ngược lại với TON — khi tín hiệu vào bật lên 1, đầu ra được kích hoạt ngay lập tức. Khi tín hiệu vào chuyển về 0, timer mới bắt đầu đếm thời gian, và đầu ra chỉ tắt sau khi đạt đủ thời gian đặt trước.
Ứng dụng điển hình: giữ quạt làm mát chạy thêm một khoảng thời gian sau khi động cơ chính đã dừng (để tản nhiệt), giữ đèn chiếu sáng hành lang thêm vài phút sau khi cảm biến chuyển động không còn phát hiện người.
2.3. TONR / RTO — Retentive Timer (Timer tích lũy / có nhớ)
Nguyên lý: đây là loại timer đặc biệt — nó tích lũy (cộng dồn) thời gian qua nhiều lần tín hiệu vào bật/tắt, thay vì reset về 0 mỗi khi tín hiệu vào mất. Timer chỉ reset khi có một lệnh Reset riêng biệt được kích hoạt.
Tên gọi theo từng hãng (theo tổng hợp từ Ladder Logic World):
Hãng | Tên lệnh |
|---|---|
Allen-Bradley (Rockwell) | RTO (Retentive Timer On) |
Siemens (IEC) | TONR |
Mitsubishi | T (loại timer tích lũy riêng, ký hiệu khác timer thường) |
Omron | TTIM |
AutomationDirect | TMRA |
Ứng dụng điển hình: đếm tổng thời gian hoạt động thực tế của một động cơ/máy nén qua nhiều ca làm việc để lên lịch bảo trì định kỳ — dù máy có bật/tắt nhiều lần trong ngày, tổng thời gian chạy vẫn được cộng dồn chính xác.
2.4. TP — Pulse Timer (Timer xung)
Nguyên lý: tạo ra một xung đầu ra có độ rộng cố định, không phụ thuộc vào việc tín hiệu đầu vào giữ trạng thái bao lâu — trả lời cho câu hỏi "hãy cho tôi chính xác khoảng đầu ra này, bất kể đầu vào làm gì".
Ứng dụng điển hình: tạo xung mở van phun keo/sơn trong thời gian cố định, tạo hiệu ứng nháy đèn báo một lần.
Bảng tóm tắt 4 loại Timer
Loại | Câu hỏi trả lời | Reset khi nào |
|---|---|---|
TON | "Đầu vào đã bật đủ lâu chưa?" | Ngay khi đầu vào tắt |
TOF | "Đầu vào đã tắt đủ lâu chưa?" | Ngay khi đầu vào bật lại |
TONR/RTO | "Tổng thời gian tích lũy đã đủ chưa?" | Chỉ khi có lệnh Reset riêng |
TP | "Cho tôi đúng khoảng xung này" | Tự động sau khi hết xung |
3. Các loại Counter trong PLC
Theo chuẩn IEC 61131-3, có 3 loại counter tiêu chuẩn, được hỗ trợ trên hầu hết các nền tảng PLC hiện đại (Siemens TIA Portal, Allen-Bradley Studio 5000, Mitsubishi GX Works, Codesys...).
3.1. CTU — Count Up (Đếm lên)
Nguyên lý: mỗi khi có một cạnh lên (0→1) ở đầu vào đếm (CU), giá trị hiện tại (CV - Current Value) tăng thêm 1. Khi CV đạt tới giá trị đặt trước (PV - Preset Value), đầu ra Done (Q/DN) được kích hoạt.
Ứng dụng điển hình: đếm số sản phẩm đi qua cảm biến quang trên băng tải — sau khi đủ 25 sản phẩm, kích hoạt tín hiệu đóng thùng.
3.2. CTD — Count Down (Đếm xuống)
Nguyên lý: ngược lại CTU — mỗi cạnh lên ở đầu vào đếm (CD) sẽ giảm CV đi 1. Khi CV về tới 0, đầu ra Done được kích hoạt.
Ứng dụng điển hình: đếm số lượng còn lại trong một lô hàng cần xuất — CTD giúp hiển thị trực tiếp "còn bao nhiêu" mà không cần thêm phép tính trừ.
3.3. CTUD — Count Up/Down (Đếm lên/xuống kết hợp)
Nguyên lý: kết hợp cả hai chiều đếm trong một khối hàm duy nhất, với 2 đầu vào riêng biệt: CU (đếm lên) và CD (đếm xuống), dùng chung một giá trị hiện tại (CV).
Ứng dụng điển hình: theo dõi mức tồn kho trong kho đệm (buffer) — CU tăng khi có sản phẩm đưa vào, CD giảm khi có sản phẩm lấy ra, giúp giám sát mức tồn theo thời gian thực.
Các tham số quan trọng của Counter
Tham số | Ý nghĩa |
|---|---|
CU / CD | Đầu vào đếm lên / đếm xuống |
R (Reset) | Đưa CV về 0 và xóa các bit Done |
LD (Load) | Nạp giá trị khởi tạo cho CV (thường dùng ở CTD/CTUD) |
PV (Preset Value) | Giá trị đích cần đạt |
CV (Current Value) | Giá trị hiện tại |
QU / QD hoặc DN | Bit báo hoàn thành (Done bit) |
Lưu ý quan trọng: mọi counter trong thực tế đều cần có logic Reset đi kèm, nếu không counter sẽ giữ nguyên giá trị tối đa mãi mãi sau lần đếm đầu tiên — đây là lỗi rất phổ biến với người mới học lập trình PLC.
4. Timer và Counter khác nhau thế nào?
Nhiều người mới học PLC hay nhầm lẫn hai loại lệnh này. Cách phân biệt đơn giản nhất:
Timer trả lời câu hỏi: "Bao lâu?" — đo khoảng thời gian.
Counter trả lời câu hỏi: "Bao nhiêu lần?" — đếm số sự kiện xảy ra.
Trong nhiều ứng dụng thực tế, hai loại lệnh này được kết hợp với nhau: ví dụ, dùng Timer để tạo một cửa sổ thời gian giám sát, và dùng Counter để đếm số xung xảy ra trong cửa sổ thời gian đó — đây chính là nguyên lý đo tần số hoặc tốc độ trong nhiều ứng dụng công nghiệp.
5. Ví dụ minh họa theo từng hãng PLC phổ biến tại Việt Nam
Siemens S7-1200 (TIA Portal)
Timer sử dụng các khối hàm chuẩn IEC: TON, TOF, TONR, TP, với tham số IN (đầu vào), PT (Preset Time, kiểu dữ liệu TIME, ví dụ T#5S), và ET (Elapsed Time - thời gian đã trôi qua) hoặc Q (đầu ra). Counter dùng CTU, CTD, CTUD với tham số CU/CD, R, PV, CV, QU/QD.
Mitsubishi FX3U (GX Works2/GX Developer)
Timer dùng lệnh T với địa chỉ như T0, T1... và đơn vị mặc định thường là 100ms (ví dụ T0 K50 = 5 giây). Counter dùng lệnh C với địa chỉ C0, C1... Mitsubishi cũng có dòng Counter tốc độ cao (High Speed Counter) riêng cho các ứng dụng đếm xung tần số lớn.
Omron (CX-Programmer)
Timer dùng lệnh TIM (timer thường, đơn vị 100ms) hoặc TIMH (timer độ phân giải cao hơn); timer tích lũy dùng TTIM. Counter dùng lệnh CNT (đếm xuống) hoặc CNTR (đếm lên/xuống).
Allen-Bradley (RSLogix/Studio 5000)
Timer dùng TON, TOF, RTO. Counter dùng CTU, CTD. Điểm đặc trưng của Allen-Bradley là dùng một lệnh Reset (RES) riêng biệt, tách khỏi khối timer/counter chính, thay vì tích hợp chân Reset ngay trong khối hàm như ở các hãng IEC 61131-3 khác.
(Site đã có bài hướng dẫn chi tiết riêng về Address Number trong Ladder Logic và cách đánh địa chỉ khác nhau giữa các hãng PLC — xem thêm để hiểu sâu hơn về quy ước địa chỉ.)
6. Những lỗi thường gặp khi lập trình Timer/Counter
Quên logic Reset cho Counter: khiến counter giữ nguyên giá trị tối đa vĩnh viễn sau lần đếm đầu tiên.
Nhầm lẫn TON và TOF: dùng sai loại timer khiến logic hoạt động ngược với mong muốn — luôn tự hỏi "tôi cần trễ lúc BẬT hay trễ lúc TẮT?" trước khi chọn.
Không hiểu rằng timer IEC dừng lại khi đạt Preset: một số người lầm tưởng timer sẽ tiếp tục đếm vượt quá giá trị đặt — thực tế timer chuẩn IEC dừng đếm và giữ nguyên bit Done khi đã đạt PT.
Dùng timer thường thay vì timer tích lũy (Retentive) cho các ứng dụng cần cộng dồn thời gian qua nhiều chu kỳ bật/tắt — dẫn đến số liệu thống kê sai (ví dụ tính giờ chạy máy để bảo trì).
Đặt logic Timer/Counter quan trọng vào ứng dụng an toàn (safety) mà không dùng khối hàm an toàn chuyên dụng đã được chứng nhận — timer/counter thông thường không đủ độ tin cậy cho các chức năng dừng khẩn cấp.



