ค้นคว้าเรื่อง RS485

 

                                           เทคนิคการอินเตอเฟส

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20 มค​ 2564 วิชา​ เทคนิคการอินเตอเฟส

นางสาวภิภาวดี ธรรมสอน เลขที่​ 1 กลุ่ม​ 3

                                                       20 มค 64 หัวข้อการเรียน มาตรฐาน RS485

ค้นคว้าเรื่อง RS485

RS485 (ย่อมาจาก: Recommended Standard no. 485) คือมาตรฐานการสื่อสารข้อมูล

ดิจิตอลแบบอนุกรม (serial communication) ซึ่งถูกก าหนดขึ้นครั้งแรกในปี ค.ศ. 1998 โดยความ

ร่วมมือของ TIA (Telecommunications Industry Association) และ EIA (Electronic

Industries Association) มาตรฐาน RS485 ถูกใช้อย่างแพร่หลายในโรงงานอุตสาหกรรม เนื่องจาก

สามารถส่งสัญญาณได้ไกลและยังสามารถส่งพร้อม ๆ กันได้หลายจุด ปกติแล้ว EIA จะตั้งชื่อมาตรฐาน

ของตัวเองโดยการใช้ค าน าหน้าว่า "RS" (Recommended Standard) แต่เนื่องจากมาตรฐานนี้เป็น

ความร่วมมือระหว่าง 2 หน่วยงาน คือ TIA และ EIA ทั้งสองหน่วยงานจึงตกลงเปลี่ยนจากค าว่า "RS"

เป็น "TIA/EIA" แทนอย่างเป็นทางการ เพื่อระบุถึงแหล่งที่มาของมาตรฐานอย่างชัดเจน โดยต่อมาทาง

EIA ก็ได้ยกเลิกมาตรฐานนี้และมาตรฐาน RS485 นี้ก็ได้ถูกพัฒนาอย่างต่อเนื่องจนถึงปัจจุบันโดย TIA

ท าให้มาตรฐาน RS485 ถูกเปลี่ยนชื่อเป็น "TIA-485" อย่างเป็นทางการ แต่สุดท้ายเพราะความเคย

ชินท าให้วิศวกรทั่วโลกยังเรียกมาตรฐานการสื่อสารนี้ว่า RS485 เหมือนเดิม

2. หลักการทำงาน

มาตรฐาน RS485 เป็นมาตรฐานที่รับ/ส่งข้อมูลในแบบที่เรียกว่า Half duplex คือสามารถ

รับและส่งข้อมูลได้ทีละอย่างเท่านั้นไม่สามารถท าทั้งสองอย่างได้ในเวลาเดียวกัน ถ้าจะให้พูดแล้วเห็น

ภาพก็คงคล้ายๆลักษณะของวิทยุสื่อสารที่ต้องคอยสลับกันพูดทีละครั้ง

ส าหรับการรับ/ส่งข้อมูลดิจิตอลแบบ RS485 นั้น จะส่งข้อมูลโดยใช้สายไฟเพียงแค่ 2 เส้นคือ A และ 
B เป็นตัวบอกค่ารหัสดิจิตอล(Digital code) โดยใช้ความแตกต่างของแรงดันไฟฟ้าระหว่างขั้ว A และ 
B เป็นตัวบอกดังนี้
• เมื่อ V
a - Vb ได้แรงดันไฟฟ้าน้อยกว่า -200 mV คือสัญญาณดิจิตอลเป็น 1
• เมื่อ Va - Vb ได้แรงดันไฟฟ้ามากกว่า +200 mV คือสัญญาณดิจิตอลเป็น 0
หลักการทำางานของ RS485 แบบ NETWORK
มาตรฐาน RS485 สามารถเชื่อมต่อการรับส่งข้อมูลแบบเครือข่าย (Network) โดยมีอุปกรณ์
ในเครือข่ายได้สูงสุดถึง 32 ตัว ซึ่งในเครือข่ายนั้น จะต้องมีอุปกรณ์อยู่ 1 ตัว ทำหน้าที่คอยจัดคิวการ
สื่อสารในเครือข่าย ซึ่งเราจะเรียกอุปกรณ์ตัวนี้ว่า "Master" และอุปกรณ์ส่วนที่เหลือเราจะ
เรียกว่า "Slave" โดยที่ Slave แต่ละตัวจะมีหมายเลข Address ของตัวเอง และเมื่อตัว Master ต้อง
การสั้งการตัว Slave ตัว Master จะส่งชุดค าสั่งพร้อมระบุหมายเลข Address ไปยังอุปกรณ์ Slave
ทุกตัว เมื่ออุปกรณ์ Slave ได้รับค าสั่งและค าสั่งนั้นมีหมายเลข Address ตรงกับตัวเอง อุปกรณ์

3. ข้อดีของมาตรฐาน

ข้อดีของสัญญาณ RS485

RS485 เป็นมาตรฐานที่ถูกพัฒนาขึ้นมาเพื่อลบจุดด้อยของมาตรฐานรุ่นเก่าๆ

อย่าง RS232 RS422 RS423 เป็นต้น ซึ่งข้อดีหลักๆของมาตรฐาน RS485 มีดังนี้

สามารถส่งสัญญาณได้ไกล

RS485 สามารถส่งสัญญาณได้ไกลสูงสุดถึง 1,200 เมตร ซึ่งถือว่าเป็นระยะทางที่ไกลมาก

เพียงพอต่อการใช้งานในโรงงานอุตสาหกรรมอย่างแน่นอนและจะเห็นได้ชัดว่าระยะการส่งสัญญาณได้

ถูกพัฒนาขึ้นมากจนทิ้งห่างมาตรฐานรุ่นเก่าอย่าง RS232 ที่สามารถส่งสัญญาณได้เพียง 15 เมตร

เท่านั้น

สามารถเชื่อมต่อเป็นเครือข่ายได้

นอกจากจะส่งสัญญาณได้ไกลแล้ว RS485 ยังสามารถเชื่อมต่อเป็นเครือข่าย (Network)

แบบ Multipoint ได้ด้วย ซึ่งสามารถเชื่อมต่ออุปกรณ์ในระบบได้สูงสุดถึง 32 ตัว ซึ่งสิ่งนี้ถือว่าเป็น

อีกหนึ่งจุดเด่นของสัญญาณ RS485 เลยทีเดียว

ประหยัดงบประมาณในการเดินสาย

มาตรฐาน RS485 เป็นมาตรฐานที่ใช้สายไฟเพียง 2 เส้นในการรับส่งข้อมูล เมื่อเปรียบเทียบกับ

มาตรฐานรุ่นเก่าที่สามารถส่งสัญญาณในระยะเท่ากันอย่าง RS422 ที่ต้องใช้สายไฟถึง 4 เส้นในการ

รับส่งข้อมูล ซึ่งราคาสายเคเบิลแบบ 2 แกน จะถูกกว่าสายเคเบิลแบบ 4 แกน ถึงเกือบครึ่ง ในความ

เป็นจริงแล้วเรื่องงบประมาณถือเป็นเรื่องส าคัญมากๆ ซึ่งนี่ถือเป็นอีกหนึ่งจุดเด่นของ RS485 เลย

ทีเดียว

4. ข้อจำกัดของมาตรฐาน RS-485

RS485 จะเป็นมาตรฐานที่ถูกพัฒนาขึ้นจนลบข้อด้อยที่มีอยู่ในมาตรฐานเก่าๆไปมากแล้วก็ตามแต่ก็ไม่ใช่ว่าจะไม่มีข้อเสียอยู่เลย โดยข้อเสียหลักๆของ RS485 มีดังนี้

ต้องใช้ตัวแปลงสัญญาณในการเชื่อมต่อกับคอมพิวเตอร์

เนื่องจากปัจจุบันคอมพิวเตอร์ที่เราใช้กันอยู่นั้นไม่มี port เชื่อมต่อสัญญาณ RS485 โดยตรง

จะมีก็แต่ USB หรือ RS232 เท่านั้น ฉนั้นหากเราจะเชื่อมต่ออุปกรณ์ที่ใช้ RS485 กับคอมพิวเตอร์นั้น

เราต้องเสียงบประมาณเพิ่มขึ้นในการซื้อตัวแปลงสัญญาณ (Converter) เพื่อแปลงสัญญาณจาก

RS485 เป็น USB หรือ RS232 ในการเชื่อมต่อนั้นเอง

ความเร็วในการรับส่งข้อมูล

RS485 wfhพัฒนาด้านความเร็วในการรับส่งข้อมูลขึ้นมากแล้วก็ตามเมื่อเทียบกับมาตรฐาน

เก่า แต่ก็ยังมีความล่าช้าอยู่เมื่อเชื่อมต่อในลักษณะเครือข่ายจำนวนมาก ๆ

6. แนะนำวงจรเชื่อมต่อตามมาตรฐาน RS-485

การต่อสาย RS485 แบบ Point –to-Point

การต่อสาย RS485 แบบขนาน




7.ชื่อและหน้าที่ขาสัญญาณ​ของ​ IC​ RS485​
IC MAX3082


8.การต่อวงตร​ RS485​ ร่วมกับ​ arduino
ตัวอย่างการใช้งาน Arduino ผ่านการสื่อสารรูปแบบ RS485
ตัวอย่างการใช้งาน Arduino ผ่านการสื่อสารรูปแบบ RS485 

           วันนี้ผมจะมาทดลองใช้ Arduino รับ-ส่ง ข้อมูลผ่านช่องทาง RS485 ซึ่งสามารถรับส่งข้อมูลใด้มากกว่า 1 อุปกรณ์โดยใช้ Notebook ของผมเป็นอุปกรณ์ Master และ ใช้บอร์ด Arduino Mega เป็น Slave จำนวนสองบอร์ด โดยต่อรวมกับ Module Relay 4 Channel
+5V Vcc
ขา 22 IN1
ขา 24 IN2
ขา 26 IN3
ขา 28 IN3
GND GND

2. ทำการต่อวงจร Arduino Mega2560 กับ UART TTL To RS485

Arduino Mega2560 UART TTL To RS485
5V Vcc
TX TXD
RX RXD
GND GND
3. การต่อใช้งาน RS485 ต่อสาย A และ B ตามรูป


นำสาย A ของ RS485 ของแต่ละฝั่งมาต่อร่วมกัน
นำสาย B ของ RS485 ของแต่ละฝั่งมาต่อร่วมกัน



4. ตัวอย่างโปรแกรมดังนี้

สำคัญ
Arduino Mega2560 ของ Station0 เปลี่ยนตัวแปร Station = '0' ;
Arduino Mega2560 ของ Station1 เปลี่ยนตัวแปร Station = '1' ;

//----------------------------------------------------------------------------------------------------------------------------
/*
  ประยุกต์ใช้ตัวอย่าง Serial Event ใน Arduino IDE
  ขอบคุณตัวอย่าง Serial Event จากคุณ #Tom Igoe
*/
int output[] = {22,24,26,28};
// Protocol @SXXXX\n ---> X = 0 or 1 , S = Station , \n = Newline
char Station = '0' ;
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
void setup() 
{
  Serial.begin(9600);
  inputString.reserve(200);
  for(int n = 0 ; n<= 3 ; n++)
  {
    pinMode(output[n],OUTPUT);
    digitalWrite(output[n],HIGH);  
  }
}
void loop() {
  
  if (stringComplete) 
  {
    //Protocol @SXXXX\n ---> X
    if((inputString.charAt(0)=='@')&&((inputString.charAt(1)==Station)))
    {
              
        Serial.println("Station " + String(Station) + " Config Relay ");
        digitalWrite(output[0],(inputString.charAt(2) == '1')? LOW : HIGH);
        digitalWrite(output[1],(inputString.charAt(3) == '1')? LOW : HIGH);
        digitalWrite(output[2],(inputString.charAt(4) == '1')? LOW : HIGH);
        digitalWrite(output[3],(inputString.charAt(5) == '1')? LOW : HIGH);     
        for(int n = 0 ; n <= 3 ; n++)
        {
          Serial.print((digitalRead(output[n])==LOW)? "ON " : "OFF ");
        }    
          Serial.println();
    }
       
    inputString = "";
    stringComplete = false;
    Serial.flush();
  }
}
void serialEvent() {
  
  while (Serial.available()) 
  {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') 
    {
      stringComplete = true;
    }
  }
}
//----------------------------------------------------------------------------------------------------------------------------

5. เปิดโปรแกรม Hercules เชื่อมต่อ USB to RS485 ดังรูป

จากนั้น พิมพ์ @11111 แล้วกดปุ่ม Send จากนั้น Arduino Mega2560 Station1 จะส่งข้อมูลกลับมายังโปรแกรม คือ Station 1 ตั้งค่า Relay ON ON ON ON คือ สถานะของ Relay ตัว 1 ถึงตัวที่ 4

ซึ่งรูปแบบในการรับส่งข้อมูล จากโค้ดผมใด้กำหนดใว้ดังนี้ คือ

@SBBBB

@ คือ ตัวแรกคือ Header ของข้อมูลเพื่อเช็คความถูกต้อง
S คือ Station ของอุปกรณ์ ซึ่งในที่นี้คือ Arduino Mega2560 ซึ่งเลข ที่ใช้ใด้ คือ 0-9 สำหรับโปรแกรมนี้

BBBB คือ ข้อมูลในการควบคุม Relay 4 Channel ซึ่งใช้ค่า 0 หรือ 1 แทนสถานะ 
         B ตัวแรก คือ ค่าที่ใช้สั่งการ Relay Channel 1 ใส่ค่า 1 หรือ 0
         B ตัวสอง คือ ค่าที่ใช้สั่งการ Relay Channel 2 ใส่ค่า 1 หรือ 0
         B ตัวสาม คือ ค่าที่ใช้สั่งการ Relay Channel 3 ใส่ค่า 1 หรือ 0
         B ตัวสี่ คือ ค่าที่ใช้สั่งการ Relay Channel 4 ใส่ค่า 1 หรือ 0
คือเว้นบรรทัด ใช้เช็คการจบข้อความ 

6. ผลลัพธ์ที่ใด้จากการส่งข้อมูล

7. ลองส่งค่า @01111 แล้วใด้ผลลัพท์ดังนี้ 


8. ทาง Arduino Mega2560 ใด้ผลลัพท์ ดังรูป


9. พิมข้อความ @00000 ส่งแล้วตามด้วย@10000 


10. จะเห็นใด้ว่า Relay ทั้ง Station1 และ Station2 OFF ทุก Channel 
เป็นที่เรียบร้อยครับสำหรับตัวอย่างการใช้งาน RS485 กับ Arduino หวังว่าจะเป็นประโยชน์แก่ผู้อื่นไม่มากก็น้อยนะครับ ผมขอจบบทความไว้เพียงเท่านี้ครับ ขอบคุณครับ








ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

SPI

6. ระบบเครือข่ายคอมพิวเตอร์