0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

史上最全的RS485串口通訊的詳細(xì)講解

aIpM_gongkongwo ? 來(lái)源:未知 ? 2019-08-03 10:21 ? 次閱讀

RS485接口組成的半雙工網(wǎng)絡(luò),一般是兩線制,多采用屏蔽雙絞線傳輸,這種接線方式為總線式拓?fù)浣Y(jié)構(gòu)在同一總線上最多可以掛接32個(gè)結(jié)點(diǎn)。我們知道,最初數(shù)據(jù)是模擬信號(hào)輸出簡(jiǎn)單過(guò)程量,后來(lái)儀表接口是RS232接口,這種接口可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通信方式,但這種方式不能實(shí)現(xiàn)聯(lián)網(wǎng)功能,隨后出現(xiàn)的RS485解決了這個(gè)問(wèn)題。為此本文通過(guò)問(wèn)答的形式詳細(xì)介紹RS485接口。

一、什么是RS-485接口?它比RS-232-C接口相比有何特點(diǎn)?

答:由于RS-232-C接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):

(1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。

(2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。

(3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。

(4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺,實(shí)際上也只能用在50米左右。針對(duì)RS-232-C的不足,于是就不斷出現(xiàn)了一些新的接口標(biāo)準(zhǔn),RS-485就是其中之一,它具有以下特點(diǎn):

1)RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(2-6)V表示;邏輯“0”以兩線間的電壓差為-(2-6)V表示。接口信號(hào)電平比RS-232-C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。

2)RS-485的數(shù)據(jù)最高傳輸速率為10Mbps

3)RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干能力增強(qiáng),即抗噪聲干擾性好。

4)RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實(shí)際上可達(dá)3000米,另外RS-232-C接口在總線上只允許連接1個(gè)收發(fā)器,即單站能力。而RS-485接口在總線上是允許連接多達(dá)128個(gè)收發(fā)器。即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立起設(shè)備網(wǎng)絡(luò)。

5)因RS-485接口具有良好的抗噪聲干擾性,長(zhǎng)的傳輸距離和多站能力等上述優(yōu)點(diǎn)就使其成為首選的串行接口。因?yàn)镽S485接口組成的半雙工網(wǎng)絡(luò),一般只需二根連線,所以RS485接口均采用屏蔽雙絞線傳輸。RS485接口連接器采用DB-9的9芯插頭座,與智能終端RS485接口采用DB-9(孔),與鍵盤(pán)連接的鍵盤(pán)接口RS485采用DB-9(針)。

二、RS-422與RS-485串行接口標(biāo)準(zhǔn)

1、平衡傳輸

RS-422、RS-485與RS-232不一樣,數(shù)據(jù)信號(hào)采用差分傳輸方式,也稱作平衡傳輸,它使用一對(duì)雙絞線,將其中一線定義為A,另一線定義為B

通常情況下,發(fā)送驅(qū)動(dòng)器A、B之間的正電平在+2~+6V,是一個(gè)邏輯狀態(tài),負(fù)電平在-2~6V,是另一個(gè)邏輯狀態(tài)。另有一個(gè)信號(hào)地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的?!笆鼓堋倍耸怯糜诳刂瓢l(fā)送驅(qū)動(dòng)器與傳輸線的切斷與連接。當(dāng)“使能”端起作用時(shí),發(fā)送驅(qū)動(dòng)器處于高阻狀態(tài),稱作“第三態(tài)”,即它是有別于邏輯“1”與“0”的第三態(tài)。

接收器也作與發(fā)送端相對(duì)的規(guī)定,收、發(fā)端通過(guò)平衡雙絞線將AA與BB對(duì)應(yīng)相連,當(dāng)在收端AB之間有大于+200mV的電平時(shí),輸出正邏輯電平,小于-200mV時(shí),輸出負(fù)邏輯電平。接收器接收平衡線上的電平范圍通常在200mV至6V之間。

2、RS-422電氣規(guī)定

RS-422標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性”,它定義了接口電路的特性。圖2是典型的RS-422四線接口。實(shí)際上還有一根信號(hào)地線,共5根線。圖1是其DB9連接器引腳定義。由于接收器采用高輸入阻抗和發(fā)送驅(qū)動(dòng)器比RS232更強(qiáng)的驅(qū)動(dòng)能力,故允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),最多可接10個(gè)節(jié)點(diǎn)。即一個(gè)主設(shè)備(Master),其余為從設(shè)備(Salve),從設(shè)備之間不能通信,所以RS-422支持點(diǎn)對(duì)多的雙向通信。接收器輸入阻抗為4k,故發(fā)端最大負(fù)載能力是10×4k+100Ω(終接電阻)。RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,各裝置之間任何必須的信號(hào)交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對(duì)單獨(dú)的雙絞線)實(shí)現(xiàn)。RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s。其平衡雙絞線的長(zhǎng)度與傳輸速率成反比,在100kb/s速率以下,才可能達(dá)到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長(zhǎng)的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。

RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在矩距離傳輸時(shí)可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。

3、RS-485電氣規(guī)定

由于RS-485是從RS-422基礎(chǔ)上發(fā)展而來(lái)的,所以RS-485許多電氣規(guī)定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。

而采用四線連接時(shí),與RS-422一樣只能實(shí)現(xiàn)點(diǎn)對(duì)多的通信,即只能有一個(gè)主(Master)設(shè)備,其余為從設(shè)備,但它比RS-422有改進(jìn),無(wú)論四線還是二線連接方式總線上可多接到32個(gè)設(shè)備。

RS-485與RS-422的不同還在于其共模輸出電壓是不同的,RS-485是-7V至+12V之間,而RS-422在-7V至+7V之間,RS-485接收器最小輸入阻抗為12k劍鳵S-422是4k?。慌f峽梢運(yùn)礡S-485滿足所有RS-422的規(guī)范,所以RS-485的驅(qū)動(dòng)器可以用在RS-422網(wǎng)絡(luò)中應(yīng)用。

RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mb/s。平衡雙絞線的長(zhǎng)度與傳輸速率成反比,在100kb/s速率以下,才可能使用規(guī)定最長(zhǎng)的電纜長(zhǎng)度。只有在很短的距離下才能獲得最高速率傳輸。一般100米長(zhǎng)雙絞線最大傳輸速率僅為1Mb/s。

RS-485需要2個(gè)終接電阻,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時(shí)可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸總線的兩端。

三、RS-422與RS-485的網(wǎng)絡(luò)安裝注意要點(diǎn)

RS-422可支持10個(gè)節(jié)點(diǎn),RS-485支持32個(gè)節(jié)點(diǎn),因此多節(jié)點(diǎn)構(gòu)成網(wǎng)絡(luò)。網(wǎng)絡(luò)拓?fù)湟话悴捎媒K端匹配的總線型結(jié)構(gòu),不支持環(huán)形或星形網(wǎng)絡(luò)。在構(gòu)建網(wǎng)絡(luò)時(shí),應(yīng)注意如下幾點(diǎn):

1、采用一條雙絞線電纜作總線,將各個(gè)節(jié)點(diǎn)串接起來(lái),從總線到每個(gè)節(jié)點(diǎn)的引出線長(zhǎng)度應(yīng)盡量短,以便使引出線中的反射信號(hào)對(duì)總線信號(hào)的影響最低。所示為實(shí)際應(yīng)用中常見(jiàn)的一些錯(cuò)誤連接方式(a,c,e)和正確的連接方式(b,d,f)。a,c,e這三種網(wǎng)絡(luò)連接盡管不正確,在短距離、低速率仍可能正常工作,但隨著通信距離的延長(zhǎng)或通信速率的提高,其不良影響會(huì)越來(lái)越嚴(yán)重,主要原因是信號(hào)在各支路末端反射后與原信號(hào)疊加,會(huì)造成信號(hào)質(zhì)量下降。

2、應(yīng)注意總線特性阻抗的連續(xù)性,在阻抗不連續(xù)點(diǎn)就會(huì)發(fā)生信號(hào)的反射。下列幾種情況易產(chǎn)生這種不連續(xù)性:總線的不同區(qū)段采用了不同電纜,或某一段總線上有過(guò)多收發(fā)器緊靠在一起安裝,再者是過(guò)長(zhǎng)的分支線引出到總線。

總之,應(yīng)該提供一條單一、連續(xù)的信號(hào)通道作為總線。

四、RS-422與RS-485傳輸線上匹配的一些說(shuō)明

對(duì)RS-422與RS-485總線網(wǎng)絡(luò)一般要使用終接電阻進(jìn)行匹配。但在短距離與低速率下可以不用考慮終端匹配。那么在什么情況下不用考慮匹配呢?理論上,在每個(gè)接收數(shù)據(jù)信號(hào)的中點(diǎn)進(jìn)行采樣時(shí),只要反射信號(hào)在開(kāi)始采樣時(shí)衰減到足夠低就可以不考慮匹配。但這在實(shí)際上難以掌握,美國(guó)MAXIM公司有篇文章提到一條經(jīng)驗(yàn)性的原則可以用來(lái)判斷在什么樣的數(shù)據(jù)速率和電纜長(zhǎng)度時(shí)需要進(jìn)行匹配:當(dāng)信號(hào)的轉(zhuǎn)換時(shí)間(上升或下降時(shí)間)超過(guò)電信號(hào)沿總線單向傳輸所需時(shí)間的3倍以上時(shí)就可以不加匹配。例如具有限斜率特性的RS-485接口MAX483輸出信號(hào)的上升或下降時(shí)間最小為250ns,典型雙絞線上的信號(hào)傳輸速率約為0.2m/ns(24AWGPVC電纜),那么只要數(shù)據(jù)速率在250kb/s以內(nèi)、電纜長(zhǎng)度不超過(guò)16米,采用MAX483作為RS-485接口時(shí)就可以不加終端匹配。

一般終端匹配采用終接電阻方法,前文已有提及,RS-422在總線電纜的遠(yuǎn)端并接電阻,RS-485則應(yīng)在總線電纜的開(kāi)始和末端都需并接終接電阻。終接電阻一般在RS-422網(wǎng)絡(luò)中取100Ω,在RS-485網(wǎng)絡(luò)中取120Ω。相當(dāng)于電纜特性阻抗的電阻,因?yàn)榇蠖鄶?shù)雙絞線電纜特性阻抗大約在100~120Ω。這種匹配方法簡(jiǎn)單有效,但有一個(gè)缺點(diǎn),匹配電阻要消耗較大功率,對(duì)于功耗限制比較嚴(yán)格的系統(tǒng)不太適合。

另外一種比較省電的匹配方式是RC匹配,利用一只電容C隔斷直流成分可以節(jié)省大部分功率。但電容C的取值是個(gè)難點(diǎn),需要在功耗和匹配質(zhì)量間進(jìn)行折衷。

還有一種采用二極管的匹配方法,這種方案雖未實(shí)現(xiàn)真正的“匹配”,但它利用二極管的鉗位作用能迅速削弱反射信號(hào),達(dá)到改善信號(hào)質(zhì)量的目的。節(jié)能效果顯著。

五、RS-422與RS-485的接地問(wèn)題

電子系統(tǒng)接地是很重要的,但常常被忽視。接地處理不當(dāng)往往會(huì)導(dǎo)致電子系統(tǒng)不能穩(wěn)定工作甚至危及系統(tǒng)安全。RS-422與RS-485傳輸網(wǎng)絡(luò)的接地同樣也是很重要的,因?yàn)榻拥叵到y(tǒng)不合理會(huì)影響整個(gè)網(wǎng)絡(luò)的穩(wěn)定性,尤其是在工作環(huán)境比較惡劣和傳輸距離較遠(yuǎn)的情況下,對(duì)于接地的要求更為嚴(yán)格。否則接口損壞率較高。很多情況下,連接RS-422、RS-485通信鏈路時(shí)只是簡(jiǎn)單地用一對(duì)雙絞線將各個(gè)接口的“A”、“B”端連接起來(lái)。而忽略了信號(hào)地的連接,這種連接方法在許多場(chǎng)合是能正常工作的,但卻埋下了很大的隱患,這有下面二個(gè)原因:

1、共模干擾問(wèn)題:正如前文已述,RS-422與RS-485接口均采用差分方式傳輸信號(hào)方式,并不需要相對(duì)于某個(gè)參照點(diǎn)來(lái)檢測(cè)信號(hào),系統(tǒng)只需檢測(cè)兩線之間的電位差就可以了。但人們往往忽視了收發(fā)器有一定的共模電壓范圍,如RS-422共模電壓范圍為-7~+7V,而RS-485收發(fā)器共模電壓范圍為-7~+12V,只有滿足上述條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定可靠,甚至損壞接口。以圖1為例,當(dāng)發(fā)送驅(qū)動(dòng)器A向接收器B發(fā)送數(shù)據(jù)時(shí),發(fā)送驅(qū)動(dòng)器A的輸出共模電壓為VOS,由于兩個(gè)系統(tǒng)具有各自獨(dú)立的接地系統(tǒng),存在著地電位差VGPD。那么,接收器輸入端的共模電壓VCM就會(huì)達(dá)到VCM=VOS+VGPD。RS-422與RS-485標(biāo)準(zhǔn)均規(guī)定VOS≤3V,但VGPD可能會(huì)有很大幅度(十幾伏甚至數(shù)十伏),并可能伴有強(qiáng)干擾信號(hào),致使接收器共模輸入VCM超出正常范圍,并在傳輸線路上產(chǎn)生干擾電流,輕則影響正常通信,重則損壞通信接口電路。

2、(EMI)問(wèn)題:發(fā)送驅(qū)動(dòng)器輸出信號(hào)中的共模部分需要一個(gè)返回通路,如沒(méi)有一個(gè)低阻的返回通道(信號(hào)地),就會(huì)以輻射的形式返回源端,整個(gè)總線就會(huì)像一個(gè)巨大的天線向外輻射電磁波。

由于上述原因,RS-422、RS-485盡管采用差分平衡傳輸方式,但對(duì)整個(gè)RS-422或RS-485網(wǎng)絡(luò),必須有一條低阻的信號(hào)地。一條低阻的信號(hào)地將兩個(gè)接口的工作地連接起來(lái),使共模干擾電壓VGPD被短路。

這條信號(hào)地可以是額外的一條線(非屏蔽雙絞線),或者是屏蔽雙絞線的屏蔽層。這是最通常的接地方法。

值得注意的是,這種做法僅對(duì)高阻型共模干擾有效,由于干擾源內(nèi)阻大,短接后不會(huì)形成很大的接地環(huán)路電流,對(duì)于通信不會(huì)有很大影響。當(dāng)共模干擾源內(nèi)阻較低時(shí),會(huì)在接地線上形成較大的環(huán)路電流,影響正常通信。筆者認(rèn)為,可以采取以下三種措施:

(1)如果干擾源內(nèi)阻不是非常小,可以在接地線上加限流電阻以限制干擾電流。接地電阻的增加可能會(huì)使共模電壓升高,但只要控制在適當(dāng)?shù)姆秶鷥?nèi)就不會(huì)影響正常通信。

(2)采用浮地技術(shù),隔斷接地環(huán)路。這是較常用也是十分有效的一種方法,當(dāng)共模干擾內(nèi)阻很小時(shí)上述方法已不能奏效,此時(shí)可以考慮將引入干擾的節(jié)點(diǎn)(例如處于惡劣的工作環(huán)境的現(xiàn)場(chǎng)設(shè)備)浮置起來(lái)(也就是系統(tǒng)的電路地與機(jī)殼或大地隔離),這樣就隔斷了接地環(huán)路,不會(huì)形成很大的環(huán)路電流。

(3)采用隔離接口。有些情況下,出于安全或其它方面的考慮,電路地必須與機(jī)殼或大地相連,不能懸浮,這時(shí)可以采用隔離接口來(lái)隔斷接地回路,但是仍然應(yīng)該有一條地線將隔離側(cè)的公共端與其它接口的工作地相連。

六、RS-422與RS-485的網(wǎng)絡(luò)失效保護(hù)

RS-422與RS-485標(biāo)準(zhǔn)都規(guī)定了接收器門(mén)限為±200mV。這樣規(guī)定能夠提供比較高的噪聲抑制能力,如前文所述,當(dāng)接收器A電平比B電平高+200mV以上時(shí),輸出為正邏輯,反之,則輸出為負(fù)邏輯。但由于第三態(tài)的存在,即在主機(jī)在發(fā)端發(fā)完一個(gè)信息數(shù)據(jù)后,將總線置于第三態(tài),即總線空閑時(shí)沒(méi)有任何信號(hào)驅(qū)動(dòng)總線,使AB之間的電壓在-200~+200mV直至趨于0V,這帶來(lái)了一個(gè)問(wèn)題:接收器輸出狀態(tài)不確定。如果接收機(jī)的輸出為0V,網(wǎng)絡(luò)中從機(jī)將把其解釋為一個(gè)新的啟動(dòng)位,并試圖讀取后續(xù)字節(jié),由于永遠(yuǎn)不會(huì)有停止位,產(chǎn)生一個(gè)幀錯(cuò)誤結(jié)果,不再有設(shè)備請(qǐng)求總線,網(wǎng)絡(luò)陷于癱瘓狀態(tài)。除上述所述的總線空閑會(huì)造成兩線電壓差低于200mV的情況外,開(kāi)路或短路時(shí)也會(huì)出現(xiàn)這種情況。故應(yīng)采取一定的措施避免接收器處于不確定狀態(tài)。

通常是在總線上加偏置,當(dāng)總線空閑或開(kāi)路時(shí),利用偏置電阻將總線偏置在一個(gè)確定的狀態(tài)(差分電壓≥-200mV)。如圖1。將A上拉到地,B下拉到5V,電阻的典型值是1kΩ,具體數(shù)值隨電纜的電容變化而變化。

上述方法是比較經(jīng)典的方法,但它仍然不能解決總線短路時(shí)的問(wèn)題,有些廠家將接收門(mén)限移到-200mV/-50mV,可解決這個(gè)問(wèn)題。

七、RS-422與RS-485的瞬態(tài)保護(hù)

前文提到的信號(hào)接地措施,只對(duì)低頻率的共模干擾有保護(hù)作用,對(duì)于頻率很高的瞬態(tài)干擾就無(wú)能為力了。由于傳輸線對(duì)高頻信號(hào)而言就是相當(dāng)于電感,因此對(duì)于高頻瞬態(tài)干擾,接地線實(shí)際等同于開(kāi)路。這樣的瞬態(tài)干擾雖然持續(xù)時(shí)間短暫,但可能會(huì)有成百上千伏的電壓。

實(shí)際應(yīng)用環(huán)境下還是存在高頻瞬態(tài)干擾的可能。一般在切換大功率感性負(fù)載如電機(jī)、變壓器、繼電器等或閃電過(guò)程中都會(huì)產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當(dāng)防護(hù)就會(huì)損壞RS-422或RS-485通信接口。對(duì)于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護(hù)。

1、隔離保護(hù)方法。這種方案實(shí)際上將瞬態(tài)高壓轉(zhuǎn)移到隔離接口中的電隔離層上,由于隔離層的高絕緣電阻,不會(huì)產(chǎn)生損害性的浪涌電流,起到保護(hù)接口的作用。通常采用高頻變壓器、光耦等元件實(shí)現(xiàn)接口的電氣隔離,已有器件廠商將所有這些元件集成在一片IC中,使用起來(lái)非常簡(jiǎn)便。這種方案的優(yōu)點(diǎn)是可以承受高電壓、持續(xù)時(shí)間較長(zhǎng)的瞬態(tài)干擾,實(shí)現(xiàn)起來(lái)也比較容易,缺點(diǎn)是成本較高。

2、旁路保護(hù)方法。這種方案利用瞬態(tài)抑制元件(如TVS、MOV、氣體放電管等)將危害性的瞬態(tài)能量旁路到大地,優(yōu)點(diǎn)是成本較低,缺點(diǎn)是保護(hù)能力有限,只能保護(hù)一定能量以內(nèi)的瞬態(tài)干擾,持續(xù)時(shí)間不能很長(zhǎng),而且需要有一條良好的連接大地的通道,實(shí)現(xiàn)起來(lái)比較困難。實(shí)際應(yīng)用中是將上述兩種方案結(jié)合起來(lái)靈活加以運(yùn)用,如圖1。在這種方法中,隔離接口對(duì)大幅度瞬態(tài)干擾進(jìn)行隔離,旁路元件則保護(hù)隔離接口不被過(guò)高的瞬態(tài)電壓擊穿。

八、采用RS485接口時(shí),傳輸電纜的長(zhǎng)度如何考慮?

在使用RS485接口時(shí),對(duì)于特定的傳輸線經(jīng),從發(fā)生器到負(fù)載其數(shù)據(jù)信號(hào)傳輸所允許的最大電纜長(zhǎng)度是數(shù)據(jù)信號(hào)速率的函數(shù),這個(gè)長(zhǎng)度數(shù)據(jù)主要是受信號(hào)失真及噪聲等影響所限制。最大電纜長(zhǎng)度與信號(hào)速率的關(guān)系曲線是使用24AWG銅芯雙絞電話電纜(線徑為0。51mm),線間旁路電容為52。5PF/M,終端負(fù)載電阻為100歐時(shí)所得出。當(dāng)數(shù)據(jù)信號(hào)速率降低到90Kbit/S以下時(shí),假定最大允許的信號(hào)損失為6dBV時(shí),則電纜長(zhǎng)度被限制在1200M。在實(shí)用時(shí)是完全可以取得比它大的電纜長(zhǎng)度。當(dāng)使用不同線徑的電纜。則取得的最大電纜長(zhǎng)度是不相同的。

九、如何實(shí)現(xiàn)RS-485/422多點(diǎn)通訊

RS-485總線上任何時(shí)候只能有一發(fā)送器發(fā)送。半雙工方式,主從只能一個(gè)發(fā)。全雙工方式,主站總可發(fā)送,從站只能有一個(gè)發(fā)送。

十、RS-485/RS422接口通訊時(shí),在什么條件下需要采用終端匹配?電阻值如何確定?如何配置終端匹配電阻?

在長(zhǎng)線信號(hào)傳輸時(shí),一般為了避免信號(hào)的反射和回波,需要在接收端接入終端匹配電阻。其終端匹配電阻值取決于電纜的阻抗特性,與電纜的長(zhǎng)度無(wú)關(guān)。

RS-485/RS-422一般采用雙絞線(屏蔽或非屏蔽)連接,終端電阻一般介于100至140Ω之間,典型值為120Ω。在實(shí)際配置時(shí),在電纜的兩個(gè)終端節(jié)點(diǎn)上,即最近端和最遠(yuǎn)端,各接入一個(gè)終端電阻,而處于中間部分的節(jié)點(diǎn)則不能接入終端電阻,否則將導(dǎo)致通訊出錯(cuò)。

十一、RS-485網(wǎng)不知道最遠(yuǎn)站點(diǎn)是哪一個(gè),應(yīng)該如何接匹配電阻呢?

會(huì)出現(xiàn)這種情況,是由于用戶組成RS-485網(wǎng)時(shí),沒(méi)有遵循站點(diǎn)至總線的連線應(yīng)盡可能短的原則。如果總線布線遵循這一原則,就不存在不知道哪個(gè)站點(diǎn)是最遠(yuǎn)的問(wèn)題。而且要注意,這樣的布線,系統(tǒng)將會(huì)工作得不好。

十二、RS-485/RS-422接口為何在停止通信時(shí)接收器仍有數(shù)據(jù)輸出?

由于RS-485/RS-422在發(fā)送數(shù)據(jù)完成后,要求所有的發(fā)送使能控制信號(hào)關(guān)閉且保持接收使能有效,此時(shí),總線驅(qū)動(dòng)器進(jìn)入高阻狀態(tài)且接收器能夠監(jiān)測(cè)總線上是否有新的通信數(shù)據(jù)。但是由于此時(shí)總線處于無(wú)源驅(qū)動(dòng)狀態(tài)(若總線有終端匹配電阻時(shí),A和B線的差分電平為0,接收器的輸出不確定,且對(duì)AB線上的差分信號(hào)的變化很敏感;若無(wú)終端匹配,則總線處于高阻態(tài),接收器的輸出不確定),容易受到外界的噪聲干擾。當(dāng)噪聲電壓超過(guò)輸入信號(hào)門(mén)限時(shí)(典型值±200mV),接收器將輸出數(shù)據(jù),導(dǎo)致對(duì)應(yīng)的UART接收無(wú)效的數(shù)據(jù),使緊接著的正常通訊出錯(cuò);另外一種情況可能發(fā)生在打開(kāi)/關(guān)閉發(fā)送使能控制的瞬間,使接收器輸出信號(hào),也會(huì)導(dǎo)致UART錯(cuò)誤地接收。

解決方法:

1)在通訊總線上采用同相輸入端上拉(A線)、反相輸入端下拉(B線)的方法對(duì)總線進(jìn)行鉗位,保證接收器輸出為固定的“1”電平;

2)采用內(nèi)置防故障模式的MAX308x系列的接口產(chǎn)品替換該接口電路;

3)通過(guò)軟件方式消除,即在通信數(shù)據(jù)包內(nèi)增加2-5個(gè)起始同步字節(jié),只有在滿足同步頭后才開(kāi)始真正的數(shù)據(jù)通訊。

十三、影響RS-485總線通訊速度和通信可靠性的三個(gè)因素

1、在通信電纜中的信號(hào)反射

在通信過(guò)程中,有兩種信號(hào)因?qū)е滦盘?hào)反射:阻抗不連續(xù)和阻抗不匹配。阻抗不連續(xù),信號(hào)在傳輸線末端突然遇到電纜阻抗很小甚至沒(méi)有,信號(hào)在這個(gè)地方就會(huì)引起反射,如圖1所示。這種信號(hào)反射的原理,與光從一種媒質(zhì)進(jìn)入另一種媒質(zhì)要引起反射是相似的。消除這種反射的方法,就必須在電纜的末端跨接一個(gè)與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續(xù)。由于信號(hào)在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接一個(gè)同樣大小的終端電阻從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再也不會(huì)出現(xiàn)信號(hào)反射現(xiàn)象。但是,在實(shí)現(xiàn)應(yīng)用中,由于傳輸電纜的特性阻抗與通訊波特率等應(yīng)用環(huán)境有關(guān),特性阻抗不可能與終端電阻完全相等,因此或多或少的信號(hào)反射還會(huì)存在。

引起信號(hào)反射的另個(gè)原因是數(shù)據(jù)收發(fā)器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現(xiàn)在通訊線路處在空閑方式時(shí),整個(gè)網(wǎng)絡(luò)數(shù)據(jù)混亂。

信號(hào)反射對(duì)數(shù)據(jù)傳輸?shù)挠绊?,歸根結(jié)底是因?yàn)榉瓷湫盘?hào)觸發(fā)了接收器輸入端的比較器,使接收器收到了錯(cuò)誤的信號(hào),導(dǎo)致CRC校驗(yàn)錯(cuò)誤或整個(gè)數(shù)據(jù)幀錯(cuò)誤。

在信號(hào)分析,衡量反射信號(hào)強(qiáng)度的參數(shù)是RAF(RefectionAttenuationFactor反射衰減因子)。它的計(jì)算公式如式(1)。

RAF=20lg(Vref/Vinc)(1)

式中:Vref-反射信號(hào)的電壓大?。籚inc-在電纜與收發(fā)器或終端電阻連接點(diǎn)的入射信號(hào)的電壓大小。

具體的測(cè)量方法如圖3所示。例如,由實(shí)驗(yàn)測(cè)得2.5MHz的入射信號(hào)正弦波的峰-峰值為+5V,反射信號(hào)的峰-峰值為+0.297V,則該通訊電纜在2.5MHz的通訊速率時(shí),它的反射衰減因子為:RAF=20lg(0.297/2.5)=-24.52dB

要減弱反射信號(hào)對(duì)通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實(shí)際應(yīng)用中,對(duì)于比較小的反射信號(hào),為簡(jiǎn)單方便,經(jīng)常采用加偏置電阻的方法。在通訊線路中,如何通過(guò)加偏置電阻提高通訊可靠性的原理,后面將做詳細(xì)介紹。

十四、在通訊電纜中的信號(hào)衰減

第二個(gè)影響信號(hào)傳輸?shù)囊蛩厥切盘?hào)在電纜的傳輸過(guò)程中衰減。一條傳輸電纜可以把它看出由分布電容、分布電感和電阻聯(lián)合組成的等效電路。

電纜的分布電容C主要是由雙絞線的兩條平行導(dǎo)線產(chǎn)生。導(dǎo)線的電阻在這里對(duì)信號(hào)的影響很小,可以忽略不計(jì)。信號(hào)的損失主要是由于電纜的分布電容和分布電感組成的LC低通濾波器。PROFIBUS用的LAN標(biāo)準(zhǔn)型二芯電感(西門(mén)子為DP總線選用的標(biāo)準(zhǔn)電纜),在不同波特率時(shí)的衰減系數(shù)。

十五、在通訊電纜中的純阻負(fù)載

影響通訊性能的第三個(gè)因素是純阻性負(fù)載(也叫直流負(fù)載)的大小。這里指的純阻性負(fù)載主要由終端電阻、偏置電阻和RS-485收發(fā)器三者構(gòu)成。

在敘述EIARS-485規(guī)范時(shí)曾提到過(guò)RS-485驅(qū)動(dòng)器在帶了32個(gè)節(jié)點(diǎn),配置了150Ω終端電阻的情況下,至少能輸出1.5V的差分電壓。一個(gè)接收器的輸入電阻為12kΩ,整個(gè)網(wǎng)絡(luò)的等效電路如圖5所示。按這樣計(jì)算,RS-485驅(qū)動(dòng)器的負(fù)載能力為:RL=32個(gè)輸入電阻并聯(lián)||2個(gè)終端電阻=((12000/32)×(150/2))/(12000/32)+(150/2))≈51.7Ω

現(xiàn)在比較常用的RS-485驅(qū)動(dòng)器有MAX485、DS3695、MAX1488/1489以及和利時(shí)公司使用的SN75176A/D等,其中有的RS-485驅(qū)動(dòng)器負(fù)載能力可以達(dá)到20Ω。在不考慮其它諸多因素的情況下,按照驅(qū)動(dòng)能力和負(fù)載的關(guān)系計(jì)算,一個(gè)驅(qū)動(dòng)器可帶節(jié)點(diǎn)的最大數(shù)量將遠(yuǎn)遠(yuǎn)大于32個(gè)。

在通訊波特率比較高的時(shí)候,在線路上偏置電阻是很有必要的。偏置電阻的連接方法。它的作用是在線路進(jìn)入空閑狀態(tài)后,把總線上沒(méi)有數(shù)據(jù)時(shí)(空閑方式)的電平拉離0電平。這樣一來(lái),即使線路中出現(xiàn)了比較小的反射信號(hào)或干擾,掛接在總線上的數(shù)據(jù)接收器也不會(huì)由于這些信號(hào)的到來(lái)而產(chǎn)生誤動(dòng)作。通過(guò)下面后例子了,可以計(jì)算出偏置電阻的大?。航K端電阻Rt1=Rr2=120Ω;

假設(shè)反射信號(hào)最大的峰-峰值Vref≤0.3Vp-p,則負(fù)半周的電壓Vref≤0.15V;終端的電阻上由反射信號(hào)引起的反射電流Iref≤0.15/(120||120)=2.5mA。一般RS-485收發(fā)器(包括SN75176)的滯后電壓值(hysteresisvalue)為50mV,即:

(Ibias-Iref)×(Rt1||Rt2)≥50mV

于是可以計(jì)算出偏置電阻產(chǎn)生的偏置電流Ibias≥3.33mA

+5V=Ibias(R上拉+R下拉+(Rt1||Rt2))(2)

通過(guò)式2可以計(jì)算出R上拉=R下拉=720Ω

在實(shí)際應(yīng)用中,RS-485總線加偏置電阻有兩種方法:

(1)把偏置電阻平衡分配給總線上的每一個(gè)收發(fā)器。這種方法給掛接在RS-485總線上的每一個(gè)收發(fā)器加了偏置電阻,給每一個(gè)收發(fā)器都加了一個(gè)偏置電壓。

(2)在一段總線上只用一對(duì)偏置電阻。這種方法對(duì)總線上存在大的反射信號(hào)或干擾信號(hào)比較有效。值得注意的是偏置電阻的加入,增加了總線的負(fù)載。

十六、RS-485總線的負(fù)載能力和通訊電纜長(zhǎng)度之間的關(guān)系

在設(shè)計(jì)RS-485總線組成的網(wǎng)絡(luò)配置(總線長(zhǎng)度和帶負(fù)載個(gè)數(shù))時(shí),應(yīng)該考慮到三個(gè)參數(shù):純阻性負(fù)載、信號(hào)衰減和噪聲容限。純阻性負(fù)載、信號(hào)衰減這兩個(gè)參數(shù),在前面已經(jīng)討論過(guò),現(xiàn)在要討論的是噪聲容限(NoiseMargin)。RS-485總線接收器的噪聲容限至少應(yīng)該大于200mV。前面的論述者是在假設(shè)噪聲容限為0的情況下進(jìn)行的。

在實(shí)際應(yīng)用中,為了提高總線的抗干擾能力,總希望系統(tǒng)的噪聲容限比EIARS-485標(biāo)準(zhǔn)中規(guī)定的好一些。從下面的公式能看出總線帶負(fù)載的多少和通訊電纜長(zhǎng)度之間的關(guān)系:Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3)

其中:Vend為總線末端的信號(hào)電壓,在標(biāo)準(zhǔn)測(cè)定時(shí)規(guī)定為0.2V;Vdriver為驅(qū)動(dòng)器的輸出電壓(與負(fù)載數(shù)有關(guān)。負(fù)載數(shù)在5~35個(gè)之間,Vdriver=2.4V;當(dāng)負(fù)載數(shù)小于5,Vdriver=2.5V;當(dāng)負(fù)載數(shù)大于35,Vdriver≤2.3V);Vloss為信號(hào)在總線中的傳輸過(guò)程中的損耗(與通訊電纜的規(guī)格和長(zhǎng)度有關(guān)),由表1提供的標(biāo)準(zhǔn)電纜的衰減系數(shù),根據(jù)公式衰減系數(shù)b=20lg(Vout/Vin)可以計(jì)算出Vloss=Vin-Vout=0.6V(注:通訊波特率為9.6kbps,電纜長(zhǎng)度1km,如果特率增加,Vloss會(huì)相應(yīng)增大);Vnoise為噪聲容限,在標(biāo)準(zhǔn)測(cè)定時(shí)規(guī)定為0.1V;Vbias是由偏置電阻提供的偏置電壓(典型值為0.4V)。

式(3)中乘以0.8是為了使通信電纜不進(jìn)入滿載狀態(tài)。從式(3)可以看出,Vdriver的大小和總線上帶負(fù)載數(shù)的多少成反比,Vloss的大小和總線長(zhǎng)度成反比,其他幾個(gè)參數(shù)只和用的驅(qū)動(dòng)器類(lèi)型有關(guān)。因此,在選定了驅(qū)動(dòng)器的RS-495總線上,在通信波特率一定的情況下,帶負(fù)載數(shù)的多少,與信號(hào)能傳輸?shù)淖畲缶嚯x是直接相關(guān)的。具體關(guān)系是:

在總線允許的范圍內(nèi),帶負(fù)載數(shù)越多,信號(hào)能傳輸?shù)木嚯x就越??;帶負(fù)載數(shù)據(jù)少,信號(hào)能傳輸?shù)木嚯x就發(fā)越遠(yuǎn)。

十七、分布電容對(duì)RS-485總線傳輸性能的影響

電纜的分布電容主是由雙絞線的兩條平行導(dǎo)線產(chǎn)生。另外,導(dǎo)線和地之間也存在分布電容,雖然很小,但在分析時(shí)也不能忽視。分布電容對(duì)總線傳輸性能的影響,主要是因?yàn)榭偩€上傳輸?shù)氖腔ㄐ盘?hào),信號(hào)的表達(dá)方式只有“1”和“0”。在特殊的字節(jié)中,例如0x01,信號(hào)“0”使得分布電容有足夠的充電時(shí)間,而信號(hào)“1”到來(lái)時(shí),由于分布電容中的電荷,來(lái)不及放電,(Vin+)-(Vin-)-還大于200mV,結(jié)果使接愛(ài)誤認(rèn)為是“0”,而最終導(dǎo)致CRC校驗(yàn)錯(cuò)誤,整個(gè)數(shù)據(jù)幀傳輸錯(cuò)誤。

由于總線上分布影響,導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤,從而使整個(gè)網(wǎng)絡(luò)性能降低。解決這個(gè)問(wèn)題有兩種方法:

(1)降低數(shù)據(jù)傳輸?shù)牟ㄌ芈剩?/p>

(2)使用分布電容小的電纜,提高傳輸線的質(zhì)量。

十八、單工、半雙工和全雙工的定義

1、如果在通信過(guò)程的任意時(shí)刻,信息只能由一方A傳到另一方B,則稱為單工。

2、如果在任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但只能由一個(gè)方向上的傳輸存在,稱為半雙工傳輸。

3、如果在任意時(shí)刻,線路上存在A到B和B到A的雙向信號(hào)傳輸,則稱為全雙工。

電話線就是二線全雙工信道。由于采用了回波抵消技術(shù),雙向的傳輸信號(hào)不致混淆不清。雙工信道有時(shí)也將收、發(fā)信道分開(kāi),采用分離的線路或頻帶傳輸相反方向的信號(hào),如回線傳輸。

Modbus通訊協(xié)議詳解

導(dǎo)語(yǔ):ModBus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程控制器和計(jì)算機(jī)通過(guò)公用線路或局部專(zhuān)用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。

ModBus網(wǎng)絡(luò)只有一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。

了解Modbus通訊協(xié)議是怎么回事,在現(xiàn)場(chǎng)就可以用各種第三方的小軟件做通訊測(cè)試了。

Modbus協(xié)議包括ASCII、RTU、TCP等,并沒(méi)有規(guī)定物理層。此協(xié)議定義了控制器能夠認(rèn)識(shí)和使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。標(biāo)準(zhǔn)的Modicon控制器使用RS232C實(shí)現(xiàn)串行的Modbus。Modbus的ASCII、RTU協(xié)議規(guī)定了消息、數(shù)據(jù)的結(jié)構(gòu)、命令和就答的方式,數(shù)據(jù)通訊采用Maser/Slave方式,Master端發(fā)出數(shù)據(jù)請(qǐng)求消息,Slave端接收到正確消息后就可以發(fā)送數(shù)據(jù)到Master端以響應(yīng)請(qǐng)求;Master端也可以直接發(fā)消息修改Slave端的數(shù)據(jù),實(shí)現(xiàn)雙向讀寫(xiě)。

Modbus協(xié)議需要對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),串行協(xié)議中除有奇偶校驗(yàn)外,ASCII模式采用LRC校驗(yàn),RTU模式采用16位CRC校驗(yàn),但TCP模式?jīng)]有額外規(guī)定校驗(yàn),因?yàn)門(mén)CP協(xié)議是一個(gè)面向連接的可靠協(xié)議。另外,Modbus采用主從方式定時(shí)收發(fā)數(shù)據(jù),在實(shí)際使用中如果某Slave站點(diǎn)斷開(kāi)后(如故障或關(guān)機(jī)),Master端可以診斷出來(lái),而當(dāng)故障修復(fù)后,網(wǎng)絡(luò)又可自動(dòng)接通。因此,Modbus協(xié)議的可靠性較好。

對(duì)于Modbus的ASCII、RTU和TCP協(xié)議來(lái)說(shuō),其中TCP和RTU協(xié)議非常類(lèi)似,我們只要把RTU協(xié)議的兩個(gè)字節(jié)的校驗(yàn)碼去掉,然后在RTU協(xié)議的開(kāi)始加上5個(gè)0和一個(gè)6并通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議發(fā)送出去即可。

1通訊傳送方式:

通訊傳送分為獨(dú)立的信息頭,和發(fā)送的編碼數(shù)據(jù)。以下的通訊傳送方式定義也與ModBusRTU通訊規(guī)約相兼容:

初始結(jié)構(gòu) = ≥4字節(jié)的時(shí)間

地址碼 = 1 字節(jié)

功能碼 = 1 字節(jié)

數(shù)據(jù)區(qū) = N 字節(jié)

錯(cuò)誤校檢 = 16位CRC碼

結(jié)束結(jié)構(gòu) = ≥4字節(jié)的時(shí)間

地址碼:地址碼為通訊傳送的第一個(gè)字節(jié)。這個(gè)字節(jié)表明由用戶設(shè)定地址碼的從機(jī)將接收由主機(jī)發(fā)送來(lái)的信息。并且每個(gè)從機(jī)都有具有唯一的地址碼,并且響應(yīng)回送均以各自的地址碼開(kāi)始。主機(jī)發(fā)送的地址碼表明將發(fā)送到的從機(jī)地址,而從機(jī)發(fā)送的地址碼表明回送的從機(jī)地址。

功能碼:通訊傳送的第二個(gè)字節(jié)。ModBus通訊規(guī)約定義功能號(hào)為1到127。本儀表只利用其中的一部分功能碼。作為主機(jī)請(qǐng)求發(fā)送,通過(guò)功能碼告訴從機(jī)執(zhí)行什么動(dòng)作。作為從機(jī)響應(yīng),從機(jī)發(fā)送的功能碼與從主機(jī)發(fā)送來(lái)的功能碼一樣,并表明從機(jī)已響應(yīng)主機(jī)進(jìn)行操作。如果從機(jī)發(fā)送的功能碼的最高位為1(比如功能碼大與此同時(shí)127),則表明從機(jī)沒(méi)有響應(yīng)操作或發(fā)送出錯(cuò)。

數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)是根據(jù)不同的功能碼而不同。數(shù)據(jù)區(qū)可以是實(shí)際數(shù)值、設(shè)置點(diǎn)、主機(jī)發(fā)送給從機(jī)或從機(jī)發(fā)送給主機(jī)的地址。

CRC碼:二字節(jié)的錯(cuò)誤檢測(cè)碼。

2通訊規(guī)約:

當(dāng)通訊命令發(fā)送至儀器時(shí),符合相應(yīng)地址碼的設(shè)備接通訊命令,并除去地址碼,讀取信息,如果沒(méi)有出錯(cuò),則執(zhí)行相應(yīng)的任務(wù);然后把執(zhí)行結(jié)果返送給發(fā)送者。返送的信息中包括地址碼、執(zhí)行動(dòng)作的功能碼、執(zhí)行動(dòng)作后結(jié)果的數(shù)據(jù)以及錯(cuò)誤校驗(yàn)碼。如果出錯(cuò)就不發(fā)送任何信息。

1.信息幀結(jié)構(gòu)

地址碼 功能碼 數(shù)據(jù)區(qū) 錯(cuò)誤校驗(yàn)碼

8位 8位 N × 8位 16位

地址碼:地址碼是信息幀的第一字節(jié)(8位),從0到255。這個(gè)字節(jié)表明由用戶設(shè)置地址的從機(jī)將接收由主機(jī)發(fā)送來(lái)的信息。每個(gè)從機(jī)都必須有唯一的地址碼,并且只有符合地址碼的從機(jī)才能響應(yīng)回送。當(dāng)從機(jī)回送信息時(shí),相當(dāng)?shù)牡刂反a表明該信息來(lái)自于何處。

功能碼:主機(jī)發(fā)送的功能碼告訴從機(jī)執(zhí)行什么任務(wù)。表1-1列出的功能碼都有具體的含義及操作。

數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)包含需要從機(jī)執(zhí)行什么動(dòng)作或由從機(jī)采集的返送信息。這些信息可以是數(shù)值、參考地址等等。例如,功能碼告訴從機(jī)讀取寄存器的值,則數(shù)據(jù)區(qū)必需包含要讀取寄存器的起始地址及讀取長(zhǎng)度。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同。

錯(cuò)誤校驗(yàn)碼:主機(jī)或從機(jī)可用校驗(yàn)碼進(jìn)行判別接收信息是否出錯(cuò)。有時(shí),由于電子噪聲或其它一些干擾,信息在傳輸過(guò)程中會(huì)發(fā)生細(xì)微的變化,錯(cuò)誤校驗(yàn)碼保證了主機(jī)或從機(jī)對(duì)在傳送過(guò)程中出錯(cuò)的信息不起作用。這樣增加了系統(tǒng)的安全和效率。錯(cuò)誤校驗(yàn)采用CRC-16校驗(yàn)方法。

注:信息幀的格式都基本相同:地址碼、功能碼、數(shù)據(jù)區(qū)和錯(cuò)誤校驗(yàn)碼。

2.錯(cuò)誤校驗(yàn)

冗余循環(huán)碼(CRC)包含2個(gè)字節(jié),即16位二進(jìn)制。CRC碼由發(fā)送設(shè)備計(jì)算,放置于發(fā)送信息的尾部。接收信息的設(shè)備再重新計(jì)算接收到信息的 CRC碼,比較計(jì)算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯(cuò)。

3Modbus支持的功能碼:

1、01號(hào)命令,讀可讀寫(xiě)數(shù)字量寄存器(線圈狀態(tài)):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號(hào)01] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位]

例:[11][01][00][13][00][25][CRC低][CRC高]

意義如下:

<1>設(shè)備地址:在一個(gè)485總線上可以掛接多個(gè)設(shè)備,此處的設(shè)備地址表示想和哪一個(gè)設(shè)備通訊。例子中為想和17號(hào)(十進(jìn)制的17是十六進(jìn)制的11)通訊。

<2>命令號(hào)01:讀取數(shù)字量的命令號(hào)固定為01。

<3>起始地址高8位、低8位:表示想讀取的開(kāi)關(guān)量的起始地址(起始地址為0)。比如例子中的起始地址為19。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開(kāi)始讀多少個(gè)開(kāi)關(guān)量。例子中為37個(gè)開(kāi)關(guān)量。

<5>CRC校驗(yàn):是從開(kāi)頭一直校驗(yàn)到此之前。

設(shè)備響應(yīng):[設(shè)備地址] [命令號(hào)01] [返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][01][05][CD][6B][B2][0E][1B] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和命令號(hào)和上面的相同。

<2>返回的字節(jié)個(gè)數(shù):表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。

<3>數(shù)據(jù)1...n:由于每一個(gè)數(shù)據(jù)是一個(gè)8位的數(shù),所以每一個(gè)數(shù)據(jù)表示8個(gè)開(kāi)關(guān)量的值,每一位為0表示對(duì)應(yīng)的開(kāi)關(guān)斷開(kāi),為1表示閉合。比如例子中,表示20號(hào)(索引號(hào)為19)開(kāi)關(guān)閉合,21號(hào)斷開(kāi),22閉合,23閉合,24斷開(kāi),25斷開(kāi),26閉合,27閉合...如果詢問(wèn)的開(kāi)關(guān)量不是8的整倍數(shù),那么最后一個(gè)字節(jié)的高位部分無(wú)意義,置為0。

<4>CRC校驗(yàn)同上。

2、05號(hào)命令,寫(xiě)數(shù)字量(線圈狀態(tài)):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號(hào)05] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位]

例:[11][05][00][AC][FF][00][CRC高][CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號(hào):寫(xiě)數(shù)字量的命令號(hào)固定為05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的開(kāi)關(guān)的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的開(kāi)關(guān)量的狀態(tài)。例子中為把該開(kāi)關(guān)閉合。注意,此處只可以是[FF][00]表示閉合[00][00]表示斷開(kāi),其他數(shù)值非法。

<5>注意此命令一條只能下置一個(gè)開(kāi)關(guān)量的狀態(tài)。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)。

3、03號(hào)命令,讀可讀寫(xiě)模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號(hào)03] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][03][00][6B][00][03] [CRC高][CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號(hào):讀模擬量的命令號(hào)固定為03。

<3>起始地址高8位、低8位:表示想讀取的模擬量的起始地址(起始地址為0)。比如例子中的起始地址為107。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開(kāi)始讀多少個(gè)模擬量。例子中為3個(gè)模擬量。注意,在返回的信息中一個(gè)模擬量需要返回兩個(gè)字節(jié)。

設(shè)備響應(yīng):[設(shè)備地址] [命令號(hào)03] [返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][03][06][02][2B][00][00][00][64] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和命令號(hào)和上面的相同。

<2>返回的字節(jié)個(gè)數(shù):表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。例子中返回了3個(gè)模擬量的數(shù)據(jù),因?yàn)橐粋€(gè)模擬量需要2個(gè)字節(jié)所以共6個(gè)字節(jié)。

<3>數(shù)據(jù)1...n:其中[數(shù)據(jù)1][數(shù)據(jù)2]分別是第1個(gè)模擬量的高8位和低8位,[數(shù)據(jù)3][數(shù)據(jù)4]是第2個(gè)模擬量的高8位和低8位,以此類(lèi)推。例子中返回的值分別是555,0,100。

<4>CRC校驗(yàn)同上。

4、06號(hào)命令,寫(xiě)單個(gè)模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號(hào)06] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][06][00][01][00][03] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號(hào):寫(xiě)模擬量的命令號(hào)固定為06。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號(hào)寄存器的值設(shè)為3。

<5>注意此命令一條只能下置一個(gè)模擬量的狀態(tài)。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)。

5、16號(hào)命令,寫(xiě)多個(gè)模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號(hào)16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [下置的數(shù)據(jù)高8位] [低8位][……][……] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][16][00][01][00][01][00][05] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號(hào):寫(xiě)模擬量的命令號(hào)固定為16。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>需下置的數(shù)據(jù)數(shù)量高8位,低8位:表明了需要下置的數(shù)據(jù)數(shù)量,這里為1。

<5>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號(hào)寄存器的值設(shè)為5。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)返回的如下命令,否則不響應(yīng)。

設(shè)備響應(yīng):[設(shè)備地址] [命令號(hào)16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位],如上例返回:

[11][16][00][01][00][01] [CRC高] [CRC低]

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    51

    文章

    7998

    瀏覽量

    145014
  • RS485
    +關(guān)注

    關(guān)注

    39

    文章

    1127

    瀏覽量

    81768
  • 串口通訊
    +關(guān)注

    關(guān)注

    1

    文章

    256

    瀏覽量

    24711

原文標(biāo)題:終于講透了,史上最詳細(xì)的RS485串口通訊!PLC工程師必看

文章出處:【微信號(hào):gongkongworld,微信公眾號(hào):工控資料窩】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于RS232或RS485串口通訊調(diào)試,很好很方便,與大家分享

    關(guān)于RS232或RS485串口通訊調(diào)試,我用過(guò)的,感覺(jué)很好很方便,故與大家分享。
    發(fā)表于 05-09 16:13

    RS485 232串口通信數(shù)據(jù)解析

    文章目錄(RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)生成一個(gè)適合你的列表創(chuàng)建一個(gè)表格設(shè)定內(nèi)容居中、居左、居右SmartyPants創(chuàng)建一個(gè)自定義列表如何創(chuàng)建一個(gè)注腳注釋也是必不可少的KaTeX
    發(fā)表于 02-22 07:14

    rs485通訊協(xié)議

    rs485通訊協(xié)議是本技術(shù)頻道的核心內(nèi)容,介紹了rs485通訊協(xié)議原理,rs485通訊協(xié)議
    發(fā)表于 08-13 17:21
    <b class='flag-5'>rs485</b><b class='flag-5'>通訊</b>協(xié)議

    RS232-RS485串口通信詳解

    RS232-RS485串口通信詳解,很不錯(cuò)的東東
    發(fā)表于 08-09 15:08 ?28次下載

    RS-232和RS-485串口通訊調(diào)試器應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是RS-232和RS-485串口通訊調(diào)試器應(yīng)用程序免費(fèi)下載
    發(fā)表于 01-13 08:00 ?8次下載
    <b class='flag-5'>RS</b>-232和<b class='flag-5'>RS-485</b><b class='flag-5'>串口</b><b class='flag-5'>通訊</b>調(diào)試器應(yīng)用程序免費(fèi)下載

    RS485通信的詳細(xì)資料講解

    本文檔的主要內(nèi)容詳細(xì)介紹的是RS485通信的詳細(xì)資料講解包括了:RS485基礎(chǔ),通訊協(xié)議,
    發(fā)表于 11-09 08:00 ?31次下載
    <b class='flag-5'>RS485</b>通信的<b class='flag-5'>詳細(xì)</b>資料<b class='flag-5'>講解</b>

    RS485串口轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)

    RS485串口轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)
    發(fā)表于 11-21 10:12 ?2183次閱讀
    <b class='flag-5'>RS485</b><b class='flag-5'>串口</b>轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)

    RS485/RS232串口轉(zhuǎn)Modbus網(wǎng)關(guān)

    RS485/RS232串口轉(zhuǎn)Modbus網(wǎng)關(guān)
    發(fā)表于 12-03 16:59 ?2538次閱讀

    RS485或者rs232串口設(shè)備如何上傳mqtt平臺(tái)

    RS485或者rs232串口設(shè)備如何上傳mqtt平臺(tái)
    發(fā)表于 12-03 17:03 ?1688次閱讀

    modbus轉(zhuǎn)MQTT協(xié)議網(wǎng)關(guān)RS485串口接入華為云

    modbus轉(zhuǎn)MQTT協(xié)議網(wǎng)關(guān)RS485串口一鍵快速接入華為云金鴿BL101E
    發(fā)表于 12-06 15:01 ?1316次閱讀
    modbus轉(zhuǎn)MQTT協(xié)議網(wǎng)關(guān)<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>接入華為云

    RS485串口轉(zhuǎn)以太網(wǎng)接入MODBUS TCP第三方云平臺(tái)

    RS485串口轉(zhuǎn)以太網(wǎng)接入MODBUS TCP第三方云平臺(tái)
    發(fā)表于 12-06 14:57 ?2202次閱讀

    (RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)

    文章目錄(RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)生成一個(gè)適合你的列表創(chuàng)建一個(gè)表格設(shè)定內(nèi)容居中、居左、居右SmartyPants創(chuàng)建一個(gè)自定義列表如何創(chuàng)建一個(gè)注腳注釋也是必不可少的KaTeX
    發(fā)表于 12-28 19:35 ?16次下載
    (<b class='flag-5'>RS485</b> 232<b class='flag-5'>串口</b>通信數(shù)據(jù)解析實(shí)用干貨(1)

    如何實(shí)現(xiàn)RS485串口通訊采集模擬量

    如何實(shí)現(xiàn)RS485串口通訊采集模擬量流程分享
    的頭像 發(fā)表于 08-23 11:30 ?4628次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>RS485</b><b class='flag-5'>串口</b><b class='flag-5'>通訊</b>采集模擬量

    如何實(shí)現(xiàn)開(kāi)關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能RS485串口通訊

    如何實(shí)現(xiàn)開(kāi)關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能RS485串口通訊流程分享
    的頭像 發(fā)表于 08-23 11:33 ?2005次閱讀
    如何實(shí)現(xiàn)開(kāi)關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能<b class='flag-5'>RS485</b><b class='flag-5'>串口</b><b class='flag-5'>通訊</b>

    工業(yè)RS485串口網(wǎng)關(guān)實(shí)現(xiàn)485接口數(shù)據(jù)采集

    傳統(tǒng)工業(yè)上大都采用RS-232、RS-485串口與電腦進(jìn)行通信傳輸,現(xiàn)還是有大量的新的RS485設(shè)備在生產(chǎn)和投入運(yùn)行。RS-485接口具有良
    的頭像 發(fā)表于 02-03 16:56 ?1536次閱讀
    工業(yè)<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>網(wǎng)關(guān)實(shí)現(xiàn)<b class='flag-5'>485</b>接口數(shù)據(jù)采集