แก้ปัญหาข้อมูลอนุกรมขาดเป็นท่อนบน USR-N5X0 PUSR: ตั้ง Packet Time 255 ms และ Packet Length 1–1460 ไบต์ ให้ถูกวิธี
อาการเฟรม Modbus ขาดกลางทางหรือข้อมูลเพี้ยนบนตัวแปลง Serial to Ethernet มักไม่ได้เกิดจากสายหรือ Baud rate แต่เกิดจากกลไกจัดแพ็กเก็ตที่ตั้งค่าไม่เหมาะกับความเร็วพอร์ต บทความนี้อธิบายกลไก Packing ของ USR-N5X0 ทั้งแบบตามเวลาและตามความยาว พร้อมสูตรคำนวณค่าที่ผู้ผลิตให้ไว้ และฟังก์ชันเสริมอย่าง RS485 bus detection กับโหมด Serial Printer
ทำไมข้อมูลถึงขาดเป็นท่อน
ต้นเหตุอยู่ที่ความเร็วที่ไม่เท่ากันของสองฝั่ง เครือข่าย Ethernet เร็วกว่าพอร์ตอนุกรมมาก อุปกรณ์จึงต้องพักข้อมูลอนุกรมไว้ในบัฟเฟอร์ก่อนแล้วจึงส่งออกเป็นแพ็กเก็ต คำถามคือ “จะปิดแพ็กเก็ตเมื่อไหร่” ซึ่งถ้าตัดสินใจผิดจังหวะ เฟรมเดียวจะถูกผ่าเป็นสองแพ็กเก็ต และฝั่งรับที่คาดหวังเฟรมสมบูรณ์จะตีความไม่ออก
คู่มือ USR-N5X0 อธิบายว่ากลไกนี้เรียกว่า Serial to Network Packet Delimiter ซึ่งออกแบบมาเพื่อรักษาความสมบูรณ์ของแพ็กเก็ต โดยมีตัวคั่นให้เลือกสองแบบ คือ Time Delimiter และ Maximum Bytes Delimiter
จุดที่ต้องเข้าใจให้ถูกคือ ตัวคั่นทั้งสองแบบเมื่อเลือกใช้แล้วจะทำงานแบบ ตรรกะ OR หมายความว่าถ้าเงื่อนไขใดเงื่อนไขหนึ่งในสองข้อเป็นจริง อุปกรณ์จะส่งข้อมูลในบัฟเฟอร์ออกไปทางเครือข่ายทันที ไม่ต้องรอให้ครบทั้งสองเงื่อนไข
Packet Time — ตัวคั่นตามช่วงเวลา
คู่มือระบุพฤติกรรมว่า USR-N5X0 จะส่งข้อมูลอนุกรมในบัฟเฟอร์ออกไปเมื่อถึงช่วงเวลาที่กำหนดและไม่มีข้อมูลอนุกรมเข้ามาเพิ่ม โดยค่าเริ่มต้นถูกคำนวณอัตโนมัติจาก baud rate แต่ถ้าค่าอัตโนมัติทำให้ข้อมูลถูกตัดขาด ผู้ใช้เพิ่มค่า timeout ด้วยตัวเองได้ ทั้งนี้ ช่วงเวลาสูงสุดคือ 255 มิลลิวินาที และตัวเลือกนี้ปิดไว้เป็นค่าเริ่มต้น
ค่า Interval timeout ที่เหมาะสมขึ้นกับงาน แต่คู่มือกำหนดกฎขั้นต่ำไว้ว่า ต้องมากกว่าเวลาที่ใช้ส่งอักขระหนึ่งตัวที่ baud rate นั้น พร้อมยกตัวอย่างการคำนวณไว้ชัดเจน
สูตรคำนวณ Interval Timeout จากคู่มือ
สมมติตั้งพอร์ตอนุกรมเป็น 1200 bps, ข้อมูล 8 บิต, สต็อปบิต 1 บิต และไม่มีพาริตี ในกรณีนี้จำนวนบิตทั้งหมดที่ใช้ส่งหนึ่งอักขระคือ 10 บิต (รวมสตาร์ตบิต 1 บิต) เวลาที่ใช้ส่งหนึ่งอักขระจึงเท่ากับ
(10 บิต ÷ 1200 บิต/วินาที) × 1000 มิลลิวินาที/วินาที = 8.3 มิลลิวินาที
ดังนั้นค่า Interval timeout ต้องมากกว่า 8.3 มิลลิวินาที และเมื่อปัดขึ้นเป็นจำนวนเต็มถัดไปจะได้ 9 มิลลิวินาที ซึ่งใช้เป็นค่า interval timeout ได้
สูตรทั่วไปที่นำไปใช้กับ baud rate อื่นได้คือ เวลาต่ออักขระ (ms) = (จำนวนบิตต่อเฟรม ÷ baud rate) × 1000 โดยจำนวนบิตต่อเฟรมนับรวมสตาร์ตบิต ดาต้าบิต พาริตีบิต และสต็อปบิต
| Baud rate | บิตต่อเฟรม (8N1) | เวลาต่ออักขระโดยประมาณ | ค่า Interval Timeout ขั้นต่ำ |
|---|---|---|---|
| 1200 bps | 10 บิต | 8.3 ms | 9 ms (ตัวอย่างในคู่มือ) |
| 9600 bps | 10 บิต | 1.04 ms | 2 ms |
| 19200 bps | 10 บิต | 0.52 ms | 1 ms |
| 115200 bps | 10 บิต | 0.087 ms | 1 ms |
หมายเหตุ: แถวที่ 1 เป็นตัวอย่างที่คู่มือระบุไว้โดยตรง แถวที่เหลือคำนวณจากสูตรเดียวกันเพื่อใช้เป็นแนวทาง ควรทดสอบกับอุปกรณ์จริงก่อนใช้งาน


Packet Length — ตัวคั่นตามความยาวข้อมูล
คู่มืออธิบายว่า USR-N5X0 จะส่งข้อมูลอนุกรมในบัฟเฟอร์ออกไปเมื่อความยาวที่กำหนดในหน่วยไบต์ถึงเกณฑ์ หากต้องการให้อุปกรณ์พักข้อมูลไว้จนถึงความยาวที่กำหนด สามารถตั้งความยาวข้อมูลได้ตั้งแต่ 1 ถึง 1460 ไบต์ เมื่อความยาวข้อมูลตรงกับค่าที่ตั้งไว้ ข้อมูลจะถูกบังคับส่งออกทันที และหากไม่ต้องการจำกัดความยาว ให้ตั้งค่าเป็น 0
เลข 1460 ไม่ใช่ตัวเลขสุ่ม แต่มาจากขนาด payload สูงสุดของ TCP บนเฟรม Ethernet มาตรฐาน (MTU 1500 ไบต์ ลบส่วนหัว IP 20 ไบต์และส่วนหัว TCP 20 ไบต์) การตั้งเกินกว่านี้จึงไม่มีประโยชน์เพราะข้อมูลจะถูกแบ่งเฟรมโดยสแตกเครือข่ายอยู่ดี
RS485 Bus Detection — กันข้อมูลชนกันบนบัส
ฟังก์ชันนี้จำเป็นเมื่อมีอุปกรณ์หลายตัวบนบัส RS485 เดียวกัน คู่มืออธิบายว่าถ้าบัส RS485 อยู่ในสถานะกำลังรับข้อมูล N5X0 จะไม่ส่งข้อมูลออกไปทางพอร์ตอนุกรม เพื่อให้เกิดฟังก์ชันป้องกันการชนกันของบัส 485
พารามิเตอร์ที่เกี่ยวข้องคือ Idle time ซึ่งคือช่วงเวลาที่อุปกรณ์ได้รับอนุญาตให้ส่งข้อมูลออกไปยังบัส RS485 หลังจากตัวรับอยู่ในสถานะว่าง ค่าที่ตั้งได้อยู่ในช่วง 0 ถึง 65535 มิลลิวินาที ค่าเริ่มต้นคือ 10 และคู่มือระบุว่าพารามิเตอร์นี้เป็นค่าบังคับ
โหมด Serial Printer — ฟีเจอร์ที่หลายคนไม่รู้ว่ามี
คู่มือระบุว่า N5X0 มีตัวเลือก Serial Printer ที่ทำงานคล้ายกับตัวเลือก Serial Printer ในกล่องโต้ตอบ Ports (COM) โดยตัวเลือกนี้ทำให้พอร์ต TCP ที่เชื่อมโยงถูกระบุว่าเป็นการเชื่อมต่อเครื่องพิมพ์อนุกรม
คุณสมบัติของการเชื่อมต่อแบบนี้มีสามข้อตามคู่มือ คือ ไม่กินไลเซนส์ผู้ใช้ จำกัดให้เป็นเอาต์พุตอย่างเดียว และ กรองเครื่องหมายจบเอกสาร (end-of-document marker) ได้อย่างถูกต้อง ซึ่งข้อสุดท้ายนี้สำคัญมาก เพราะเป็นสาเหตุที่ทำให้เครื่องพิมพ์ฉลากหรือเครื่องพิมพ์ใบเสร็จที่ต่อผ่าน serial server ทั่วไปพิมพ์ค้างหรือพิมพ์ซ้ำ
| ฟังก์ชัน | พารามิเตอร์ | ค่าตามคู่มือ |
|---|---|---|
| Packet Time | ช่วงเวลาสูงสุด | 255 มิลลิวินาที (ปิดไว้เป็นค่าเริ่มต้น) |
| Packet Time | ค่าเริ่มต้น | คำนวณอัตโนมัติจาก baud rate |
| Packet Length | ช่วงที่ตั้งได้ | 1 – 1460 ไบต์ (ตั้ง 0 = ไม่จำกัด) |
| ตรรกะของตัวคั่น | การทำงานร่วมกัน | OR — เงื่อนไขใดเป็นจริงก่อนก็ส่งทันที |
| RS485 Bus Detection | Idle time | 0 – 65535 ms (ค่าเริ่มต้น 10, บังคับตั้ง) |
| Serial Printer | คุณสมบัติ | ไม่กินไลเซนส์ / เอาต์พุตอย่างเดียว / กรอง end-of-document |
สรุปลำดับการปรับจูน
เมื่อพบปัญหาข้อมูลขาดหรือเพี้ยน ให้ไล่ตามลำดับ: (1) ยืนยัน baud rate, data bits, parity ตรงกันทั้งสองฝั่ง (2) ตั้ง Packet Length เป็น 0 ก่อนเพื่อตัดตัวแปร (3) เปิด Packet Time แล้วคำนวณค่าขั้นต่ำจากสูตร แล้วเพิ่มขึ้นทีละขั้น (4) ถ้ามีหลายอุปกรณ์บนบัส RS485 ให้ตั้ง Idle time ให้เหมาะสม (5) ทดสอบด้วยเฟรมที่ยาวที่สุดที่ระบบจริงจะเจอ ไม่ใช่เฟรมสั้นๆ ตอนทดสอบเท่านั้น
ต้องการ Serial Device Server ที่รองรับ RS-232/422/485 และ Modbus/MQTT ในตัว ดูรุ่นที่จำหน่ายได้ที่ หมวดอุปกรณ์เครือข่ายอุตสาหกรรม ของ VR Automation
คำถามที่พบบ่อย (FAQ)
ทำไมค่า Packet Time สูงสุดถึงเป็นแค่ 255 มิลลิวินาที
เพราะค่านี้ถูกออกแบบให้เป็นตัวคั่นเฟรมระดับอักขระ ไม่ใช่ตัวหน่วงเวลาส่งข้อมูล การรอนานกว่านั้นจะทำให้ระบบตอบสนองช้าเกินไปสำหรับงานควบคุม คู่มือจึงจำกัดเพดานไว้ที่ 255 มิลลิวินาที
ตั้ง Packet Time และ Packet Length พร้อมกันได้ไหม
ได้ และเป็นการใช้งานปกติ คู่มือระบุว่าตัวคั่นทั้งสองทำงานแบบตรรกะ OR หมายความว่าเมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง อุปกรณ์จะส่งข้อมูลในบัฟเฟอร์ออกไปทันที
Idle time ของ RS485 bus detection ควรตั้งเท่าไหร่
ค่าเริ่มต้นตามคู่มือคือ 10 มิลลิวินาที และตั้งได้ตั้งแต่ 0 ถึง 65535 มิลลิวินาที หากบัสมีอุปกรณ์จำนวนมากหรือสายยาว ควรเพิ่มค่าขึ้นเล็กน้อยเพื่อลดการชนกันของสัญญาณ
สนใจสั่งซื้อ USR-N5X0 PUSR?
VR Automation จำหน่ายและให้บริการติดตั้ง พร้อมทีมช่างผู้เชี่ยวชาญ
โทรสอบถามราคา: 083-848-8314
อีเมล: [email protected]
Line: @vrautomation
สต๊อกกรุณาสอบถาม | รับประกันสินค้า | บริการหลังการขาย | ออกใบกำกับภาษีได้
แหล่งข้อมูลและมาตรฐานอ้างอิง
- Catalog: USR-N5X0.pdf (USR-N510/N520/N540/N580 User Manual V1.0.0) — VR Automation (เอกสารเทคนิคจากผู้ผลิต)
- PUSR — USR-N5X0 User Manual — คู่มือผู้ใช้ฉบับทางการ บทที่ 7 ว่าด้วย packing mechanism และ RS485 bus detection
- PUSR — The Delay Time of Serial to Ethernet Converter USR-N510 — อธิบายความหน่วงและกลไกจัดแพ็กเก็ตจากผู้ผลิต
- Serial Device Servers Explained — อ้างอิงหลักการพักข้อมูลในบัฟเฟอร์และเงื่อนไขปิดแพ็กเก็ตของ serial device server

