RS485,RS的意義為Recommended Standard的縮寫,也就是推薦標(biāo)準(zhǔn),RS485協(xié)議是一種常用的半雙工-異步-串行通信總線。半雙工的意思就是兩者通信時(shí),同一時(shí)刻,只能由其中一方發(fā)送,另一方只能接收,不可以同時(shí)收發(fā)。
RS485總線作為一種通用的工業(yè)應(yīng)用控制總線,應(yīng)用非常廣泛,因?yàn)樗邆浜芏嗟奶攸c(diǎn):
(1):支持多節(jié)點(diǎn):一般支持最大32個(gè)節(jié)點(diǎn),并且節(jié)點(diǎn)間可以通過Modbus或者其他的工業(yè)控制協(xié)議進(jìn)行數(shù)據(jù)交互與設(shè)備控制。
這種方式只需要兩根信號(hào)線就可以保證通訊,兩根數(shù)據(jù)線A/B之間由電壓差來表示信號(hào),也就是表征了邏輯0和邏輯1,其中邏輯1信號(hào)由兩線(A+和B-)之間電壓差在+2V~+6V之間表示,邏輯0由兩線(A+和B-)之間電壓差在-2V~-6V之間表示。通常二者電壓差極限被認(rèn)定在200mv左右,電壓差低于200mv的信號(hào)就很難被檢測(cè)到了。
這種方式之所以能夠有很強(qiáng)的抗干擾性,也是得益于差分信號(hào)的優(yōu)勢(shì),因?yàn)殡姶鸥蓴_噪聲對(duì)電平波形會(huì)造成一些毛刺的影響,從而導(dǎo)致傳輸端傳輸?shù)浇邮辗胶蟮恼麄€(gè)波形有部分失真,這在低速通信時(shí)影響較小,但是高速通訊時(shí)如果疊加上這種電磁干擾,很容易導(dǎo)致接收的信息發(fā)生錯(cuò)誤,這也是為什么工業(yè)通訊協(xié)議基本都帶有校驗(yàn)方式的原因(比如modbus協(xié)議的CRC校驗(yàn)),但是RS485差分信號(hào)不一樣,電磁干擾帶來的毛刺理論上會(huì)對(duì)兩根通訊線A/B都造成影響,但是二者之間的電壓差信號(hào)卻并沒有發(fā)生改變,比如電磁干擾導(dǎo)致A/B線在某一時(shí)刻電壓比信號(hào)源高了150mv,二者相減會(huì)發(fā)現(xiàn),他們之間的電壓差是沒有發(fā)生改變的,這就很好的避免了干擾的影響。
因?yàn)楸旧碇恍枰觾筛鶖?shù)據(jù)線和一根地線,所以接線是十分簡(jiǎn)單的,而且RS485總線的電路也比較簡(jiǎn)單,這里列出一個(gè)比較典型的RS485電路:
這里有個(gè)GPIO25,這個(gè)是因?yàn)?85轉(zhuǎn)換芯片還區(qū)分硬件485和軟件485,因?yàn)榍拔恼f過,RS485通訊某一時(shí)刻設(shè)備只能處于發(fā)送或者接收狀態(tài),那么他們之間的轉(zhuǎn)化是怎么樣的呢?一般設(shè)備都是默認(rèn)處于接收狀態(tài),比如設(shè)備1和設(shè)備2之間通訊,在沒有信息通訊時(shí),兩者都處于接收狀態(tài),當(dāng)有一方需要發(fā)送消息時(shí),轉(zhuǎn)換為發(fā)送狀態(tài)并發(fā)送數(shù)據(jù),另一方接收,發(fā)送完畢后再次切換回接收狀態(tài)。硬件485的意思就是這個(gè)發(fā)送與接收的轉(zhuǎn)換是有RS485轉(zhuǎn)換芯片自行轉(zhuǎn)換的不需要接收方和發(fā)送方的介入,只負(fù)責(zé)收發(fā)即可。而軟件485就是發(fā)送通過RS485的軟件控制腳(就是上圖中的GPIO25),GPIO25輸出高電平,RE=DE=0V,進(jìn)入接收模式;GPIO25輸出低電平,RE=DE=3.3V,進(jìn)入發(fā)送模式,相當(dāng)于軟件對(duì)交互過程進(jìn)行控制。
在A線上加上拉電阻,B線上加下拉電阻也是常見的做法之一,因?yàn)榭偩€處于沒有信息交互的待機(jī)狀態(tài)時(shí),電平并不固定,一般在-200mv到200mv之間,這個(gè)時(shí)候的接收方就有可能受到高電平信號(hào)或者低電平信號(hào)。所以在空閑期間需要保持電平。
問題:RS485接收數(shù)據(jù)錯(cuò)亂。
解決辦法:
檢查RS485波特率設(shè)置:
確保串口助手的波特率設(shè)置和程序串口的波特率一致。
檢查電路板上所用晶振是否與推薦電路的晶振頻率一致。
檢查RS485終端電阻:
用萬用表測(cè)量RS485收發(fā)器芯片終端腳AB之間的電阻值是否為120Ω。特別需要注意的是,有些USB轉(zhuǎn)RS485模塊的終端腳已經(jīng)加上了120Ω的電阻,若在后面的RS485收發(fā)器芯片終端AB腳加120Ω電阻,會(huì)使阻抗失配導(dǎo)致數(shù)據(jù)異常,這時(shí)需要取掉一個(gè)120Ω電阻。
檢查信號(hào)完整性:
檢查RS485的雙絞線屏蔽層是否接地。
檢查RS485通信線附近是否有強(qiáng)電磁干擾,需要加隔離保護(hù)措施或者遠(yuǎn)離干擾源。
適當(dāng)降低波特率,看看信號(hào)有無優(yōu)化,減小電纜的分布電容對(duì)信號(hào)產(chǎn)生的影響。
問題:RS485在停止通訊時(shí)接收器依舊有數(shù)據(jù)輸出。
解決辦法:
硬件解決:在通訊總線的A端采用上拉,B端采用下拉,以此來保證接收器輸出為固定的高電平。
軟件解決:在通訊數(shù)據(jù)包內(nèi)加幾個(gè)起始同步字節(jié),必須在同步后才開始數(shù)據(jù)通訊的傳輸。
RS485總線支持多個(gè)設(shè)備同時(shí)連接,構(gòu)建起一個(gè)多節(jié)點(diǎn)通信網(wǎng)絡(luò)。這意味著在工業(yè)控制系統(tǒng)中可以輕松添加新的設(shè)備,而無需對(duì)總線拓?fù)浣Y(jié)構(gòu)進(jìn)行調(diào)整。理論上可以連接多達(dá)32個(gè)(實(shí)踐中甚至更多)設(shè)備進(jìn)行半雙工通信。
RS485總線采用差分信號(hào)傳輸方式(A線和B線),這大大增強(qiáng)了其抗干擾能力,使得信號(hào)在長(zhǎng)距離傳輸時(shí)仍能保持較高的可靠性,適用于工業(yè)環(huán)境中常見的電磁干擾場(chǎng)景。
得益于差分信號(hào)的高抗噪性和較低的信號(hào)衰減率,RS485總線能夠在相對(duì)較低的數(shù)據(jù)速率下實(shí)現(xiàn)遠(yuǎn)距離通信,通??蛇_(dá)1200米,某些條件下甚至可達(dá)到幾公里。
RS485總線采用半雙工工作模式,雖然限制了同時(shí)收發(fā)的能力,但這種模式簡(jiǎn)化了硬件設(shè)計(jì),降低了成本,對(duì)于大多數(shù)控制和監(jiān)控應(yīng)用來說已足夠。
RS485協(xié)議報(bào)文通常由以下幾個(gè)部分組成:
從機(jī)地址:標(biāo)識(shí)網(wǎng)絡(luò)中的從設(shè)備。
功能碼:指定要執(zhí)行的操作,例如讀取或?qū)懭搿?/span>
寄存器地址:指定要訪問的寄存器的具體地址。
寄存器數(shù)量:指定要讀取或?qū)懭氲募拇嫫鲾?shù)量。
CRC校驗(yàn)碼:用于確保數(shù)據(jù)傳輸?shù)耐暾浴?/span>
在配置RS485模組設(shè)備時(shí),需要特別注意功能碼和寄存器地址的設(shè)置。例如,讀取保持寄存器40001的Modbus地址可能如下所示:
從機(jī)地址:0x01
功能碼:0x03(讀取保持寄存器)
寄存器地址:0x0000
寄存器數(shù)量:0x0001
CRC校驗(yàn)碼:0x1234
通過本文的介紹,可以了解什么是RS485協(xié)議、RS485總線協(xié)議應(yīng)用特點(diǎn)、RS485協(xié)議的常見問題及其解決辦法,以及常見RS485總線模組的功能特點(diǎn)和RS485串行通訊協(xié)議的詳解。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多工業(yè)級(jí)RS-485集線器產(chǎn)品更多資料信息,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!
相關(guān)閱讀: