มาทำความรู้จัก RS-485 กันเถอะ

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-