一種事件信息的調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種調(diào)度方法,特別是涉及電力系統(tǒng)中應(yīng)用于通訊管理設(shè)備的一種事件信息的調(diào)度方法。
【背景技術(shù)】
[0002]在現(xiàn)有的通訊管理機(jī)的事件信息調(diào)度設(shè)計(jì)中,大多采用的是事件信息存儲在各自的處理單元中,然后各個處理單元通過相互通訊來傳輸所需的事件信息。這樣的傳統(tǒng)的設(shè)計(jì)結(jié)構(gòu)需要處理單元之間頻繁地進(jìn)行通訊,其降低了通訊過程中事件信息傳輸?shù)臅r效性。
[0003]另外,傳統(tǒng)的事件信息調(diào)度方法中一般采用的是單線程的模式,所有的通信端口都是串行處理,當(dāng)遇到事件信息數(shù)據(jù)風(fēng)暴的時候,很有可能造成程序的異常。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的主要目的在于,克服現(xiàn)有技術(shù)中的不足,提供一種簡單高效、傳輸可靠、時效性高的事件信息的調(diào)度方法,不僅簡化了程序本身,提供運(yùn)行可靠性,避免處理單元之間頻繁地通訊,大幅提高事件信息的讀寫或存取效率;而且充分利用通訊管理設(shè)備資源,提高單位時間的數(shù)據(jù)吞吐量,以及提高抗數(shù)據(jù)風(fēng)暴的能力。
[0005]為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:
一種事件信息的調(diào)度方法,包括以下步驟:
1)創(chuàng)建事件信息的結(jié)構(gòu)體二維數(shù)組、定向端口的二維整型數(shù)組、以及實(shí)際端口號與端口序號的對應(yīng)整型數(shù)組;
1-1)創(chuàng)建一個公用的事件信息的結(jié)構(gòu)體二維數(shù)組、用Event[上行端口數(shù)目][事件信息可存儲個數(shù)設(shè)定值]表示,用于作為上行通訊模塊在事件信息可存儲個數(shù)設(shè)定值范圍內(nèi)存儲下行通訊模塊中采集到的事件信息的存儲媒介,并要求同一時間僅有一個線程對事件信息的結(jié)構(gòu)體二維數(shù)組進(jìn)行讀寫操作;
其中,第一維度的上行端口數(shù)目表示用于上行通訊的端口數(shù)目,第二維度的事件信息可存儲個數(shù)設(shè)定值表示設(shè)定的上行通訊端口可以接受來自下行通訊端口所傳遞來的事件信息個數(shù)的限制值;
1-2)創(chuàng)建一個定向端口的二維整型數(shù)組、用SendToPortArray[下行端口數(shù)目][上行端口數(shù)目]表示,程序初始化時用于存儲從端口定向傳輸配置文件中讀取的配置數(shù)據(jù),當(dāng)端口定向傳輸配置文件的配置數(shù)據(jù)發(fā)生改變時,程序通過讀取改變后的配置數(shù)據(jù)更新定向端口的二維整型數(shù)組;
其中,端口定向傳輸配置文件是指下行通訊中一個端口采集的事件信息需要上行通訊中至少一個端口傳輸出去的配置信息,下行端口數(shù)目表示用于下行通訊的端口數(shù)目;
1-3)創(chuàng)建實(shí)際端口號與上、下行端口序號的對應(yīng)整型數(shù)組,包括兩個對應(yīng)整型數(shù)組、分別為上行通訊對應(yīng)整型數(shù)組和下行通訊對應(yīng)整型數(shù)組,分別用PortMapU [上行端口數(shù)目]和PortMapD[下行端口數(shù)目]表示;其中,實(shí)際端口號包括對上行端口進(jìn)行實(shí)際標(biāo)號的上行實(shí)際端口號和對下行端口進(jìn)行實(shí)際標(biāo)號的下行實(shí)際端口號;
所述PortMapU[上行端口數(shù)目]用于記錄上行端口序號對應(yīng)的上行實(shí)際端口號,構(gòu)成以上行端口序號作為下標(biāo)和上行實(shí)際端口號作為值的數(shù)組元素,即PortMapU[上行端口序號]=上行實(shí)際端口號;
所述PortMapD[下行端口數(shù)目]用于記錄下行端口序號對應(yīng)的下行實(shí)際端口號,構(gòu)成以下行端口序號作為下標(biāo)和下行實(shí)際端口號作為值的數(shù)組元素,即PortMapD[下行端口序號]=下行實(shí)際端口號;
2)下行處理程序調(diào)度事件信息;
2-1)下行處理程序根據(jù)輪詢到的下行實(shí)際端口號通過下行通訊對應(yīng)整型數(shù)組PortMapD [下行端口序號]=下行實(shí)際端口號,查詢出對應(yīng)的下行端口序號;
若查詢不到下行端口序號,表明該下行實(shí)際端口號沒有配置數(shù)據(jù),則跳過該下行實(shí)際端口的處理;
若查詢到下行端口序號,則以該下行端口序號作為定向端口的二維整型數(shù)組SendToPortArray [下行端口數(shù)目][上行端口數(shù)目]中第一維度[下行端口數(shù)目]的值;然后根據(jù)配置數(shù)據(jù)判斷SendToPortArray [下行端口數(shù)目=下行端口序號][上行端口數(shù)目]的數(shù)組值是否為0或1進(jìn)而判斷是否進(jìn)行事件信息傳遞,若數(shù)組值為0、能表示無定向傳遞端口而不需傳遞事件信息,若數(shù)組值為1、則確定需傳遞事件信息并獲取對應(yīng)的上行端口序號;
2-2)將上行端口序號標(biāo)識為事件信息的結(jié)構(gòu)體二維數(shù)組Event[上行端口數(shù)目][事件信息可存儲個數(shù)設(shè)定值]中第一維度[上行端口數(shù)目]的值,下行處理程序?qū)l(fā)生的事件信息添加到Event[上行端口數(shù)目=上行端口序號][事件信息可存儲個數(shù)設(shè)定值]中可存儲的至少一個數(shù)據(jù)存儲位置中;
3)上行處理程序調(diào)度事件信息;
上行處理程序根據(jù)輪詢到的上行實(shí)際端口號通過上行通訊對應(yīng)整型數(shù)組PortMapU[上行端口序號]=上行實(shí)際端口號,查詢出對應(yīng)的上行端口序號;
若查詢不到上行端口序號,表明該上行實(shí)際端口號沒有配置數(shù)據(jù),則跳過該上行實(shí)際端口的處理;
若查詢到上行端口序號,則將上行端口序號作為事件信息的結(jié)構(gòu)體二維數(shù)組Event [上行端口數(shù)目][事件信息可存儲個數(shù)設(shè)定值]中第一維度[上行端口數(shù)目]的值;判斷Event[上行端口數(shù)目=上行端口序號][事件信息可存儲個數(shù)設(shè)定值]中是否存儲有事件信息,若無、則返回重新查詢上行端口序號,若有、則取出事件信息后清空該數(shù)據(jù)存儲位置中事件信息,上行處理程序?qū)⑷〕龅氖录畔?shù)據(jù)根據(jù)規(guī)定的數(shù)據(jù)傳輸格式發(fā)送給遠(yuǎn)方通訊單元。
[0006]本發(fā)明進(jìn)一步設(shè)置為:所述步驟2-3)還包括當(dāng)下行處理程序解析到事件信息時,下行處理程序?qū)⑹录畔⒌慕Y(jié)構(gòu)體二維數(shù)組進(jìn)行加鎖;并在完成事件信息添加后,對事件信息的結(jié)構(gòu)體二維數(shù)組進(jìn)行解鎖;所述步驟3)還包括獲取事件信息之前,上行處理程序?qū)⒋鎯τ惺录畔⒌慕Y(jié)構(gòu)體二維數(shù)組進(jìn)行加鎖;并在完成事件信息取出后,對事件信息的結(jié)構(gòu)體二維數(shù)組進(jìn)行解鎖。
[0007]本發(fā)明進(jìn)一步設(shè)置為:所述事件信息包括變化遙信信息和遙控信息。
[0008]本發(fā)明進(jìn)一步設(shè)置為:所述事件信息的結(jié)構(gòu)體二維數(shù)組的數(shù)組元素包括事件類型、事件內(nèi)容和發(fā)生時間。
[0009]本發(fā)明進(jìn)一步設(shè)置為:所述事件信息的結(jié)構(gòu)體二維數(shù)組采用事件信息的結(jié)構(gòu)體指針數(shù)組,用*EventSrtuctArray [上行端口數(shù)目]表示。
[0010]本發(fā)明進(jìn)一步設(shè)置為:所述事件信息的結(jié)構(gòu)體二維數(shù)組采用事件信息的結(jié)構(gòu)體鏈表數(shù)組。
[0011 ]與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果是:
在進(jìn)程內(nèi)創(chuàng)建全局的結(jié)構(gòu)體二維數(shù)組變量,運(yùn)用的是進(jìn)程內(nèi)資源,可避免各個處理單元之間的數(shù)據(jù)傳輸,而且可簡化程序本身,提高程序運(yùn)行可靠性,更有利于提高各個處理單元的存取事件信息的效率,讀寫的速度均快,能夠?qū)崟r地傳送所需的事件信息。同時,事件信息的結(jié)構(gòu)體二維數(shù)組Event[上行端口數(shù)目][事件信息可存儲個數(shù)設(shè)定值]和定向端口整型數(shù)組SendToPortArray[下行端口數(shù)目][上行端口數(shù)]中的不同維度代表了不同的分組,通過下標(biāo)之間相互關(guān)聯(lián)實(shí)現(xiàn)事件信息的調(diào)度前尋找,所以算法簡單而易于實(shí)現(xiàn),可靠性高,可通過很小的編程代碼量即可實(shí)現(xiàn)事件信息的調(diào)度;其中,將事件信息的讀和寫區(qū)分開來,不僅提高單位時間的數(shù)據(jù)吞吐量,還提高抗數(shù)據(jù)風(fēng)暴的能力。<