一種通過總線自動(dòng)分配地址的系統(tǒng)及方法
【專利說明】一種通過總線自動(dòng)分配地址的系統(tǒng)及方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及工業(yè)控制與數(shù)據(jù)通信領(lǐng)域,具體的,涉及一種通過總線自動(dòng)分配地址的系統(tǒng)及方法。
【背景技術(shù)】
[0003]在工業(yè)控制與數(shù)據(jù)通信領(lǐng)域,為了對(duì)幾個(gè)或者幾十個(gè)設(shè)備進(jìn)行控制,經(jīng)常會(huì)采用總線(例如RS485總線)將這些設(shè)備組織成相應(yīng)的工控設(shè)備網(wǎng)絡(luò),如圖1所示。為了能夠?qū)崿F(xiàn)對(duì)每個(gè)設(shè)備的獨(dú)立控制,需要設(shè)置該設(shè)備的地址,比如1,2,3...N等。該設(shè)備的地址在該工控設(shè)備網(wǎng)絡(luò)中是唯一的。如圖2所示,傳統(tǒng)的地址設(shè)置方法是采用硬件二進(jìn)制撥碼開關(guān)。該撥碼開關(guān)實(shí)際上是由圖所示的8個(gè)小白色開關(guān)組成,I到8個(gè)小白色開關(guān)分別表示一個(gè)無符號(hào)整型字節(jié)的I到8位,在圖3中分別由ADDR0-ADDR7表示,可表示地址數(shù)值范圍為0-255,每個(gè)小白色開關(guān)有上撥或者下?lián)軆煞N狀態(tài),上撥時(shí)表示導(dǎo)通,該位有效,狀態(tài)值為1,下?lián)軙r(shí)表示阻塞,該位無效,狀態(tài)值為O。8個(gè)小白色開關(guān)的權(quán)位分別與它自己的狀態(tài)值累乘之后再累加,就表示當(dāng)前該控制器的地址值。如圖2,除了 I號(hào)小白色開關(guān)上撥有效夕卜,其它的小白色開關(guān)都下?lián)軣o效。因此它表示的地址為:2~0*1+2~1*0++2~2*0+2~3*0+2'4*0+2'5*0+2'6*0+2'7*0=1
上述撥碼開關(guān)的硬件原理圖實(shí)現(xiàn)如圖3所示。然而,硬件二進(jìn)制撥碼開關(guān)為物理開關(guān),不能防止因潮濕,風(fēng)雨等外部復(fù)雜環(huán)境因素導(dǎo)致的損壞,同時(shí)在安裝設(shè)備時(shí)運(yùn)營人員需對(duì)每個(gè)設(shè)備進(jìn)行手工設(shè)置等增加了運(yùn)營和維護(hù)成本。此外,如需改變移動(dòng)設(shè)備時(shí),又需重新手工設(shè)置地址值。
【發(fā)明內(nèi)容】
[0004]本發(fā)明主要解決的技術(shù)問題是提供一種利用軟件避免使用拔碼開關(guān)等物理開關(guān)的可降低成本的通過總線自動(dòng)分配地址的系統(tǒng)及方法。
[0005]為解決上述技術(shù)問題,本發(fā)明提供一種通過總線自動(dòng)分配地址的系統(tǒng),所述系統(tǒng)包括電腦主機(jī)、總線及通過總線與電腦主機(jī)連接的N個(gè)設(shè)備;所述電腦主機(jī)作為主機(jī)給與它相連的第一個(gè)設(shè)備發(fā)送使能和廣播命令,激活該第一個(gè)設(shè)備的通信;電腦主機(jī)將該第一個(gè)設(shè)備設(shè)置為從機(jī),并設(shè)置該第一個(gè)設(shè)備的通信地址;已設(shè)置好通信地址的該第一個(gè)設(shè)備轉(zhuǎn)換為主機(jī),并向與第一個(gè)設(shè)備相連接的未設(shè)置通信地址的第二個(gè)設(shè)備發(fā)送使能和廣播命令,第一個(gè)設(shè)備與第二個(gè)設(shè)置通信將該第二設(shè)備設(shè)置為從機(jī),并設(shè)置該第二設(shè)備的通信地址;繼續(xù)由已設(shè)置通信地址的設(shè)備轉(zhuǎn)換為主機(jī)向與其相連接的未設(shè)置通信地址發(fā)送使能和廣播命令,且轉(zhuǎn)換的主機(jī)與未設(shè)置通信地址的設(shè)備通信并將該未設(shè)置通信地址的設(shè)備設(shè)置為從機(jī),并設(shè)置該未設(shè)置通信地址的設(shè)備的通信地址,直到第N-1個(gè)設(shè)備設(shè)置好第N個(gè)設(shè)備的通信地址。
[0006]本發(fā)明還提供一種通過總線自動(dòng)分配地址的方法,包括以下步驟:
S1:將電腦主機(jī)與N個(gè)未設(shè)置通信地址的設(shè)備通過總線連接,其中電腦主機(jī)外,所述N個(gè)設(shè)備通信都設(shè)置無效;
S2:通過電腦主機(jī)作為主機(jī)給與它相連的第一個(gè)設(shè)備發(fā)送使能和廣播命令,激活該第一個(gè)設(shè)備的通信;
53:第一個(gè)設(shè)備與電腦主機(jī)通信,電腦主機(jī)將該第一設(shè)備設(shè)置為從機(jī)并設(shè)置設(shè)備的通信地址;
54:步驟S3中已設(shè)置好通信地址的第一個(gè)設(shè)備轉(zhuǎn)換為主機(jī),并向與第一個(gè)設(shè)備相連的未設(shè)置通信地址的第二個(gè)設(shè)備發(fā)送使能和廣播命令,激活該第二設(shè)備的通信,并且設(shè)置該第二設(shè)備的地址;
55:繼續(xù)由已設(shè)置通信地址的設(shè)備轉(zhuǎn)換為主機(jī),向與該轉(zhuǎn)換的主機(jī)相連的未設(shè)置通信地址的設(shè)備發(fā)送使能和廣播命令,該轉(zhuǎn)換的主機(jī)與該未設(shè)置通信地址的設(shè)備通信并將該未設(shè)置通信地址的設(shè)備設(shè)置為從機(jī),并設(shè)置該未設(shè)置通信地址的設(shè)備的通信地址,直到第N-1個(gè)設(shè)備設(shè)置好第N個(gè)設(shè)備的通信地址。
[0007]本發(fā)明的有益效果是:在由RS485組成工業(yè)控制網(wǎng)絡(luò)中,一種通過RS485命令的方式用軟件方法自動(dòng)配置組成該網(wǎng)絡(luò)的各個(gè)設(shè)備地址。相對(duì)于現(xiàn)有的硬件撥碼開關(guān)確定設(shè)備地址的技術(shù)而言,本發(fā)明的優(yōu)勢(shì)是完全規(guī)避了設(shè)備在運(yùn)行過程中因?yàn)樘鞖?,潮濕等外部原因造成的開關(guān)損壞,降低了運(yùn)營人員的維護(hù)成本,節(jié)省了硬件撥碼開關(guān)的電子物料費(fèi)用。
【附圖說明】
[0008]圖1是現(xiàn)有工控網(wǎng)絡(luò)的架構(gòu)圖。
[0009]圖2是現(xiàn)有的拔碼開關(guān)的硬件示意圖。
[0010]圖3是圖2所示的拔碼開關(guān)的電路圖。
[0011]圖4是本發(fā)明通過總線自動(dòng)分配地址的系統(tǒng)的架構(gòu)圖。
[0012]圖5是本發(fā)明通過總線自動(dòng)分配地址的方法流程框圖。
【具體實(shí)施方式】
[0013]請(qǐng)參閱圖4及圖5,本發(fā)明提供的一種通過總線自動(dòng)分配地址的系統(tǒng)100,包括電腦主機(jī)10、總線20及通過總線20與電腦主機(jī)10相連接的多個(gè)設(shè)備30。本實(shí)施方式中,所述總線20為RS485總線。所述設(shè)備30的數(shù)量為N,N為大于等于2的自然數(shù),且每個(gè)設(shè)備內(nèi)設(shè)置有一個(gè)RS485芯片。
[0014]所述電腦主機(jī)10和設(shè)備30開機(jī)上電后,所述電腦主機(jī)10首先作為主機(jī)給與它相連的第一個(gè)設(shè)備30發(fā)送RS485使能和廣播命令,激活該第一個(gè)設(shè)備的通信。設(shè)備30作為從機(jī)根據(jù)命令進(jìn)行應(yīng)答。電腦主機(jī)10根據(jù)設(shè)備的應(yīng)答情況再確定是否繼續(xù)分配設(shè)備地址的工作。如果設(shè)備30應(yīng)答正常,則在下一步中,該設(shè)備30角色由從機(jī)轉(zhuǎn)換為主機(jī),下一個(gè)設(shè)備30則作為從機(jī),繼續(xù)發(fā)送RS485使能和廣播命令,如此往復(fù)循環(huán),直至設(shè)置完成所有的設(shè)備30地址為止。
[0015]具體的,電腦主機(jī)10和設(shè)備30開機(jī)上電后,除了電腦主機(jī)10夕卜,所有的設(shè)備30(例如所有設(shè)備的數(shù)量為N)通信都設(shè)置無效。電腦主機(jī)10首先作為主機(jī)給與它相連的第一個(gè)設(shè)備30發(fā)送RS485使能和廣播命令,激活該第一個(gè)設(shè)備30的通信。初始時(shí),所有設(shè)備30 (即N個(gè)設(shè)備)都沒有確定地址,通過網(wǎng)絡(luò)的硬件電路設(shè)置保證所有沒確定通信地址的設(shè)備30中的其中的唯一一個(gè)設(shè)備30 (即N個(gè)設(shè)備中的第一個(gè)設(shè)備30)與電腦主機(jī)10進(jìn)行通信,電腦主機(jī)10將該與其通信的唯一一個(gè)設(shè)備30 (即N個(gè)設(shè)備中的第一個(gè)設(shè)備)設(shè)置為從機(jī),設(shè)置該設(shè)備30 (即N個(gè)設(shè)備中的第一個(gè)設(shè)備)通信地址。
[0016]然后已經(jīng)設(shè)置好通信地址的設(shè)備30 (第一個(gè)設(shè)備)轉(zhuǎn)換為主機(jī),向網(wǎng)絡(luò)其他N-1個(gè)的與已經(jīng)設(shè)置好通信地址的設(shè)備相連接的(即與第一個(gè)設(shè)備相連的第二個(gè)設(shè)備)未設(shè)置通信地址的設(shè)備30發(fā)送RS485使能和廣播命令,通過網(wǎng)絡(luò)的硬件電路設(shè)置保證N-1個(gè)未設(shè)置通信地址的第二個(gè)設(shè)備與已經(jīng)設(shè)置好通信地址的設(shè)備30 (即第一個(gè)設(shè)備)進(jìn)行通信,已經(jīng)設(shè)置好通信地址的設(shè)備30 (即第一個(gè)設(shè)備)將N-1個(gè)未設(shè)置通信地址的設(shè)備其中一個(gè)設(shè)備(即第二個(gè)設(shè)備)設(shè)置為從機(jī),并設(shè)置該設(shè)備30 (即第二個(gè)設(shè)備)的通信地址。
[0017]如此迭代,直至完成最后一個(gè)設(shè)備的地址設(shè)置工作。在上述描述中以N的數(shù)量為三個(gè)為例,經(jīng)過以上設(shè)置三個(gè)設(shè)備中的兩個(gè)設(shè)備(即第一、第二設(shè)備)已經(jīng)設(shè)置好通信地址,同樣的已經(jīng)設(shè)置好通信地址的第二個(gè)設(shè)備轉(zhuǎn)換為主機(jī),向與第二個(gè)設(shè)備相連的未設(shè)置通信地址的第三個(gè)設(shè)備30發(fā)送RS485使能和廣播命令,已經(jīng)設(shè)置好通信地址的第二個(gè)設(shè)備30將第三個(gè)未設(shè)置好通信地址的設(shè)備設(shè)置為從機(jī),并設(shè)置該第三個(gè)未設(shè)置好通信地址的通信地址,如此三個(gè)設(shè)備的通信地址都完成設(shè)置。
[0018]進(jìn)一步的,在所有設(shè)備30的通信地址設(shè)置好之后,所述電腦主機(jī)10再次向所有設(shè)備發(fā)送廣播命令,各設(shè)備以各自的通信地址應(yīng)答所述電腦主機(jī)10,所述電腦主機(jī)10檢查已設(shè)置地址的設(shè)備總數(shù)是否等于所