วันที่ 19 สิงหาคม 2569 | คู่มือใช้งาน | VR Automation

อาการที่วิศวกรระบบเจอบ่อยที่สุดเวลาแปลงพอร์ตอนุกรมขึ้นเน็ตเวิร์ก คือฝั่งเซิร์ฟเวอร์ได้ข้อมูลไม่ครบเฟรม บางครั้งได้ครึ่งเดียว บางครั้งเฟรมสองอันติดกันมาเป็นก้อนเดียว ปัญหานี้แทบไม่เกี่ยวกับสายหรือบอดเรต แต่เกี่ยวกับกลไกที่เกตเวย์ใช้ตัดสินว่า “เฟรมหนึ่งจบตรงไหน” เนื่องจาก Modbus RTU ไม่มีไบต์เริ่มต้นหรือไบต์ปิดท้าย แต่ใช้ช่วงเงียบบนบัสเป็นตัวแบ่งเฟรมแทน เกตเวย์ MT200 จึงมีพารามิเตอร์สำหรับควบคุมเรื่องนี้อยู่หลายตัว บทความนี้อธิบายทั้งสามโหมดพร้อมค่าที่ตั้งได้จริงตามคู่มือ
โหมดที่ 1 — Free Framing แบ่งเฟรมด้วยช่วงเงียบ
โหมดนี้เป็นค่าเริ่มต้น เกตเวย์จะตรวจช่วงเวลาระหว่างสองไบต์ที่ติดกันตลอดเวลา ถ้าช่วงเวลานั้นมากกว่าค่าที่ตั้งไว้ ถือว่าเฟรมจบแล้วและส่งต่อออกช่องซ็อกเก็ตทันที ถ้ายังไม่เกิน จะรับข้อมูลต่อไปจนกว่าจะเต็มบัฟเฟอร์
ค่าช่วงเวลานี้ตั้งด้วย UART/Buf/GapTime ค่าเริ่มต้นคือ 50 ms และปรับได้ในช่วง 10–1000 ms คู่มือระบุคำเตือนสำคัญไว้ว่า ถ้าตั้งไว้ต่ำถึง 10 ms แต่ไมโครคอนโทรลเลอร์ฝั่งผู้ใช้ไม่สามารถรับประกันได้ว่าจะส่งไบต์ถัดไปภายใน 10 ms ข้อมูลจะถูกตัดกลางเฟรม ซึ่งคืออาการเฟรมขาดที่เจอกันบ่อย
ส่วนขนาดบัฟเฟอร์ตั้งด้วย UART/Buf/Bufsize ค่าเริ่มต้น 512 ไบต์ ช่วงที่ตั้งได้คือ 32–8192 ไบต์ คู่มืออธิบายว่าถ้าข้อมูลที่รับมามากกว่าค่านี้ ข้อมูลชุดนั้นจะถูกอัปโหลดเป็นหนึ่งเฟรมและส่วนที่เหลือถูกเก็บไว้ในบัฟเฟอร์ต่อ พารามิเตอร์นี้ต้องรีสตาร์ตจึงจะมีผล ต่างจาก GapTime ที่มีผลทันที
โหมดที่ 2 — Automatic Framing สำหรับเฟรมความยาวคงที่
ถ้าข้อมูลบนพอร์ตอนุกรมมีความยาวคงที่ทุกเฟรม การเปิดโหมดประกอบเฟรมอัตโนมัติจะให้ประสิทธิภาพการส่งต่อสูงที่สุด เปิดใช้โดยตั้ง UART/Proto เป็น Frame แล้วกำหนดสองพารามิเตอร์
UART/Frame/FrameLen คือความยาวเฟรมที่ใช้ทริกเกอร์ เมื่อเกตเวย์รับข้อมูลครบตามจำนวนไบต์ที่กำหนดจะประกอบเป็นเฟรมและส่งออกเน็ตเวิร์กทันที ค่าเริ่มต้น 8 ไบต์ ช่วงที่ตั้งได้ 8–1400 ไบต์
UART/Frame/FrameTime คือเวลาที่ใช้ทริกเกอร์ หากภายในเวลานี้ข้อมูลที่รับได้ยังไม่ครบตามความยาวที่ตั้งไว้ เกตเวย์จะส่งเท่าที่มีออกไปก่อน ค่าเริ่มต้น 100 ms ช่วงที่ตั้งได้ 100–10000 ms ทั้งสองค่ามีผลทันทีหลังตั้งค่า
โหมดที่ 3 — Tag กรองเฉพาะข้อมูลที่ต้องการ
เมื่อเปิดฟังก์ชัน Tag ด้วย UART/Frame/Tag Enable เกตเวย์จะส่งออกเน็ตเวิร์กเฉพาะข้อมูลที่อยู่ระหว่างไบต์หัวแท็กกับไบต์ท้ายแท็กเท่านั้น ข้อมูลที่อยู่ก่อนหัวแท็กและหลังท้ายแท็กจะถูกกรองทิ้ง
ค่าเริ่มต้นของหัวแท็กคือ 0x55 และท้ายแท็กคือ 0xAA ทั้งคู่เป็นข้อมูลไบต์เดียว ฟังก์ชันนี้เหมาะมากกับอุปกรณ์เก่าที่พ่นข้อมูลขยะหรือข้อความสถานะปนออกมากับข้อมูลจริงตลอดเวลา เพราะช่วยให้เซิร์ฟเวอร์ปลายทางได้รับเฉพาะเพย์โหลดที่ต้องการ ไม่ต้องเขียนโค้ดกรองเองที่ฝั่งเซิร์ฟเวอร์
เลือกโปรโตคอลพอร์ตอนุกรมให้ถูกงาน
คำสั่ง UART/Proto กำหนดวิธีที่เกตเวย์จัดการข้อมูลพอร์ตอนุกรม รองรับ 3 ค่า
NONE คือค่าเริ่มต้น ทำงานแบบส่งผ่านโปร่งใส ไม่แปลงข้อมูลใด ๆ เหมาะกับโปรโตคอลเฉพาะทางที่เซิร์ฟเวอร์ปลายทางเข้าใจอยู่แล้ว
Modbus แปลง Modbus RTU เป็น Modbus TCP ซึ่งเป็นค่าที่ควรใช้เมื่อฝั่งบนเป็น SCADA หรือ HMI ที่พูด Modbus TCP โดยตรง เพราะเกตเวย์จะจัดการเรื่องหัวเฟรม MBAP และการตัด CRC ให้เอง
Frame เปิดโหมดประกอบเฟรมอัตโนมัติตามที่อธิบายไว้ข้างต้น
นอกจากนี้ยังมีการควบคุมการไหลของข้อมูล ตั้งด้วย UART/FlowCtrl ซึ่งค่าเริ่มต้นคือ Half-Duplex หมายถึงเปิดโหมดครึ่งดูเพล็กซ์สำหรับ RS485 โดยใช้ขา UART0_RTS ควบคุมชิป RS485 คู่มือระบุว่าฟังก์ชัน RS485 เปิดใช้งานโดยค่าเริ่มต้น และการควบคุมการไหลด้วยซอฟต์แวร์มีลำดับความสำคัญสูงกว่าฮาร์ดแวร์ โดยใช้ Xon เริ่มต้น 0x11 และ Xoff เริ่มต้น 0x13
| พารามิเตอร์ | คำสั่ง CLI | ค่าเริ่มต้น | ช่วงที่ตั้งได้ | มีผลเมื่อ |
|---|---|---|---|---|
| ช่วงเงียบแบ่งเฟรม | UART/Buf/GapTime |
50 ms | 10–1000 ms | ทันที |
| ขนาดบัฟเฟอร์ | UART/Buf/Bufsize |
512 ไบต์ | 32–8192 ไบต์ | หลังรีสตาร์ต |
| ความยาวเฟรมทริกเกอร์ | UART/Frame/FrameLen |
8 ไบต์ | 8–1400 ไบต์ | ทันที |
| เวลาทริกเกอร์เฟรม | UART/Frame/FrameTime |
100 ms | 100–10000 ms | ทันที |
| หัวแท็ก / ท้ายแท็ก | UART/Frame/Tag |
0x55 / 0xAA | ไบต์เดียว | ทันที |
| บอดเรต | UART/Baudrate |
115200 | 300 ถึง 460800 | ทันที |
| โปรโตคอลพอร์ตอนุกรม | UART/Proto |
NONE | NONE / Modbus / Frame | ทันที |

การนำไปใช้งานในอุตสาหกรรม
- งานอ่านมิเตอร์ไฟฟ้าผ่าน RS485 — ตั้ง Proto เป็น Modbus แล้วปล่อย GapTime ที่ค่าเริ่มต้น จะได้เฟรมครบและ SCADA อ่านได้ตรง
- อุปกรณ์ชั่งน้ำหนักที่ส่งข้อความยาวคงที่ — ใช้โหมด Automatic Framing ตั้ง FrameLen ให้ตรงกับความยาวข้อความ ทำให้ส่งต่อได้เร็วที่สุดโดยไม่ต้องรอครบ GapTime
- เครื่องเก่าที่พ่นข้อความสถานะปนมาตลอด — เปิดฟังก์ชัน Tag แล้วกำหนดหัวและท้ายให้ตรงกับเพย์โหลดจริง เซิร์ฟเวอร์จะได้ข้อมูลสะอาดโดยไม่ต้องเขียนตัวกรอง
ดูสินค้าในหมวดที่เกี่ยวข้องได้ที่ เกตเวย์ RS485 เป็นอีเทอร์เน็ตและอุปกรณ์เครือข่าย หรือเลือกชมสินค้าทั้งหมดที่ ร้านค้า VR Automation
คำถามที่พบบ่อย (FAQ)
ตั้ง GapTime ต่ำสุด 10 ms ได้เลยไหมเพื่อให้เร็วขึ้น
ตั้งได้แต่ไม่แนะนำให้ทำโดยไม่ทดสอบ คู่มือเตือนไว้ตรง ๆ ว่าถ้าไมโครคอนโทรลเลอร์ฝั่งอุปกรณ์ไม่สามารถรับประกันการส่งไบต์ถัดไปภายใน 10 ms ข้อมูลพอร์ตอนุกรมอาจถูกตัดกลางเฟรม ควรลดทีละขั้นและตรวจอัตราความผิดพลาดควบคู่กันเสมอ
ต่างกันอย่างไรระหว่าง Bufsize กับ FrameLen
Bufsize คือขนาดพื้นที่พักข้อมูลของพอร์ตอนุกรม ทำหน้าที่เป็นเพดานว่าเฟรมหนึ่งใหญ่ได้แค่ไหนก่อนถูกบังคับส่ง ส่วน FrameLen คือความยาวที่ใช้ทริกเกอร์การประกอบเฟรมในโหมดอัตโนมัติ ซึ่งจะทำงานก็ต่อเมื่อตั้ง Proto เป็น Frame เท่านั้น
เปิดฟังก์ชัน Tag แล้วข้อมูลหายไปเลย เกิดจากอะไร
ให้ตรวจว่าไบต์หัวแท็กและท้ายแท็กที่ตั้งไว้ตรงกับข้อมูลจริงหรือไม่ เพราะเมื่อเปิดฟังก์ชันนี้ ข้อมูลที่ไม่มีทั้งหัวและท้ายแท็กจะถูกกรองทิ้งทั้งหมด ค่าเริ่มต้นคือหัว 0x55 และท้าย 0xAA ซึ่งอุปกรณ์ส่วนใหญ่ไม่ได้ใช้ค่านี้
สรุป
ปัญหาเฟรมขาดหรือเฟรมติดกันบนเกตเวย์อนุกรมแทบทั้งหมดแก้ได้ที่พารามิเตอร์สามกลุ่มนี้ กลุ่มแรกคือ GapTime กับ Bufsize สำหรับโหมดแบ่งเฟรมด้วยช่วงเงียบ กลุ่มที่สองคือ FrameLen กับ FrameTime สำหรับข้อมูลความยาวคงที่ และกลุ่มที่สามคือ Tag สำหรับกรองเฉพาะเพย์โหลดที่ต้องการ เลือกโหมดให้ตรงกับพฤติกรรมของอุปกรณ์ปลายทาง แล้วตั้ง Proto ให้ถูก จะได้ข้อมูลครบเฟรมโดยไม่ต้องไปแก้โค้ดที่ฝั่งเซิร์ฟเวอร์เลย
แหล่งข้อมูลและมาตรฐานอ้างอิง
- Catalog: Mortise and tenon series product software functions_20250312.pdf (75 หน้า) — VR Automation (เอกสารเทคนิคจากผู้ผลิต)
- PLC Programming Blog — Modbus RTU Protocol Explained: Frames, Timing and Wiring — อ้างอิงหลักการแบ่งเฟรม Modbus RTU ด้วยช่วงเงียบบนบัส
- Industrial Monitor Direct — Modbus-RTU Silent Interval Calculation: 3.5 Character Times — อ้างอิงการคำนวณช่วงเงียบ 3.5 อักขระและตัวเลขที่ 9600 บอด
- MinimalModbus — Serial communication documentation — อ้างอิงพฤติกรรมช่วงเวลาระหว่างอักขระบนลิงก์อนุกรม

สนใจ เกตเวย์ MT200 สำหรับงาน Modbus RTU และ RS485?
VR Automation จำหน่ายและให้บริการติดตั้ง พร้อมทีมช่างผู้เชี่ยวชาญ
โทรสอบถามราคา: 083-848-8314
อีเมล: [email protected]
Line: @vrautomation
สต๊อกกรุณาสอบถาม | รับประกันสินค้า | บริการหลังการขาย | ออกใบกำกับภาษีได้
