RS485通訊及Modbus一體化振動溫度傳感器
產(chǎn)品概述:
在工業(yè)控制、電力通訊、智能儀表等領(lǐng)域,通常情況下是采用串口通信的方式進行數(shù)據(jù)交換。采用的方式是RS232接口,由于工業(yè)現(xiàn)場比較復(fù)雜,各種電氣設(shè)備會在環(huán)境中產(chǎn)生比較多的電磁干擾,會導(dǎo)致信號傳輸錯誤。除此之外,RS232接口只能實現(xiàn)點對點通信,不具備聯(lián)網(wǎng)功能,傳輸距離也只能達到幾十米,不能滿足遠距離通信要求。而RS485則解決了這些問題,數(shù)據(jù)信號采用差分傳輸方式,可以有效的解決共模干擾問題,距離可以到1200米,并且允許多個收發(fā)設(shè)備接到同一條總線上。隨著工業(yè)應(yīng)用通信越來越多,1979年施耐德電氣制定了一個用于工業(yè)現(xiàn)場的總線協(xié)議Modbus協(xié)議,現(xiàn)在工業(yè)中使用RS485通信場合很多都采用Modbus協(xié)議,本節(jié)課我們要講解一下RS485通信和Modbus協(xié)議。
單單使用一塊KST-51開發(fā)板是不能夠進行RS485實驗的,應(yīng)很多同學(xué)的要求,把這節(jié)課作為擴展課程講一下,如果要做本課相關(guān)實驗,需要自行購買USB轉(zhuǎn)485通信模塊。
18.1 RS485通信
實際上在RS485之前RS232就已經(jīng)誕生,但是RS232有幾處不足的地方:
1、接口的信號電平值較高,達到十幾V,容易損壞接口電路的芯片,而且和TTL電平不兼容,因此和單片機電路接起來的話必須加轉(zhuǎn)換電路。
2、傳輸速率有局限,不可以過高,一般到幾十Kb/s就到極限了。
3、接口使用信號線和GND與其他設(shè)備形成共地模式的通信,這種共地模式傳輸容易產(chǎn)生干擾,并且抗干擾性能也比較弱。
4、傳輸距離有限,只能通信幾十米。
5、通信的時候只能兩點之間進行通信,不能夠?qū)崿F(xiàn)多機聯(lián)網(wǎng)通信。
針對RS232接口的不足,就不斷出現(xiàn)了一些新的接口標(biāo)準(zhǔn),RS485就是其中之一,他具備以下的特點:
1、我們在講A/D的時候,講過差分信號輸入的概念,同時也介紹了差分輸入的好處,優(yōu)勢是可以抑制共模干擾。尤其工業(yè)現(xiàn)場的環(huán)境比較復(fù)雜,干擾比較多,所以通信如果采用的是差分方式,就可以有效的抑制共模干擾。而RS485就是一種差分通信方式,它的通信線路是兩根,通常用A和B或者D+和D-來表示。邏輯“1”以兩線之間的電壓差為+(0.2~6)V表示,邏輯“0”以兩線間的電壓差為-(0.2~6)V來表示,是一種典型的差分通信。
2、RS485通信速度快,傳輸速度可以達到10Mb/s以上。
3、RS485內(nèi)部的物理結(jié)構(gòu),采用的是平衡驅(qū)動器和差分接收器的組合,抗干擾能力也大大增加。
4、傳輸距離可以達到1200米左右,但是他的傳輸速率和傳輸距離是成反比的,只有在100Kb/s以下的傳輸速度,才能達到通信距離,如果需要傳輸更遠距離可以使用中繼。
5、可以在總線上進行聯(lián)網(wǎng)實現(xiàn)多機通信,總線上允許掛多個收發(fā)器,從現(xiàn)有的RS485芯片來看,有可以掛32、64、128、256等不同個設(shè)備的驅(qū)動器。
RS485的接口非常簡單,和RS232所使用的MAX232是類似的,只需要一個RS485轉(zhuǎn)換器,就可以直接和我們單片機的UART串行接口連接起來,并且*使用的是和UART一致的異步串行通信協(xié)議。但是由于RS485是差分通信,因此接收數(shù)據(jù)和發(fā)送數(shù)據(jù)是不能同時進行的,也就是說它是一種半雙工通信。那我們?nèi)绾闻袛嗍裁磿r候發(fā)送,什么時候接收呢?
RS485類的芯片很多,這節(jié)課我們以MAX485為例講解RS485通信
RS485通訊及Modbus一體化振動溫度傳感器技術(shù)參數(shù):
從機地址 1 01 發(fā)送至從機01
功能碼 1 06 單點保存
地址代碼 2 00 起始地址為 0002
02
寫入數(shù)據(jù) 04 00
00
00
64 保存的數(shù)據(jù)為64H
CRC碼 2 9F 由主機計算得到的CRC碼
EC
從機響應(yīng) 字節(jié)數(shù) 舉例
從機地址 1 01 來自從機01
功能碼 1 06 單點保存
地址代碼 2 00 起始地址為 0002
02
操作結(jié)果 1 00 數(shù)據(jù)設(shè)置成功
CRC碼 2 18 由主機計算得到的CRC碼
28
表5 功能碼06保存的數(shù)據(jù)及地址表6 個別寄存器說明
地址
內(nèi)容
代碼示例(主機發(fā)送)
代碼示例(從機響應(yīng))
0002H
設(shè)置預(yù)裝值
01 06 00 02 00 00 00 00 9E 07(設(shè)置預(yù)裝值為0)
01 06 00 02 00 18 28
0003H
設(shè)置out1設(shè)定值
01 06 00 03 00 00 00 00 A3 C7(設(shè)置out1設(shè)定值為0)
01 06 00 03 00 19 B8
0004H
設(shè)置計數(shù)啟停狀態(tài)
01 06 00 04 01 DA 48(設(shè)置啟動計數(shù))
01 06 00 04 01 DA 48
000CH
計數(shù)器清零
01 06 00 0C 01 DD 88(寫“1”清零)
01 06 00 0C 01 DD 88(清零成功)
0011H
OUT1控制
01 06 00 11 01 D4 D8(寫“1”OUT1動作)
01 06 00 11 01 D4 D8(OUT1動作完成)
0012H
OUT2控制
01 06 00 12 01 D4 28(寫“1”OUT2動作)
01 06 00 12 01 D4 28(OUT2動作完成)
地址
內(nèi)容
說明
0004H
設(shè)置計數(shù)器啟停
向寄存器寫“1” 計數(shù)器啟動,“2”計數(shù)器停止。
000CH
計數(shù)器清零
向寄存器寫“1” 計數(shù)器清零。
0011H
控制OUT1動作
向寄存器寫“1” 繼電器動作,寫“2” 繼電器復(fù)位。