บทนำอินเทอร์เฟซ RS485
RS485 เป็นมาตรฐานอินเทอร์เฟซการสื่อสารแบบอนุกรมที่มีชื่อเสียงในด้านความเร็วสูง การส่งข้อมูลระยะไกล- การต้านทานการรบกวน และความสามารถในการแบ่งปันอุปกรณ์หลาย- พบการใช้งานอย่างกว้างขวางในระบบอัตโนมัติทางอุตสาหกรรม บ้านอัจฉริยะ ระบบรักษาความปลอดภัย และสาขาอื่นๆ บทความนี้จะให้ภาพรวมโดยละเอียดเกี่ยวกับหลักการของอินเทอร์เฟซ RS485 การออกแบบวงจร โปรโตคอลการสื่อสาร และวิธีแก้ไขปัญหาทั่วไป
หลักการ RS485
อินเทอร์เฟซ RS485 ใช้การส่งสัญญาณแบบดิฟเฟอเรนเชียล โดยใช้สายสัญญาณสองเส้น (A และ B) เพื่อส่งสัญญาณระดับแรงดันไฟฟ้า ขนาดของสัญญาณขึ้นอยู่กับความต่างศักย์ไฟฟ้าระหว่างสองบรรทัดนี้ ในอินเทอร์เฟซ RS485 ทั้งสายสัญญาณ A และ B สามารถทำหน้าที่เป็นตัวส่งหรือตัวรับได้ วิธีการส่งข้อมูลแบบดิฟเฟอเรนเชียลนี้ช่วยให้อินเทอร์เฟซ RS485 สามารถต้านทานสัญญาณรบกวนและการรบกวนจากภายนอกได้อย่างมีประสิทธิภาพ จึงรับประกันคุณภาพการส่งสัญญาณ
เขตข้อมูลแอปพลิเคชัน RS485
อินเทอร์เฟซ RS485 ใช้กันอย่างแพร่หลายในสถานการณ์ที่ต้องการ-ระยะไกล ความเร็วสูง- และการส่งข้อมูลที่เสถียร เช่น ระบบอัตโนมัติทางอุตสาหกรรม บ้านอัจฉริยะ และระบบรักษาความปลอดภัย ในแง่ของระยะการส่งข้อมูล RS485 รองรับสูงสุด 1200 เมตร และในแง่ของความเร็วในการส่งข้อมูล รองรับสูงสุด 10Mbps ทำให้อินเทอร์เฟซ RS485 ใช้งานได้อย่างกว้างขวางในสถานการณ์ที่เกี่ยวข้องกับการรับข้อมูล การควบคุม การตรวจสอบ และการควบคุม

การออกแบบวงจร RS485
การออกแบบวงจรสำหรับอินเทอร์เฟซ RS485 จำเป็นต้องพิจารณาปัจจัยหลายประการ เช่น ระยะการส่งข้อมูล ความเร็วการสื่อสาร การป้องกันฟ้าผ่า และการแยกส่วน ด้านล่างนี้เราจะแนะนำการออกแบบวงจรสำหรับอินเทอร์เฟซ RS485 จากแต่ละด้านเหล่านี้
ระยะการส่งข้อมูล
เนื่องจากการส่งผ่านแบบดิฟเฟอเรนเชียล อินเทอร์เฟซ RS485 จึงรองรับระยะการส่งข้อมูลที่ยาวขึ้น อย่างไรก็ตาม ในการใช้งานจริง ปัจจัยต่างๆ เช่น อิมพีแดนซ์ของสายส่ง ครอสทอล์ค และคุณภาพของสัญญาณ ทำให้เกิดข้อจำกัดเกี่ยวกับช่วงการส่งสัญญาณ เพื่อลดการสูญเสียและการบิดเบือนของสัญญาณ โดยทั่วไปเราแนะนำให้จำกัดระยะการส่งข้อมูลให้อยู่ภายใน 1.2 กม. เมื่อออกแบบวงจรอินเทอร์เฟซ RS485
ความเร็วในการสื่อสาร
อินเทอร์เฟซ RS485 สามารถบรรลุความเร็วในการสื่อสารสูงสุด 10Mbps ในการใช้งานจริง โดยทั่วไปเราจะเลือกอัตราการสื่อสารที่เหมาะสมตามเงื่อนไขเฉพาะ ความเร็วในการสื่อสารที่สูงขึ้นจะช่วยเพิ่มประสิทธิภาพในการรับส่งข้อมูล แต่ยังเพิ่มความซับซ้อนและความต้องการทางเทคนิคของวงจรอินเทอร์เฟซอีกด้วย
ป้องกันฟ้าผ่า
เนื่องจากสภาพแวดล้อมทางอุตสาหกรรมที่ซับซ้อน อินเทอร์เฟซ RS485 มักเผชิญกับการรบกวนต่างๆ เช่น ฟ้าผ่า ไฟฟ้าสถิต และไฟกระชาก เพื่อปกป้องวงจรอินเทอร์เฟซ RS485 มาตรการป้องกันฟ้าผ่าจึงมีความจำเป็น สามารถใช้ส่วนประกอบต่างๆ เช่น ตัวป้องกันแรงดันไฟฟ้าเกินแบบปรับได้และวาริสเตอร์ของโลหะออกไซด์ (MOV) เพื่อให้สามารถป้องกันฟ้าผ่าได้
การแยกตัว
ในบางสถานการณ์ จำเป็นต้องมีการแยกระหว่างอินเทอร์เฟซ RS485 และวงจรอื่นๆ ซึ่งสามารถทำได้โดยใช้ส่วนประกอบต่างๆ เช่น ออปโตคัปเปลอร์หรือข้อต่อแม่เหล็กเพื่อแยกสัญญาณ วิธีนี้จะช่วยป้องกันกราวด์ลูปที่อาจเกิดขึ้นและการรบกวนทางเสียงได้อย่างมีประสิทธิภาพ เพิ่มความน่าเชื่อถือและความเสถียรของวงจรอินเทอร์เฟซ
โปรโตคอลการสื่อสาร RS485
ในการใช้งานจริง อินเทอร์เฟซ RS485 ยังต้องมีข้อกำหนดเฉพาะของโปรโตคอลและการจัดรูปแบบข้อมูลอีกด้วย โปรโตคอลการสื่อสาร RS485 ทั่วไป ได้แก่ Modbus, Profibus และ CANopen แต่ละโปรโตคอลมีคุณสมบัติที่แตกต่างกันและสถานการณ์ที่เกี่ยวข้อง ช่วยให้สามารถเลือกตามความต้องการเฉพาะได้ ด้านล่างนี้ เราจะแนะนำโปรโตคอล Modbus RTU เป็นหลัก ซึ่งเป็นโปรโตคอลการรับส่งข้อมูลที่ใช้กันอย่างแพร่หลายที่สุดในโปรเจ็กต์ของเราที่ใช้อินเทอร์เฟซ RS485
ข้อมูลเบื้องต้นเกี่ยวกับ Modbus RTU
Modbus RTU เป็นโปรโตคอลการสื่อสารทางอุตสาหกรรมที่ได้รับการยอมรับอย่างกว้างขวาง ซึ่งเป็นหนึ่งในโปรโตคอลการสื่อสารแบบอนุกรมที่ใช้กรอบงาน Modbus โปรโตคอลนี้ใช้สำหรับการสื่อสารแบบอนุกรมระหว่างอุปกรณ์ต่างๆ เช่น ตัวควบคุม PLC เซ็นเซอร์ และแอคชูเอเตอร์เป็นหลัก ซึ่งอำนวยความสะดวกในการแลกเปลี่ยนข้อมูล บทความนี้ให้รายละเอียดเกี่ยวกับความหมายเฉพาะของแต่ละรีจิสเตอร์ภายในโปรโตคอล Modbus RTU ให้ตัวอย่างการรับส่งข้อมูลสำหรับโค้ดฟังก์ชันแต่ละโค้ด และเน้นย้ำผลรวมตรวจสอบ CRC ที่สำคัญ
รูปแบบข้อมูลโปรโตคอล Modbus RTU
โปรโตคอล Modbus RTU ใช้การสื่อสารแบบอนุกรมสำหรับการส่งข้อมูล
โดยเฉพาะ:
ฟิลด์ที่อยู่ระบุที่อยู่อุปกรณ์ทาสในการสื่อสาร ซึ่งสามารถเป็นค่าใดก็ได้ระหว่าง 0 ถึง 247
รหัสฟังก์ชันระบุชนิดข้อมูลและทิศทางการอ่าน/เขียน โดยทั่วไปจะเป็นจำนวนเต็มระหว่าง 1 ถึง 127
ฟิลด์ข้อมูลประกอบด้วยเนื้อหาข้อมูลจริง
Checksum (CRC) จะตรวจสอบความสมบูรณ์ของแพ็กเก็ตข้อมูล
รหัสฟังก์ชันโปรโตคอล Modbus RTU
ในโปรโตคอล Modbus RTU รหัสฟังก์ชันที่แตกต่างกันแสดงถึงประเภทข้อมูลที่แตกต่างกันและทิศทางการอ่าน/เขียน ด้านล่างนี้คือโค้ดฟังก์ชันที่ใช้กันทั่วไปและความหมาย:
01: อ่านคอยล์รีจิสเตอร์
02: อ่านการลงทะเบียนอินพุตแบบไม่ต่อเนื่อง
03: อ่านการลงทะเบียนค้างไว้
04: อ่านการลงทะเบียนอินพุต
05: เขียนการลงทะเบียนคอยล์เดี่ยว
06: เขียนการลงทะเบียนการพักครั้งเดียว
15: เขียนรีจิสเตอร์คอยล์หลายตัว
16: เขียนรีจิสเตอร์ค้างหลายรายการ
การลงทะเบียนที่อยู่โปรโตคอล Modbus RTU
ที่อยู่อุปกรณ์และที่อยู่การลงทะเบียนเป็นพารามิเตอร์ที่สำคัญสำหรับการสื่อสารในโปรโตคอล Modbus RTU การลงทะเบียนที่อยู่สามารถแบ่งได้เป็นสี่ประเภทดังต่อไปนี้:
คอยล์รีจิสเตอร์ (คอยล์รีจิสเตอร์)
คอยล์รีจิสเตอร์เก็บค่าบูลีน (0 หรือ 1) รหัสฟังก์ชัน 01, 05 และ 15 ได้รับอนุญาตให้ใช้งานกับรีจิสเตอร์คอยล์ สถานะของคอยล์แต่ละอันสามารถแสดงด้วยบิตไบนารี่เดียว
ตัวอย่างเช่น หากคอยล์ที่บิต 0x0001 ถูกตั้งค่าเป็น 0 ค่าไบนารีของมันจะเป็น 00000000 00000001. หากคอยล์ถูกตั้งค่าเป็น 1 ค่าไบนารีของมันจะเปลี่ยนเป็น 00000000 00000010.
การลงทะเบียนอินพุตแบบไม่ต่อเนื่อง
รีจิสเตอร์อินพุตแบบแยกจะจัดเก็บค่าของสวิตช์อินพุตแบบไบนารีและอ่านได้-เท่านั้น โดยมีโค้ดฟังก์ชันที่เกี่ยวข้องกันคือ 02 ความแตกต่างระหว่างรีจิสเตอร์อินพุตแบบแยกและรีจิสเตอร์คอยล์ก็คือ ระบุว่าสวิตช์อยู่ในสถานะเปิดหรือไม่ แทนที่จะเป็นสถานะปัจจุบัน
ถือทะเบียน
Holding Register เก็บตัวแปรจำนวนเต็ม 32 บิต รหัสฟังก์ชัน 03, 04, 06 และ 16 อนุญาตให้อ่าน/เขียนบน Holding Register ค่าภายใน Holding Register สามารถอำนวยความสะดวกในการถ่ายโอนข้อมูลระหว่างอุปกรณ์หรือปรับแต่งโดยผู้ใช้เป็นพารามิเตอร์ควบคุมที่เกี่ยวข้อง
ป้อนข้อมูลลงทะเบียน
รีจิสเตอร์อินพุตจะจัดเก็บตัวแปรจำนวนเต็ม 32- บิต และรองรับการดำเนินการอ่านอย่างเดียวด้วยโค้ดฟังก์ชัน 04 เช่นเดียวกับการเก็บรีจิสเตอร์ ค่าในรีจิสเตอร์อินพุตสามารถถ่ายโอนระหว่างอุปกรณ์ได้ แต่ผู้ใช้ไม่สามารถแก้ไขได้
ตรวจสอบ CRC โปรโตคอล Modbus RTU
เพื่อให้มั่นใจในความน่าเชื่อถือของการสื่อสารโปรโตคอล Modbus RTU โปรโตคอลนี้ใช้วิธีการตรวจสอบความซ้ำซ้อนแบบวนซ้ำ (CRC) เพื่อตรวจสอบความสมบูรณ์ของแพ็กเก็ตข้อมูล รหัสตรวจสอบ CRC คำนวณตามแพ็กเก็ตข้อมูลที่ส่งและรับ และได้รับการตรวจสอบพร้อมกันทั้งที่ปลายทางการส่งและรับ
จากตัวอย่างการลงทะเบียนการอ่านค้างไว้ (รหัสฟังก์ชัน: 03) ค่าเลขฐานสิบหกของการตรวจสอบ CRC สำหรับแพ็กเก็ตข้อมูลที่ส่งและรับคือ 0x39 และ 0x3E ตามลำดับ แพ็กเก็ตข้อมูลที่ส่งและรับเฉพาะมีดังนี้:
ตัวส่ง-แพ็กเก็ตข้อมูลที่ส่ง: 01 03 00 00 00 01 C4 0B
ในแพ็กเก็ตนี้ 6 บิตแรก (01 03 00 00 00 01) แสดงถึงรูปแบบโปรโตคอล Modbus RTU ในขณะที่สองบิตสุดท้าย (C4 และ 0B) ถือเป็นผลรวมตรวจสอบ CRC
แพ็คเก็ตที่ได้รับที่ผู้รับ: 01 03 02 00 01 39 3E
ในแพ็กเก็ตข้อมูลนี้ 6 บิตแรก 01 03 02 00 01 39 แสดงถึงค่ารีจิสเตอร์การถือครองที่ได้รับ (สองไบต์) ในขณะที่สองบิตสุดท้าย 3E และ 39 คือผลรวมตรวจสอบ CRC ที่คำนวณได้
ตัวอย่างการส่งโปรโตคอล Modbus RTU
ต่อไปนี้เป็นตัวอย่างการส่งผ่านโปรโตคอล Modbus RTU อย่างง่ายสำหรับการอ่านข้อมูลจากการลงทะเบียนการถือครองของอุปกรณ์:
เครื่องส่งส่ง: 01 03 00 00 00 02 C5 9A
ผู้รับได้รับ: 01 03 04 00 00 00 66 CB
ตัวอย่างนี้อ่านรีจิสเตอร์การระงับของอุปกรณ์ 01 โดยใช้โค้ดฟังก์ชัน 03 เพื่อเข้าถึงไบต์ 2 ไบต์ที่ที่อยู่รีจิสเตอร์ 0x0000 ดังนั้นแพ็กเก็ตข้อมูลที่ได้รับจึงมีค่า 0x0000 และ 0x0000 เช่น 0x0000 0000 ซึ่งแสดงเป็นเลขฐานสิบหกเป็น 0x66CB
บทสรุป
บทความนี้ครอบคลุมถึงหลักการ การใช้งาน การออกแบบวงจร โปรโตคอลการสื่อสาร และวิธีแก้ปัญหาสำหรับอินเทอร์เฟซ RS485 เป็นหลัก อินเทอร์เฟซ RS485 ใช้งานได้อย่างกว้างขวางในระบบอัตโนมัติทางอุตสาหกรรม บ้านอัจฉริยะ ระบบรักษาความปลอดภัย และสาขาอื่นๆ อย่างไรก็ตาม ปัจจัยต่างๆ เช่น ระยะการส่งข้อมูล ความเร็วการสื่อสาร การป้องกันฟ้าผ่า และการแยกส่วน จะต้องได้รับการพิจารณาเพื่อให้มั่นใจในความน่าเชื่อถือและความเสถียรของวงจรอินเทอร์เฟซ มีการแนะนำความรู้พื้นฐานเกี่ยวกับโปรโตคอล Modbus RTU รวมถึงรูปแบบข้อมูล รหัสฟังก์ชัน รีจิสเตอร์ที่อยู่ และการตรวจสอบ CRC ในการใช้งานจริง โปรโตคอล Modbus RTU ถูกนำมาใช้อย่างกว้างขวางเพื่อการสื่อสารระหว่างอุปกรณ์ภายในระบบควบคุมอัตโนมัติทางอุตสาหกรรม เมื่ออ่านข้อมูล จะต้องให้ความสนใจเป็นพิเศษในการเลือกที่อยู่อุปกรณ์ ที่อยู่การลงทะเบียน และรหัสฟังก์ชัน




