專利名稱::一種rs485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種通過總線竟?fàn)幏绞綄?shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,尤其涉及到利用RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法。技術(shù)背景隨著技術(shù)的發(fā)展和生活水平的提高,越來越多的工業(yè)控制、醫(yī)療、通訊、消費(fèi)等電子產(chǎn)品日趨智能化,以微處理器為核心的嵌入式系統(tǒng)得到日益廣泛的應(yīng)用,對這些智能化設(shè)備進(jìn)行管理也成為嵌入式應(yīng)用的一個重點(diǎn)。用戶可以通過設(shè)備提供的智能接口,如串口、并口、以太網(wǎng)口等,對其進(jìn)行配置、管理和監(jiān)控。基于復(fù)雜的TCP/IP協(xié)議的高速以太網(wǎng)接口是未來發(fā)展方向,實(shí)現(xiàn)豐富的監(jiān)控管理功能。但是,目前大多數(shù)的嵌入式設(shè)備,采用如4、8或16位的MCU組成廉價系統(tǒng),出于簡單方便、最小的軟硬件成本的考慮,都還是采用傳統(tǒng)的、流行的低速串口,經(jīng)由RS232/RS485、M0DEM、低壓電力線載波等傳輸通道,在網(wǎng)管中心實(shí)現(xiàn)"三遙(遙測、遙信、遙控)"功能。對多個嵌入式設(shè)備進(jìn)行組網(wǎng)監(jiān)控時,最常采用的還是諸如RS422、RS485之類的現(xiàn)場總線。由于RS485具有主從組網(wǎng)所具備的獨(dú)特優(yōu)勢一主多從,可驅(qū)動高達(dá)32256個從節(jié)點(diǎn);半雙工通訊、簡單方便;差分傳輸,高抗干擾、高速、遠(yuǎn)距離;傳輸線最少,只有兩根線,成本最低;因此,RS485依舊是目前最常用的總線。當(dāng)監(jiān)控主機(jī)通過RS485總線對各個嵌入式設(shè)備進(jìn)行監(jiān)控時,需要通過設(shè)備標(biāo)識來區(qū)分各個設(shè)備,最簡單的辦法是采用設(shè)備地址來區(qū)分。每個設(shè)備都有獨(dú)一無二的地址,這樣才不會出現(xiàn)總線沖突的故障。但如果某些設(shè)備有故障,丟失了配置地址呢?這樣必須通過重新設(shè)置獨(dú)一的地址,保證正常的通訊。如果設(shè)備有撥碼開關(guān)或者其他人機(jī)交互設(shè)備,如鍵盤、顯示器等,是可以設(shè)置地址的。很多情況下,嵌入式設(shè)備處于成本和空間的考慮,并沒有這些交互設(shè)備。這就帶來了一個很實(shí)際的難題,如何解決?一個可行的方法是每個設(shè)備另外增加一個輸入信號線片選信號線;通過監(jiān)控主機(jī)對每個設(shè)備設(shè)置地址。比如監(jiān)控主機(jī)首先使能第一個設(shè)備的片選,設(shè)置該設(shè)備地址為1(其他設(shè)備因?yàn)槲雌x,不予響應(yīng)設(shè)置命令);依次類推設(shè)置完其他設(shè)備的地址即可。方法比較簡單,但是增加了信號線,失去了通用性,喪失了RS485的優(yōu)勢高抗干擾、遠(yuǎn)距離二線傳輸。在很多場合是不適合應(yīng)用的
發(fā)明內(nèi)容為解決現(xiàn)有技術(shù)中的缺陷和不足,本發(fā)明提供了一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,目的在于能夠在不增加任何信號傳輸線的前提下完成各個設(shè)備地址的識別和重新設(shè)置。為達(dá)到上述發(fā)明目的,本發(fā)明是這樣實(shí)現(xiàn)的一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,包括(1)監(jiān)控主機(jī)和設(shè)備配合識別設(shè)備地址是否異常,若存在設(shè)備地址異常則轉(zhuǎn)入步驟(2),若不存在則步驟結(jié)束;(2)監(jiān)控主機(jī)通知各設(shè)備進(jìn)入地址重新設(shè)置狀態(tài);(3)監(jiān)控主機(jī)向各設(shè)備下發(fā)設(shè)置設(shè)備地址命令,各設(shè)備根據(jù)當(dāng)前地址情況回應(yīng)并且重新設(shè)置地址。其中,所述步驟(1)中的設(shè)備地址異常包括設(shè)備地址沖突和/或設(shè)備地址溢出。其中,所述步驟(1)具體為(11)監(jiān)控主機(jī)通過廣播方式周期性的通知各個設(shè)備當(dāng)前的設(shè)備配置情況,并通過點(diǎn)對點(diǎn)輪詢方式監(jiān)控各個設(shè)備的地址信息;(12)監(jiān)控主機(jī)根據(jù)獲得的各個設(shè)備的回應(yīng)信息進(jìn)行識別,若多個設(shè)備同時應(yīng)答,則為設(shè)備地址沖突;若設(shè)備長期沒有被輪詢,則設(shè)備地址溢出。其中,所述步驟(3)具體為(31)根據(jù)RS485總線配置確定總線競爭的基本單位時間、每次競爭的總時間長度、優(yōu)先級內(nèi)時間段、最大沖突次數(shù),并設(shè)置設(shè)備的初始設(shè)置地址;(32)監(jiān)控主機(jī)向設(shè)備發(fā)送設(shè)置設(shè)備地址命令;(33)各設(shè)備根據(jù)收到的設(shè)置設(shè)備地址命令確定總線競爭的優(yōu)先級,并計算出其相應(yīng)的優(yōu)先級時間段內(nèi)的退避時間;(34)判斷是否存在地址沖突,若存在,則轉(zhuǎn)入步驟(32),若不存在,則該設(shè)備在延時退避時間后響應(yīng)設(shè)置設(shè)備地址命令;(35)監(jiān)控主機(jī)設(shè)置該設(shè)備的地址,并將設(shè)置地址值加l;(36)監(jiān)控主機(jī)判斷設(shè)備地址是否設(shè)置完畢,若是,則轉(zhuǎn)入步驟(37),若否,則轉(zhuǎn)入步驟(32);(37)判斷是否存在新的設(shè)備需要進(jìn)行地址設(shè)置,若有,則轉(zhuǎn)入步驟(32);若無,則步驟結(jié)束。其中,所述的優(yōu)先級自高到低為地址匹配、地址丟失、地址溢出、地址包含。與現(xiàn)有技術(shù)相比,本發(fā)明解決了在RS485等主從式總線監(jiān)控網(wǎng)絡(luò)中,設(shè)備由于地址丟失導(dǎo)致總線沖突或者無法訪問的難題;并提供了一個可靠的、通用的方案,在不增加任何信號傳輸線的情況下,完成各個設(shè)備地址的重新設(shè)置和識別,保證了RS485高可靠性的優(yōu)勢。另外,本發(fā)明還可以實(shí)現(xiàn)設(shè)備的投入、退出等的自動識別,提高了監(jiān)控系統(tǒng)的智能化程度。圖l是本發(fā)明的地址設(shè)置的流程圖。圖2是本發(fā)明設(shè)置設(shè)備地址的關(guān)鍵算法的流程圖。圖3是本發(fā)明的具體實(shí)施例一的硬件原理圖。圖4是本發(fā)明的具體實(shí)施例優(yōu)先級時間段示意圖。具體實(shí)施方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)說明。圖l是本發(fā)明的地址設(shè)置的流程圖。如圖1所示,本發(fā)明的基本思想是在RS485網(wǎng)絡(luò)中,系統(tǒng)首先正確識別出各設(shè)備是否存在地址異常(包括地址沖突和/或地址溢出),如果存在,監(jiān)控主機(jī)通知所有設(shè)備進(jìn)入地址設(shè)置狀態(tài),若不存在,則步驟結(jié)束;之后,監(jiān)控主機(jī)逐個對設(shè)備進(jìn)行地址的設(shè)置,最后退出,回歸到正常的數(shù)據(jù)通訊、監(jiān)控狀態(tài)。第一步,監(jiān)控主機(jī)識別設(shè)備地址異常,若存在設(shè)備地址異常則轉(zhuǎn)入第二步,若不存在則步驟結(jié)束;在一個RS485網(wǎng)絡(luò)中,監(jiān)控主機(jī)通過主動輪詢、半雙工的方式和網(wǎng)絡(luò)中的多個嵌入式設(shè)備通訊,獲取設(shè)備信息,控制設(shè)備運(yùn)行狀態(tài)。監(jiān)控主機(jī)需要首先進(jìn)行系統(tǒng)配置,獲得當(dāng)前設(shè)備的配置情況,比如有哪幾個設(shè)備,然后才能輪詢各個設(shè)備。當(dāng)某個或某些設(shè)備地址出現(xiàn)故障時,比如地址信息丟失或者錯誤,將會出現(xiàn)以下情況(i)地址沖突。當(dāng)兩個設(shè)備地址相同,監(jiān)控主機(jī)訪問時,會出現(xiàn)兩個設(shè)備同時應(yīng)答,同時發(fā)送數(shù)據(jù),會由于信號疊加而造成信號紊亂,即信號的沖突;(ii)地址溢出。監(jiān)控主機(jī)訪問的設(shè)備地址不存在,或者有更多的新地址設(shè)備投入運(yùn)行,而無法被訪問到;通過以下步驟就可以正確識別出上述兩種情況(a)監(jiān)控圭機(jī)通過廣播方式,通知所有設(shè)備當(dāng)前的配置情況比如當(dāng)前有多少個設(shè)備,每個設(shè)備的地址是多少,通訊的波特率。這個廣播信息需要周期性地發(fā)布,正常情況下,廣播命令是不能有應(yīng)答的;(b)監(jiān)控主機(jī)通過點(diǎn)對點(diǎn)輪詢方式,監(jiān)控各個地址設(shè)備的信息;(C)當(dāng)兩個設(shè)備地址相同,會出現(xiàn)兩個設(shè)備同時應(yīng)答而造成總線沖突。這時,監(jiān)控主機(jī)通過接收到的應(yīng)答判斷出這種情況;另外,設(shè)備自身RS485收發(fā)數(shù)據(jù)不一致,也可以判斷出來;(d)當(dāng)某些設(shè)備長期沒有被輪詢,表明出現(xiàn)了地址溢出。這時候,就需要該設(shè)備通過回應(yīng)廣播命令或者故意干擾回應(yīng)其他地址設(shè)備命令,造成總線沖突的辦法,來通知監(jiān)控主機(jī)。第二步,監(jiān)控主機(jī)通知各個設(shè)備進(jìn)入地址重新設(shè)置狀態(tài)。監(jiān)控主機(jī)通過廣播命令通知設(shè)備進(jìn)入地址重新設(shè)置狀態(tài),但是,進(jìn)入重新設(shè)置地址狀態(tài)后,各個設(shè)備必須保持RS485接收使能信號始終有效,不能再是通常的收、發(fā)使能互斥的狀態(tài)。對于嵌入式設(shè)備,雖然通常的RS485通訊是半雙工的,但是內(nèi)部的MCU(微處理器)都具備有全雙工的UART(通用異步收發(fā)器)。第三歩,監(jiān)控主機(jī)逐個向各個設(shè)備下發(fā)設(shè)置設(shè)備地址命令,各個設(shè)備根據(jù)當(dāng)前地址情況回應(yīng)并且重新設(shè)置地址。本步驟采用優(yōu)化算法,使盡可能多的設(shè)備保持原有地址不變。包括Al、根據(jù)配置的通訊格式和波特率B,確定總線競爭的基本單位時間為tO-KX發(fā)送一個字節(jié)的總位數(shù)/B,其中K為大于1的系數(shù);Bl、根據(jù)配置的設(shè)備個數(shù)M,確定每次競爭的總時間長T^tOX4XN;其中,N為自然數(shù)且N〉M,且N值考慮到新投入設(shè)備的情況,要取值大些。另外,N值越大,總線沖突的幾率越??;如果系統(tǒng)不是太關(guān)注地址重設(shè)時間消耗,N值建議取得大些;Cl、根據(jù)N值,確定最大的沖突次數(shù)Oiog2N—l;實(shí)際應(yīng)用中,當(dāng)沖突次數(shù)超過C,則歸零重新開始;Dl、設(shè)備競爭總線優(yōu)先級共分為四級,因此,可得到每個優(yōu)先級內(nèi)時間段為T=T/4=tOXN;四級優(yōu)先級分別表示為P1、P2、P3、P4,其中地址匹配為P1級,優(yōu)先級最高;地址丟失為P2級;地址溢出為P3級;地址包含為最后的P4級;El、根據(jù)設(shè)置地址命令,各個設(shè)備在自己的優(yōu)先級時間段內(nèi)計算退避時間1=tOX(2j+rand(N/2)—1),并且延時t后預(yù)備回應(yīng)。其中,i為實(shí)際沖突次數(shù);mnd(X)表示在0X中取一個隨機(jī)數(shù);Fl、設(shè)備在回應(yīng)前,偵測其他設(shè)備是否己經(jīng)競爭總線(即接收到地址應(yīng)答信息),如果已經(jīng)競爭,則退出本輪競爭;Gl、如果沒有其他設(shè)備競爭,則發(fā)送地址應(yīng)答信息,參與競爭;發(fā)送完后,通過判斷收發(fā)數(shù)據(jù)是否一致來判斷線路是否忙,如果線路不忙,表明本輪競爭成功;否則,沖突次數(shù)加一,或者調(diào)整優(yōu)先級,參與下次競爭;Hl、重復(fù)歩驟E1、Fl、Gl,直到一個設(shè)備競爭成功為止;II、監(jiān)控主機(jī)接收到正確的地址應(yīng)答信息,再次和該設(shè)備確認(rèn)地址設(shè)置;確認(rèn)完成后,該設(shè)備就退出總線競爭狀態(tài),轉(zhuǎn)為等待結(jié)束狀態(tài);Jl、重復(fù)步驟E1、Fl、Gl、Hl、II;直到所有的配置設(shè)備地址都設(shè)置完畢,轉(zhuǎn)為等待結(jié)束狀態(tài);Kl、監(jiān)控主機(jī)探索性地設(shè)置下一個設(shè)備地址,如果在規(guī)定的時間,即T內(nèi)沒有任何回應(yīng),即總線上無任何數(shù)據(jù),無論對錯,表明所有實(shí)際設(shè)備都重新設(shè)置地址完畢;否則,表明有新設(shè)備投入(實(shí)際設(shè)備超過了配置設(shè)備數(shù)量),則重復(fù)步驟E1、Fl、Gl、Hl、II、Jl,直到全部設(shè)備都設(shè)置完畢。實(shí)施例一某公司生產(chǎn)了某種型號的嵌入式電源系統(tǒng),廣泛應(yīng)用于全國各個電信設(shè)備制造商和運(yùn)營商。該電源系統(tǒng)由交流配電、直流配電、最多IO個整流器和監(jiān)控單元組成。整流器由于功率密度的要求以及成本的壓力,除了一個告警指示燈和RS485接口外,沒有任何人機(jī)交互設(shè)備。因此,需要監(jiān)控單元通過RS485總線和這10個整流器連接,通過簡單的通訊協(xié)議,輪詢獲取各個整流器的數(shù)據(jù)和告警信息,并且控制整流器的運(yùn)行狀態(tài)。圖3是本發(fā)明的具體實(shí)施例一的硬件原理圖。如圖所示,由于需要總線競爭,因此,RS485硬件控制信號和目前的通行做法略有變化,接收控制信號^始終有效,無須由單片機(jī)控制。多數(shù)情況下,用戶并不需要多達(dá)10個的整流器,而是根據(jù)實(shí)際用電量,配置4個左右的整流器,但必須留有擴(kuò)容的能力;以后可能只需單獨(dú)購買整流器,即插即用。整流器內(nèi)部有保存的地址參數(shù),從地址110有效。當(dāng)由于干擾或者其他事件發(fā)生,比如整流器發(fā)生故障、更換、擴(kuò)容增加,很容易導(dǎo)致地址參數(shù)的丟失、地址沖突、地址溢出等情況發(fā)生;發(fā)生后,也無法由整流器本身重新設(shè)置地址,只能由監(jiān)控單元通過RS485總線設(shè)置。下面進(jìn)行具體說明。假設(shè)該系統(tǒng)配置了6個整流器,RS485通訊速率是9600bps。監(jiān)控單元認(rèn)可的整流器地址就是l、2、3、4、5、6。而實(shí)際中有7個整流器,標(biāo)記為A、B、C、D、E、F、G,內(nèi)部設(shè)定好的地址分別為1、1、4、6、6、8、0。如表1所示ABCDEFG<table>tableseeoriginaldocumentpage9</column></row><table>表l地址8表征整流器F可能是新增加的;地址O表征整流器G地址參數(shù)丟失。顯然,這時候監(jiān)控單元輪詢各個整流器,會出現(xiàn)以下情況-(1)輪詢l、6號整流器時,分別有兩個整流器A/B和D/E應(yīng)答,總線數(shù)據(jù)沖突(2)輪詢2、3、5號整流器時,無整流器應(yīng)答;(3)輪詢4號整流器,C整流器正常應(yīng)答;(4)F、G整流器無法被訪問到。下面,我們就來實(shí)現(xiàn)整流器的地址識別和設(shè)置。第一步,監(jiān)控單元和設(shè)備配合識別地址的沖突或者溢出。監(jiān)控單元周期性的廣播下發(fā)當(dāng)前系統(tǒng)配置信息給各個整流器,告知整流器當(dāng)前配置個數(shù)為6,且通訊波速為9600bps,8位數(shù)據(jù)位,1位起始位,1位停止位。顯然,波速匹配的所有整流器都可以接收到該配置信息,而波速不匹配的整流器接收信息會出錯。當(dāng)一段時間,如果始終不能正確接收到配置信息時,該整流器可以主動多次發(fā)送"請求配置信息"報文幀給監(jiān)控單元。該報文幀多次干擾了數(shù)據(jù)總線,最終能夠被監(jiān)控單元識別出,需要重新設(shè)置地址了。即便是整流器的波速都匹配,F(xiàn)、G整流器由于地址和監(jiān)控單元中的配置不匹配,無法被訪問到,也需要通過主動多次發(fā)送"請求配置信息"報文幀,或者故意干擾數(shù)據(jù)總線;監(jiān)控單元輪詢2、3、5號整流器時,無整流器應(yīng)答;輪詢1、6號整流器時,分別有兩個整流器A/B和D/E應(yīng)答,總線數(shù)據(jù)沖突;這種情況下,無論是監(jiān)控單元還是發(fā)送應(yīng)答信息的整流器(發(fā)送和接收數(shù)據(jù)不一致),都能識別出;多次確認(rèn)后,監(jiān)控單元就能判斷出需要重新設(shè)置地址。第二步,就是監(jiān)控主機(jī)通知各個設(shè)備都以9600bps進(jìn)入地址重新設(shè)置狀態(tài)。這一步很簡單,發(fā)布一個廣播命令即可。如果有不同通訊波速配置的整流器的話,監(jiān)控主機(jī)就需要把各種波速下的命令都廣播一遍,確保全部整流器都能接收到。第三步,監(jiān)控主機(jī)逐個下發(fā)設(shè)置設(shè)備地址命令,各個設(shè)備根據(jù)當(dāng)前地址情況,回應(yīng)并且重新設(shè)置地址;這樣完成所有設(shè)備的地址設(shè)置。3.確定總線競爭的基本時間單位10=2乂(8+1+1)/9600=2ras;這里,K值取2,是考慮到實(shí)際系統(tǒng)中發(fā)送數(shù)據(jù)和接收中斷延遲;b.配置的設(shè)備個數(shù)M=10,考慮到系統(tǒng)實(shí)時性要求不高,以及減少沖突次數(shù)可能,N值取得大些,為64,則每次競爭的總吋間長T40X4XN二512ras;c.每個優(yōu)先級內(nèi)時間段為r二T/4二128ms,最大的沖突次數(shù)C=log264—1=5次;當(dāng)任何一個整流器沖突次數(shù)超過5次,就歸零重新開始計數(shù);d.如圖4所示,確定了以下4個優(yōu)先級時間段,當(dāng)整流器地址和設(shè)置地址匹配時,該整流器在128ms內(nèi)必須發(fā)送地址應(yīng)答信息,響應(yīng)監(jiān)控單元的設(shè)置命令;地址丟失的整流器在128ms256ms間響應(yīng);地址溢出的整流器在256ms384ms間響應(yīng);地址包含的在384ms512ms間響應(yīng);超過512ms無整流器響應(yīng),監(jiān)控單元可以認(rèn)為所有實(shí)際整流器都設(shè)置地址完畢;各個時間段內(nèi)的退避時間t=tOX(2'+rand(N/2)—1)=2Xa+rand(32)-1)ms;e.監(jiān)控單元首先發(fā)送"設(shè)置整流器1號地址"命令;f.顯然,1號地址的A、B整流器地址匹配,兩者都在128ms內(nèi)響應(yīng)命令;其他整流器都在128ms以后才可能響應(yīng)。A、B開始的沖突次數(shù)i都為0,因此,退避時間為t=(rand(32)一l)X2ms;假設(shè)A整流器得到的t二10ms,B得到的t二24ms;因此,在010ms期間,A整流器偵測到RS485總線上無數(shù)據(jù),即無地址沖突后,在第10ms發(fā)送應(yīng)答信息(比如單字節(jié)應(yīng)答碼0xa5);g.同時,A整流器會從總線上接收到相同的應(yīng)答信息,也是0xa5,這時A就競爭成功總線權(quán);其他整流器,包括B,也會同時收到0xa5,其他整流器就等待下一個設(shè)置地址命令,即地址2的命令;h.監(jiān)控單元同時收到了應(yīng)答信息,也是0xa5,表明有整流器競爭成功;監(jiān)控單元重復(fù)下發(fā)設(shè)置整流器l號地址"命令,等待A再次回應(yīng)應(yīng)答信息0xa5;確認(rèn)回應(yīng)成功后,監(jiān)控單元發(fā)送"l號整流器退出競爭"的命令幀,則A整流器設(shè)置完其地址為1后,退出競爭;i.如果A、B退避時間相同,則A、B同時下發(fā)0xa5,會出現(xiàn)兩種情況(11)總線上的數(shù)據(jù)恰好是0xa5;這種情況通過步驟h的重復(fù)下發(fā),即可解決;(12)總線上的數(shù)據(jù)不是0xa5,存在總線沖突;A、B都競爭失??;A、B沖突次數(shù)各加l;重新等待監(jiān)控單元發(fā)送"設(shè)置整流器1號地址"命令再次競爭;j.假設(shè)A最終設(shè)置為地址1成功,B則轉(zhuǎn)為"地址丟失"狀態(tài);等待下一輪的地址競爭;k.監(jiān)控單元發(fā)送"設(shè)置整流器2號地址"命令;l.地址丟失的G、B整流器又開始了總線競爭;其他整流器優(yōu)先級較低,至少256ms后才響應(yīng);m.G、B整流器總有一個競爭成功。由于B曾經(jīng)和A競爭失敗過,沖突次數(shù)較大,退避時間可能較大,因此,很可能B再次失敗,由G整流器設(shè)置成功2號地址;n.監(jiān)控單元發(fā)送"設(shè)置整流器3號地址"命令;p.剩余整流器中,地址丟失的B優(yōu)先級最高,因此,順利競爭成功,設(shè)置成功3號地址;q.監(jiān)控單元發(fā)送設(shè)置整流器4號地址"命令;r.地址唯一匹配的C整流器毫無疑問設(shè)置成功4號地址;S.監(jiān)控單元發(fā)送設(shè)置整流器5號地址"命令;t.地址溢出的F整流器優(yōu)先級最高,設(shè)置成功5號地址;U.監(jiān)控單元發(fā)送"設(shè)置整流器6號地址"命令;v.D、E整流器就像A、B那樣,開始了地址匹配的競爭;假設(shè)最終D設(shè)置成功6號地址;w.監(jiān)控單元試探性地發(fā)送"設(shè)置整流器7號地址"命令,査看是否還有其他未設(shè)置的整流器;x.剩余的E整流器優(yōu)先級最高,設(shè)置成功7號地址;y.監(jiān)控單元試探性地發(fā)送"設(shè)置整流器8號地址"命令,査看是否還有其他未設(shè)置的整流器;z.所有7個整流器都設(shè)置完畢,在512ms內(nèi)再沒有任何整流器響應(yīng)了,監(jiān)控單元修改自身的配置為7個整流器;zi.監(jiān)控單元廣播下發(fā)"所有整流器退出設(shè)置狀態(tài)"命令,則所有整流器退出設(shè)置狀態(tài),轉(zhuǎn)入正常的輪詢。上面只是舉了一個多整流器地址沖突或丟失特殊的例子,但也明顯地說明,經(jīng)過了總線競爭和地址設(shè)置,采用了這個較好的優(yōu)先權(quán)算法后,A、C、D三個整流器地址還是保持了原先的地址編號配置,保證了盡可能的各個整流器的歷史數(shù)據(jù)、故障等記錄的匹配和完整性,方便了維護(hù)。綜上所述,本發(fā)明采用沖突檢測解決了總線競爭問題,并利用優(yōu)化算法保證盡可能多的設(shè)備原有地址不變。權(quán)利要求1、一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,其特征在于,包括(1)監(jiān)控主機(jī)和設(shè)備配合識別設(shè)備地址是否異常,若存在設(shè)備地址異常則轉(zhuǎn)入步驟(2),若不存在則步驟結(jié)束;(2)監(jiān)控主機(jī)通知各設(shè)備進(jìn)入地址重新設(shè)置狀態(tài);(3)監(jiān)控主機(jī)向各設(shè)備下發(fā)設(shè)置設(shè)備地址命令,各設(shè)備根據(jù)當(dāng)前地址情況回應(yīng)并且重新設(shè)置地址。2、根據(jù)權(quán)利要求1所述的一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,其特征在于,所述步驟(1)中的設(shè)備地址異常包括設(shè)備地址沖突和/或設(shè)備地址溢出。3、根據(jù)權(quán)利要求1所述的一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,其特征在于,所述歩驟(1)具體為(11)監(jiān)控主機(jī)通過廣播方式周期性地通知各設(shè)備當(dāng)前的設(shè)備配置情況,并通過點(diǎn)對點(diǎn)輪詢方式監(jiān)控各設(shè)備的地址信息;(12)監(jiān)控主機(jī)根據(jù)獲得的各設(shè)備的回應(yīng)信息進(jìn)行識別,若多個設(shè)備同時應(yīng)答,則為設(shè)備地址沖突;若設(shè)備長期沒有被輪詢,則設(shè)備地址溢出。4、根據(jù)權(quán)利要求1或3所述的一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,其特征在于,所述步驟(3)具體為(31)根據(jù)RS485總線配置確定總線競爭的基本單位時間、每次競爭的總時間長度、優(yōu)先級內(nèi)時間段、最大沖突次數(shù),并設(shè)置設(shè)備的初始設(shè)置地址;(32)監(jiān)控主機(jī)向設(shè)備發(fā)送設(shè)置設(shè)備地址命令;(33)各設(shè)備根據(jù)收到的設(shè)置設(shè)備地址命令確定總線競爭的優(yōu)先級,并計算出其相應(yīng)的優(yōu)先級時間段內(nèi)的退避時間;(34)判斷是否存在地址沖突,若存在,則轉(zhuǎn)入步驟(32),若不存在,則該設(shè)備在延時退避時間后響應(yīng)設(shè)置設(shè)備地址命令;(35)監(jiān)控主機(jī)設(shè)置該設(shè)備的地址,并將設(shè)置地址值加l;(36)監(jiān)控主機(jī)判斷設(shè)備地址是否設(shè)置完畢,若是,則轉(zhuǎn)入步驟(37),若否,則轉(zhuǎn)入步驟(32);(37)判斷是否存在新的設(shè)備需要進(jìn)行地址設(shè)置,若有,則轉(zhuǎn)入步驟(32);若無,則步驟結(jié)束。5、根據(jù)權(quán)利要求4所述的一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,其特征在于,所述的優(yōu)先級自高到低為地址匹配、地址丟失、地址溢出、地址包含。全文摘要本發(fā)明公開了一種RS485總線競爭實(shí)現(xiàn)嵌入式設(shè)備地址設(shè)置的方法,為實(shí)現(xiàn)能夠在不增加任何信號傳輸線的前提下完成各個設(shè)備地址的識別和重新設(shè)置而發(fā)明。包括(1)監(jiān)控主機(jī)和設(shè)備配合識別設(shè)備地址是否異常,若存在設(shè)備地址異常則轉(zhuǎn)入步驟(2),若不存在則步驟結(jié)束;(2)監(jiān)控主機(jī)通知各設(shè)備進(jìn)入地址重新設(shè)置狀態(tài);(3)監(jiān)控主機(jī)向各設(shè)備下發(fā)設(shè)置設(shè)備地址命令,各設(shè)備根據(jù)當(dāng)前地址情況回應(yīng)并且重新設(shè)置地址。本發(fā)明解決了在RS485等主從式總線監(jiān)控網(wǎng)絡(luò)中,設(shè)備由于地址丟失導(dǎo)致總線沖突或無法訪問的難題,并在不增加任何信號傳輸線的情況下,完成各個設(shè)備地址的識別和重新設(shè)置,保證了RS485高可靠性的優(yōu)勢。文檔編號H04L12/40GK101163075SQ20061014049公開日2008年4月16日申請日期2006年10月10日優(yōu)先權(quán)日2006年10月10日發(fā)明者勇熊申請人:中興通訊股份有限公司