Modbus Function Code คู่มือฉบับสมบูรณ์ FC01-FC16 อ่าน-เขียน Coil/Register อะไรบ้าง | VR Automation

Modbus Function Code คู่มือฉบับสมบูรณ์ FC01-FC16 อ่าน-เขียน Coil/Register อะไรบ้าง

Modbus Function Code คู่มือฉบับสมบูรณ์ FC01-FC16 อ่าน-เขียน Coil/Register อะไรบ้าง

วันที่ 3 สิงหาคม 2569 | ความรู้วิศวกรรม | VR Automation

Modbus Function Code คู่มือฉบับสมบูรณ์ FC01-FC16 อ่าน-เขียน Coil/Register อะไรบ้าง

สรุปย่อ: Modbus Function Code คือรหัสคำสั่งที่ระบุว่าอุปกรณ์ Master (เช่น PLC, HMI, SCADA) ต้องการอ่านหรือเขียนข้อมูลประเภทใดจากอุปกรณ์ Slave (เช่น Inverter, Sensor, I/O Module) วิศวกรที่เชื่อมต่ออุปกรณ์ผ่าน Modbus RTU/TCP ต้องเข้าใจ Function Code หลัก 8 ตัว (FC01, 02, 03, 04, 05, 06, 15, 16) เพื่ออ่านคู่มือ Register Map ของอุปกรณ์แต่ละยี่ห้อได้ถูกต้อง

โครงสร้างข้อมูล Modbus: Coil vs Register

ก่อนเข้าใจ Function Code ต้องรู้จักประเภทข้อมูล 4 แบบของ Modbus ก่อน ได้แก่ Coil (บิต อ่าน-เขียนได้ ใช้แทนสถานะ Output แบบ ON/OFF), Discrete Input (บิต อ่านได้อย่างเดียว ใช้แทนสถานะ Input), Holding Register (16 บิต อ่าน-เขียนได้ ใช้เก็บค่าพารามิเตอร์หรือ Setpoint), และ Input Register (16 บิต อ่านได้อย่างเดียว ใช้แทนค่าที่วัดได้จากเซนเซอร์)

ตาราง Modbus Function Code หลัก

Function Code ชื่อคำสั่ง ใช้งานกับ
FC 01 Read Coils อ่านสถานะ Output แบบบิต (อ่าน-เขียนได้)
FC 02 Read Discrete Inputs อ่านสถานะ Input แบบบิต (อ่านอย่างเดียว)
FC 03 Read Holding Registers อ่านค่าพารามิเตอร์/Setpoint 16 บิต
FC 04 Read Input Registers อ่านค่าที่วัดได้ เช่น อุณหภูมิ ความเร็วมอเตอร์
FC 05 Write Single Coil สั่ง ON/OFF บิตเดียว (0xFF00=ON, 0x0000=OFF)
FC 06 Write Single Holding Register เขียนค่าพารามิเตอร์ 1 ตัว เช่น ตั้งความถี่ Inverter
FC 15 Write Multiple Coils เขียนหลาย Output พร้อมกันในคำสั่งเดียว
FC 16 Write Multiple Holding Registers เขียนหลายค่าต่อเนื่อง เช่น ค่า Float 32 บิตที่ใช้ 2 Register ติดกัน
💡 Pro Tip: เวลาต้องเขียนค่าตัวเลขทศนิยม (Float 32-bit) ลงในอุปกรณ์ที่รองรับ Modbus เช่น Inverter หรือ Temperature Controller ต้องใช้ FC16 (Write Multiple Registers) เพราะค่า Float กินพื้นที่ 2 Register ติดกัน หากใช้ FC06 (Write Single Register) จะเขียนได้แค่ครึ่งเดียวของค่าและทำให้ค่าที่อ่านกลับมาผิดเพี้ยนทันที

ตัวอย่างการใช้งานจริงกับ PLC และ I/O Module

โมดูล Serial I/O อย่าง BSR/BSM ที่ VR Automation จำหน่าย ใช้ FC01/FC05/FC15 สำหรับควบคุม Digital Output และใช้ FC03/FC04/FC06/FC16 สำหรับอ่าน-เขียนค่า Analog Input/Output ผ่าน Holding Register วิศวกรที่เขียนโปรแกรม PLC เชื่อมต่อ SCADA หรือ HMI ผ่าน Modbus RTU/TCP ควรตรวจสอบ Register Map ในคู่มือของแต่ละอุปกรณ์ก่อนเสมอ เพราะแม้ Function Code จะเป็นมาตรฐานเดียวกัน แต่ Address ของแต่ละยี่ห้อไม่เหมือนกัน

Modbus RTU vs Modbus TCP: Function Code เหมือนกันหรือไม่

Function Code ชุดเดียวกันนี้ใช้ได้ทั้งบน Modbus RTU (สื่อสารผ่าน RS485/RS232 แบบ Serial) และ Modbus TCP (สื่อสารผ่าน Ethernet) ความต่างอยู่ที่ Frame การส่งข้อมูล โดย Modbus TCP จะห่อ Function Code เดิมไว้ใน TCP/IP Packet พร้อม MBAP Header แทนการใช้ CRC Checksum แบบ RTU

ดู PLC และอุปกรณ์ที่รองรับ Modbus RTU/TCP เพิ่มเติมได้ที่ หมวดหมู่ PLC VR Automation

คำถามที่พบบ่อย (FAQ)

Q1: FC03 กับ FC04 ต่างกันตรงไหน ใช้แทนกันได้ไหม?
A: FC03 อ่าน Holding Register (อ่าน-เขียนได้ ใช้กับพารามิเตอร์/Setpoint) ส่วน FC04 อ่าน Input Register (อ่านได้อย่างเดียว ใช้กับค่าที่วัดได้) ในทางปฏิบัติผู้ผลิตหลายรายทำให้ทั้งสอง Function Code ชี้ไปยัง Memory เดียวกันเพื่อความสะดวก แต่ควรอ้างอิงคู่มือของอุปกรณ์แต่ละรุ่นเสมอ

Q2: ทำไมสั่ง Write Single Coil (FC05) แล้วต้องส่งค่า 0xFF00 แทนที่จะเป็น 1?
A: เป็นข้อกำหนดตามมาตรฐาน Modbus Protocol ที่ใช้ 0xFF00 แทนสถานะ ON และ 0x0000 แทนสถานะ OFF เพื่อให้ทุกอุปกรณ์ตีความคำสั่งตรงกัน ค่าอื่นนอกจากนี้ถือว่าไม่ถูกต้องตามมาตรฐาน

Q3: อุปกรณ์ที่รองรับ Modbus ทุกยี่ห้อมี Address Register เหมือนกันหรือไม่?
A: ไม่เหมือนกัน Function Code เป็นมาตรฐานสากล แต่ตำแหน่ง Address ของแต่ละค่า (เช่น อุณหภูมิอยู่ Register ไหน) กำหนดโดยผู้ผลิตแต่ละราย ต้องอ้างอิงคู่มือ Modbus Register Map ของอุปกรณ์นั้นๆ เสมอ

แหล่งข้อมูลและมาตรฐานอ้างอิง

  1. Catalog อ้างอิงภายใน: Modbus Register Mapping ของโมดูล BSR/BSM และ FATEK FBs PLC — VR Automation
  2. Modbus Function Command Formats — Instrumentation Tools
  3. Modbus Function Codes Explained — FC01 to FC23 Complete Reference — ModbusSimulator.com
  4. Modbus Function Codes — Ozeki

สนใจ PLC / Gateway ที่รองรับ Modbus RTU/TCP?

สนใจ PLC / Gateway ที่รองรับ Modbus RTU/TCP?

VR Automation จำหน่ายและให้บริการติดตั้ง พร้อมทีมช่างผู้เชี่ยวชาญ

โทรสอบถามราคา: 083-848-8314

อีเมล: [email protected]

Line: @vrautomation

vrautomation.co.th

สต๊อกกรุณาสอบถาม | รับประกันสินค้า | บริการหลังการขาย | ออกใบกำกับภาษีได้

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *