帶你認識物聯網基礎 Serial 通訊 (三) -- RS232/RS485 篇

閱讀時間約 6 分鐘

Let's learn serial communication


UART 距離不夠

在上一篇的時候我們聊到 Parallel 轉 Serial 的 UART 篇的時候你可能有注意到有提過已經從 UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了。

使用 9600 Baudrate 的 UART Serial 訊號傳輸距離只有 1 米!

RS232/RS485 來湊

電訊號的通訊距離會跟它的 BaudRate 的大小成反比,想要訊號傳得遠就要降低 BaudRate 的設定;Baudrate 也跟傳輸速率成正比,想要更大的頻寬(單位時間內傳輸更多數據)就需要加大 BaudRate 的設定,結果是傳輸效率越高傳輸距離就越短、如果再考慮傳輸線上的線阻,走在上面的電訊號也會隨著傳輸距離增加逐漸衰減到零,所以整體距離還需要再打些折扣。因此 Serial 通訊設計上有必要再多加一個 EIA Driver 把 UART Serial 訊號轉成其他可實現長距離通訊的 Serial 介面,例如 RS232/RS485 這兩個經典的 Serial To Serial 的介面。

BaudRate 越大,傳輸速率越高,距離越短

單端點的 RS232

RS232 使用的實體介面的 Pin 腳有 9 根 (DB9) ,其中負責傳輸訊號有三條分別是 Rx,Tx 跟 Gnd。Gnd 又叫做地線或是參考線代表本身沒有電壓的狀態 (0V),主要是讓 Rx 或 Tx 用來參考判讀電壓用的,所以 Gnd 在 RS232 的通訊架構裡是必要的存在,這種參考地線來計算電壓的通訊模式也叫做 single-end (單端點)。

RS232, Pin Definition

RS232, Pin Definition

RS232 在訊號傳輸設計是利用拉高電壓方式來處理,RS232 的 EIA Driver 就是負責把 3.3V 的 UART Serial 訊號升壓到 5V-25V 電壓的 Serial 訊號的過程。可以想像訊號傳遞就像波浪一樣,電壓越高代表有比較多的能量(電位能),一樣是 9600 BaudRate 的 RS232 介面傳輸距離可達到 15m。過長的傳輸距離會讓訊號衰減變型的太嚴重落入判定無效區。

另外,RS232 這種 single-end 的設計也很怕外部訊號干擾也是另一個影響傳輸距離的原因,傳輸距離越常被干擾的可能性越大,沒做好隔離電磁突波很容易就把 Rx 或 Tx 上的訊號給撞到變形(Gnd 沒有電壓不受影響)。

差分訊號的 RS485

當發展來到了 RS485 的時候又有了重大的突破。首先,通訊架構進一步被簡化,UART 出來的 Serial 經過 RS485 的 EIA Driver 變成只有兩條線 D+/D-,特色是傳輸的時候這兩條線都有電壓在上面跑,如果我們把 D+/D- 的波形合併在一個畫面上看,就會看到 D+ 與 D- 是互相對稱的訊號波形,接收端利用計算電壓差 (D+ - D-) 的範圍來決定 0 或 1,這種利用計算電壓差的傳輸方式叫做 differential 差分訊號。

RS485, Pin Definition

RS485, Pin Definition

差分訊號特色是接線架構簡單、使用的電壓 1.5V 更低外,最大的好處就是訊號抗干擾的能力很強!因為 RS485 訊號傳輸的時候遇到有電磁干擾時,兩條線都會承受相同的電壓增減幅度,結果兩者的差值不變所以換算出來的 0 跟 1 不變。抗干擾能力可以讓傳輸距離大幅提升,一樣是 9600 BaudRate 的 RS485 傳輸距離一口氣來到了 1200 米了。不過,差分訊號的設計也是有困擾的地方,就是通訊時兩條線都要使用結果只能做到半雙工無法同時收送傳輸效率會減半。

網路拓墣

通過通訊介面把兩個或以上的設備給串連就能形成「網路」,所有串連在相同網路上的裝置就可以互相通訊。按照連接的型態或者叫做拓樸形態可以分成三種 Point to Point (點對點), Multidrop (多分支), Multipoint (多點)。

Point to Point 是專線只能接兩台裝置,也是 RS232 唯一支持的模式。不過 RS232 的 Pin 腳設計同時有 RX / TX,相當於提供了兩組通訊通道,所以能夠做到全雙工收發同時進行。

Multidrop, Multipoint 是 RS485 支持的架構,先說 Multidrop ,它在同一時間內只能有一台設備傳送訊息,其他設備只能接收訊息行為很像廣播,是屬於半雙工模式。那有沒有全雙工的 RS485?有的,也許你有聽過 4 線的 RS485 架構 (跟 RS422 相同) 那個就是了,所謂的 4 線 RS485 就是再多加一組 D+/D-,這樣就有兩組通訊線,一組可以拿來接收資料 Rx+/Rx- 使用,另一組拿來發送資料 Tx+/Tx-,這種 4 線全雙工且支持多點裝置連線架構就是 Multipoint 了。

Topology of 4w RS485

Topology of 4w RS485

總結

目前 RS232/RS485 仍是工控領域很 popular 的 Serial 通訊介面架構簡單實用。實務上我們還是會碰到其他的 Serial 傳輸介面 USB, CAN.. 等,不過轉換的道理都是一樣的,都是先經過電腦的 UART 轉換將 Parallel 轉成 Serial 再透過對應的的 EIA Driver 轉換後再出去,都是為了解決 UART 傳輸距離過短以及傳輸過程中的干擾問題。最後我也把一份比較表放在這裡方便日後查找。

Comparison of RS232, RS422 and RS485

Comparison of RS232, RS422 and RS485



avatar-img
14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
你可能也想看
Google News 追蹤
Thumbnail
無論是何種線圈加工,後續仍有組裝及接線的工作得處理,然電子線相比於空心線圈會多了一個絕緣塑膠架部分,反而增加了些許不確定要素,因此特別提出討論說明。 由下圖所示,可知單一的電子線圈製作完成後,還須放置於對應的機構尺寸當中,經過多次組工序後才是完成品;倘若個別塑膠有產生了尺寸的變化,就有可能導致電子
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
本文是針對馬達繞線時,想要依本身的生產能力調整漆包線徑粗度時,會使用到的轉換計算進行介紹及說明。 實際量產時往往將多條細線並繞的馬達,改由單條粗線採用機台繞線,較為省時;但開發階段,並無設備協助,僅能採用人工繞線打樣時,則會調整為多條細線並聯的模式才能順利工作,這類不同情境下的線徑變化,三不五時就
** 3C機構設計爸版權所有 ©️ ** 當我們討論到USB時,大家都知道USB對於一般的使用者來說是接觸性非常高的一個接口,舉凡手機、電腦、電視、收銀機….,都會使用到USB接口。雖然國際上已經定義了USB-C (USB type-C)是未來統一的一種接口,但就目前而言,USB connec
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
使用ADC時必須注意 MCU上會有Vref腳位,這兩個腳位必須接上VDD及GND。 這兩個腳位是專門給ADC使用的,ADC在轉換時會需要參考電壓來轉換成digital。公式如下 ​digital = (Vin / Vref) * 2^12 digital:是電腦讀取到的數值。 Vin:輸
Thumbnail
仍舊是紀錄一下自己的過程,避免真的又找半天 1.準備 Console線 ( RS-232 公母接頭 ) 2.準備 USB-RS232 轉接線 ( 驅動程式 ) 3.putty ( 下載位置 ) 4.Zyxel ES3500 的帳號密碼 ( 我的預設是admin/1234 )
Thumbnail
無論是何種線圈加工,後續仍有組裝及接線的工作得處理,然電子線相比於空心線圈會多了一個絕緣塑膠架部分,反而增加了些許不確定要素,因此特別提出討論說明。 由下圖所示,可知單一的電子線圈製作完成後,還須放置於對應的機構尺寸當中,經過多次組工序後才是完成品;倘若個別塑膠有產生了尺寸的變化,就有可能導致電子
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
本文是針對馬達繞線時,想要依本身的生產能力調整漆包線徑粗度時,會使用到的轉換計算進行介紹及說明。 實際量產時往往將多條細線並繞的馬達,改由單條粗線採用機台繞線,較為省時;但開發階段,並無設備協助,僅能採用人工繞線打樣時,則會調整為多條細線並聯的模式才能順利工作,這類不同情境下的線徑變化,三不五時就
** 3C機構設計爸版權所有 ©️ ** 當我們討論到USB時,大家都知道USB對於一般的使用者來說是接觸性非常高的一個接口,舉凡手機、電腦、電視、收銀機….,都會使用到USB接口。雖然國際上已經定義了USB-C (USB type-C)是未來統一的一種接口,但就目前而言,USB connec
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
使用ADC時必須注意 MCU上會有Vref腳位,這兩個腳位必須接上VDD及GND。 這兩個腳位是專門給ADC使用的,ADC在轉換時會需要參考電壓來轉換成digital。公式如下 ​digital = (Vin / Vref) * 2^12 digital:是電腦讀取到的數值。 Vin:輸
Thumbnail
仍舊是紀錄一下自己的過程,避免真的又找半天 1.準備 Console線 ( RS-232 公母接頭 ) 2.準備 USB-RS232 轉接線 ( 驅動程式 ) 3.putty ( 下載位置 ) 4.Zyxel ES3500 的帳號密碼 ( 我的預設是admin/1234 )