---
title: "ไทเมอร์และเคาน์เตอร์ตาม IEC 61131-3: TON TOF TP CTU CTD CTUD พร้อมไดอะแกรมเวลาและตัวอย่างงานจริง"
url: https://modsengineeringmath.com/learn/plc/timers-counters/
site: "Mod's Engineering Mathematics (อาจารย์มด)"
language: th
updated: 2026-10-14
---

> ไทเมอร์และเคาน์เตอร์มาตรฐานของ PLC ทุกยี่ห้อ: TON หน่วงเวลาเปิด TOF หน่วงเวลาปิด TP พัลส์ ไดอะแกรมเวลา ET PT วงจรไฟกะพริบ เตือนก่อนเครื่องเดิน พัดลมเดินต่อหลังหยุด เคาน์เตอร์ CTU CTD CTUD นับชิ้นงาน รีเซ็ต เวลานานเกินค่าสูงสุด ความแม่นยำขึ้นกับเวลาสแกน เคาน์เตอร์ความเร็วสูง และการเทียบชื่อกับ Siemens Mitsubishi Omron

ฉบับ Markdown ของ https://modsengineeringmath.com/learn/plc/timers-counters/ สำหรับผู้ช่วย AI และเครื่องมือค้นหา สูตรเขียนเป็น LaTeX ($…$ และ $$…$$) แล็บโต้ตอบและรูปมีเฉพาะในหน้าเว็บ

# ไทเมอร์และเคาน์เตอร์ตาม IEC 61131-3: TON TOF TP CTU CTD CTUD พร้อมไดอะแกรมเวลาและตัวอย่างงานจริง

THภาษาไทยENEnglish

// บทที่ 22.4 · PLC · Timers & Counters


ไทเมอร์และเคาน์เตอร์คือเหตุผลหลักที่ PLC แทนตู้รีเลย์ได้คุ้ม ไทเมอร์หนึ่งตัวในโปรแกรมแทนไทเมอร์จริงราคาหลายร้อยบาท และตั้งเวลาได้แม่นยำจาก HMI หน้านี้ใช้ชื่อตามมาตรฐาน IEC 61131-3 ซึ่งเป็นแม่แบบของคำสั่งในทุกยี่ห้อ

สรุปใน 30 วินาที

- TON: IN ต้องค้างครบ PT จึง Q = 1 · TOF: Q ค้างอีก PT หลัง IN ดับ · TP: พัลส์ยาว PT ต่อหนึ่งขอบขาขึ้น

- CTU นับขอบขาขึ้นของ CU · Q = 1 เมื่อ CV ≥ PV · R ล้างค่า

- ความแม่นยำ ≈ ± หนึ่งเวลาสแกน

- เวลานานมาก: ใช้ไทเมอร์นาทีป้อนเคาน์เตอร์

## ไทเมอร์สามแบบ พื้นฐาน

รูป 1 · อินพุตเดียวกัน (แถวบน) ป้อนไทเมอร์สามแบบที่ PT = 3 s

T1 TON — on-delay หน่วงเวลาเปิด

$$ET = \begin{cases} \min(ET + \Delta t,\ PT) & IN = 1 \\ 0 & IN = 0 \end{cases} \qquad Q = IN \wedge (ET \ge PT)$$

T2 TOF — off-delay หน่วงเวลาปิด

$$Q = IN \vee (ET T3 TP — pulse พัลส์ความยาวคงที่

$$Q = 1 \ \text{ช่วง } [t_0,\ t_0 + PT) \text{ หลังขอบขาขึ้นของ } IN \text{ ที่ } t_0 \ (\text{ไม่เริ่มใหม่ระหว่างพัลส์})$$

T4 Timer accuracy ความแม่นยำของไทเมอร์ซอฟต์แวร์

$$PT \le t_{actual} \le PT + t_{scan} + t_{base}$$

ตัวอย่าง T-1

### สายพานเตือนด้วยแตร 5 s ก่อนเดิน และพัดลมระบายความร้อนเดินต่อ 2 นาทีหลังหยุด

- สั่งเดิน M0.0 (ล็อกตัวเองจาก START/STOP) · T1 = TON(M0.0, 5s)

- แตร: Q0.1 = M0.0 & !T1 · สายพาน: Q0.0 = T1 (เดินเมื่อครบ 5 s)

- พัดลม: T2 = TOF(Q0.0, 120s) · Q0.2 = T2 — เดินพร้อมสายพานและค้างอีก 2 นาทีหลังสายพานหยุด

T5 Flasher from two timers ไฟกะพริบด้วยไทเมอร์สองตัว

$$T1 = \text{TON}(EN \wedge \overline{T2},\ t_{on}) \quad T2 = \text{TON}(T1,\ t_{off}) \quad Q = EN \wedge \overline{T1} \quad (T_{period} = t_{on} + t_{off})$$

ต้องเปิด JavaScript

## เคาน์เตอร์ พื้นฐาน

รูป 2 · CTU นับเฉพาะขอบขาขึ้นของ CU ถ้าชิ้นงานหยุดค้างหน้าเซนเซอร์ก็นับเพียงครั้งเดียว

T6 CTU — up counter เคาน์เตอร์นับขึ้น

$$CV_{k+1} = \begin{cases} 0 & R = 1 \\ CV_k + 1 & P(CU) \\ CV_k & \text{otherwise} \end{cases} \qquad Q = (CV \ge PV)$$

T7 CTD — down counter เคาน์เตอร์นับลง

$$CV = PV \text{ เมื่อ LD} \qquad CV_{k+1} = CV_k - 1 \text{ ที่ } P(CD) \qquad Q = (CV \le 0)$$

CTUD รวมทั้งสองในตัวเดียว (QU และ QD) ใช้นับจำนวนชิ้นงานที่อยู่ในพื้นที่ เช่น รถเข้า-ออกลานจอด หรือชิ้นงานบนบัฟเฟอร์ระหว่างสองเครื่อง

ต้องเปิด JavaScript

ตัวอย่าง T-2

### รอบเปลี่ยนไส้กรองทุก 500 ชั่วโมงทำงาน แต่ไทเมอร์ PT สูงสุด 24 ชม.

- สร้างพัลส์ทุก 1 ชั่วโมงขณะปั๊มเดิน: T1 = TON(Q0.0 & !T1, 3600s) (รีเซ็ตตัวเองเมื่อครบ)

- นับพัลส์: C1 = CTU(T1, I0.5, 500) · I0.5 = ปุ่มรีเซ็ตหลังเปลี่ยนไส้กรอง

- เตือน: Q0.3 = C1 · ทำ C1 เป็นแบบ retentive เพื่อไม่ให้ค่าหายเมื่อไฟดับ

## ชื่อในแต่ละยี่ห้อ

| IEC 61131-3 | Siemens S7-1200/1500 | Mitsubishi FX5/iQ | Omron CP/NX |

| TON | TON (IEC_TIMER) | OUT T0 K50 (100 ms) / TON FB | TIM / TON |

| TOF | TOF | TOF FB (หรือวงจร) | TOF |

| TP | TP | TP FB | TP |

| CTU | CTU | OUT C0 K10 / CTU FB | CNT / CTU |

ไทเมอร์แบบเก่าของบางยี่ห้อกำหนดเป็นจำนวน “ฐานเวลา” เช่น K50 ที่ฐาน 100 ms = 5 s ตรวจฐานเวลาทุกครั้งเมื่อย้ายโปรแกรมข้ามรุ่น

## เคาน์เตอร์ความเร็วสูง กลาง

CTU ในโปรแกรมนับได้ไม่เกินครึ่งหนึ่งของอัตราสแกนโดยประมาณ (ต้องเห็น 0 หนึ่งสแกนและ 1 หนึ่งสแกน) เช่น สแกน 10 ms นับได้ไม่เกิน ~50 Hz และต้องหักตัวกรองอินพุต เอนโค้ดเดอร์และเซนเซอร์ความเร็วสูงต้องต่อเข้าอินพุตความเร็วสูง (HSC) ของ CPU ซึ่งนับด้วยฮาร์ดแวร์ได้ถึงหลายสิบหรือหลายร้อย kHz และรองรับสัญญาณ A/B สองเฟส

T8 Software counter limit ความถี่สูงสุดของเคาน์เตอร์ในโปรแกรม

$$f_{max} \approx \frac{1}{2\,(t_{scan} + t_{in})}$$

## คำถามที่พบบ่อย

ไทเมอร์ PLC แม่นยำแค่ไหน?
ไทเมอร์อัปเดตเมื่อถูกประมวลผลในแต่ละสแกน ความคลาดเคลื่อนจึงประมาณหนึ่งเวลาสแกน (บวกความละเอียดของฐานเวลา เช่น 1 ms 10 ms 100 ms) งานทั่วไปไม่มีปัญหา แต่ถ้าต้องการความแม่นยำระดับมิลลิวินาทีให้ใช้ไทเมอร์ฮาร์ดแวร์ งานที่เรียกเป็นรอบ (cyclic interrupt) หรือเอาต์พุตพัลส์ของ CPU

ไทเมอร์ไม่นับเมื่ออยู่ในส่วนโปรแกรมที่ไม่ถูกเรียก เกิดอะไรขึ้น?
ไทเมอร์แบบซอฟต์แวร์นับเฉพาะตอนคำสั่งถูกประมวลผล ถ้าอยู่ในฟังก์ชันหรือการกระโดดข้าม (jump) ที่ไม่ได้ทำงาน มันจะหยุดนับหรือค้างค่า ควรเรียกไทเมอร์ทุกสแกนแล้วควบคุมด้วยอินพุต IN แทน

มด

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์

## คำถามที่พบบ่อย (FAQ)

**ไทเมอร์ PLC แม่นยำแค่ไหน?**
ไทเมอร์อัปเดตเมื่อถูกประมวลผลในแต่ละสแกน ความคลาดเคลื่อนจึงประมาณหนึ่งเวลาสแกน (บวกความละเอียดของฐานเวลา เช่น 1 ms 10 ms 100 ms) งานทั่วไปไม่มีปัญหา แต่ถ้าต้องการความแม่นยำระดับมิลลิวินาทีให้ใช้ไทเมอร์ฮาร์ดแวร์ งานที่เรียกเป็นรอบ (cyclic interrupt) หรือเอาต์พุตพัลส์ของ CPU

**ไทเมอร์ไม่นับเมื่ออยู่ในส่วนโปรแกรมที่ไม่ถูกเรียก เกิดอะไรขึ้น?**
ไทเมอร์แบบซอฟต์แวร์นับเฉพาะตอนคำสั่งถูกประมวลผล ถ้าอยู่ในฟังก์ชันหรือการกระโดดข้าม (jump) ที่ไม่ได้ทำงาน มันจะหยุดนับหรือค้างค่า ควรเรียกไทเมอร์ทุกสแกนแล้วควบคุมด้วยอินพุต IN แทน
