專利名稱:在Modbus通信網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配網(wǎng)絡(luò)地址的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分配地址的方法,尤其是一種在Modbus通信網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配地址的方法。
背景技術(shù):
Modbus是一種串行通訊協(xié)議,以其協(xié)議簡(jiǎn)單、實(shí)施容易、性價(jià)比高、可靠性好等優(yōu)點(diǎn)而獲得了越來(lái)越廣發(fā)的應(yīng)用,成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),并且是工業(yè)電子設(shè)備之間相對(duì)常壓的連接方式。Modbus網(wǎng)絡(luò)是一個(gè)主/從結(jié)構(gòu)的網(wǎng)絡(luò),其中有一個(gè)節(jié)點(diǎn)是主節(jié)點(diǎn),其他使用 Modbus協(xié)議參與通信的節(jié)點(diǎn)是從節(jié)點(diǎn),該網(wǎng)絡(luò)中每一個(gè)從節(jié)點(diǎn)設(shè)備都有一個(gè)唯一的地址。 在網(wǎng)絡(luò)中,只有被指定為主節(jié)點(diǎn)的節(jié)點(diǎn)可以啟動(dòng)一個(gè)命令,每一個(gè)Modbus命令都包含了打算執(zhí)行的節(jié)點(diǎn)的設(shè)備地址并以廣播的方式向網(wǎng)絡(luò)中各從節(jié)點(diǎn)發(fā)布,各從節(jié)點(diǎn)需要根據(jù)命令中包含的設(shè)備地址判斷是否需要執(zhí)行。因此,Modbus網(wǎng)絡(luò)中各從節(jié)點(diǎn)的地址設(shè)定就顯得尤為重要,一旦出現(xiàn)重復(fù)地址或者遺漏地址,就會(huì)導(dǎo)致通信網(wǎng)絡(luò)沖突,系統(tǒng)無(wú)法正常使用。傳統(tǒng)采用人工手動(dòng)設(shè)定來(lái)設(shè)定通信網(wǎng)絡(luò)從節(jié)點(diǎn)的網(wǎng)絡(luò)地址,這種方法不僅工作量大,而且還可能導(dǎo)致重復(fù)設(shè)定地址值得情況,引入人工錯(cuò)誤。中國(guó)專利CN101309306公開(kāi)了一種在Modbus通信網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配地址的方法,由主節(jié)點(diǎn)設(shè)備周期性的向從節(jié)點(diǎn)設(shè)備發(fā)送地址輪詢報(bào)文,一旦網(wǎng)絡(luò)中存在該輪詢報(bào)文中包含的地址則回應(yīng)該輪詢報(bào)文, 并設(shè)定該從節(jié)點(diǎn)設(shè)備的地址。使用該方法需要首先在主節(jié)點(diǎn)設(shè)備中設(shè)定網(wǎng)絡(luò)中從節(jié)點(diǎn)設(shè)備的地址與設(shè)備總量并依次詢問(wèn),顯得設(shè)定繁瑣,并且設(shè)定網(wǎng)絡(luò)地址需要很長(zhǎng)的時(shí)間。中國(guó)專利CN1019694^公開(kāi)了一種在RS-485總線上電能表的自動(dòng)識(shí)別方法,采用主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的通信來(lái)識(shí)別從節(jié)點(diǎn),但在接收到亂碼應(yīng)答的情況下,主節(jié)點(diǎn)需要進(jìn)行最多100次循環(huán)來(lái)測(cè)試網(wǎng)絡(luò)中從節(jié)點(diǎn)設(shè)備地址,耗時(shí)依然很長(zhǎng)。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明的目的是要提供一種在Modbus網(wǎng)絡(luò)中效率高、時(shí)間短的為從節(jié)點(diǎn)設(shè)備份分配地址的方法。為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下一種在Modbus通信網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配地址的方法,其包括以下步驟1)初始化主節(jié)點(diǎn)設(shè)備和從節(jié)點(diǎn)設(shè)備,設(shè)置從節(jié)點(diǎn)設(shè)備的設(shè)備地址的最小值IDs和最大值IDe,所述最小值IDs和最大值IDe均為自然數(shù);2)主節(jié)點(diǎn)設(shè)備根據(jù)最小值IDs和最大值IDe計(jì)算出一大于或等于最小值IDs,小于或等于最大值IDe的中間值IDt,所述中間值IDt為自然數(shù),并向各從節(jié)點(diǎn)設(shè)備發(fā)送包含有所述中間值IDt的地址報(bào)文;3)從節(jié)點(diǎn)設(shè)備接收到該地址報(bào)文后進(jìn)行解析,將自身的設(shè)備地址與所述中間值 IDt進(jìn)行比較,如果自身設(shè)備地址小于所述中間值IDt,則向主節(jié)點(diǎn)設(shè)備發(fā)送包含該從節(jié)點(diǎn)設(shè)備的設(shè)備地址的應(yīng)答報(bào)文,否則不回應(yīng)該地址報(bào)文;4)如果主節(jié)點(diǎn)設(shè)備收到一應(yīng)答報(bào)文,則向該從應(yīng)答報(bào)文中的設(shè)備地址對(duì)應(yīng)的節(jié)點(diǎn)設(shè)備發(fā)送包含Modbus網(wǎng)絡(luò)地址的設(shè)定報(bào)文,如果在等待時(shí)間內(nèi)收到該節(jié)點(diǎn)設(shè)備的確認(rèn)報(bào)文,則該從節(jié)點(diǎn)設(shè)備的Modbus網(wǎng)絡(luò)地址已經(jīng)被確定,該從節(jié)點(diǎn)設(shè)備將不再對(duì)主節(jié)點(diǎn)設(shè)備發(fā)送的信息進(jìn)行回應(yīng),并返回步驟1);否則主節(jié)點(diǎn)設(shè)備將中間值IDt賦給最大值IDe,返回步驟2);5)如果主節(jié)點(diǎn)設(shè)備收到至少兩個(gè)應(yīng)答報(bào)文,則將中間值IDt賦給最大值IDe,返回步驟2);6)如果主節(jié)點(diǎn)設(shè)備沒(méi)有收到應(yīng)答報(bào)文,則將中間值IDt賦給最小值IDs,返回步驟 2);當(dāng)主節(jié)點(diǎn)設(shè)備判斷最大值IDe與最小值IDs之差小于2時(shí),所有的從節(jié)點(diǎn)設(shè)備都被確認(rèn)并設(shè)定地址值,流程結(jié)束。進(jìn)一步,所述最小值IDt設(shè)為1,所述最大值IDe設(shè)為232_1。進(jìn)一步,所述中間值IDt的計(jì)算公式為
Γ ^ IDs+ IDe
權(quán)利要求
1.一種在Modbus通信網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配網(wǎng)絡(luò)地址的方法,其特征在于,其包括以下步驟1)初始化主節(jié)點(diǎn)設(shè)備和從節(jié)點(diǎn)設(shè)備,設(shè)置從節(jié)點(diǎn)設(shè)備的設(shè)備地址的最小值IDs和最大值IDe,所述最小值IDs和最大值IDe均為自然數(shù);2)主節(jié)點(diǎn)設(shè)備根據(jù)最小值IDs和最大值IDe計(jì)算出一大于或等于最小值IDs,小于或等于最大值IDe的中間值IDt,所述中間值IDt為自然數(shù),并向各從節(jié)點(diǎn)設(shè)備發(fā)送包含有所述中間值IDt的地址報(bào)文;3)從節(jié)點(diǎn)設(shè)備接收到該地址報(bào)文后進(jìn)行解析,將自身的設(shè)備地址與所述中間值IDt進(jìn)行比較,如果自身設(shè)備地址小于所述中間值IDt,則向主節(jié)點(diǎn)設(shè)備發(fā)送包含該從節(jié)點(diǎn)設(shè)備的設(shè)備地址的應(yīng)答報(bào)文,否則不回應(yīng)該地址報(bào)文;4)如果主節(jié)點(diǎn)設(shè)備收到一應(yīng)答報(bào)文,則向該從應(yīng)答報(bào)文中的設(shè)備地址對(duì)應(yīng)的節(jié)點(diǎn)設(shè)備發(fā)送包含Modbus網(wǎng)絡(luò)地址的設(shè)定報(bào)文,如果在等待時(shí)間內(nèi)收到該節(jié)點(diǎn)設(shè)備的確認(rèn)報(bào)文, 則該從節(jié)點(diǎn)設(shè)備的Modbus網(wǎng)絡(luò)地址已經(jīng)被確定,該從節(jié)點(diǎn)設(shè)備將不再對(duì)主節(jié)點(diǎn)設(shè)備發(fā)送的信息進(jìn)行回應(yīng),并返回步驟1);否則主節(jié)點(diǎn)設(shè)備將中間值IDt賦給最大值IDe,返回步驟 2);5)如果主節(jié)點(diǎn)設(shè)備收到至少兩個(gè)應(yīng)答報(bào)文,則將中間值IDt賦給最大值IDe,返回步驟2);6)如果主節(jié)點(diǎn)設(shè)備沒(méi)有收到應(yīng)答報(bào)文,則將中間值IDt賦給最小值IDs,返回步驟2); 當(dāng)主節(jié)點(diǎn)設(shè)備判斷最大值IDe與最小值IDs之差小于2時(shí),所有的從節(jié)點(diǎn)設(shè)備都被確認(rèn)并設(shè)定地址值,流程結(jié)束。
2.如權(quán)利要求1所述的方法,其特征在于,所述最小值IDt設(shè)為1,所述最大值IDe設(shè)為滬2-1。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述中間值IDt的計(jì)算公式為
全文摘要
本發(fā)明所述的一種在Modbus網(wǎng)絡(luò)中為從節(jié)點(diǎn)設(shè)備分配地址的方法屬于通信領(lǐng)域,實(shí)現(xiàn)了由主節(jié)點(diǎn)設(shè)備自動(dòng)對(duì)Modbus網(wǎng)絡(luò)中的各從節(jié)點(diǎn)設(shè)備的自動(dòng)識(shí)別并分配Modbus地址的方法。相對(duì)于現(xiàn)有技術(shù),本發(fā)明能夠在較短的時(shí)間內(nèi)確定Modbus網(wǎng)絡(luò)中從節(jié)點(diǎn)設(shè)備的Mosbus地址,并且能根據(jù)從節(jié)點(diǎn)地址的大小來(lái)設(shè)定從節(jié)點(diǎn)設(shè)備的響應(yīng)延遲時(shí)間,加快從節(jié)點(diǎn)設(shè)備地址的設(shè)定速度。
文檔編號(hào)H04L29/12GK102325201SQ20111033146
公開(kāi)日2012年1月18日 申請(qǐng)日期2011年10月27日 優(yōu)先權(quán)日2011年10月27日
發(fā)明者劉玉明, 古雄文, 吳蕩儒 申請(qǐng)人:珠海派諾科技股份有限公司