Timer ใน PLC
เรียนรู้ Timer ใน Samkoon PLC ตั้งแต่ข้อจำกัดของการนับเวลาด้วย M8160 + Counter ไปจนถึงคำสั่ง TON ความละเอียด 100 ms และ 10 ms พร้อมตัวอย่างให้ Output ติดค้างตามเวลาที่ตั้ง
Timer ใน Samkoon PLC ใช้คำสั่ง TON ใส่ Timer Value (เช่น TV0) กับ Set Value (K…) เมื่อนับครบ Contact T ของตัวนั้นจะติด T0–T199 ละเอียด 100 ms (4.5 วินาที = K45) ส่วน T200–T249 ละเอียด 10 ms (4.22 วินาที = K422) สะดวกกว่าการนับ Pulse 1 วินาทีจาก M8160 ด้วย Counter
อัพเดทล่าสุด: 26 ตุลาคม 2569
สร้าง Timer เองด้วย M8160 + Counter
จากตอนที่แล้ว เรารู้จัก Special Address ที่ติดเป็นจังหวะ เช่น M8160 ที่ติดทุก 1 วินาที ถ้าเอามาใช้คู่กับ Counter ก็สร้างตัวนับเวลาเองได้ ในคลิปลองให้ M80 เป็นตัวเริ่มนับ และนับ M8160 ด้วย CV10 ถึง K5 (= 5 วินาที)
เมื่อ Simulate และสั่ง M80 = ON ค่า CV10 จะนับขึ้นทีละวินาที พอครบ 5 ครั้ง C10 ติด แต่ CV10 ยังนับต่อไปเรื่อยๆ จนกว่าจะสั่ง M82 ไป Reset
ข้อเสียของวิธีนี้
- ต้องเขียนโค้ดหลายบรรทัด
- ตั้งเวลาเป็นทศนิยมไม่ได้ (ละเอียดได้แค่ 1 วินาที)
PLC จึงมีคำสั่ง Timer มาให้ใช้แทน
คำสั่ง TON (Timer On)
ใน SamSoar2022 คำสั่ง Timer อยู่ใน Instruction → Timer มี TON, TOF และ TONR ตัวที่ใช้บ่อยที่สุดคือ TON เขียน TON แล้วใส่พารามิเตอร์ 2 ตัว
- Timer Value (TV) — Address ที่เก็บค่าเวลาที่ Timer กำลังนับ คล้ายกับ Counter Value ของ Counter เช่น
TV0(คู่กับ ContactT0) - Set Value — เวลาที่ต้องการ เขียนเป็นค่า K หน่วยขึ้นกับช่วงหมายเลข Timer
ความละเอียดของ Timer
ตารางที่แสดงในคลิป
| Resolution | เวลาสูงสุด | หมายเลข Timer |
|---|---|---|
| 100 ms | 6553.5 s | T0–T199 |
| 10 ms | 655.35 s | T200–T249 |
| 1 ms | 65.535 s | T250–T255 |
- Timer 100 ms: 4.5 วินาที = 4500 ms → K45
- Timer 10 ms: 4.22 วินาที → K422 (1 หน่วยของ K = 10 ms)
ตัวอย่าง: กดแล้วให้ Output ติดค้าง 4.5 วินาที
โจทย์คือเมื่อ M83 ติด ให้ Y0 ติดค้าง 4.5 วินาทีแล้วดับ ในคลิปเขียน TON ที่ M83 แล้วลากเส้นขนานลงมา SET Y0 จากนั้นใช้ Contact T0 (Timer ครบเวลา) ไป RST Y0
ระวัง Output ซ้ำ — ก่อนเขียน Y0 ให้เช็กว่าในโปรแกรมมีบรรทัดอื่นสั่ง Y0 อยู่แล้วหรือไม่ กด Ctrl+F แล้วพิมพ์
Y0จะเห็นทุกตำแหน่งที่ใช้ Y0 Double Click เพื่อกระโดดไปดูได้ ในคลิปลบบรรทัดเก่าที่สั่ง Y0 จากตอนก่อนๆ ทิ้ง (คลิกขวา → Remove) ให้เหลือแค่ชุดเดียวที่คุม Y0
ทดสอบ
ดาวน์โหลดโปรแกรมลง PLC ผ่านสาย USB-C (หรือใช้ Simulation ก็ได้) แล้วกด Monitor สั่ง M83 = ON จะเห็น Y0 ติด 4.5 วินาทีแล้วดับ และจะไม่ติดอีกจนกว่า M83 จะถูกสั่ง OFF แล้ว ON ใหม่
ตัวอย่าง: Timer 10 ms และรวม Logic ของ Y0 ไว้ที่เดียว
ถ้าต้องการ 4.22 วินาที ใช้หลักเดิมแต่เปลี่ยนเป็น Timer ช่วง 10 ms ในคลิป Copy ชุดเดิม (Ctrl+C / Ctrl+V) แล้วเปลี่ยน Contact เป็น M84 Timer Value เป็น TV200 และ Set Value เป็น K422
เพราะ Y0 จะถูกสั่งจาก 2 ที่ ในคลิปจึงไม่ SET/RST Y0 ตรงๆ แต่ใช้ M ตัวช่วยแทน (M90 สำหรับ Timer แรก M91 สำหรับ Timer ที่สอง) แล้วเขียน Y0 เพียงบรรทัดเดียวจาก M90 ขนานกับ M91
หลัง Copy อย่าลืมเปลี่ยน Contact ที่ Reset ของชุดที่สองจาก T0 เป็น T200 ด้วย ในคลิปย้ำให้เช็กโค้ดจุดนี้ให้ดี ส่วนกล่อง TON ใน SamSoar2022 จะขึ้นความละเอียดให้เห็นเองตามหมายเลข Timer (TON(100ms) สำหรับ TV0 และ TON(10ms) สำหรับ TV200)
เมื่อดาวน์โหลดและ Monitor แล้วสั่ง M84 = ON ค่า TV200 จะวิ่งเร็วมาก Y0 ติดจนครบ 4.22 วินาทีจึงดับ ส่วน M83 ก็ยังใช้ได้เหมือนเดิมที่ 4.5 วินาที
สรุป
- TON = Timer Value (TVn) + Set Value (K…) เมื่อครบเวลา Contact Tn ติด
- T0–T199 ละเอียด 100 ms, T200–T249 ละเอียด 10 ms, T250–T255 ละเอียด 1 ms
- ถ้า Output เดียวถูกสั่งจากหลายเงื่อนไข ให้ใช้ M ตัวช่วยแล้วรวม Logic ของ Output นั้นไว้บรรทัดเดียว
ตอนต่อไปจะเอาความรู้ทั้งหมดมารวมกันเป็น Sequence Control หรือการทำงานตามขั้นตอน
ตอนถัดไป
8. การควบคุมตามลำดับ Sequence Control
คำถามที่พบบ่อย
- TON ต้องใส่พารามิเตอร์อะไร?
- ใส่ 2 ค่า คือ Timer Value (TV) ซึ่งเป็น Address ที่เก็บค่าเวลาที่นับอยู่ เช่น TV0 คู่กับ Contact T0 และ Set Value คือเวลาที่ต้องการ เช่น K45 เมื่อนับครบ Contact T0 จะติด
- ค่า K ต้องคำนวณอย่างไร?
- Timer 100 ms (T0–T199) ใช้เวลาเป็นวินาที × 10 เช่น 4.5 วินาที = K45 ส่วน Timer 10 ms (T200–T249) ใช้เวลาเป็นวินาที × 100 เช่น 4.22 วินาที = K422
- Timer แต่ละช่วงนับได้นานสุดเท่าไร?
- ตามตารางในคลิป T0–T199 ละเอียด 100 ms นับได้สูงสุด 6553.5 วินาที T200–T249 ละเอียด 10 ms สูงสุด 655.35 วินาที และ T250–T255 ละเอียด 1 ms สูงสุด 65.535 วินาที
- สร้าง Timer ด้วย Counter ได้ไหม?
- ได้ โดยนับ M8160 (ติดทุก 1 วินาที) ด้วย CTU เช่น CTU CV10 K5 = 5 วินาที แต่ต้องเขียนโค้ดหลายบรรทัดและใช้เวลาที่เป็นทศนิยมไม่ได้ จึงควรใช้ TON แทน
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน
