本發(fā)明屬于通信
技術(shù)領(lǐng)域:
,尤其涉及一種點(diǎn)對(duì)多點(diǎn)輪詢通訊方法。
背景技術(shù):
:傳統(tǒng)的輪詢問(wèn)答方式主要采用主控節(jié)點(diǎn)依據(jù)輪詢列表依次詢問(wèn)、客戶端收到詢問(wèn)指令后作出回應(yīng)的方式,即,主控節(jié)點(diǎn)向第一個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第一個(gè)客戶端回應(yīng);主控節(jié)點(diǎn)向第二個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第二個(gè)客戶端回應(yīng)……直至,主控節(jié)點(diǎn)向第N個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第N個(gè)客戶端回應(yīng)。申請(qǐng)?zhí)?2131775.5的發(fā)明專利提供了一種設(shè)備數(shù)據(jù)輪詢調(diào)度方法,采用如下步驟:A、讀取設(shè)備數(shù)據(jù),所有設(shè)備按其類型和內(nèi)部模塊分類,并賦予相應(yīng)的優(yōu)先級(jí)和輪詢間隔,生成輪詢?nèi)蝿?wù)列表;B、按輪詢間隔為設(shè)備周期輪詢數(shù)據(jù),根據(jù)輪詢?nèi)蝿?wù)列表啟動(dòng)輪詢調(diào)度線程,同時(shí)啟動(dòng)連通狀態(tài)檢測(cè)線程;C、根據(jù)輪詢優(yōu)先級(jí)和輪詢間隔依次對(duì)設(shè)備的相應(yīng)模塊進(jìn)行輪詢。該方法根據(jù)預(yù)訂輪詢列表對(duì)設(shè)備進(jìn)行輪詢,主控節(jié)點(diǎn)需要不斷發(fā)出輪詢指令,通知相應(yīng)的客戶端進(jìn)行應(yīng)答,完成一次輪詢所需時(shí)間很長(zhǎng),輪詢效率低。技術(shù)實(shí)現(xiàn)要素:為解決現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明提供一種點(diǎn)對(duì)多點(diǎn)輪詢通訊方法,該輪詢通訊方法效率高,對(duì)于需要傳送大量相同的重要數(shù)據(jù)至客戶端且需要客戶端進(jìn)行回應(yīng)時(shí)效率可大幅度提高。本發(fā)明提供的點(diǎn)對(duì)多點(diǎn)輪詢通訊方法,包括以下步驟:主控節(jié)點(diǎn)向終端設(shè)備發(fā)出輪詢開(kāi)始應(yīng)答指令;終端設(shè)備在收到輪詢開(kāi)始應(yīng)答指令后,根據(jù)事先獲得的被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序依次應(yīng)答,即,被輪詢終端設(shè)備列表中規(guī)定的第一個(gè)應(yīng)答的終端設(shè)備首先應(yīng)答,其余終端設(shè)備在偵聽(tīng)到排在其前面的終端設(shè)備應(yīng)答完畢后應(yīng)答;或者,所述輪詢開(kāi)始應(yīng)答指令中含第一個(gè)應(yīng)答的終端設(shè)備的序號(hào),該序號(hào)對(duì)應(yīng)的終端設(shè)備首先應(yīng)答,其余終端設(shè)備根據(jù)被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序、偵聽(tīng)到排在其前面的終端設(shè)備應(yīng)答完畢后應(yīng)答。本發(fā)明對(duì)傳統(tǒng)的輪詢方式作出重大改進(jìn),將傳統(tǒng)輪詢方法中的主控節(jié)點(diǎn)根據(jù)輪詢?nèi)蝿?wù)列表依次向各終端設(shè)備發(fā)出輪詢指令、終端設(shè)備根據(jù)輪詢指令應(yīng)答的方式,調(diào)整為,由主控節(jié)點(diǎn)直接向所有終端設(shè)備廣播輪詢開(kāi)始應(yīng)答指令,終端設(shè)備根據(jù)設(shè)定好的被輪詢終端設(shè)備列表中的應(yīng)答次序依次應(yīng)答,或者在輪詢開(kāi)始應(yīng)當(dāng)指令中指定第一個(gè)應(yīng)答的終端設(shè)備,由該終端設(shè)備首先應(yīng)答,其余終端設(shè)備根據(jù)被輪詢終端設(shè)備列表中的應(yīng)答次序依次應(yīng)答。本發(fā)明減少主控節(jié)點(diǎn)與終端設(shè)備之間的輪詢通訊次數(shù),使得輪詢效率大幅度提升。為避免后一終端設(shè)備偵聽(tīng)到前一終端設(shè)備已經(jīng)完成應(yīng)答,但主控節(jié)點(diǎn)尚未完成相關(guān)數(shù)據(jù)存儲(chǔ)等工作,導(dǎo)致出現(xiàn)沖突等問(wèn)題,所述被輪詢終端設(shè)備列表中還包括數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng),終端設(shè)備在偵聽(tīng)到排在其前面的終端設(shè)備應(yīng)答完畢,等待數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng)規(guī)定的時(shí)間屆滿后再應(yīng)答。由于終端設(shè)備或通訊存在發(fā)生故障的可能,為避免一個(gè)或多個(gè)終端設(shè)備應(yīng)答超時(shí)導(dǎo)致輪詢中斷,本發(fā)明采用技術(shù)方案進(jìn)行調(diào)整,當(dāng)一個(gè)或多個(gè)終端設(shè)備未應(yīng)答,主控節(jié)點(diǎn)重新發(fā)出輪詢開(kāi)始應(yīng)答指令,該輪詢開(kāi)始應(yīng)答指令中含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào),該序號(hào)對(duì)應(yīng)的終端設(shè)備首先應(yīng)答,其余終端設(shè)備根據(jù)被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序、偵聽(tīng)到排在其前面的終端設(shè)備應(yīng)答完畢后應(yīng)答。當(dāng)各終端設(shè)備根據(jù)被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序依次應(yīng)答時(shí),通過(guò)含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào)的輪詢開(kāi)始應(yīng)答指令進(jìn)行調(diào)整,跳過(guò)發(fā)生故障的終端設(shè)備。當(dāng)主控節(jié)點(diǎn)發(fā)出的輪詢開(kāi)始應(yīng)答指令含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào)時(shí),此時(shí)發(fā)生終端設(shè)備或通訊故障,主控節(jié)點(diǎn)再次發(fā)送輪詢開(kāi)始應(yīng)答指令,相當(dāng)于本發(fā)明點(diǎn)對(duì)多點(diǎn)輪詢通訊方法重新啟動(dòng)。本發(fā)明還采用以下方案來(lái)避免一個(gè)或多個(gè)終端設(shè)備應(yīng)答超時(shí)導(dǎo)致輪詢中斷,當(dāng)一個(gè)或多個(gè)終端設(shè)備未應(yīng)答,排在未應(yīng)答終端設(shè)備后的終端設(shè)備自行啟動(dòng)應(yīng)答??紤]到通訊效率以及防止通訊死鎖,本發(fā)明約定最大可允許的連續(xù)故障終端設(shè)備的數(shù)量,當(dāng)連續(xù)未應(yīng)答終端設(shè)備數(shù)量超過(guò)預(yù)設(shè)值時(shí),由主控節(jié)點(diǎn)重新發(fā)出輪詢開(kāi)始應(yīng)答指令,輪詢開(kāi)始應(yīng)答指令中含第一個(gè)應(yīng)答的終端設(shè)備的序號(hào),該序號(hào)對(duì)應(yīng)的終端設(shè)備首先應(yīng)答,其余終端設(shè)備根據(jù)被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序、偵聽(tīng)到排在其前面的終端設(shè)備應(yīng)答完畢后應(yīng)答。為實(shí)現(xiàn)全部終端設(shè)備有序完成應(yīng)答,當(dāng)所述輪詢開(kāi)始應(yīng)答指令中指定第一個(gè)應(yīng)答的終端設(shè)備的序號(hào),自該序號(hào)的終端設(shè)備、以及所述被輪詢終端設(shè)備列表中排在該序號(hào)之后其余終端設(shè)備全部應(yīng)答完畢后,所述被輪詢終端設(shè)備列表中排在第一位的終端設(shè)備開(kāi)始應(yīng)答,直至所述被輪詢終端設(shè)備列表中排在該序號(hào)前面的終端設(shè)備全部應(yīng)答完畢。終端設(shè)備可以通過(guò)多種方式獲得被輪詢終端設(shè)備列表,如,在主控節(jié)點(diǎn)發(fā)出輪詢應(yīng)答指令之前,所述主控節(jié)點(diǎn)向終端設(shè)備廣播被輪詢終端設(shè)備列表;或者,所述被輪詢終端設(shè)備列表事先存儲(chǔ)在終端設(shè)備中。本發(fā)明提供的點(diǎn)對(duì)多點(diǎn)輪詢通訊方法,由終端設(shè)備自行根據(jù)被輪詢終端設(shè)備列表中的順序依次應(yīng)答,避免主控節(jié)點(diǎn)單獨(dú)給每個(gè)終端設(shè)備發(fā)送輪詢指令,再由終端設(shè)備應(yīng)答,大大提高了輪詢效率,節(jié)約了資源。本發(fā)明可用于對(duì)現(xiàn)有系統(tǒng)的改進(jìn),如消防設(shè)施、通訊設(shè)備輪詢,無(wú)需改變硬件環(huán)境,改造成本低廉。附圖說(shuō)明圖1為實(shí)施例一流程圖;圖2為實(shí)施例二流程圖;圖3為終端設(shè)備應(yīng)答超時(shí)流程圖。具體實(shí)施方式實(shí)施例一:如圖1所示,由主控節(jié)點(diǎn)廣播被輪詢終端設(shè)備列表(被輪詢終端設(shè)備列表也可以事先存儲(chǔ)在終端設(shè)備中),該被輪詢終端設(shè)備列表中含有各終端設(shè)備的應(yīng)答次序以及數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng);主控節(jié)點(diǎn)向所有終端設(shè)備廣播輪詢開(kāi)始應(yīng)答指令;終端設(shè)備根據(jù)被輪詢終端設(shè)備列表規(guī)定的應(yīng)答次序依次應(yīng)答,具體的實(shí)現(xiàn)是:被輪詢終端設(shè)備列表中設(shè)定的第一個(gè)終端設(shè)備總是立即應(yīng)答,其它終端設(shè)備在偵聽(tīng)到其上一個(gè)終端設(shè)備數(shù)據(jù)應(yīng)答完畢后,延時(shí)一段時(shí)間(即數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng))后,自動(dòng)開(kāi)始應(yīng)答,直至被輪詢終端設(shè)備列表中最后一個(gè)終端設(shè)備應(yīng)答完畢后輪詢結(jié)束。以下表為例進(jìn)行說(shuō)明,:序號(hào)12345終端設(shè)備號(hào)ACBDE表1:被輪詢終端設(shè)備列表當(dāng)收到主控節(jié)點(diǎn)發(fā)出的輪詢開(kāi)始應(yīng)答指令后,A首先應(yīng)答,C其次應(yīng)答,B、D、E依次應(yīng)答。實(shí)施例二:如圖2所示,由主控節(jié)點(diǎn)廣播被輪詢終端設(shè)備列表(被輪詢終端設(shè)備列表也可以事先存儲(chǔ)在終端設(shè)備中),該被輪詢終端設(shè)備列表中含有各終端設(shè)備的應(yīng)答次序以及數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng);主控節(jié)點(diǎn)向所有終端設(shè)備廣播輪詢開(kāi)始應(yīng)答指令,輪詢開(kāi)始應(yīng)答指令中含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào);終端設(shè)備依次應(yīng)答,具體的實(shí)現(xiàn)是:輪詢開(kāi)始應(yīng)答指令中指定的第一個(gè)應(yīng)答的終端設(shè)備立即應(yīng)答,其余終端設(shè)備依據(jù)被輪詢終端設(shè)備列表中規(guī)定的應(yīng)答次序依次應(yīng)答,更具體地說(shuō),被輪詢終端設(shè)備列表中規(guī)定的排在輪詢開(kāi)始應(yīng)答指令中指定的第一個(gè)應(yīng)答的終端設(shè)備后的終端設(shè)備,在偵聽(tīng)到輪詢開(kāi)始應(yīng)答指令中指定的第一個(gè)應(yīng)答的終端設(shè)備應(yīng)答完畢,延時(shí)一段時(shí)間(即數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng))后,自動(dòng)開(kāi)始應(yīng)答,依此類推,直至排在第一個(gè)應(yīng)答的終端設(shè)備后的終端設(shè)備全部應(yīng)答完畢,此時(shí),并非所有的終端設(shè)備都應(yīng)答完畢,被輪詢終端設(shè)備列表中排在輪詢開(kāi)始應(yīng)答指令中指定的第一個(gè)應(yīng)答的終端設(shè)備前的終端設(shè)備尚未應(yīng)答,那么,被輪詢終端設(shè)備列表中規(guī)定的第一個(gè)應(yīng)答終端設(shè)備首先應(yīng)答,依此類推,直至排在輪詢開(kāi)始應(yīng)答指令中指定的第一個(gè)應(yīng)答的終端設(shè)備前的終端設(shè)備全部應(yīng)答完畢。以下表為例進(jìn)行說(shuō)明:序號(hào)12345終端設(shè)備號(hào)ACDBE表2:被輪詢終端設(shè)備列表序號(hào)3終端設(shè)備號(hào)D表3:輪詢開(kāi)始應(yīng)答指令中含有的應(yīng)答序號(hào)當(dāng)收到主控節(jié)點(diǎn)發(fā)出的輪詢開(kāi)始應(yīng)答指令后,終端設(shè)備D首先應(yīng)答,終端設(shè)備B偵聽(tīng)到終端設(shè)備D應(yīng)答完畢后應(yīng)答,終端設(shè)備E偵聽(tīng)到終端設(shè)備B應(yīng)答完畢后應(yīng)答,由于仍有終端設(shè)備尚未應(yīng)答,此時(shí),由被輪詢終端設(shè)備列表中排在第一位的終端設(shè)備A應(yīng)答,終端設(shè)備C偵聽(tīng)到終端設(shè)備A應(yīng)答完畢后應(yīng)答。如圖3所示,當(dāng)發(fā)生通訊故障或終端設(shè)備故障,一個(gè)或多個(gè)終端設(shè)備應(yīng)答超時(shí),此時(shí)可采用兩種方式解決,避免輪詢終端:其一,由主控節(jié)點(diǎn)根據(jù)業(yè)務(wù)邏輯進(jìn)行判斷處理后重新發(fā)送輪詢開(kāi)始應(yīng)答指令,輪詢開(kāi)始應(yīng)答指令中含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào)。以表2為例進(jìn)行說(shuō)明,終端設(shè)備A應(yīng)答完畢后,按照次序,應(yīng)該由終端設(shè)備C應(yīng)答,但終端設(shè)備C發(fā)生故障,主控節(jié)點(diǎn)發(fā)出含有表3的輪詢開(kāi)始應(yīng)答指令,此時(shí),從終端D開(kāi)始應(yīng)答,B、E依次應(yīng)答。在不同的輪詢環(huán)境中,業(yè)務(wù)邏輯存在不同,例如,在消防噴淋設(shè)備輪詢中,部分噴淋設(shè)備的優(yōu)先級(jí)較高,則,重新發(fā)送的輪詢開(kāi)始應(yīng)答指令可以指定優(yōu)先級(jí)最高的終端設(shè)備首先應(yīng)答。其二,被輪詢終端設(shè)備列表中,排在應(yīng)答超時(shí)的終端設(shè)備后的終端設(shè)備自行啟動(dòng)應(yīng)答,依次類推,直至終端設(shè)備全部應(yīng)答完畢。以表2為例,終端設(shè)備A應(yīng)答完畢后,按照次序,應(yīng)該由終端設(shè)備C應(yīng)答,但終端設(shè)備C發(fā)生故障,終端設(shè)備D在系統(tǒng)設(shè)定的時(shí)間內(nèi)未偵聽(tīng)到終端設(shè)備C應(yīng)答完畢的狀態(tài),那么終端設(shè)備D自行啟動(dòng)應(yīng)答,依此類推。如果終端設(shè)備D也發(fā)生故障,那么終端設(shè)備B在系統(tǒng)設(shè)定的時(shí)間未偵聽(tīng)到終端設(shè)備D應(yīng)答完畢的狀態(tài),那么終端設(shè)備B自行啟動(dòng)應(yīng)答??紤]到系統(tǒng)的通訊效率以及防止通訊死鎖,本發(fā)明設(shè)計(jì)有最大可允許的連續(xù)故障終端設(shè)備數(shù)量,當(dāng)連續(xù)未應(yīng)答終端數(shù)量超出最大可允許的連續(xù)故障終端設(shè)備數(shù)量時(shí),由主控節(jié)點(diǎn)重新發(fā)送輪詢開(kāi)始應(yīng)答指令,輪詢開(kāi)始應(yīng)答指令中含有第一個(gè)應(yīng)答的終端設(shè)備的序號(hào)。以下舉例說(shuō)明本發(fā)明與傳統(tǒng)方式之間的效果差異:代號(hào)全稱單位PB物理線路波特率bit/sMDL主控節(jié)點(diǎn)發(fā)出的指令/數(shù)據(jù)長(zhǎng)度bitsCDL客戶端地址長(zhǎng)度bitsSDL客戶端應(yīng)答數(shù)據(jù)長(zhǎng)度bitsN客戶端數(shù)量unitSLOT數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng)s表4輪詢效率計(jì)算依據(jù)以簡(jiǎn)單輪詢通訊為例(樓宇溫度探頭輪檢),物理通訊波特率為9600bit/s,主控節(jié)點(diǎn)發(fā)出的指令長(zhǎng)度為16bits,客戶端地址長(zhǎng)度為16bits,客戶端應(yīng)答數(shù)據(jù)長(zhǎng)度為16bits,數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng)為1毫秒(0.001秒),并假設(shè)對(duì)1000個(gè)探頭進(jìn)行輪檢。傳統(tǒng)輪詢方式:主控節(jié)點(diǎn)向第一個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第一個(gè)客戶端回應(yīng),主控節(jié)點(diǎn)向第二個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第二個(gè)客戶端回應(yīng),……主控節(jié)點(diǎn)向第N個(gè)客戶端發(fā)送查詢數(shù)據(jù)指令→第N個(gè)客戶端回應(yīng)。傳統(tǒng)方式對(duì)N個(gè)客戶端完成一次輪詢通訊時(shí)長(zhǎng)為:N*((MDL+CDL)/PB+(SDL+CDL)/PB+SLOT)=1000*((16+16)/9600+(16+16)/9600+0.001)=7.667秒。本發(fā)明方式:主控節(jié)點(diǎn)發(fā)送被輪詢客戶端列表及數(shù)據(jù)保護(hù)間隔時(shí)長(zhǎng),主控節(jié)點(diǎn)發(fā)送輪詢開(kāi)始應(yīng)答指令,第一個(gè)客戶端回應(yīng),第二個(gè)客戶端回應(yīng),……第N個(gè)客戶端回應(yīng)。本發(fā)明對(duì)N個(gè)客戶端完成一次輪詢通訊時(shí)長(zhǎng)為:MDL/PB+N*((SDL+CDL)/PB+SLOT)=16/9600+1000*((16+16)/9600+0.001)=4.335秒。本發(fā)明與傳統(tǒng)輪詢方式相比,輪詢效率提升至原來(lái)的1.768倍,對(duì)于需要傳送大量相同的重要數(shù)據(jù)至客戶端且需要客戶端進(jìn)行回應(yīng)時(shí)效率甚至可成百上千倍地提升。當(dāng)前第1頁(yè)1 2 3