RS485 是半雙工通訊(2 線制),能夠一點對多點進行組網,並且 RS485 是用纜線兩端的電壓差值來表示傳遞信號,這與 RS232 電氣特性大不同。RS485 僅僅規定了接收端和發送端的電氣特性,並無規定或推薦任何數據協議html
RS485 採用兩根通訊線,一般用 A 和 B 或者 D+和 D-來表示。邏輯「1」以兩線之間的電壓差爲+(0.2~6)V 表示,邏輯「0」以兩線間的電壓差爲-(0.2~6)V 來表示,是一種典型的差分通訊,
電平與 TTL 電平兼容,可方便與 TTL 電路鏈接。算法
優勢:網絡
RS485的接口信號電平比RS231-C低,不易損壞接口電路的芯片,且該電平與TTL電平兼容,方便於TTL電路相鏈接。code
RS485的數據最高傳輸速率爲10Mbps。其平衡雙絞線的長度與傳輸速率呈反比,在100kbps速率下,纔可能使用規定的最長電纜長度,只有在很短的距離下才能得到最高傳輸速率。htm
RS485接口採用平衡驅動器和差分接收器的組合,抗共模干擾能力強,即抗噪聲干擾性好,於是通訊距離遠,最大傳輸距離大約爲1200m,實際可達3000m。blog
RS485接口在總線上容許鏈接多達128個收發器,既具備多站能力。同時須要兩個終端電阻,其阻值要求等於傳輸電纜的特性阻抗。在短距離300m內傳輸時可不鏈接終端電阻。接口
RS485引腳定義get
RS-232與RS-422及RS-485三者之間的特性與區別it
modbus協議已經成爲通用工業標準,經過協議,控制器與控制器、控制器經過網絡(以太網)與其餘設備之間能夠實現串行通訊。RTU即遠程終端單元,消息中每8位包含兩個十六進制字符。在相同的波特率下,這種方法比ASCII方式傳送的數據量大。class
上面圖中看到了報文格式:下面詳細分析一條報文:01 06 00 01 00 17 98 04
01 06 00 01 00 17 98 04
從機地址 功能號 數據地址 數據 CRC校驗
這一串數據的意思是:把數據 0x0017(十進制23) 寫入 1號從機地址 0x0001數據地址
一、主機對從機寫數據操做 若是單片機接收到一個報文那麼就對報文進行解析執行相應的處理,如上面報文: 01 06 00 01 00 17 98 04 從機地址 功能號 數據地址 數據 CRC校驗 假如本機地址是 1 ,那麼單片機接收到這串數據根據數據計算CRC校驗判斷數據是否正確,若是判斷數據無誤,則結果是: HoldDataReg[1] = 0x0017; MODBUS主機就完成了一次對從機數據的寫操做,實現了通信。 二、主機對從機讀數據操做 主機進行讀HoldDataReg[1] 操做,則報文是: 01 03 00 01 00 01 D5 CA 從機地址 功能號 數據地址 讀取數據個數 CRC校驗 那麼單片機接收到這串數據根據數據計算CRC校驗判斷數據是否正確,若是判斷數據無誤,則結果是:返回信息給主機,返回的信息也是有格式的: 返回內容: 01 03 02 0017 F8 4A 從機地址 功能號 數據字節個數 兩個字節數據 CRC校驗 MODBUS主機就完成了一次對從機數據的讀操做,實現了通信。
意義:例如上面的 98 04 是它前面的數據(01 06 00 01 00 17)經過一算法(見附錄2,很簡單的)計算出來的結果,其實就像是計算累加和那樣。(累加和:就是010600010017加起來的值,而後它的算法就是加法)。
做用:在數據傳輸過程當中可能數據會發生錯誤,CRC檢驗檢測接收的數據是否正確。好比主機發出01 06 00 01 00 17 98 04,那麼從機接收到後要根據01 06 00 01 00 17 再計算CRC校驗值,從機判斷本身計算出來的CRC校驗是否與接收的CRC校驗(98 04主機計算的)相等,若是不相等那麼說明數據傳輸有錯誤這些數據不能要。