โหมดเซิร์ฟเวอร์ TCP ทำให้เซิร์ฟเวอร์อนุกรมรอรับการเชื่อมต่อที่พอร์ตเครือข่าย และรอให้คอมพิวเตอร์หรือโปรแกรมเป็นฝ่ายเริ่มเชื่อมต่อ เมื่อเชื่อมต่อแล้ว ทั้งสองฝั่งสามารถส่งไบต์ข้อมูลอนุกรมได้ โหมดนี้ไม่ได้เข้าใจโพรโทคอลของมิเตอร์โดยอัตโนมัติ และไม่ได้เปลี่ยนอุปกรณ์อนุกรมให้เป็นเว็บเซิร์ฟเวอร์โดยตรง ต่อไปนี้จะอธิบายเส้นทางการส่งข้อมูลผ่านอุปกรณ์ก่อน แล้วจึงยกตัวอย่างการกำหนดค่าที่สอดคล้องกันและลำดับการแก้ไขปัญหา
เซิร์ฟเวอร์และไคลเอนต์หมายถึงฝ่ายใดเริ่มเชื่อมต่อก่อน
เซิร์ฟเวอร์รออยู่ที่ที่อยู่และพอร์ตที่ระบุ ส่วนไคลเอนต์เป็นฝ่ายเริ่มส่งคำขอเชื่อมต่อ เมื่อเชื่อมต่อแล้ว โดยทั่วไปข้อมูลสามารถส่งได้ทั้งสองทิศทาง ดังนั้น “เซิร์ฟเวอร์” จึงไม่ได้หมายถึงรับได้อย่างเดียว และ “ไคลเอนต์” ก็ไม่ได้หมายถึงส่งได้อย่างเดียว พอร์ตเครือข่ายคือหมายเลขที่โปรแกรมเลือกใช้เป็นจุดรับการสื่อสาร ไม่ใช่ช่องเสียบสายเครือข่ายทางกายภาพที่ด้านหลังเครื่อง คอมพิวเตอร์ต้องทราบ IP ของเซิร์ฟเวอร์ที่เข้าถึงได้และพอร์ตที่รอรับการเชื่อมต่อ และเซิร์ฟเวอร์อนุกรมต้องยอมรับการเชื่อมต่อนั้น หากยังไม่มีการเชื่อมต่อ ข้อมูลที่อุปกรณ์อนุกรมส่งออกมาจะถูกเก็บในบัฟเฟอร์หรือทิ้งอย่างไรขึ้นอยู่กับรุ่นและการกำหนดค่า จึงไม่อาจถือว่าข้อมูลจะถูกเก็บไว้เสมอ การเข้าใจบทบาทก่อนตั้งค่าโหมดการทำงานจะช่วยป้องกันไม่ให้อุปกรณ์ทั้งสองฝ่ายต่างรอ หรือทั้งสองฝ่ายต่างเริ่มเชื่อมต่อไปยังปลายทางที่ผิด
ข้อมูลหนึ่งไบต์ผ่านขั้นตอนใดบ้างจริง ๆ?
ยกตัวอย่างคอมพิวเตอร์ส่งคำขออ่านข้อมูลจากมิเตอร์ ซอฟต์แวร์ส่งคำขอตามโพรโทคอลให้ TCP เมื่ออินเทอร์เฟซเครือข่ายรับข้อมูลแล้ว เซิร์ฟเวอร์จะแยกไบต์ออกจากข้อมูลเครือข่ายและส่งให้ตัวควบคุมอนุกรม UART จากนั้น UART จะแปลงไบต์เป็นสัญญาณไฟฟ้าต่อเนื่องตามอัตราบอด บิตข้อมูล บิตพาริตี และบิตหยุด แล้ววงจร RS232 หรือ RS485 ที่เกี่ยวข้องจะส่งสัญญาณไปยังมิเตอร์ เมื่อมิเตอร์ตอบกลับ ข้อมูลจะเดินทางย้อนทิศทางเดิม อัตราบอดระบุจังหวะของสัญลักษณ์ในการสื่อสารอนุกรม ไม่ว่าเครือข่ายจะมีความเร็วสูงเพียงใด ก็ไม่สามารถทำให้มิเตอร์ความเร็วต่ำทำงานเร็วขึ้นได้เอง อุปกรณ์ส่งผ่านข้อมูลแบบโปร่งใสโดยทั่วไปจะไม่ตีความที่อยู่ รหัสฟังก์ชัน หรือค่าที่วัดได้ งานตีความเป็นหน้าที่ของแอปพลิเคชัน การมีอินเทอร์เฟซ RS485 ไม่ได้เท่ากับมีการแปลงโพรโทคอล Modbus ในตัว ต้องตรวจสอบความสามารถทั้งสองอย่างแยกกัน

เหตุใดการรับข้อมูลหนึ่งครั้งจึงไม่เท่ากับการรับหนึ่งข้อความ?
TCP ให้บริการสตรีมไบต์ที่เรียงลำดับ และไม่รักษาขอบเขตของการส่งแต่ละครั้งจากแอปพลิเคชัน หากโปรแกรมส่งข้อมูลหกไบต์ โปรแกรมฝั่งรับอาจอ่านได้สองไบต์ในครั้งแรกและสี่ไบต์ในครั้งถัดไป หรืออาจแบ่งเป็นรูปแบบอื่น ๆ แต่ในการส่งตามปกติบนการเชื่อมต่อเดียวกัน ลำดับไบต์ควรยังคงถูกต้อง ลักษณะนี้เหมือนสายน้ำที่ไหลต่อเนื่อง ไม่ใช่ซองจดหมายที่แยกเป็นฉบับ ๆ อย่างไรก็ตาม การเปรียบเทียบกับสายน้ำไม่สามารถอธิบายกลไกการส่งซ้ำและความคับคั่งได้ แอปพลิเคชันต้องเก็บข้อมูลในบัฟเฟอร์และแบ่งเฟรมตามความยาว ตัวคั่น หรือกฎการตรวจสอบของโพรโทคอลของตนเอง และไม่สามารถถือว่าการอ่านหนึ่งครั้งเท่ากับคำขอหรือคำตอบหนึ่งข้อความ เวลารวมข้อมูลอนุกรมของอุปกรณ์มีผลต่อจังหวะการส่งข้อมูล แต่ไม่สามารถเพิ่มขอบเขตข้อความถาวรให้ TCP ได้
กำหนดค่าเครือข่ายก่อน แล้วใช้ตัวอย่างพอร์ตเดียวกันตลอด
สมมติว่าที่อยู่เซิร์ฟเวอร์คือ 192.168.0.148 คอมพิวเตอร์คือ 192.168.0.166 ทั้งสองอยู่ในซับเน็ตตัวอย่างเดียวกันที่อนุญาตให้สื่อสารถึงกันได้ และใช้พอร์ตรอรับการเชื่อมต่อเป็น 4096 เหมือนกันตลอด ต้องเปลี่ยนที่อยู่และพอร์ตตัวอย่างให้ตรงกับแผนของหน้างาน และห้ามใช้ที่อยู่ซ้ำกับอุปกรณ์ที่มีอยู่ เมื่อกำหนดค่ามาสก์และเกตเวย์ ให้ยืนยันว่าจำเป็นต้องเข้าถึงข้ามซับเน็ตหรือไม่ แม้อยู่ในซับเน็ตเดียวกัน VLAN หรือไฟร์วอลล์ก็อาจแยกอุปกรณ์ออกจากกันได้ หลังจากเซิร์ฟเวอร์ตั้งค่าเป็น 4096 แล้ว ไคลเอนต์ก็ต้องเชื่อมต่อไปยัง 4096 ด้วย ไม่ใช่ระบุ 4096 ในขั้นตอนหนึ่ง แล้วระบุ 40080 ในอีกขั้นตอนหนึ่ง บันทึกการกำหนดค่าและตรวจสอบว่ายังคงอยู่หลังรีสตาร์ต ชื่อเมนูที่ใช้จริงขึ้นอยู่กับเฟิร์มแวร์ บทความนี้ไม่ได้ถือว่าทุกรุ่นมีเว็บอินเทอร์เฟซเหมือนกัน

พารามิเตอร์อนุกรมและการเดินสายไฟฟ้ามีความสำคัญเท่ากัน
ตัวอย่างอาจใช้อัตรา 9600 บอด บิตข้อมูลแปดบิต ไม่มีพาริตี และบิตหยุดหนึ่งบิต แต่หากมิเตอร์ต้องการชุดค่าอื่น ต้องปฏิบัติตามคู่มือมิเตอร์ รูปแบบไบต์ที่ไม่ตรงกันจะทำให้เกิดอักขระผิดเพี้ยน ข้อผิดพลาดในการตรวจสอบ หรือไม่มีการตอบสนอง RS232 มักใช้สายส่ง สายรับ และกราวด์อ้างอิง ส่วน RS485 ใช้สายสัญญาณดิฟเฟอเรนเชียล ทั้งสองแบบไม่สามารถนำมาใช้ร่วมกันโดยตรงด้วยหัวแปลงเพียงอย่างเดียวได้ ชื่อขั้วต่อ RS485 อาจต่างกันระหว่างผู้ผลิต จึงควรตรวจสอบนิยาม ไม่ใช่คาดเดาจากตัวอักษร A และ B ยืนยันข้อกำหนดด้านแหล่งจ่ายไฟ การแยกทางไฟฟ้า และการต่อลงดิน หากเกี่ยวข้องกับฟิลด์บัส ให้ดำเนินการภายใต้เงื่อนไขงานบำรุงรักษา การที่ซอฟต์แวร์แสดงว่า “เชื่อมต่อสำเร็จ” พิสูจน์ได้เพียงว่าช่องทาง TCP เชื่อมต่อแล้ว ไม่ได้พิสูจน์ว่าแรงดันสัญญาณอนุกรม พารามิเตอร์ และโพรโทคอลมิเตอร์ถูกต้อง
ทำการทดสอบลูปแบ็กอย่างปลอดภัยและอธิบายผลได้
ขั้นแรก ให้ใช้อุปกรณ์อนุกรมหรือเทอร์มินัลตรวจแก้การสื่อสารอนุกรมที่ทราบว่าใช้งานได้ดีในสภาพแวดล้อมทดสอบแยกต่างหาก เชื่อมต่อกับเซิร์ฟเวอร์และใช้พารามิเตอร์ที่ตรงกัน ไคลเอนต์ส่งชุดไบต์ที่ทราบค่า แล้วฝั่งอนุกรมตรวจสอบเนื้อหาและลำดับ จากนั้นฝั่งอนุกรมส่งชุดไบต์อีกชุดกลับมาให้ไคลเอนต์ตรวจสอบคำตอบ หากใช้การแสดงผลเลขฐานสิบหก ให้ยืนยันว่าสิ่งที่ส่งคือค่าไบต์ ไม่ใช่อักขระข้อความ “0” และ “1” ก่อนเชื่อมต่อกับมิเตอร์จริง ให้ตรวจสอบด้วยคำขอแบบอ่านอย่างเดียวจากคู่มือ เพื่อหลีกเลี่ยงการส่งคำสั่งที่ไม่ทราบความหมายไปยังอุปกรณ์ขับเคลื่อน วิธีทดสอบลูปแบ็ก RS232 และวิธีทดสอบ RS485 แตกต่างกัน อย่าลัดวงจรขั้วต่อบัสโดยพลการ การทดสอบลูปแบ็กช่วยแยกตรวจสอบฝั่งเครือข่ายและฝั่งอนุกรมได้ แต่ไม่สามารถแทนการตรวจรับด้วยโพรโทคอลและภาระงานจริงได้
พอร์ต COM ของซอฟต์แวร์เก่าจะเชื่อมต่อกับเซิร์ฟเวอร์ TCP ได้อย่างไร?
ข้อความต้นฉบับ 2301 เสนอให้ใช้ COM เสมือนเพื่อให้โปรแกรมเก่ายังคงใช้อินเทอร์เฟซอนุกรมได้ แนวคิดนี้มีประโยชน์ แต่ไม่อาจตีความว่ารองรับการทำงานร่วมกับซอฟต์แวร์ทุกตัวได้แบบ 100% COM เสมือนถูกสร้างขึ้นโดยไดรเวอร์คอมพิวเตอร์ให้เป็นพอร์ตภายในเครื่อง แล้วแมปไปยัง IP และพอร์ตรอรับการเชื่อมต่อของบริการบนเซิร์ฟเวอร์อนุกรม เมื่อโปรแกรมเปิด COM ไดรเวอร์จะจัดการการเชื่อมต่อเครือข่ายที่เกี่ยวข้อง โปรแกรมที่ใช้ซ็อกเก็ตได้โดยตรงสามารถเชื่อมต่อกับเซิร์ฟเวอร์ตามโพรโทคอลได้ และไม่จำเป็นต้องมีชั้น COM เสมือนเพิ่มเติม ทั้งสองแนวทางต้องตรวจสอบการถูกใช้งานของพอร์ต พารามิเตอร์ สายควบคุม การกู้คืนหลังการเชื่อมต่อขาด และเวลาตอบสนอง ไม่อาจสรุปว่าสำเร็จเพียงเพราะมีหมายเลข COM ปรากฏขึ้น
อีกวิธีหนึ่งคือให้มิเตอร์ยังคงเชื่อมต่อกับพอร์ตอนุกรมจริงบนคอมพิวเตอร์เครื่องหนึ่ง และให้คอมพิวเตอร์เครื่องนั้นรันบริการแบ่งปันพอร์ตอนุกรมเพื่อให้คอมพิวเตอร์เครื่องอื่นเข้าถึงได้ วิธีนี้ไม่ได้ย้ายพอร์ตอนุกรมทางกายภาพไปยังตำแหน่งระยะไกล เครื่องโฮสต์ที่แบ่งปันพอร์ตต้องเปิดอยู่ บริการต้องทำงาน และสิทธิ์ต้องถูกต้อง เซิร์ฟเวอร์อนุกรมเฉพาะทางช่วยลดการพึ่งพาคอมพิวเตอร์เครื่องนั้น แต่ก็ยังมีเงื่อนไขด้านแหล่งจ่ายไฟ เฟิร์มแวร์ และเครือข่าย เครือข่ายช่วยขยายระยะการติดตั้งใช้งาน แต่ไม่ได้หมายความว่าสายอนุกรมจะยาวได้ไม่จำกัด หรือจังหวะเวลาควบคุมทั้งหมดจะคงเดิมได้อย่างแม่นยำ การรองรับการใช้งานร่วมกันของไคลเอนต์หลายตัวและกลไกจัดสรรสิทธิ์การเข้าถึงยังคงต้องตรวจสอบตามรุ่นและแอปพลิเคชัน
ไคลเอนต์หลายตัว การหมดเวลา และการเชื่อมต่อใหม่ต้องมีกฎที่ชัดเจน
บางรุ่นอนุญาตให้มีไคลเอนต์ TCP หลายตัว ต้องตรวจสอบทั้งหมดว่าคำตอบจากฝั่งอนุกรมถูกกระจายไปยังทุกไคลเอนต์หรือไม่ มีข้อจำกัดในการเขียนหรือไม่ และกลไกจัดสรรสิทธิ์การเข้าถึงทำงานอย่างไร คอมพิวเตอร์หลายเครื่องที่ควบคุมมิเตอร์ RS485 เครื่องเดียวกันพร้อมกันอาจทำให้คำขอปะปนกัน หรือส่งคำตอบไปยังเซสชันที่ผิด ควรให้แอปพลิเคชันโฮสต์เพียงตัวเดียวประสานการเข้าถึง แทนที่จะถือว่าจำนวนการเชื่อมต่อคือความสามารถในการควบคุม หลังเครือข่ายขาดการเชื่อมต่อ โดยทั่วไปไคลเอนต์ต้องตรวจจับ เชื่อมต่อใหม่ และกู้คืนสถานะแอปพลิเคชัน ไม่สามารถตัดสินได้ว่าคำสั่งควบคุมที่ส่งไปก่อนหน้านั้นถูกดำเนินการแล้วหรือไม่จากการกลับมาเชื่อมต่อได้เพียงอย่างเดียว เมื่อออกแบบเวลารอและการลองใหม่ ต้องระวังเป็นพิเศษไม่ให้ดำเนินคำสั่งที่ไม่เป็นไอดิมโพเทนต์ซ้ำ คำว่าไอดิมโพเทนต์หมายถึงคุณสมบัติที่การดำเนินการซ้ำไม่ทำให้ผลลัพธ์เปลี่ยนแปลงเพิ่มเติม
เมื่อใช้งานไม่ได้ ควรตรวจสอบที่ชั้นใด?
หากไคลเอนต์เชื่อมต่อไม่สำเร็จ ให้ตรวจสอบที่อยู่ พอร์ต โหมดรอรับการเชื่อมต่อ นโยบายการเข้าถึง และว่ามีการเชื่อมต่ออื่นใช้งานอยู่หรือไม่ก่อน หากเชื่อมต่อสำเร็จแต่ไม่มีข้อมูลอนุกรม ให้ตรวจสอบการเดินสาย รูปแบบข้อมูล ที่อยู่มิเตอร์ และคำขอตามโพรโทคอล หากมองเห็นข้อมูลแต่แยกวิเคราะห์ไม่ได้ ให้ตรวจสอบค่าไบต์ การเก็บแพ็กเก็ตในบัฟเฟอร์ และเช็กซัม อย่าเปลี่ยนอัตราบอดทันทีโดยหวังว่าจะบังเอิญใช้ได้ อย่าเปิดพอร์ตรอรับการเชื่อมต่อของอุปกรณ์ในระบบผลิตให้เข้าถึงจากเครือข่ายสาธารณะโดยตรง ให้ใช้การควบคุมการเข้าถึงและช่องทางที่ปลอดภัยตามการออกแบบระบบ ตัว TCP เองไม่ได้หมายถึงการเข้ารหัส การตรวจรับครอบคลุมการส่งข้อมูลทั้งสองทิศทาง การเชื่อมต่อใหม่หลังขาดการเชื่อมต่อ การทำงานระยะยาว และงานใช้งานจริง การแยกเรื่องการเชื่อมต่อ การส่งผ่านไบต์ และการเข้าใจโพรโทคอลออกจากกัน ช่วยให้ผู้เริ่มต้นทราบชัดเจนว่าแต่ละขั้นตอนตรวจสอบอะไรจริง ๆ
เอกสารสำหรับตรวจสอบหลักการ:เอกสารทางการ 1;เอกสารทางการ 2. กลไกทั่วไปและตัวอย่างในบทความนี้ไม่สามารถใช้แทนคู่มือของรุ่นที่เกี่ยวข้องได้
แปลจากบทความเทคนิคภาษาจีน เผยแพร่ต้นฉบับครั้งแรก: 2022-11-29 แก้ไขต้นฉบับล่าสุด: 2026-10-13T19:15:07+08:00. อ่านต้นฉบับภาษาจีน


