Real-time Clock และการเปรียบเทียบค่า
คำสั่งเปรียบเทียบใน SamSoar2022 (LDW>, LDW=, LDW< และ CMP) กับการอ่านเวลาจาก Real-Time Clock ด้วย TRD เพื่อสั่งงานตามเวลา เช่นเปิด M75 ตอน 08:30:30 และปิดตอน 17:30:30
คำสั่ง LDW>, LDW=, LDW< เปรียบเทียบค่า Word ทีละเงื่อนไข ส่วน CMP เทียบครบ 3 เงื่อนไขในบรรทัดเดียวแล้วออกผลที่ M 3 ตัวติดกัน — ถ้าเอาไปเทียบกับเวลาจาก TRD (ตั้ง RTC format เป็น Decimal ก่อน) ก็สั่งงานตามเวลาได้
อัพเดทล่าสุด: 26 ตุลาคม 2569
ทำไมต้องเปรียบเทียบค่า
พอใช้ตัวเลขเป็นแล้ว งานจริงมักต้องเอาค่าหนึ่งไปเทียบกับอีกค่า เช่น PLC อ่านค่าจากเซนเซอร์ ถ้ามากกว่า 40 ให้ Output หนึ่งทำงาน ถ้าเท่ากับ 40 ให้อีกตัวทำงาน ถ้าน้อยกว่าให้อีกตัวทำงาน หรือเรื่องเวลา ซึ่งก็เป็นตัวเลขเหมือนกัน เช่นให้ PLC ทำงานตั้งแต่ 8 โมงเช้าถึง 5 โมงเย็น
คำสั่งเปรียบเทียบทั้งหมดอยู่ในโฟลเดอร์ Compare ของ Instruction ใน Project Tree ทางซ้าย
คำสั่ง LDW — เทียบทีละเงื่อนไข
ถ้าต้องการ "มากกว่า" ใช้ LDW> (Word Greater) ซึ่งมีแบบมากกว่าหรือเท่ากับให้เลือกด้วย ในคลิปเขียนเทียบ D60 กับ 40 สามแบบ
ทดสอบด้วย Simulate แล้วใส่ D60 ใน Monitor List
- D60 เริ่มต้นเป็น 0 (น้อยกว่า 40) → M62 ติด
- ตั้ง D60 = 40 → M61 ติด
- ตั้ง D60 = 41 → M60 ติด
คำสั่ง CMP (Word Compare) — 3 เงื่อนไขในบรรทัดเดียว
แทนที่จะเขียน 3 บรรทัด ใช้ CMP บรรทัดเดียวได้ผลแบบเดียวกัน CMP รับ 3 Parameter
- ข้อมูลที่สนใจ เช่น D60
- ค่าที่ต้องการเทียบ เช่น K40
- ตำแหน่งเริ่มต้นของ Output 3 ตัว เช่น M70
- M70 ติดเมื่อ D60 มากกว่า 40
- M71 ติดเมื่อ D60 เท่ากับ 40
- M72 ติดเมื่อ D60 น้อยกว่า 40
ทดสอบโดย Monitor M70, M71, M72: D60 = 0 → M72 ติด, D60 = 40 → M71 ติด, D60 = 100 → M70 ติด
Real-Time Clock (RTC)
สมมติต้องการให้ปั๊มหรือมอเตอร์ทำงานช่วง 8 โมงเช้าถึง 5 โมงเย็น ต้องรู้จัก Real-Time Clock (RTC) ก่อน PLC มี Battery ภายในเก็บข้อมูลเวลาไว้ แม้ PLC ดับ นาฬิกาก็ยังเดินต่อ เหมือนนาฬิกาในคอมพิวเตอร์
ตั้ง RTC format เป็น Decimal
ไปที่ Config → Project Setting หัวข้อ Other ในส่วน RTC Setting ค่า RTC format เริ่มต้นเป็น BCD ซึ่งอ่านยากเพราะต้องแปลงเป็นเลขฐาน 10 เอง ให้เปลี่ยนเป็น Decimal แล้วกด OK จะทำงานกับเวลาได้ง่ายขึ้น
คำสั่ง TRD — อ่านเวลา
ใช้ M8151 ขับคำสั่ง TRD ตามด้วย Data Register เริ่มต้นที่จะเก็บเวลา ในคลิปใช้ D70
TRD ใช้ Data Register ทั้งหมด 8 ตัว (ตัวที่ 0 ถึงตัวที่ 7 นับจากตำแหน่งเริ่มต้น)
| ตัวที่ | ข้อมูล | ช่วงค่า (Decimal) | ตำแหน่งเมื่อเริ่มที่ D70 |
|---|---|---|---|
| 0 | Year | 2000–2099 | D70 |
| 1 | Month | 1–12 | D71 |
| 2 | Day | 1–31 | D72 |
| 3 | Hour | 0–23 | D73 |
| 4 | Minute | 0–59 | D74 |
| 5 | Second | 0–59 | D75 |
| 6 | Reserved | - | D76 |
| 7 | Week | 0–6 | D77 |
สั่งงานตามเวลา
ใช้ LDW= เทียบชั่วโมง (D73) ต่ออนุกรมกับการเทียบนาที (D74) และวินาที (D75) ในคลิปตั้งให้ SET M75 ตอน 08:30:30 และ RST ตอน 17:30:30 (วินาทีจะไม่กำหนดก็ได้)
ใส่ Comment ให้ D73, D74, D75 เป็น Hour, Minute, Second จะอ่านโปรแกรมง่ายขึ้น เมื่อกด Simulate → Start จะเห็น D75 (ตัวที่ 5 ของ TRD คือวินาที) วิ่งไปเรื่อยๆ และเมื่อเวลาตรง 8 โมง 30 นาที 30 วินาที M75 จะถูก SET ส่วนตอน 17:30:30 จะถูก RST
สรุป
LDW>,LDW=,LDW<เปรียบเทียบค่า Word ทีละเงื่อนไข- CMP เทียบครบ 3 เงื่อนไขในบรรทัดเดียว ผลออกที่ M 3 ตัวติดกัน (มากกว่า, เท่ากับ, น้อยกว่า)
- RTC ตั้ง RTC format เป็น Decimal แล้วใช้ TRD อ่านเวลาเข้า D 8 ตัว นำไปเทียบเพื่อสั่งงานตามเวลา
ตอนต่อไปจะพูดถึง Timer ใน PLC
ตอนถัดไป
7. Timer ใน PLC
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน
