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