เซิร์ฟเวอร์อนุกรมหลายเครื่องสามารถเชื่อมต่อกับพอร์ตรับฟังเดียวกันบนเซิร์ฟเวอร์ส่วนกลางในโหมด TCP Client ได้ ประเด็นสำคัญไม่ใช่การเปิดพอร์ตสาธารณะแยกสำหรับอุปกรณ์แต่ละเครื่อง แต่คือโปรแกรมส่วนกลางสามารถจัดการหลายการเชื่อมต่อพร้อมกัน ระบุได้ว่าแต่ละการเชื่อมต่อตรงกับอุปกรณ์ใด และรับส่งข้อมูลตามโพรโทคอลได้อย่างถูกต้องหรือไม่ การเชื่อมต่อสำเร็จ ตัวตนอุปกรณ์ถูกต้อง และบริการอนุกรมทำงานปกติ เป็นเงื่อนไขสามข้อที่ต้องตรวจสอบแยกกัน
1. เริ่มจากแยกสองสถานการณ์ที่สับสนกันได้ง่าย
บทความนี้กล่าวถึง “เซิร์ฟเวอร์อนุกรมหลายเครื่องในพื้นที่ใช้งานเชื่อมต่อกับโปรแกรมส่วนกลางหนึ่งโปรแกรม” เซิร์ฟเวอร์อนุกรมแต่ละเครื่องส่งข้อมูลจากอุปกรณ์อนุกรมของตนไปยังส่วนกลาง แล้วส่วนกลางจึงส่งคำขอกลับไปตามการเชื่อมต่อที่ตรงกัน ตัวอย่างเช่น ตู้จ่ายไฟอิสระสามตู้มีเซิร์ฟเวอร์อนุกรมตู้ละหนึ่งเครื่อง ส่วนกลางต้องทราบว่าค่าที่อ่านได้มาจากตู้ใด และส่งคำสั่งควบคุมกลับไปยังตำแหน่งที่ถูกต้อง
อีกสถานการณ์หนึ่งคือ “คอมพิวเตอร์หลายเครื่องเข้าถึงเซิร์ฟเวอร์อนุกรมเครื่องเดียวกัน” ซึ่งเกี่ยวข้องกับว่าอุปกรณ์อนุกรมเดียวกันสามารถถูกสั่งงานโดยมาสเตอร์หลายตัวพร้อมกันได้หรือไม่ และอาจทำให้คำขอขัดแย้งกันหรือไม่ชัดเจนว่าการตอบกลับเป็นของคำขอใด การรองรับหลายการเชื่อมต่อ TCP ไม่ได้หมายความว่าจะรองรับการควบคุมแบบหลายมาสเตอร์อย่างปลอดภัยโดยอัตโนมัติ ทั้งสองสถานการณ์แตกต่างกันในด้านทิศทางการเชื่อมต่อของอุปกรณ์ จำนวนเซสชัน และปัญหาการจัดตาราง จึงไม่อาจครอบคลุมได้ด้วยคำว่า “เพียงใช้การโพลอัตโนมัติก็เพียงพอ”
2. เหตุใดพอร์ตเดียวจึงเชื่อมต่อหลายอุปกรณ์ได้
พอร์ต TCP อาจเข้าใจได้ว่าเป็นทางเข้าบริการของโปรแกรมส่วนกลาง แต่ไม่ใช่ช่องเสียบทางกายภาพที่อุปกรณ์เพียงเครื่องเดียวจะครอบครองได้ โปรแกรมรับฟังบนที่อยู่และพอร์ตที่กำหนด เมื่อยอมรับการเชื่อมต่อแล้ว ระบบปฏิบัติการจะจัดเตรียมซ็อกเก็ตที่เชื่อมต่อแล้วแยกต่างหากสำหรับเซสชันนั้น ซ็อกเก็ตคืออินเทอร์เฟซที่โปรแกรมใช้ในการอ่านและเขียนข้อมูลเครือข่าย ส่วนทางเข้ารับฟังเดิมยังคงรอให้อุปกรณ์อื่นเชื่อมต่อเข้ามา
ในเครือข่าย การเชื่อมต่อ TCP หนึ่งรายการแยกแยะได้ด้วยชุดที่อยู่ IP และพอร์ตของทั้งสองฝ่าย แม้อุปกรณ์ทั้งหมดจะเข้าถึงพอร์ตเดียวกันที่ส่วนกลาง แต่ที่อยู่ต้นทางหรือพอร์ตต้นทางอาจแตกต่างกัน ส่วนกลางควรเก็บบัฟเฟอร์รับข้อมูล สถานะ และงานประมวลผลของแต่ละการเชื่อมต่อแยกกัน และต้องไม่ผสมไบต์ที่รับจากต่างการเชื่อมต่อเข้าในคิวแยกวิเคราะห์เดียวกันโดยตรง
สมมติว่าส่วนกลางรับฟังบนพอร์ต 6000 และอุปกรณ์ A, B และ C เป็นฝ่ายเริ่มเชื่อมต่อแยกกัน สิ่งเหล่านี้คือสามเซสชันอิสระ ไม่ใช่อุปกรณ์สามเครื่องผลัดกันครอบครองเซสชันเดียว 6000 เป็นเพียงตัวอย่าง ไม่ใช่ค่าคงที่ที่แนะนำ จำนวนการเชื่อมต่อจริงถูกจำกัดโดยซอฟต์แวร์ส่วนกลาง เฟิร์มแวร์อุปกรณ์ ทรัพยากรระบบ และนโยบายเครือข่าย จึงไม่อาจอนุมานจากคำว่า “พอร์ตเดียว” ว่ารองรับอุปกรณ์ได้ไม่จำกัด

3. เมื่อเชื่อมต่อแล้ว เหตุใดยังต้องระบุตัวตนอุปกรณ์
การเชื่อมต่อบอกส่วนกลางได้ว่า “ไบต์ชุดนี้เข้ามาจากเซสชันใด” แต่ไม่จำเป็นต้องบอกได้ว่า “นี่คือตู้จ่ายไฟตู้ใด” การเข้าถึงผ่านเครือข่ายสาธารณะอาจผ่าน NAT ซึ่งหมายถึงเราเตอร์เขียนที่อยู่เครือข่ายและพอร์ตใหม่ อุปกรณ์หลายเครื่องจึงอาจปรากฏด้วย IP ขาออกเดียวกัน หลังจากขาดการเชื่อมต่อและเชื่อมต่อใหม่ พอร์ตต้นทางก็อาจเปลี่ยนได้ จึงไม่สามารถใช้พอร์ตต้นทางชั่วคราวเป็นหมายเลขอุปกรณ์ถาวร
การจับคู่ตัวตนสามารถใช้การกำหนดค่าเครือข่ายแบบคงที่ที่ผ่านการตรวจสอบ หรือข้อความลงทะเบียน หมายเลขสถานี และข้อมูลยืนยันตัวตนที่กำหนดไว้ในโพรโทคอลแอปพลิเคชัน การเลือกใช้วิธีใดขึ้นอยู่กับสิ่งที่อุปกรณ์ปลายทาง เซิร์ฟเวอร์อนุกรม และซอฟต์แวร์ส่วนกลางรองรับจริง เซิร์ฟเวอร์อนุกรมแบบโปร่งใสโดยทั่วไปเพียงส่งต่อไบต์เท่านั้น จึงไม่ควรสมมติว่าจะใส่ตัวตนที่ไม่ซ้ำกันลงในข้อมูลโดยอัตโนมัติ หากต้องใช้ฟังก์ชันแพ็กเก็ตลงทะเบียน ต้องตรวจสอบเอกสารของรุ่นและเฟิร์มแวร์จริง
ที่อยู่สเลฟอนุกรมก็ไม่จำเป็นต้องไม่ซ้ำกันทั่วทั้งระบบ ตัวอย่างเช่น หากมิเตอร์ในตู้ที่เป็นอิสระจากกันสามตู้ตั้งหมายเลขสถานีเป็น 1 เหมือนกัน ตราบใดที่แต่ละตู้ใช้การเชื่อมต่อแยกกัน ส่วนกลางก็สามารถแยกแยะได้ด้วย “หมายเลขตู้ที่ยืนยันแล้วร่วมกับหมายเลขสถานี” แต่หากไบต์ถูกผสมกันและเห็นเพียงหมายเลขสถานี 1 ก็อาจระบุอุปกรณ์ผิดได้ง่าย หมายเลขสถานีเป็นที่อยู่ภายในโพรโทคอล ไม่ใช่ตัวตนที่ไม่ซ้ำกันทั่วทั้งระบบของเซิร์ฟเวอร์อนุกรม
หลังจากสร้างการเชื่อมต่อแล้ว ให้ตรวจสอบตัวตนก่อนจึงอนุญาตให้ดำเนินงานบริการ เมื่อตัวตนเดียวกันออนไลน์ซ้ำ ต้องกำหนดให้ชัดเจนว่าจะปฏิเสธการเชื่อมต่อใหม่ แทนที่การเชื่อมต่อเดิม หรือจัดการตามการออกแบบระบบสำรอง และต้องไม่ปล่อยให้สองการเชื่อมต่อแย่งใช้ระเบียนอุปกรณ์เดียวกันโดยไม่มีการจัดการ ตัวตนที่อุปกรณ์แจ้งเองไม่เท่ากับการยืนยันตัวตนที่เชื่อถือได้ และเครือข่ายที่ใช้งานจริงควรใช้การกำหนดสิทธิ์และการควบคุมการเข้าถึงร่วมด้วย
4. เหตุใดการส่งผ่านแบบโปร่งใสจึงต้องแบ่งเฟรมตามโพรโทคอล
เซิร์ฟเวอร์อนุกรมรับไบต์อนุกรมก่อน เก็บไว้ในบัฟเฟอร์ชั่วคราว แล้วจึงส่งผ่าน Ethernet ในทิศทางย้อนกลับก็ส่งไบต์เครือข่ายไปยังเอาต์พุตอนุกรมเช่นกัน อัตราบอด บิตข้อมูล บิตพาริตี บิตหยุด และอินเทอร์เฟซทางไฟฟ้ายังคงต้องตรงกับอุปกรณ์ปลายทางในพื้นที่ใช้งาน TCP มีหน้าที่ส่งไบต์ตามลำดับ และไม่ได้เข้าใจรีจิสเตอร์มิเตอร์ หมายเลขอุปกรณ์ หรือคำสั่งควบคุมโดยอัตโนมัติ
TCP เป็นสตรีมไบต์ การอ่านหนึ่งครั้งของส่วนกลางอาจได้ครึ่งข้อความหรือสองข้อความ แอปพลิเคชันควรสะสมและแยกวิเคราะห์ข้อมูลตามความยาว ตัวคั่น เช็กซัม หรือกฎสถานะของโพรโทคอล แล้วจึงประมวลผลข้อความที่สมบูรณ์ ABC และ DEF ในรูปเป็นเพียงตัวอย่างไบต์เพื่อให้เข้าใจง่าย ไม่ใช่เฟรม Modbus จริง จึงไม่สามารถใช้การอ่านข้อมูลเครือข่ายหนึ่งครั้งเป็นขอบเขตข้อความสำหรับทุกโพรโทคอลได้

คำขอและการตอบกลับต้องได้รับการจัดการแยกตามการเชื่อมต่อด้วย เมื่อส่วนกลางส่งคำขอไปยังการเชื่อมต่อ A ต้องไม่ถือว่าข้อมูลที่รับบนการเชื่อมต่อ B เป็นการตอบกลับของ A เมื่อต้องอ่านสเลฟหลายตัวบนบัส RS485 เดียวกัน ควรจัดตารางคำขอตามโพรโทคอลและเวลาประมวลผลของอุปกรณ์ และดำเนินการถัดไปหลังยืนยันการตอบกลับหรือการหมดเวลาแล้วเท่านั้น เวลารอรวมแพ็กเก็ต ความหน่วงเครือข่าย และเวลาส่งข้อมูลอนุกรมล้วนมีผลต่อค่าหมดเวลา จึงควรทดสอบพารามิเตอร์ทีละรายการ แทนการตั้งค่ารอทั้งหมดเป็นศูนย์
5. ระหว่างกำหนดค่า ให้ตรวจสอบทีละส่วนตามเส้นทางข้อมูล
เริ่มจากกำหนดที่อยู่รับฟังและพอร์ตบริการของโปรแกรมส่วนกลาง ยืนยันว่าสามารถยอมรับหลายการเชื่อมต่อพร้อมกันและแยกวิเคราะห์ข้อมูลของแต่ละการเชื่อมต่ออย่างอิสระ จากนั้นตั้งเซิร์ฟเวอร์อนุกรมแต่ละเครื่องในพื้นที่ใช้งานเป็น TCP Client และกรอกที่อยู่ส่วนกลางกับพอร์ตเป้าหมาย อย่าสับสนพอร์ตหน้าเว็บจัดการกับพอร์ตบริการ และอย่าตั้งให้ทั้งฝั่งพื้นที่ใช้งานและฝั่งส่วนกลางรอรับการเชื่อมต่อ
จากนั้นตรวจสอบการกำหนดเส้นทางและนโยบายการเข้าถึง หากส่วนกลางอยู่ในเครือข่ายภายใน อุปกรณ์บนเครือข่ายสาธารณะจะเข้าถึงไม่ได้โดยใช้เพียงที่อยู่ส่วนตัวของส่วนกลาง ต้องใช้ VPN ที่มีการควบคุม เครือข่ายส่วนตัว หรือรูปแบบการแมปที่ได้รับอนุมัติ การเปิดพอร์ตเป็นเพียงส่วนหนึ่งของเส้นทางเครือข่าย และไม่ได้ทำให้การระบุตัวตนอุปกรณ์ การแปลงโพรโทคอล หรือการกำหนดสิทธิ์แอปพลิเคชันเสร็จสมบูรณ์โดยอัตโนมัติ ไฟร์วอลล์ควรอนุญาตเฉพาะแหล่งที่มาและบริการที่จำเป็น และไม่ควรเปิดเผยอินเทอร์เฟซจัดการควบคู่กับพอร์ตบริการโดยขาดการพิจารณา
สุดท้าย ยืนยันการเดินสายและพารามิเตอร์อนุกรม สร้างระบบขั้นต่ำด้วยอุปกรณ์หนึ่งเครื่อง ตรวจสอบเนื้อหาคำขอและการตอบกลับ แล้วจึงเพิ่มอุปกรณ์ บทความเก่าเคยเสนอว่าพอร์ตอนุกรมเสมือนและโปรแกรมช่วยสื่อสารอนุกรมสามารถแก้ปัญหาการเข้าถึงหลายอุปกรณ์ได้ทั้งหมด แต่ใช้ไม่ได้กับทุกกรณี ไดรเวอร์ COM เสมือน โปรแกรมส่วนกลาง และโหมดอุปกรณ์ต้องเข้ากันได้ ส่วนโปรแกรม TCP ที่พัฒนาเองก็ต้องจัดการการเชื่อมต่อและแยกวิเคราะห์โพรโทคอลให้ครบถ้วนเช่นกัน
6. สิ่งที่ต้องทดสอบสำหรับการเชื่อมต่อใหม่หลังขาดการเชื่อมต่อและการตรวจรับ
หลังเครือข่ายขาดการเชื่อมต่อ ต้องไม่ปล่อยให้เซสชันเดิมครอบครองตัวตนที่ใช้ในบริการตลอดไป เมื่อเชื่อมต่อใหม่ควรตรวจสอบตัวตนอีกครั้ง และตัดสินใจตามโพรโทคอลว่าจะจัดการคำขอที่ยังไม่เสร็จอย่างไร การส่งข้อมูล TCP ที่เชื่อถือได้ไม่ได้หมายความว่าคำสั่งบริการจะถูกดำเนินการเพียงครั้งเดียวอย่างแน่นอนตลอดช่วงก่อนและหลังการขาดการเชื่อมต่อ สำหรับการสั่งงาน เช่น เริ่ม/หยุดและรีเซ็ต ต้องไม่ส่งซ้ำโดยไม่มีเงื่อนไขเพียงเพราะหมดเวลา ควรใช้การสอบถามสถานะ หมายเลขธุรกรรม หรือกลไกที่อุปกรณ์รองรับเพื่อหลีกเลี่ยงการดำเนินการซ้ำ
ในการตรวจรับ สามารถให้อุปกรณ์แต่ละเครื่องส่งกลับข้อมูลที่แยกแยะกันได้ และตรวจสอบทีละเครื่องว่าการแสดงผลที่ส่วนกลางตรงกับอุปกรณ์จริง จากนั้นเชื่อมต่อพร้อมกันและทดสอบว่าข้อมูลสลับกันหรือระบุการตอบกลับผิดหรือไม่ แล้วตัดการเชื่อมต่อเครื่องหนึ่งเพื่อตรวจสอบว่าอุปกรณ์อื่นยังทำงานต่อได้หรือไม่ และอุปกรณ์ที่เชื่อมต่อใหม่กลับไปยังระเบียนที่ถูกต้องหรือไม่ ควรบันทึกจำนวนการเชื่อมต่อ จำนวนการรับส่งอนุกรม การหมดเวลา และสภาพบัฟเฟอร์ด้วย รวมทั้งทดสอบการทำงานต่อเนื่องและโหลดสูงสุด
7. ตรวจสอบโหมดการทำงานจริงเมื่อเลือกอุปกรณ์
รายละเอียดซีรีส์ FCT-1500 ของ Feichang บนเว็บไซต์ทางการระบุ TCP Server/Client ไดรเวอร์พอร์ตอนุกรมเสมือน และการกำหนดค่า RS232/422/485 ที่แตกต่างกัน ซึ่งสามารถใช้เชื่อมอุปกรณ์อนุกรมที่กระจายอยู่เข้าสู่เครือข่ายได้ การเลือก TCP Client ช่วยให้อุปกรณ์ในพื้นที่ใช้งานเป็นฝ่ายเริ่มเชื่อมต่อกับส่วนกลาง อย่างไรก็ตาม การจับคู่ตัวตนที่ส่วนกลางและการจัดตารางคำขอยังคงเป็นส่วนหนึ่งของโซลูชันโดยรวม ความสามารถในการรองรับหลายเซสชันต่อช่องสัญญาณที่ระบุบนเว็บไซต์ทางการไม่อาจแทนการตรวจสอบขีดความสามารถของซอฟต์แวร์ส่วนกลางได้ และต้องตรวจสอบอินเทอร์เฟซ โหมด และเฟิร์มแวร์เฉพาะตามรุ่นที่สั่งซื้อ
ควรยืนยันการเข้าถึง TCP แบบโปร่งใสและการแปลง Modbus RTU เป็น TCP แยกกันด้วย เมื่อต้องแปลงโพรโทคอล ให้เลือกและเปิดใช้โหมดที่รองรับจริง และอย่าถือว่าไบต์อนุกรมแบบโปร่งใสเป็นข้อความ Modbus TCP โดยตรง สำหรับการแก้ปัญหาทั่วไป โปรดดู 2295 บทความนี้มุ่งเฉพาะประเด็นการรวมอุปกรณ์หลายเครื่อง และหลีกเลี่ยงการแจกแจงเนื้อหาทั่วไปซ้ำ เช่น ไม่พบอุปกรณ์หรือเปิดพอร์ต COM ไม่ได้
เอกสารอ้างอิง:ข้อกำหนด TCP ตาม IETF RFC 9293;เอกสารอินเทอร์เฟซ accept สำหรับรับการเชื่อมต่อของ Linux;รายละเอียดซีรีส์ FCT-1500 ของ Feichang;การแก้ปัญหาเซิร์ฟเวอร์อนุกรม. แผนภาพหลักการเป็นภาพประกอบหลักการทั่วไป ใช้อธิบายกลไกทั่วไป และไม่ได้แทนผลิตภัณฑ์จริง ผลการวัดจริง หรือขีดความสามารถในการเชื่อมต่อที่รับรองไว้
แปลจากบทความทางเทคนิคภาษาจีน ต้นฉบับเผยแพร่ครั้งแรก: 2020-08-17 ต้นฉบับแก้ไขล่าสุด: 2026-10-13T20:24:48+08:00. อ่านต้นฉบับภาษาจีน


