- หน้าแรก
- คลังความรู้
- PLC
- ไทเมอร์ · เคาน์เตอร์
// บทที่ 22.4 · PLC · Timers & Counters
ไทเมอร์และเคาน์เตอร์ตาม IEC 61131-3: TON TOF TP CTU CTD CTUD พร้อมไดอะแกรมเวลาและตัวอย่างงานจริง
ไทเมอร์และเคาน์เตอร์คือเหตุผลหลักที่ PLC แทนตู้รีเลย์ได้คุ้ม ไทเมอร์หนึ่งตัวในโปรแกรมแทนไทเมอร์จริงราคาหลายร้อยบาท และตั้งเวลาได้แม่นยำจาก HMI หน้านี้ใช้ชื่อตามมาตรฐาน IEC 61131-3 ซึ่งเป็นแม่แบบของคำสั่งในทุกยี่ห้อ
- TON: IN ต้องค้างครบ PT จึง Q = 1 · TOF: Q ค้างอีก PT หลัง IN ดับ · TP: พัลส์ยาว PT ต่อหนึ่งขอบขาขึ้น
- CTU นับขอบขาขึ้นของ CU · Q = 1 เมื่อ CV ≥ PV · R ล้างค่า
- ความแม่นยำ ≈ ± หนึ่งเวลาสแกน
- เวลานานมาก: ใช้ไทเมอร์นาทีป้อนเคาน์เตอร์
ไทเมอร์สามแบบ พื้นฐาน
T1 TON — on-delay หน่วงเวลาเปิด
T2 TOF — off-delay หน่วงเวลาปิด
T3 TP — pulse พัลส์ความยาวคงที่
T4 Timer accuracy ความแม่นยำของไทเมอร์ซอฟต์แวร์
สายพานเตือนด้วยแตร 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 ไฟกะพริบด้วยไทเมอร์สองตัว
เคาน์เตอร์ พื้นฐาน
T6 CTU — up counter เคาน์เตอร์นับขึ้น
T7 CTD — down counter เคาน์เตอร์นับลง
CTUD รวมทั้งสองในตัวเดียว (QU และ QD) ใช้นับจำนวนชิ้นงานที่อยู่ในพื้นที่ เช่น รถเข้า-ออกลานจอด หรือชิ้นงานบนบัฟเฟอร์ระหว่างสองเครื่อง
รอบเปลี่ยนไส้กรองทุก 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 ความถี่สูงสุดของเคาน์เตอร์ในโปรแกรม
คำถามที่พบบ่อย
ไทเมอร์ PLC แม่นยำแค่ไหน?
ไทเมอร์อัปเดตเมื่อถูกประมวลผลในแต่ละสแกน ความคลาดเคลื่อนจึงประมาณหนึ่งเวลาสแกน (บวกความละเอียดของฐานเวลา เช่น 1 ms 10 ms 100 ms) งานทั่วไปไม่มีปัญหา แต่ถ้าต้องการความแม่นยำระดับมิลลิวินาทีให้ใช้ไทเมอร์ฮาร์ดแวร์ งานที่เรียกเป็นรอบ (cyclic interrupt) หรือเอาต์พุตพัลส์ของ CPU
ไทเมอร์ไม่นับเมื่ออยู่ในส่วนโปรแกรมที่ไม่ถูกเรียก เกิดอะไรขึ้น?
ไทเมอร์แบบซอฟต์แวร์นับเฉพาะตอนคำสั่งถูกประมวลผล ถ้าอยู่ในฟังก์ชันหรือการกระโดดข้าม (jump) ที่ไม่ได้ทำงาน มันจะหยุดนับหรือค้างค่า ควรเรียกไทเมอร์ทุกสแกนแล้วควบคุมด้วยอินพุต IN แทน