專利名稱:一種并發(fā)巡測批量終端時間的方法
一種并發(fā)巡測批量終端時間的方法技術(shù)領(lǐng)域
本發(fā)明屬于電力和通信技術(shù)領(lǐng)域,尤其涉及一種批量巡測終端時間的方法。
技術(shù)背景
隨著電力系統(tǒng)的改造,電力數(shù)據(jù)的采集將逐漸摒棄傳統(tǒng)的人工抄表模式而采用遠(yuǎn) 程終端控制抄表方式,并將抄表數(shù)據(jù)通過GPRS/CDMA、以太網(wǎng)、電話線路、串口通道、230M等 方式傳送到主站系統(tǒng)進(jìn)行分析和應(yīng)用。為了在主站側(cè)進(jìn)行數(shù)據(jù)分析應(yīng)用以及實時監(jiān)測用電 情況,就必須確保主站側(cè)電力數(shù)據(jù)的正確性和完整性,電能量采集系統(tǒng)正是在這種背景下 產(chǎn)生的,但是傳統(tǒng)的電能量采集系統(tǒng)所采集數(shù)據(jù)的時標(biāo)嚴(yán)重依賴于終端,如果數(shù)據(jù)時標(biāo)一 旦出錯,那么這條數(shù)據(jù)就變得沒有任何實用價值,而且還有可能嚴(yán)重的誤導(dǎo)分析決策人員, 因此如何及時發(fā)現(xiàn)終端系統(tǒng)時間的錯誤非常關(guān)鍵。
本發(fā)明中基于GPRS的并發(fā)巡測批量終端時間的設(shè)計方法,可用于電能量信息采 集系統(tǒng),因為電能量信息采集系統(tǒng)在實際運(yùn)行過程中經(jīng)常會出現(xiàn)數(shù)據(jù)采集不成功或采集數(shù) 據(jù)的時標(biāo)錯位等情況,借助批量終端時間的巡測功能可以及時的發(fā)現(xiàn)哪些終端系統(tǒng)的時間 出現(xiàn)偏差并及時修正以保證電能量采集系統(tǒng)的正常運(yùn)行。
在最新發(fā)展的現(xiàn)有技術(shù)中,利用GPRS聯(lián)合網(wǎng)或WCDMA網(wǎng)的數(shù)據(jù)收發(fā)功能,在相應(yīng) 的用戶地點安裝采集終端,并通過GPRS聯(lián)合網(wǎng)或WCDMA網(wǎng),將所采集的數(shù)據(jù)傳送到相應(yīng)的 電力專網(wǎng),再由電能量采集系統(tǒng)對這些數(shù)據(jù)進(jìn)行解析,并交給應(yīng)用服務(wù)器進(jìn)行相應(yīng)的分析 和處理。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種并發(fā)巡測批量終端時間的方法,旨在及時發(fā)現(xiàn)電能量 采集系統(tǒng)中所接入終端的系統(tǒng)時間錯誤的問題。
為達(dá)到上述目的,一種并發(fā)巡測批量終端時間的方法,其特征在于,所述方法包括 以下步驟
(1)向前置機(jī)批量查詢待巡測終端的在線狀態(tài),不在線的終端不參與巡測;
(2)申請獲取在線終端的發(fā)送鎖,申請鎖失敗的終端不參與巡測;
(3)發(fā)送線程循環(huán)組織參與巡測終端的時間請求命令并通過前置機(jī)發(fā)送給對應(yīng)終 端;
(4)各終端獲取其系統(tǒng)當(dāng)前時間并組織響應(yīng)數(shù)據(jù)通過前置機(jī)轉(zhuǎn)發(fā)給主站查詢模 塊;
(5)接收線程接收到各終端的響應(yīng)數(shù)據(jù)并通知解析響應(yīng)線程;
(6)解析響應(yīng)線程對接收的響應(yīng)數(shù)據(jù)進(jìn)行解析,抽取出終端時間;
(7)釋放解析完成終端的發(fā)送鎖。
作為具體化,在上述步驟(1)中,批量查詢終端在線狀態(tài)的請求命令格式參照主 站通訊協(xié)議組織,通訊協(xié)議的幀格式如下起始字符(E8H)lbytes、源主站地址lbyte、目標(biāo)主站地址lbytes、起始字符(E8H) lbytes、控制域(C)lbytes、長度(L) 2bytes、幀序列域 (FIR,F(xiàn)INJseq) lbytes、數(shù)據(jù)區(qū)(DATA)、結(jié)束字符(16H) lbytes ;其中源主站地址和目標(biāo)主 站地址用程序模塊的ID編號來代替,且最大不能超過127 ;控制域表示功能碼,不同的功能 碼對應(yīng)不同的功能,不同的功能碼對應(yīng)數(shù)據(jù)區(qū)的格式也不一樣。
作為改進(jìn),對終端在線狀態(tài)的查詢包括單個終端在線狀態(tài)查詢和多個終端在線狀 態(tài)查詢;其中,單個終端在線狀態(tài)查詢的功能碼定義為0X05/0X15,單個終端在線狀態(tài)查詢 的數(shù)據(jù)區(qū)內(nèi)容定義為終端協(xié)議類型-終端地址-終端在線狀態(tài);多終端在線狀態(tài)查詢的 功能碼定義為0X06/0X16,多終端在線狀態(tài)查詢的數(shù)據(jù)區(qū)內(nèi)容定義為終端協(xié)議類型1-協(xié)議類型1的終端個數(shù)nl-終端地址1-終端1狀態(tài)......終端地址nl-終端nl狀態(tài)-終端協(xié)議類型2-協(xié)議類型2的終端個數(shù)π2-終端地址1-終端1狀態(tài)......終端地址π2-終端η2狀態(tài).......
作為具體化,在上述步驟O)中,請求終端時間的前提是終端已經(jīng)登錄上前置機(jī); 并為每個終端都分配了一個獨(dú)立的終端發(fā)送鎖,每次在對終端進(jìn)行操作之前必須先獲取該 終端的發(fā)送鎖,否則將不被允許執(zhí)行終端操作。
作為改進(jìn),在以下三種情況下能成功地申請終端發(fā)送鎖
Α、每個終端初次獲取發(fā)送鎖;
B、發(fā)送鎖被正常的釋放后;
C、發(fā)送鎖被連續(xù)持有超過指定時間;。
其中A和B兩種情況均屬于正常獲取發(fā)送鎖,C屬于超時強(qiáng)制獲取發(fā)送鎖。
作為具體化,在上述步驟(3)中,發(fā)送線程中實現(xiàn)的功能是作為用戶調(diào)用接口對 外提供給調(diào)用者,發(fā)送線程是任何調(diào)用該用戶接口的線程,用戶調(diào)用接口方法定義為
pub 1 i cvo i dexeTermiCommCmd (Li st〈TermiCommOb j > t ermi commob j s, CompleteListener<Ter miCommObj>listener),
其中,第一個參數(shù)為待執(zhí)行的終端對象列表集合,第二個參數(shù)為某終端對象執(zhí)行 完畢后用于通知用戶的完成事件監(jiān)聽器。
作為改進(jìn),用戶調(diào)用接口實現(xiàn)流程如下
a、遍歷參與巡測的終端列表,獲取每個終端;
b、按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》組織每個終端時間的請求幀;
C、將組織的終端時間請求幀通過前置機(jī)轉(zhuǎn)發(fā)給終端,如果發(fā)送失敗則將該終端從 參與巡測終端列表中刪除;
d、繼續(xù)執(zhí)行步驟a,直到所有終端的請求都發(fā)送完畢;
e、如果上述終端列表不為空,則遍歷終端列表,獲取每個終端,檢查其終端的發(fā)送 鎖是否處于可申請狀態(tài),如果處于可申請狀態(tài),則表明該終端已經(jīng)執(zhí)行完畢,立即通過事件 通知機(jī)制告知用戶,并從終端列表中刪除該終端,繼續(xù)遍歷下一個終端,如果處于不可申請 狀態(tài)則直接遍歷下一個終端;如果本步驟遍歷完一遍之后,所有終端發(fā)送鎖均處于不可獲 取狀態(tài),則調(diào)用Thread, sleep (1000)方法進(jìn)行1秒鐘的休眠;
f、判斷終端列表是否為空,如果不為空,則繼續(xù)執(zhí)行步驟e,直到終端列表為空為止。
作為改進(jìn),上述事件通知機(jī)制中涉及到的事件接口是CompIeteLi stener,該接口定義了一個方法public void operateCompleted(TerminalCommCmd trmcmd),用戶通過 重載該方法來獲取終端命令的執(zhí)行結(jié)果。
作為具體化,上述步驟的具體步驟為終端接到查詢其系統(tǒng)時間的命令后,按 照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》定義的數(shù)據(jù)格式01,組織成長度為6的字節(jié)數(shù)組,并 將其作為數(shù)據(jù)區(qū)組織成完整的協(xié)議幀,并將此幀數(shù)據(jù)通過連接登錄前置機(jī)的GPRS通道上 傳給前置機(jī);然后前置機(jī)將數(shù)據(jù)幀轉(zhuǎn)發(fā)給主站查詢模塊。
作為具體化,在上述步驟(7)中,將所有的解析過程放入try塊中執(zhí)行,將釋放終 端發(fā)送鎖的過程放入finally代碼塊中執(zhí)行,這樣就能保證解析過程中無論出現(xiàn)何種異 常,終端發(fā)送鎖均能成功的釋放,避免死鎖問題的發(fā)生。。
本發(fā)明的有益效果是通過網(wǎng)絡(luò)支持并發(fā)的特性,實現(xiàn)了前置機(jī)對終端的并發(fā)處 理,采用多線程調(diào)度策略和JAVA NIO異步通道處理機(jī)制實現(xiàn)了批量巡測終端的功能,采用 事件通知機(jī)制保證用戶感知終端巡測結(jié)果的實時性。
圖1是本發(fā)明實施例提供的電能量信息采集系統(tǒng)結(jié)構(gòu)示意圖2是本發(fā)明實施例提供的并發(fā)巡測批量終端時間的實現(xiàn)流程示意圖3是本發(fā)明實施例提供的巡測終端功能用戶接口的工作流程示意圖4是本發(fā)明實施例提供的主站查詢系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
本發(fā)明實施例是這樣實現(xiàn)的,如圖2和圖3所示,一種基于GPRS的并發(fā)巡測批量 終端時間的設(shè)計方法,所述方法包括以下步驟
(1)向前置機(jī)批量查詢待巡測終端的在線狀態(tài),不在線的終端不參與巡測;批量 查詢終端在線狀態(tài)的請求命令格式參照主站通訊協(xié)議組織,批量查詢終端在線狀態(tài)的幀 格式如下起始字符(E8H)lbytes、源主站地址Ibyte、目標(biāo)主站地址lbytes、起始字符 (E8H)lbytes、控制域(C) lbytes、長度(L) 2bytes、幀序列域(FIR, FIN, Pseq) lbytes、數(shù)據(jù) 區(qū)(DATA)、結(jié)束字符(16H) lbytes。其中源主站地址和目標(biāo)主站地址用程序模塊的ID編號 來代替,且最大不能超過127??刂朴虮硎竟δ艽a,不同的功能碼對應(yīng)不同的功能,不同的功 能碼對應(yīng)數(shù)據(jù)區(qū)的格式也不一樣。對終端在線狀態(tài)的查詢包括單個終端在線狀態(tài)查詢和多 個終端在線狀態(tài)查詢,其中
1)、單個終端在線狀態(tài)查詢的功能碼定義為0X05/0X15,單個終端在線狀態(tài)查詢的 數(shù)據(jù)區(qū)內(nèi)容定義為終端協(xié)議類型-終端地址-終端在線狀態(tài)。
2)、多終端在線狀態(tài)查詢的功能碼定義為0X06/0X16,多終端在線狀態(tài)查詢的 數(shù)據(jù)區(qū)內(nèi)容定義為終端協(xié)議類型1-協(xié)議類型1的終端個數(shù)nl-終端地址1-終端1狀態(tài)......終端地址nl-終端nl狀態(tài)-終端協(xié)議類型2-協(xié)議類型2的終端個數(shù)n2_終端地址1-終端1狀態(tài)......終端地址n2-終端n2狀態(tài).......
(2)申請獲取在線終端的發(fā)送鎖,申請鎖失敗的終端不參與巡測;請求終端時間 的前提是終端已經(jīng)登錄上前置機(jī),即在線,因此不在線的終端沒有必要參與巡測。在實際應(yīng) 用中經(jīng)常會出現(xiàn)用戶對同一終端同時進(jìn)行操作的情況,為了保證每個用戶操作的原子性, 特設(shè)置了終端發(fā)送鎖,該發(fā)送鎖用于維護(hù)對同一終端同時進(jìn)行操作時的串行性,在本發(fā)明 中為每個終端都分配了一個獨(dú)立的終端發(fā)送鎖,每次在對終端進(jìn)行操作之前必須先獲取該 終端的發(fā)送鎖,否則將不被允許執(zhí)行終端操作。在以下三種情況下可以成功地申請終端發(fā) 送鎖
A、每個終端初次獲取發(fā)送鎖;
B、發(fā)送鎖被正常的釋放后;
C、發(fā)送鎖被連續(xù)持有超過指定時間,如1分鐘。
其中A和B兩種情況均屬于正常獲取發(fā)送鎖,C屬于超時強(qiáng)制獲取發(fā)送鎖。如果 某終端發(fā)送鎖被占用,且占用時間不超過指定時間,則申請發(fā)送鎖將會失敗,這種情況下意 味著主站請求程序模塊的請求命令已經(jīng)下達(dá)到終端且正在等待該終端的應(yīng)答,此時該終端 不宜參與巡測。
(3)發(fā)送線程循環(huán)組織參與巡測終端的時間請求命令并通過前置機(jī)發(fā)送給對應(yīng)終 端;發(fā)送線程中實現(xiàn)的功能是作為用戶調(diào)用接口對外提供給調(diào)用者的,發(fā)送線程可以是任 何調(diào)用該用戶接口的線程,該接口方法定義為
publicvoidexeTermiCommCmd(List<TermiCommObj>termicommobjs, CompleteListener<Ter miCommObj>listener),其中,第一個參數(shù)為待執(zhí)行的終端對象列 表集合,第二個參數(shù)為某終端對象執(zhí)行完畢后用于通知用戶的完成事件監(jiān)聽器,該接口實 現(xiàn)流程如下
a、遍歷參與巡測的終端列表,獲取每個終端;
b、按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》組織每個終端時間的請求幀;
C、將組織的終端時間請求幀通過前置機(jī)轉(zhuǎn)發(fā)給終端,如果發(fā)送失敗則將該終端從 參與巡測終端列表中刪除;
d、繼續(xù)執(zhí)行步驟a,直到所有終端的請求都發(fā)送完畢;
e、如果上述終端列表不為空,則遍歷終端列表,獲取每個終端,檢查其發(fā)送鎖是否 處于可申請狀態(tài),如果處于可申請狀態(tài),即,發(fā)送鎖已被正常釋放或超時強(qiáng)制獲取,則表明 該終端已經(jīng)執(zhí)行完畢,立即通過事件通知機(jī)制即調(diào)用完成事件監(jiān)聽器告知用戶,并從終端 列表中刪除該終端,繼續(xù)遍歷下一個終端,如果處于不可申請狀態(tài),即在指定時間內(nèi)發(fā)送鎖 還未被釋放,則直接遍歷下一個終端;如果本步驟遍歷完一遍之后,所有終端發(fā)送鎖均處于 不可獲取狀態(tài),則調(diào)用Thread, sleep (1000)方法進(jìn)行1秒鐘的休眠;
f、判斷終端列表是否為空,如果不為空,則繼續(xù)執(zhí)行步驟E,直到終端列表為空為 止。
從以上步驟a_f可以看出,整個用戶接口在發(fā)送完參與巡測的終端請求之后進(jìn)入 等待狀態(tài),等待解析線程解析并釋放發(fā)送鎖,等待所耗時間最長為申請終端發(fā)送鎖允許的 超時時間,也就是說整個巡測接口執(zhí)行所耗時間不超過單個終端申請發(fā)送鎖設(shè)置的超時時 間。
上述事件通知機(jī)制中涉及到的事件接口是CompleteListener,即完成事件監(jiān)聽器接口,該接口僅定義了一個方法
public void operateCompleted(TerminalCommCmd trmcmd),用戶通過重載該方 法來獲取終端命令的執(zhí)行結(jié)果。
(4)各終端獲取其系統(tǒng)當(dāng)前時間并組織響應(yīng)數(shù)據(jù)通過前置機(jī)轉(zhuǎn)發(fā)給主站查詢模 塊;終端接到查詢其系統(tǒng)時間的命令后,按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》定義的數(shù) 據(jù)格式01,組織成長度為6的字節(jié)數(shù)組,并將其作為數(shù)據(jù)區(qū)組織成完整的協(xié)議幀,并將此幀 數(shù)據(jù)通過連接登錄前置機(jī)的GPRS通道上傳給前置機(jī);然后前置機(jī)將數(shù)據(jù)幀轉(zhuǎn)發(fā)給主站查 詢模塊。
(5)接收線程接收到各終端的響應(yīng)數(shù)據(jù)并通知解析響應(yīng)線程;接收線程采用NIO 技術(shù)實現(xiàn)通道數(shù)據(jù)幀的讀寫,并將讀取的數(shù)據(jù)幀存如解析線程緩沖區(qū)等待解析線程解析; 接收線程和解析線程是通過共享緩沖區(qū)的方式來實現(xiàn)數(shù)據(jù)共享的,并通過解析線程自動監(jiān) 測該緩沖區(qū)的來實現(xiàn)自我通知。
(6)解析響應(yīng)線程對接收的響應(yīng)數(shù)據(jù)進(jìn)行解析,抽取出終端時間;解析線程監(jiān)測 到緩沖區(qū)中有數(shù)據(jù)幀后立即獲取數(shù)據(jù)幀并按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》進(jìn)行解 析,最后抽取出合法的終端系統(tǒng)時間,并將此時間存入對應(yīng)終端的數(shù)據(jù)存儲區(qū);
(7)釋放解析完成終端的發(fā)送鎖;解析線程每解析完畢一條終端響應(yīng)數(shù)據(jù)幀,就 立即釋放該終端占用的發(fā)送鎖,以便下一次對該終端進(jìn)行巡測或其他操作;在實際的數(shù)據(jù) 幀解析過程中可能會各種異常導(dǎo)致解析線程死掉,進(jìn)而影響整個程序的正常運(yùn)行,為此本 發(fā)明將所有的解析過程放入try塊中執(zhí)行,而將釋放終端發(fā)送鎖的過程放入finally代碼 塊中執(zhí)行,這樣就能保證解析過程中無論出現(xiàn)何種異常,終端發(fā)送鎖均能成功的釋放,避免 死鎖問題的發(fā)生。
在本發(fā)明中,所述GPRS是歐洲電信協(xié)會GSM系統(tǒng)中有關(guān)分組數(shù)據(jù)的標(biāo)準(zhǔn),它可 以提供高達(dá)115Kbps的空中接口傳輸速率,讓若干移動用戶能夠同時共享一個無線信道, 一個移動用戶也可以使用多個無線信道。其中,實際不發(fā)送或接收數(shù)據(jù)包的用戶僅占很 小一部分網(wǎng)絡(luò)資源。有了 GPRS,用戶的呼叫建立時間大為縮短,幾乎可以做到"永遠(yuǎn)在 線"(always online)。由于上述特點,GPRS網(wǎng)可為移動數(shù)據(jù)用戶提供突發(fā)性數(shù)據(jù)業(yè)務(wù),能 快速建立連接,且無連接時延。特別適用于頻繁傳送小數(shù)據(jù)量的應(yīng)用和非頻繁傳送大量數(shù) 據(jù)的應(yīng)用。是目前最理想的用電管理的通訊手段。
所述終端支持《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》,應(yīng)用于電力系統(tǒng)的數(shù)據(jù)采集、 負(fù)荷控制等,其凍結(jié)的各類數(shù)據(jù)都具有時標(biāo),且采用GPRS作為其上行通道。
圖1是本發(fā)明實施例提供的電能量信息采集系統(tǒng)結(jié)構(gòu)示意圖,系統(tǒng)結(jié)構(gòu)中各模塊 簡要描述如下
采集設(shè)備包括各種采集終端、集中器、采集器、網(wǎng)絡(luò)表、電能表等,在電能量信息采 集系統(tǒng)中這些設(shè)備統(tǒng)稱為采集對象;
通信信道包括各網(wǎng)絡(luò)運(yùn)營商提供的無線通道,如GPRS/CDMA等,還有光釬專網(wǎng)、 230M無線信道、電話線通道、串口通道等;
主站包括前置機(jī)、定時采集模塊、實時采集模塊、中間件模塊、web應(yīng)用模塊等,其 中本發(fā)明的設(shè)計方法主要用于主站對終端系統(tǒng)時間的查詢。
圖4是本發(fā)明實施例提供的主站查詢系統(tǒng)結(jié)構(gòu)示意圖,本發(fā)明設(shè)計方法可用于圖中的C/S結(jié)構(gòu)客戶端軟件模塊實現(xiàn)終端時間的巡測,也可用于B/S結(jié)構(gòu)的瀏覽器中實現(xiàn)終 端時間查詢功能;從圖中可以看到,無論是采用那種方式,均必須和前置機(jī)服務(wù)進(jìn)行交互, 前置機(jī)主要起管理終端通道和轉(zhuǎn)發(fā)數(shù)據(jù)的作用。
綜上所述,本發(fā)明采用多線程服務(wù)和NIO技術(shù)實現(xiàn)批量終端的并發(fā)巡測,采用精 確的算法和事件驅(qū)動模式提供人性化的用戶接口,可接受數(shù)量極大的終端同時參與巡測, 保證在盡可能短的時間內(nèi)得到巡測結(jié)果。采用本發(fā)明,可以盡量減少電能量信息采集系統(tǒng) 在實際運(yùn)行過程中出現(xiàn)的數(shù)據(jù)采集不成功或采集數(shù)據(jù)的時標(biāo)錯位等情況。借助批量終端 的巡測時間功能可以及時地發(fā)現(xiàn)哪些終端系統(tǒng)的時間出現(xiàn)偏差,并及時修正以保證電能量 采集系統(tǒng)的正常運(yùn)行,可大幅度減少用電管理系統(tǒng)的維護(hù)使用成本,并使系統(tǒng)更加安全、可罪。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種并發(fā)巡測批量終端時間的方法,其特征在于,所述方法包括以下步驟(1)向前置機(jī)批量查詢待巡測終端的在線狀態(tài),不在線的終端不參與巡測;(2)申請獲取在線終端的發(fā)送鎖,申請鎖失敗的終端不參與巡測;(3)發(fā)送線程循環(huán)組織參與巡測終端的時間請求命令并通過前置機(jī)發(fā)送給對應(yīng)終端;(4)各終端獲取其系統(tǒng)當(dāng)前時間并組織響應(yīng)數(shù)據(jù)通過前置機(jī)轉(zhuǎn)發(fā)給主站查詢模塊;(5)接收線程接收到各終端的響應(yīng)數(shù)據(jù)并通知解析響應(yīng)線程;(6)解析響應(yīng)線程對接收的響應(yīng)數(shù)據(jù)進(jìn)行解析,抽取出終端時間;(7)釋放解析完成終端的發(fā)送鎖。
2.根據(jù)權(quán)利要求1所述的一種并發(fā)巡測批量終端時間的方法,其特征在于在上述 步驟(1)中,批量查詢終端在線狀態(tài)的請求命令格式參照主站通訊協(xié)議組織,通訊協(xié)議的 幀格式如下起始字符(E8H)lbytes、源主站地址lbyte、目標(biāo)主站地址lbytes、起始字符 (E8H)lbytes、控制域(C) lbytes、長度(L) 2bytes、幀序列域(FIR, FIN, Pseq) lbytes、數(shù)據(jù) 區(qū)(DATA)、結(jié)束字符(16H) lbytes ;其中源主站地址和目標(biāo)主站地址用程序模塊的ID編號 來代替,且最大不能超過127 ;控制域表示功能碼,不同的功能碼對應(yīng)不同的功能,不同的 功能碼對應(yīng)數(shù)據(jù)區(qū)的格式也不一樣。
3.根據(jù)權(quán)利要求2所述的一種并發(fā)巡測批量終端時間的方法,其特征在于對終端在 線狀態(tài)的查詢包括單個終端在線狀態(tài)查詢和多個終端在線狀態(tài)查詢;其中,單個終端在線 狀態(tài)查詢的功能碼定義為0X05/0X15,單個終端在線狀態(tài)查詢的數(shù)據(jù)區(qū)內(nèi)容定義為終端 協(xié)議類型-終端地址-終端在線狀態(tài);多終端在線狀態(tài)查詢的功能碼定義為0X06/0X16,多 終端在線狀態(tài)查詢的數(shù)據(jù)區(qū)內(nèi)容定義為終端協(xié)議類型1-協(xié)議類型1的終端個數(shù)nl-終端地址1-終端1狀態(tài)......終端地址nl-終端nl狀態(tài)-終端協(xié)議類型2-協(xié)議類型2的終端個數(shù)π2-終端地址1-終端1狀態(tài)......終端地址π2-終端η2狀態(tài).......
4.根據(jù)權(quán)利要求1所述的一種并發(fā)巡測批量終端時間的方法,其特征在于在上述步 驟O)中,請求終端時間的前提是終端已經(jīng)登錄上前置機(jī);并為每個終端都分配了一個獨(dú) 立的終端發(fā)送鎖,每次在對終端進(jìn)行操作之前必須先獲取該終端的發(fā)送鎖,否則將不被允 許執(zhí)行終端操作。
5.根據(jù)權(quán)利要求5所述的一種并發(fā)巡測批量終端時間的方法,去特征在于在以下三 種情況下能成功地申請終端發(fā)送鎖Α、每個終端初次獲取發(fā)送鎖;B、發(fā)送鎖被正常的釋放后;C、發(fā)送鎖被連續(xù)持有超過指定時間;。其中A和B兩種情況均屬于正常獲取發(fā)送鎖,C屬于超時強(qiáng)制獲取發(fā)送鎖。
6.根據(jù)權(quán)利要求1所述的一種并發(fā)巡測批量終端時間的方法,其特征在于在上述步 驟(3)中,發(fā)送線程中實現(xiàn)的功能是作為用戶調(diào)用接口對外提供給調(diào)用者,發(fā)送線程是任 何調(diào)用該用戶接口的線程,用戶調(diào)用接口方法定義為publicvoidexeTermiCommCmd(List<TermiCommObj>termicommobjs, CompleteListener<Termi CommObj>1i stener),其中,第一個參數(shù)為待執(zhí)行的終端對象列表集合,第二個參數(shù)為某終端對象執(zhí)行完畢后用于通知用戶的完成事件監(jiān)聽器。
7.根據(jù)權(quán)利要求6所述的一種并發(fā)巡測批量終端時間的方法,其特征在于用戶調(diào)用 接口實現(xiàn)流程如下a、遍歷參與巡測的終端列表,獲取每個終端;b、按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》組織每個終端時間的請求幀;C、將組織的終端時間請求幀通過前置機(jī)轉(zhuǎn)發(fā)給終端,如果發(fā)送失敗則將該終端從參與 巡測終端列表中刪除;d、繼續(xù)執(zhí)行步驟a,直到所有終端的請求都發(fā)送完畢;e、如果上述終端列表不為空,則遍歷終端列表,獲取每個終端,檢查其終端的發(fā)送鎖是 否處于可申請狀態(tài),如果處于可申請狀態(tài),則表明該終端已經(jīng)執(zhí)行完畢,立即通過事件通知 機(jī)制告知用戶,并從終端列表中刪除該終端,繼續(xù)遍歷下一個終端,如果處于不可申請狀態(tài) 則直接遍歷下一個終端;如果本步驟遍歷完一遍之后,所有終端發(fā)送鎖均處于不可獲取狀 態(tài),則調(diào)用Thread, sleep (1000)方法進(jìn)行1秒鐘的休眠;f、判斷終端列表是否為空,如果不為空,則繼續(xù)執(zhí)行步驟e,直到終端列表為空為止。
8.根據(jù)權(quán)利要求7所述的一種并發(fā)巡測批量終端時間的方法,其特征在于上述事件 通知機(jī)制中涉及到的事件接口是CompleteListener,該接口定義了一個方法public void operateCompleted (TerminalCommCmd trmcmd),用戶通過重載該方法來獲取終端命令的執(zhí) 行結(jié)果。
9.根據(jù)權(quán)利要求1所述的一種并發(fā)巡測批量終端時間的方法,其特征在于上述步驟 (4)的具體步驟為終端接到查詢其系統(tǒng)時間的命令后,按照《電力負(fù)荷管理系統(tǒng)數(shù)據(jù)傳輸 規(guī)約》定義的數(shù)據(jù)格式01,組織成長度為6的字節(jié)數(shù)組,并將其作為數(shù)據(jù)區(qū)組織成完整的協(xié) 議幀,并將此幀數(shù)據(jù)通過連接登錄前置機(jī)的GPRS通道上傳給前置機(jī);然后前置機(jī)將數(shù)據(jù)幀 轉(zhuǎn)發(fā)給主站查詢模塊。
10.根據(jù)權(quán)利要求1所述的一種并發(fā)巡測批量終端時間的方法,其特征在于在上述步 驟(7)中,將所有的解析過程放入try塊中執(zhí)行,將釋放終端發(fā)送鎖的過程放入finally代 碼塊中執(zhí)行,這樣就能保證解析過程中無論出現(xiàn)何種異常,終端發(fā)送鎖均能成功的釋放,避 免死鎖問題的發(fā)生。
全文摘要
本發(fā)明公開了一種并發(fā)巡測批量終端時間的方法,所述方法包括以下步驟(1)向前置機(jī)批量查詢待巡測終端的在線狀態(tài),不在線的終端不參與巡測;(2)申請獲取在線終端的發(fā)送鎖,申請鎖失敗的終端不參與巡測;(3)發(fā)送線程循環(huán)組織參與巡測終端的時間請求命令并通過前置機(jī)發(fā)送給對應(yīng)終端;(4)各終端獲取其系統(tǒng)當(dāng)前時間并組織響應(yīng)數(shù)據(jù)通過前置機(jī)轉(zhuǎn)發(fā)給主站查詢模塊;(5)接收線程接收到各終端的響應(yīng)數(shù)據(jù)并通知解析響應(yīng)線程;(6)解析響應(yīng)線程對接收的響應(yīng)數(shù)據(jù)進(jìn)行解析,抽取出終端時間;(7)釋放解析完成終端的發(fā)送鎖。采用本發(fā)明的方法能及時發(fā)現(xiàn)電能量采集系統(tǒng)中所接入終端的系統(tǒng)時間錯誤的問題。
文檔編號H02J13/00GK102044912SQ20101056522
公開日2011年5月4日 申請日期2010年11月25日 優(yōu)先權(quán)日2010年11月25日
發(fā)明者沈祥 申請人:深圳市科陸電子科技股份有限公司