RS-485 หรือที่รู้จักในชื่อ TIA-485(-A) หรือ EIA-485 เป็นมาตรฐานการสื่อสารแบบดิจิทัลที่ใช้งานกันอย่างแพร่หลายในงานอุตสาหกรรม โดยการสื่อสารสามารถ รับ/ส่ง ได้ในระยะทางที่ไกลถึง 1200 เมตร Data rate ก็มากถึง 50Mbps และเชื่อมต่อกันได้หลายตัวด้วยการต่ออนุกรมกันตั้งแต่ 2 ตัวไปจนถึงหลัก 256 ตัว หรือมากกว่านั้นแล้วแต่คุณสมบัติของ IC และระบบ สามารถ Support ระบบไฟเลี้ยงได้ทั้ง 5V และ 3.3V การสื่อสาร RS-485 ไม่ใช่ Protocol จึงมีการนำ Protocol มาใช้งานบนการสื่อสาร RS-485 เช่น Modbus เป็นต้น รูปข้างล่างคือกราฟเปรียบเทียบความยาวสายเคเบิล vs Data rate กับมาตรฐานการสื่อสารอื่นๆ
Network Topology
การเชื่อมต่อ RS-485 นั้นมีหลากหลายแบบ แต่ละแบบก็มีข้อดีข้อเสีย ควรเลือกใช้งานตามความเหมาะสม แต่จะแนะนำให้ต่อแบบ Daisy chain จะดีที่สุด คือการต่อเรียงเข้าไปอุปกรณ์ทีละตัวดังรูปข้างล่าง
Full-Duplex and Half-Duplex
การสื่อสาร RS-485 นั้นจะต้องมีตัว Master 1 ตัวดังรูป คือตัวที่ Highlight สีแดง ส่วนตัวที่เหลือจะเรียกว่า Slave ในรูปฝั่งซ้ายคือการต่อแบบ Full-Duplex ส่วนฝั่งขวาคือการต่อแบบ Half-Duplex
- Full-Duplex จะมีสายสื่อสาร 2 คู่ แบ่งเป็นฝั่งรับ และฝั่งส่ง
- Half-Duplex จะมีสายสื่อสาร 1 คู่ รับ/ส่ง กันในคู่เดียวกัน โดยปกติแล้ว Half-Duplex จะต้องการสัญญาณ Enable ที่ IC เพื่อควบคุมการ รับ/ส่ง ข้อมูล
Signal Levels
ปกติแล้วสัญญาณ RS-485 จะเป็นแบบคู่หรือเรียกว่าสัญญาณ Differential โดยจะนิยามเป็น D+/D- หรืออาจเรียกเป็น
- D+ หรือ TX+/RX+ อาจใช้ตัวย่อว่า B
- D− หรือ TX−/RX− อาจใช้ตัวย่อว่า A
สำหรับฝั่งส่งจะมีขั้นต่ำผลต่างแรงดันที่ 1.5V ที่ Load 54Ω
ส่วนฝั่งรับจะมีผลต่างแรงดันที่ 200mV คือถ้า Vb-Va มากกว่า +200mV Ouput ก็จะได้เป็น Logic High หรือ 1 ถ้า Vb-Va น้อยกว่า -200mV Ouput ก็จะได้เป็น Logic Low หรือ 0
Terminations
โดยทั่วไปแล้วสัญญาณควรมี Terminating resistor 120Ω ที่ 2 ฝั่งหัว-ท้าย ดังในรูปด้านซ้าย เพื่อลดทอนสัญญาณสะท้อนกลับ สำหรับการใช้งานในสภาพแวดล้อมที่มีสัญญาณรบกวนมาก ขอแนะนำให้แยก Terminating resistor เป็น 60Ω 1% จำนวน 2 ตัวแล้วใส่ Capacitor คั่นกลางดังรูปด้านขวา จะลดทอนสัญญาณได้ดีกว่า
Failsafe
ถ้าหากว่าแรงดันอยู่ระหว่าง -200mV ถึง 200mV ฝั่งรับจะไม่สามารถระบุได้ว่า Output จะออกเป็น 0 หรือ 1 ซึ่งอาจเกิดจาก
- ฝั่งส่งไม่ทำงาน อยู่ในสถานะ Shutdown
- ฝั่งรับไม่ได้ต่อเข้ามาในระบบ
- สายเคเบิลขาด
- สายเคเบิลช็อตกัน
ซึ่งการแก้ไขตรงนี้ก็คือต่อ Pull-up resistor ที่ D+ และ Pull-down resistor ที่ D- เพื่อให้สัญญาณฝั่งรับอยู่ในสถานะที่ระบุ Output ได้
ตัวอย่างวงจร RS-485
โดยทั่วไปจะใช้ UART ในการคุยกับ RS-485 Interface IC วงจรในรูปจะเป็น RS-485 Half-Duplex แบบ Isolate และ A เป็น D+, B เป็น D-
References
- https://en.wikipedia.org/wiki/RS-485
- https://web.archive.org/web/20180517101401/http://www.ti.com/lit/sg/slyt484a/slyt484a.pdf
- https://www.ti.com/lit/an/slla272d/slla272d.pdf
- https://www.ti.com/lit/an/slla036d/slla036d.pdf
- https://www.ti.com/lit/an/slla166/slla166.pdf
- https://www.ti.com/lit/an/slla070d/slla070d.pdf
- https://www.analog.com/en/technical-articles/rs485-cable-specification-guide–maxim-integrated.html