RS485總線的死鎖檢測與解除_第1頁
RS485總線的死鎖檢測與解除_第2頁
RS485總線的死鎖檢測與解除_第3頁
RS485總線的死鎖檢測與解除_第4頁
RS485總線的死鎖檢測與解除_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、rs-485總線的死鎖檢測與解除作者:(廣州)增城市電力局 黃沛芳 來源:單片機與嵌入式系統(tǒng)應(yīng)用 摘要:針對rs-485接口收發(fā)電路的特點,討論rs-485總線在polling和csma/cd通信方式中死鎖檢測和解除死鎖的方法。該方法同樣適用于rs-422接口。 關(guān)鍵詞:rs-485接口 死鎖檢測 死鎖解除 rs-485總線傳送距離遠、速度快、抗干擾能力強,是工業(yè)現(xiàn)場廣泛應(yīng)用的數(shù)字通信標準。rs-485總線是一種半雙工通信標準,支持總線方式多點互連,使其成為集散控制系統(tǒng)和現(xiàn)場總線控制系統(tǒng)中采用最多的通信和組網(wǎng)方法。采用rs-485總線連接的多個站點,任一時刻只能有一個站點在“說”,其它站點只能

2、處于“聽”狀態(tài)。如果有多個1個的站點在“說”,數(shù)據(jù)將在通信總線上碰撞,結(jié)果是處于接收狀態(tài)的站點不能收到正確的數(shù)據(jù)。在rs-485總線通信網(wǎng)中,必須控制好每個站點的“聽、說”狀態(tài),即收發(fā)狀態(tài),以保證能及時、正確地傳輸數(shù)據(jù)。 圖1是最常見的rs-485接口。在rs-485總線通信系統(tǒng)中,掛在總線上的收發(fā)電路一般大于2個。使用圖1所示接收電路,如果系統(tǒng)中的某一個站點死機或出了問題,可能使單片機的p1.0口恒為“1”。其發(fā)送器將長期占用通信總線,產(chǎn)生稱為rs-485總線“死鎖”的狀態(tài),其它所有站點的均無法使用通信總線進行通信,這將導致整個通信系統(tǒng)崩潰。為了說明方便,把rs-485總線a線對地電壓為稱為

3、va,b線對地電壓為稱為vb;vavb時的死鎖稱為“1”死鎖,vavb時的死鎖稱為“0”死鎖。如果2個站點失控,其中一個是“1”死鎖,另一個是“0”死鎖,而系統(tǒng)無法及時解除該死鎖狀態(tài),不但各站點間無法正常通信而且會燒壞鎖站點的rs-485接口芯片,引發(fā)更大的故障。 在rs-485總線通信系統(tǒng)中,通常設(shè)有個功能強、工作可靠的站點作為主站,其它的作為子站。主站除了完成它的相關(guān)工作任務(wù)外,通常它還負責管理掛在rs-485總線上的其它子站。程序跑飛是所有基于微處理器系統(tǒng)均需面對的普遍問題。在工業(yè)測控系統(tǒng)中,可靠、穩(wěn)定地工作是第一位的。若同時賦予主站rs-485總線死鎖檢測與解除的軟/硬件和在所有的子站

4、中配置相關(guān)硬件,將可以有效解決由于子站程序跑飛而引發(fā)的rs-485總線死鎖問題。 一、rs-485總線死鎖檢測 1.查詢方式的rs-485總線死鎖檢測 rs-485總線在發(fā)送數(shù)據(jù)時,允許同時接收剛發(fā)送的數(shù)據(jù)。rs-485總線通信系統(tǒng)如果工作于查詢方式,主站將不斷地每隔一定時間輪詢各個子部。只要輪詢時間不太長,如輪詢時間間隔1min,則只須軟件開鎖就可以滿足rs-485總線死鎖檢測要求。主站在輪詢過程中,若檢測到以下兩種情況,就可以初步判為rs-485死鎖: (1)主站發(fā)送的數(shù)據(jù)與接收到的不相同; (2)在輪詢某個子站時,無響應(yīng)或響應(yīng)的數(shù)據(jù)不正確(可能是rs-485總線死鎖或子站死機,也有可能孩

5、子站已退出運行)。 2.工作于csma/cd方式的rs-485總線死鎖檢測 采用csma/cd通信方式的rs-485總線,主站一般不主動輪詢每個子站。此方式下,主站可以采用圖2所示硬件來檢測rs-485總線的死鎖狀態(tài)。在rs-485總線空閑時,要求信號線a至少比信號線b高0.2v以上。只要使rs-485總線空閑時0.2vva-vb正常發(fā)送2字節(jié)時間,判為rs-485總線“1”死鎖。 (2)rxd低電平持續(xù)時間正常發(fā)送2字節(jié)時間,判為rs-485總線“0”死鎖。 二、rs-485總線死鎖解除 rs-485總線死鎖往往是由于子站的微控制器程序跑飛,使得rs-485發(fā)送器的發(fā)送使能de恒為高電平引起

6、的。出現(xiàn)這種情況只需給相應(yīng)的子站復位一下,讓它重新執(zhí)行初始化程序始可解決。在檢測到rs-485總線死鎖后,如果各子站的軟/硬件無問題,可以采用復位程序跑飛的子站來解除死鎖。以下介紹兩類可以由主站自動復位子站的硬件電路。該電路適用于rst引腳高電平有效時復位的單片機,如國內(nèi)廣泛應(yīng)用的51系列單片機。對于rst引腳低電平有效時復位的單片機則須將電路的邏輯取反。 1.有選擇性地復位死鎖子站電路 圖3是具有選擇性的復位死鎖子站電路,是一種巧妙的解除通信總線死鎖狀態(tài)設(shè)計。它利用了rs-485總線死鎖,則對應(yīng)死鎖子站的發(fā)送使能de為“1”的特點,在子站中只用了少量的硬件開銷(1個與非門、1個電阻和1只三極

7、管),即實現(xiàn)了有選擇性的復位死鎖子站的電路。在正常工作時,主站的p1.1置為“0”,此時不管各個子站的de為何狀態(tài),它們的與非門輸出均為高電平,三極管t1截止,rst為低電平,不會復位任何子站。當檢測到rs-485總線死鎖時,主站只需將p1.1置為“1”,只有de為“1”子站的與非門輸出低電平,三極管t1導通,rst為高電平,相應(yīng)的子站被復位。其它子站的與非門輸出高電平,不會被錯誤地復位。 2.無選擇性地復位所有子站電路 圖4是一個無選擇性復位子站的電路。它由主站的p1.1驅(qū)動,通過屏蔽電纜引到各子站的外復位電路t1的基極。正常運行時,主站置p1.1為“1”,此時它不影響各子站原有的復位功能。

8、當主站檢測到rs-485總線死鎖或復位各子站時,只須將p1.1置為“0”,所有掛在復位總線上的t1均導通,rst輸出高電平,各子站均被無條件復位。 結(jié)束語 單片機的復位電路是對干擾較為敏感的電路。施加在單片機的復位電路上一個ms級的微小毛刺干擾,就會對單片機造成極為嚴重的影響。若毛刺干擾持續(xù)時間大于單片機要求最小的可靠復位時間,單片機被復位;否則單片機還末完成復位過程,復位信號就被撤消,其內(nèi)部寄存器將處于不確定狀態(tài),令單片機的應(yīng)用中,為了可靠起見,一般不外引復位電路。在要文的應(yīng)用中,需將復位電路外引,復位總線采用屏蔽線以提高抗干擾能力。 本文介紹的2種遠方復位電路,各有優(yōu)缺點。具有選擇性的復位

9、電路優(yōu)點是:有選擇性地復位鎖rs-485總線的子站,而不影響其它正常的子站,滿足解除rs-485總線死鎖的要求。缺點是:當子站程序跑飛但并沒有使得de恒為高電平時,rs-485總線處于正常狀態(tài),主站可以和所有正常的子站通信,但主站對這個異常的子站無能為力。無選擇性的復位電路優(yōu)點是:主站可以復位任何類型的由于程序跑飛引起異常的子站,此外,在電路的實現(xiàn)上較有選擇性的復位電路簡單。缺點是:它的動作是無選擇性的,不管子站是否異常,掛在復位總線上的所有子站均被無條件復位。 rs-422接口的電氣參數(shù)要求與rs-485接口相同,主要差別在于rs-422是全雙工接口,而rs-485是雙工接口。本文介紹rs-

10、485總線死鎖檢測方法,只需稍加修改,同樣適用于rs-422總線系統(tǒng),而解除死鎖的方法無需任何修改即可直接應(yīng)用于rs-422總線系統(tǒng)。1 問題的提出在工業(yè)控制及測量領(lǐng)域較為常用的網(wǎng)絡(luò)之一就是物理層采用rs-485通信接口所組成的工控設(shè)備網(wǎng)絡(luò)。這種通信接口可以十分方便地將許多設(shè)備組成一個控制網(wǎng)絡(luò)。從目前解決單片機之間中長距離通信的諸多方案分析來看,rs-485總線通信模式由于具有結(jié)構(gòu)簡單、價格低廉、通信距離和數(shù)據(jù)傳輸速率適當?shù)忍攸c而被廣泛應(yīng)用于儀器儀表、智能化傳感器集散控制、樓宇控制、監(jiān)控報警等領(lǐng)域。但rs485總線存在自適應(yīng)、自保護功能脆弱等缺點,如不注意一些細節(jié)的處理,常出現(xiàn)通信失敗甚至系統(tǒng)

11、癱瘓等故障,因此提高rs-485總線的運行可靠性至關(guān)重要2 硬件電路設(shè)計中需注意的問題2.1 電路基本原理某節(jié)點的硬件電路設(shè)計如圖1所示,在該電路中,使用了一種rs-485接口芯片sn75lbc184,它采用單一電源vcc,電壓在35.5 v范圍內(nèi)都能正常工作。與普通的rs-485芯片相比,它不但能抗雷電的沖擊而且能承受高達8 kv的靜電放電沖擊,片內(nèi)集成4個瞬時過壓保護管,可承受高達400 v的瞬態(tài)脈沖電壓。因此,它能顯著提高防止雷電損壞器件的可靠性。對一些環(huán)境比較惡劣的現(xiàn)場,可直接與傳輸線相接而不需要任何外加保護元件。該芯片還有一個獨特的設(shè)計,當輸入端開路時,其輸出為高電平,這樣可保證接收

12、器輸入端電纜有開路故障時,不影響系統(tǒng)的正常工作。另外,它的輸入阻抗為rs485標準輸入阻抗的2倍(24 k),故可以在總線上連接64個收發(fā)器。芯片內(nèi)部設(shè)計了限斜率驅(qū)動,使輸出信號邊沿不會過陡,使傳輸線上不會產(chǎn)生過多的高頻分量,從而有效扼制電磁干擾。在圖1中,四位一體的光電耦合器tlp521讓單片機與sn75lbc184之間完全沒有了電的聯(lián)系,提高了工作的可靠性。基本原理為:當單片機p1.6=0時,光電耦合器的發(fā)光二極管發(fā)光,光敏三極管導通,輸出高電壓(5 v),選中rs485接口芯片的de端,允許發(fā)送。當單片機p1.6=1時,光電耦合器的發(fā)光二極管不發(fā)光,光敏三極管不導通,輸出低電壓(0 v)

13、,選中rs485接口芯片的re端,允許接收。sn75lbc184的r端(接收端)和d端(發(fā)送端)的原理與上述類似。2.2 rs-485的de控制端設(shè)計在rs-485總線構(gòu)筑的半雙工通信系統(tǒng)中,在整個網(wǎng)絡(luò)中任一時刻只能有一個節(jié)點處于發(fā)送狀態(tài)并向總線發(fā)送數(shù)據(jù),其他所有節(jié)點都必須處于接收狀態(tài)。如果有2個節(jié)點或2個以上節(jié)點同時向總線發(fā)送數(shù)據(jù),將會導致所有發(fā)送方的數(shù)據(jù)發(fā)送失敗。因此,在系統(tǒng)各個節(jié)點的硬件設(shè)計中,應(yīng)首先力求避免因異常情況而引起本節(jié)點向總線發(fā)送數(shù)據(jù)而導致總線數(shù)據(jù)沖突。以mcs51系列的單片機為例,因其在系統(tǒng)復位時,i/o口都輸出高電平,如果把i/o口直接與rs-485接口芯片的驅(qū)動器使能端d

14、e相連,會在cpu復位期間使de為高,從而使本節(jié)點處于發(fā)送狀態(tài)。如果此時總線上有其他節(jié)點正在發(fā)送數(shù)據(jù),則此次數(shù)據(jù)傳輸將被打斷而告失敗,甚至引起整個總線因某一節(jié)點的故障而通信阻塞,繼而影響整個系統(tǒng)的正常運行。考慮到通信的穩(wěn)定性和可靠性,在每個節(jié)點的設(shè)計中應(yīng)將控制rs485總線接口芯片的發(fā)送引腳設(shè)計成de端的反邏輯,即控制引腳為邏輯“1”時,de端為“0”;控制引腳為邏輯“0”時,de端為“1”。在圖1中,將cpu的引腳p1.6通過光電耦合器驅(qū)動de端,這樣就可以使控制引腳為高或者異常復位時使sn75lbc184始終處于接收狀態(tài),從而從硬件上有效避免節(jié)點因異常情況而對整個系統(tǒng)造成的影響。這就為整個

15、系統(tǒng)的通信可靠奠定了基礎(chǔ)。此外,電路中還有1片看門狗max813l,能在節(jié)點發(fā)生死循環(huán)或其他故障時,自動復位程序,交出rs-485總線控制權(quán)。這樣就保證整個系統(tǒng)不會因某一節(jié)點發(fā)生故障而獨占總線,導致整個系統(tǒng)癱瘓。2.3 避免總線沖突的設(shè)計當一個節(jié)點需要使用總線時,為了實現(xiàn)總線通信可靠,在有數(shù)據(jù)需要發(fā)送的情況下先偵聽總線。在硬件接口上,首先將rs-485接口芯片的數(shù)據(jù)接收引腳反相后接至cpu的中斷引腳int0。在圖1中,int0是連至光電耦合器的輸出端。當總線上有數(shù)據(jù)正在傳輸時,sn75lbc184的數(shù)據(jù)接收端(r端)表現(xiàn)為變化的高低電平,利用其產(chǎn)生的cpu下降沿中斷(也可采用查詢方式),能得知

16、此時總線是否正“忙”,即總線上是否有節(jié)點正在通信。如果“空閑”,則可以得到對總線的使用權(quán)限,這樣就較好地解決了總線沖突的問題。在此基礎(chǔ)上,還可以定義各種消息的優(yōu)先級,使高優(yōu)先級的消息得以優(yōu)先發(fā)送,從而進一步提高系統(tǒng)的實時性。采用這種工作方式后,系統(tǒng)中已經(jīng)沒有主、從節(jié)點之分,各個節(jié)點對總線的使用權(quán)限是平等的,從而有效避免了個別節(jié)點通信負擔較重的情況??偩€的利用率和系統(tǒng)的通信效率都得以大大提高,從而也使系統(tǒng)響應(yīng)的實時性得到改善,而且即使系統(tǒng)中個別節(jié)點發(fā)生故障,也不會影響其他節(jié)點的正常通信和正常工作。這樣使得系統(tǒng)的“危險”分散了,從某種程度上來說增強了系統(tǒng)的工作可靠性和穩(wěn)定性。2.4 rs-485輸

17、出電路部分的設(shè)計在圖1中,vd1vd4為信號限幅二極管,其穩(wěn)壓值應(yīng)保證符合rs-485標準,vd1和vd3取12 v,vd2 和vd4取7 v,以保證將信號幅度限定在-7+12 v之間,進一步提高抗過壓的能力??紤]到線路的特殊情況(如某一節(jié)點的rs-485芯片被擊穿短路),為防止總線中其他分機的通信受到影響,在sn75lbc184的信號輸出端串聯(lián)了2個20 的電阻r1和r2,這樣本機的硬件故障就不會使整個總線的通信受到影響。在應(yīng)用系統(tǒng)工程的現(xiàn)場施工中,由于通信載體是雙絞線,它的特性阻抗為120 左右,所以線路設(shè)計時,在rs485網(wǎng)絡(luò)傳輸線的始端和末端應(yīng)各接1個120 的匹配電阻(如圖1中的r3

18、),以減少線路上傳輸信號的反射。2.5系統(tǒng)的電源選擇 對于由單片機結(jié)合rs-485組建的測控網(wǎng)絡(luò),應(yīng)優(yōu)先采用各節(jié)點獨立供電的方案,同時電源線不能與rs-485信號線共用同一股多芯電纜。rs-485信號線宜選用截面積0.75 mm2以上的雙絞線而不是平直線,并且選用線性電源tl750l05比選用開關(guān)電源更合適。tl750l05必須有輸出電容,若沒有輸出電容,則其輸出端的電壓為鋸齒波形狀,鋸齒波的上升沿隨輸入電壓變化而變化,加輸出電容后,可以抑制該現(xiàn)象。3 軟件的編程sn75lbc184在接收方式時,a、b為輸入,r為輸出;在發(fā)送方式時,d為輸入,a、b為輸出。當傳送方向改變一次后,如果輸入未變化

19、,則此時輸出為隨機狀態(tài),直至輸入狀態(tài)變化一次,輸出狀態(tài)才確定。顯然,在由發(fā)送方式轉(zhuǎn)入接收方式后,如果a、b狀態(tài)變化前,r為低電平,在第一個數(shù)據(jù)起始位時,r仍為低電平,cpu認為此時無起始位,直到出現(xiàn)第一個下降沿,cpu才開始接收第一個數(shù)據(jù),這將導致接收錯誤。由接收方式轉(zhuǎn)入發(fā)送方式后,d變化前,若a與b之間為低電壓,發(fā)送第一個數(shù)據(jù)起始位時,a與b之間仍為低電壓,a、b引腳無起始位,同樣會導致發(fā)送錯誤??朔@種后果的方案是:主機連續(xù)發(fā)送兩個同步字,同步字要包含多次邊沿變化(如55h ,0aah),并發(fā)送兩次(第一次可能接收錯誤而忽略) ,接收端收到同步字后,就可以傳送數(shù)據(jù)了,從而保證正確通信。 為了更可靠地工作,在rs485總線狀態(tài)切換時需要適當延時,再進行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1”,延時0.5 ms左右的時間,再發(fā)送有效數(shù)據(jù),數(shù)據(jù)發(fā)送結(jié)束后,再延時0.5 ms,將控制端置“0”。這樣的處理會使總線在狀態(tài)切換時,有一個穩(wěn)定的工作過程。數(shù)據(jù)通信程序基本流程圖如圖2所示。單片機通信節(jié)點的程序基本上可以分為6個主要部分,分別為預定義部分、初始化部分、主程序部分、設(shè)備狀態(tài)檢測部分、幀接收部分和幀發(fā)送部分。預定義部分主要定義了通信中使用的握手信號,用于保存設(shè)備信息的緩沖區(qū)和保存本

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論