สูตรเลขยกกำลังใน PLC - วิธีคำนวณและสร้าง Function Block
คำนวณสูตรยกกำลังสิบ P = 10^((U−C)/1.286) ของเซนเซอร์แรงดันใน SamSoar2022 ด้วย Function Block ภาษา C ที่ใช้ pow() แล้วเรียกจาก Ladder ด้วยคำสั่ง CALLM
PLC Samkoon คำนวณเลขยกกำลังได้ ทั้งด้วยคำสั่ง POW ในหมวด Float Calculation หรือเขียน Function Block ภาษา C ที่ใช้ pow() ซึ่งเขียนสูตรยาวๆ ได้ง่ายกว่า แล้วเรียกใช้จาก Ladder ด้วยคำสั่ง CALLM
อัพเดทล่าสุด: 26 ตุลาคม 2569
โจทย์จากลูกค้า
ลูกค้าถามว่า PLC มีสูตรเลขยกกำลังสิบไหม จะเอามาเข้าสูตรของเซนเซอร์แรงดัน ซึ่งเอกสารของเซนเซอร์ให้ความสัมพันธ์ระหว่างแรงดันไฟฟ้ากับแรงดัน (Pressure) ไว้ว่า
P = 10^((U - C) / 1.286)
- P = Pressure
- U = Voltage (V) ที่เซนเซอร์ส่งออกมา
- C = ค่าคงที่ ขึ้นกับหน่วยของ Pressure ตามตารางในเอกสาร: Pa = 3.572, mBar = 6.143, Torr = 6.304
ต้องหาค่า (U − C) / 1.286 ก่อน แล้วจึงยก 10 กำลังค่านั้นได้เป็นค่า Pressure
ทำได้ 2 ทาง
- ใช้คำสั่งในหมวด Float Calculation ซึ่งมี POW Power อยู่
- เขียน Function Block ซึ่งในคลิปมองว่าง่ายกว่าสำหรับสูตรแบบนี้
ขั้นตอนเขียน Function Block
1. เพิ่ม Function Block
ใน Project Tree คลิกขวาที่ Funcblock แล้วเลือก Add เพื่อเพิ่ม Function Block (ในคลิปเป็นไฟล์ชื่อ Exponential)
2. เขียนฟังก์ชัน FindP
สร้างฟังก์ชันชื่อ FindP (หาค่า P) มี 3 Input คือ u, c, p ทั้งหมดเป็น FLOAT แล้วเขียนสูตรด้วย pow() ซึ่งเป็นฟังก์ชันในภาษา C สำหรับเลขยกกำลัง
void FindP(FLOAT u, FLOAT c, FLOAT p)
{
*p = pow(10, (*u - *c) / 1.286);
}
3. เรียกใช้จาก Ladder
- ใช้คำสั่ง CALLM เรียก Function Block FindP แล้วระบุ 3 ค่า: u มาจาก D0, c มาจาก D2 และคำตอบ p ออกที่ D4
- ค่าที่ต้อง Initialize ใช้ M8151 (ON ตลอดขณะ PLC ทำงาน) ในคลิปตั้งค่า C ที่ D2 เป็น 6.143 ตามค่าที่ลูกค้าให้มา ค่าที่เปลี่ยนจริงๆ จึงมีแค่ D0 ส่วน D2 ไม่ต้องเปลี่ยน
ทดสอบด้วย Simulation
สั่ง Simulate แล้วให้ CALLM ทำงาน ใน Monitor อย่าลืมเปลี่ยน Data Type ของ D0, D2, D4 เป็น FLOAT
| D0 (U) | D2 (C) | D4 (P) |
|---|---|---|
| 0 | 6.143 | 0.000017 |
| 5 | 6.143 | 0.129181 |
| 10 | 6.143 | 998.210876 |
| 20 | 6.143 | 5.960354E+10 |
ค่า P เปลี่ยนเยอะมากเพราะเป็นเลขยกกำลัง แต่วิธีนี้คำนวณส่วนยกกำลังได้ถูกต้อง
บทถัดไป
การใช้งาน Index และ Offset ใน PLC HMI - Data Sampling
มีคำถาม? ติดต่อทีมงาน