PLCเริ่มต้น · Beginner14 นาที

Counter และการคำนวณ

เรียนรู้ชนิดข้อมูลใน PLC (Bit, Word, Double Word) การใช้ Counter CTU ทั้ง 16-bit และ 32-bit การ Reset Counter และคำสั่งบวก ลบ คูณ หาร รวมถึงการแปลง Word เป็น Float ใน SamSoar2022

Counter นับขึ้นใช้คำสั่ง CTU ตามด้วย Counter Value (เช่น CV0) และ Set Value (เช่น K3) เมื่อนับครบ Contact C0 จะติด ล้างค่าด้วย MOV K0 CV0 คู่กับ RST C0 ส่วนการนับเกิน 32,767 ให้ใช้ C200 ขึ้นไปซึ่งเป็น 32-bit การคูณหารเลขทศนิยมต้องแปลง Word เป็น Double Word (WTOD) แล้วเป็น Float (DTOF) ก่อนใช้ MULF / DIVF

อัพเดทล่าสุด: 26 ตุลาคม 2569

ชุดอุปกรณ์สำหรับบทความนี้

ราคาชุดอุปกรณ์

฿3,690

ชนิดของข้อมูลใน PLC

ตอนก่อนๆ ใช้ตัว X, Y, M ซึ่งเป็นข้อมูลแบบ Bit (0 กับ 1) ก่อนไปต่อ ต้องเข้าใจด้วยว่าสิ่งที่เรากำลังเขียนเป็นข้อมูลชนิดไหน

ข้อมูลแบบ Bit

ตารางในคลิป (Ladder Data Type) แสดงตัวแปรแบบ Bit และช่วงที่ใช้ได้

ตัวแปรหน้าที่ระบบเลขช่วง
XInputฐาน 8 (Octal)FGs_16MR/FGs_16MT: 0–77, รุ่นอื่น: 0–177
YOutputฐาน 8 (Octal)FGs_16MR/FGs_16MT: 0–77, รุ่นอื่น: 0–177
MMemory ภายในฐาน 100–8223
TContact ของ Timerฐาน 100–255
CContact ของ Counterฐาน 100–255
SStateฐาน 100–999

ตอนนี้จะใช้ตัว C ซึ่งคือ Counter ส่วน T และ S จะได้ใช้ในตอนหลัง

ข้อมูลตัวเลข

  • K — เลขฐาน 10 ตัวเลขธรรมดาที่เราใช้ เป็นจำนวนเต็มหรือจำนวนจริงก็ได้ เช่น K10, K100, K3.14, K4.2
  • H — เลขฐาน 16 มีตั้งแต่ 0 ถึง F ในอนาคตอาจได้เจอ
  • D — Data Register ใช้อ้างอิงการเก็บข้อมูลแบบ Word ที่เป็นตัวเลข
  • CV — Counter Value, TV — Timer Value, AI/AO — ค่า Analog, Z — Index

ขอบเขตของตัวเลข

ตัวเลขใน PLC มีขอบเขตการใช้งาน ข้อมูล 16-bit ที่ใช้ทั่วไปเป็นแบบมีเครื่องหมาย (Signed) ถ้าต้องการตัวเลขที่ใหญ่กว่านั้นต้องใช้ 32-bit (Double Word)

ชนิดข้อมูลต่ำสุดสูงสุด
16 Bit Unsigned065,535
16 Bit Signed-32,76832,767
32 Bit Unsigned04,294,967,295
32 Bit Signed-2,147,483,6482,147,483,647

เวลาใช้คำสั่งต่างๆ ให้ระวังเสมอว่าสิ่งที่ป้อนเข้าไปเป็นข้อมูล Bit, Word หรือ Double Word จะช่วยลด Error ในโปรแกรมได้

Counter (ตัวนับจำนวน)

Counter มี 2 แบบ คือ Count Up (นับขึ้น) และ Count Down (นับลง) การนับขึ้นใช้คำสั่ง CTU ซึ่งต้องใส่ Parameter 2 ตัว

  1. Counter Value — ตำแหน่งที่เก็บค่าการนับ เช่น CV0 (ต้องมีตัว V ด้วย ส่วน C0 ที่ไม่มี V คือ Contact แบบ Bit ไว้สั่งงานต่อ)
  2. Set Value — นับไปถึงค่าเท่าไหร่จึงให้ Contact C0 ติด เช่น K3
Counter นับขึ้น
N0
ทุกครั้งที่ M40 ติด (ขอบขาขึ้น) CV0 เพิ่มขึ้น 1 นับถึง K3
M40CTUCV0, K3
นับครบ → C0 ติด → M41 ติด
C0M41
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ผลการ Simulate

  1. M40 ติดครั้งที่ 1 → CV0 = 1
  2. M40 ติดครั้งที่ 2 → CV0 = 2
  3. M40 ติดครั้งที่ 3 → CV0 ตรงกับ Set Value C0 จึงติด และ M41 ติด

หลังจากนั้นถ้า M40 ยังทำงานต่อ ค่าจะนับต่อไปเรื่อยๆ และ C0 ยังติดค้างไว้

การ Reset Counter

ใช้คำสั่ง MOV (ย้ายข้อมูลหรือเอาค่าไปใส่ในตำแหน่งข้อมูล ใช้บ่อยมาก) ใส่ค่า K0 ลง CV0 ค่าจะกลับเป็น 0 แต่ Contact C0 ยังติดอยู่ จึงต้องใช้ RST C0 K1 เพิ่มในแถวเดียวกัน

Reset Counter
N0
M42 ติด → ล้าง CV0 เป็น 0 และ Reset Contact C0
M42MOVK0, CV0RSTC0, K1
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

กด M42 แล้วทั้ง Counter Value และ Contact กลับเป็นค่าเริ่มต้น

Counter 32-bit

Counterขนาดข้อมูล
C0–C19916-bit
C200 ขึ้นไป32-bit (นับค่าที่มากกว่า 16-bit)

High Speed Input มี Counter พิเศษของมัน ซึ่งจะพูดถึงในอนาคต

Counter 32-bit
N0
M43 ติด → นับด้วย CV200 ถึง K100000 (เกิน 32,767)
M43CTUCV200, K100000
นับครบ → C200 ติด → M44 ติด
C200M44
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ทดสอบโดยเพิ่ม CV200 ใน Monitor List ตั้งค่าเป็น 99,999 (ยังไม่ถึง 100,000) แล้วให้ M43 ทำงานอีกครั้ง Counter จะครบและ C200 ติด

บวก ลบ คูณ หาร

คำสั่งคำนวณอยู่ใน Project Tree หมวด Integer Calculation ได้แก่ ADD (บวก), SUB (ลบ), MUL (คูณ), DIV (หาร) และ INC (Increment บวกเพิ่ม 1)

ในคลิปใช้ M8151 (ติดตลอดขณะ PLC ทำงาน) ใส่ค่า 123 ลง D40 แล้วคำนวณจากค่านั้น

ADD / INC / SUB
N0
D40 = 123, D41 = D40 + 1, D42 = D40 + 1 (INC), D43 = D40 - 3
M8151MOVK123, D40ADDD40, K1, D41INCD40, D42SUBD40, K3, D43
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ผลการ Simulate: D41 = 124 และ D42 = 124

คำสั่ง INC ทำงานทุก Cycle ถ้าใช้ในงานจริงควรใส่ขอบขาขึ้นให้กับมัน

คูณและหารเลขทศนิยม

การคูณหารมักใช้ค่าทศนิยม ซึ่งเอาค่า D40 (ข้อมูล 1 Word) ไปคูณกับเลขทศนิยมตรงๆ ไม่ได้ ต้องแปลงข้อมูลก่อนด้วยคำสั่งในหมวด Convert

  1. WTOD — แปลง Word เป็น Double Word
  2. DTOF — แปลง Double Word เป็น Float
  3. จากนั้นจึงใช้ MULF / DIVF คูณหารเลขทศนิยมได้
แปลง Word → Float แล้วคูณหาร
ต่อจาก M8151 เดียวกับแถวด้านบน
N0
D50 = Double Word ของ D40, D52 = Float, D54 = D52 × 3.14, D56 = D52 ÷ 1.23
M8151WTODD40, D50DTOFD50, D52MULFD52, K3.14, D54DIVFD52, K1.23, D56
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

เมื่อใช้คำสั่งแบบ Double Word หรือ Float ให้เว้น Address ทีละ 2 เสมอ (D52 → D54 → D56) เพราะ Double Word ใช้ 2 Register เช่น D53 ถูกใช้ร่วมกับ D52 อยู่แล้ว

ผลการ Simulate: D54 = 386.220001 (123 × 3.14) และ D56 = 100 (123 ÷ 1.23) เลขทศนิยมใน PLC มีเรื่อง Precision ทำให้อาจไม่ตรงเป๊ะเหมือนการคำนวณในคอมพิวเตอร์

เคล็ดลับ

  • ถ้าไม่เห็น Comment ใต้ตำแหน่งข้อมูล ให้ไปที่ View แล้วกด Unit Comment
  • ระวังชนิดข้อมูลของสิ่งที่ป้อนเข้าคำสั่งเสมอ (Bit, Word, Double Word, Float)
  • Double Word ใช้ 2 Register วาง Address ให้ไม่ทับกัน

ตอนถัดไป

6. Real-time Clock และการเปรียบเทียบค่า

9 นาทีเริ่มต้น · Beginner