專利名稱:一種智能電子設(shè)備的實(shí)時(shí)事件管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種管理需掉電保存的實(shí)時(shí)事件的方法,適用于智能電子設(shè)備對來自 外部或自產(chǎn)生的實(shí)時(shí)事件的管理。
背景技術(shù):
隨著國家電網(wǎng)建設(shè)的發(fā)展,變電站自動化系統(tǒng)在各種電壓等級的變電站得到大規(guī) 模應(yīng)用。變電站自動化系統(tǒng)由多種具有不同功能的智能電子設(shè)備組成,如各種保護(hù)裝置、測 控裝置、通信裝置、安全穩(wěn)定裝置、合并單元、智能操作箱和數(shù)字錄波器等。在變電站運(yùn)行過 程中,會發(fā)生大量的多種類型的實(shí)時(shí)事件,如斷路器、隔離開關(guān)的變化信息,保護(hù)裝置輸出 的跳閘信息、值班人員對設(shè)備操作的信息、以及智能電子設(shè)備運(yùn)行過程中產(chǎn)生的自診斷信 息。管理這些實(shí)時(shí)事件是智能電子設(shè)備的基本功能之一,智能電子設(shè)備需對這些信息進(jìn)行 監(jiān)視、存儲和讀取,并能夠通過某種標(biāo)準(zhǔn)協(xié)議(如IEC61850)傳輸給與之互聯(lián)的其它多個(gè)設(shè) 備。智能電子設(shè)備要按照實(shí)時(shí)事件的發(fā)生時(shí)間依次存儲事件,并且在系統(tǒng)資源可用的 情況下,盡最大可能的存儲重要的優(yōu)先級高的事件。智能電子設(shè)備要實(shí)時(shí)、快速地按時(shí)間先 后次序?qū)ν鈧鬏斒录?,在突然失電后恢?fù)正常運(yùn)行的情況下,設(shè)備應(yīng)能夠繼續(xù)傳輸未傳輸 過的事件,不能多傳輸,也不能少傳輸。傳統(tǒng)的解決方案是使用SRAM(靜態(tài)內(nèi)存,一種具有靜止存取功能的內(nèi)存),作為存 儲介質(zhì),使用環(huán)形隊(duì)列的管理方式來管理事件,根據(jù)隊(duì)列頭尾索引下標(biāo)序號來判斷未傳輸 的實(shí)時(shí)事件。但是,環(huán)形隊(duì)列是按照先進(jìn)先出的原則存儲和讀取數(shù)據(jù)的,存在以下問題(1)在多任務(wù)環(huán)境下,應(yīng)用任務(wù)存儲實(shí)時(shí)事件的時(shí)刻并不嚴(yán)格以實(shí)時(shí)事件發(fā)生時(shí) 間的先后為序,在這種情況下,存儲事件時(shí)需要調(diào)整原來隊(duì)列中事件的存儲位置,會牽涉到 大量的內(nèi)存拷貝操作,嚴(yán)重影響實(shí)時(shí)處理效率。在大量事件同時(shí)產(chǎn)生的極端情況下,會嚴(yán)重 影響智能電子設(shè)備對外的響應(yīng)速度。(2)在全站雪崩實(shí)驗(yàn)情況下,會產(chǎn)生大量實(shí)時(shí)事件,此時(shí)裝置事件存儲區(qū)一定會存 滿。此時(shí)若發(fā)生新的實(shí)時(shí)事件,按照環(huán)形隊(duì)列的操作邏輯,只能按照數(shù)組下標(biāo)次序先覆蓋最 先發(fā)生的事件,而不能根據(jù)事件的重要性次序先覆蓋存儲不重要且時(shí)間較舊的事件。如此, 會造成重要事件的丟失,影響其他設(shè)備對現(xiàn)場運(yùn)行情況的分析和處理。另外一種解決方案使用鏈表來管理實(shí)時(shí)事件,但是,在對實(shí)時(shí)事件存儲和讀取時(shí) 會涉及到對鏈表中指針的操作。如果在操作鏈表指針時(shí),設(shè)備突然失電,鏈表的結(jié)構(gòu)必然會 遭到破壞。在設(shè)備恢復(fù)運(yùn)行時(shí),對鏈表的重構(gòu)比較復(fù)雜,甚至不能完全正確的重構(gòu)鏈表,造 成智能電子設(shè)備的初始化失敗,不能正常運(yùn)行。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出了一種通用的實(shí)時(shí)事件的管理方法,以解決多任務(wù)環(huán)境下 無法嚴(yán)格控制時(shí)序(1)或重負(fù)荷情況下無法完全保留重要事件(2)等問題,從而保證智能
3電子設(shè)備在過程監(jiān)視、事件存儲、事件讀取和記錄傳輸?shù)葘?shí)時(shí)事件處理的穩(wěn)定性,提高智能 電子設(shè)備的實(shí)時(shí)處理性能以及對外部的響應(yīng)速度,并提高設(shè)備運(yùn)行的穩(wěn)定性與可靠性。為了實(shí)現(xiàn)上述目的和功能,本發(fā)明采取的技術(shù)方案的具體步驟是(1)把實(shí)時(shí)事件的數(shù)據(jù)實(shí)體和邏輯關(guān)系分開存儲和處理。數(shù)據(jù)實(shí)體存儲在SRAM, 使用數(shù)組的數(shù)據(jù)結(jié)構(gòu)來管理;在內(nèi)存中對應(yīng)于SRAM中的每個(gè)事件數(shù)據(jù)的存儲空間建立1個(gè) 存儲索引節(jié)點(diǎn),使用雙向鏈表來管理所有索引節(jié)點(diǎn),索引節(jié)點(diǎn)在鏈表中的位置次序動態(tài)反 映實(shí)時(shí)事件之間的先后邏輯關(guān)系。使用該方法解決以前實(shí)現(xiàn)方案中單獨(dú)使用循環(huán)隊(duì)列或鏈 表來管理的缺陷。(2)使用鏈?zhǔn)匠氐臋C(jī)制來管理空閑索引節(jié)點(diǎn)。在初始化事件管理器時(shí),根據(jù)管理所 需的內(nèi)存大小,一次性從系統(tǒng)分配大塊內(nèi)存后不再釋放,并建立鏈?zhǔn)絻?nèi)存池,以后根據(jù)運(yùn)行 需要從該鏈?zhǔn)匠刂袆討B(tài)地分配和回收索引節(jié)點(diǎn),減少系統(tǒng)內(nèi)存碎片的增加,提高系統(tǒng)的穩(wěn) 定性。(3)為了實(shí)現(xiàn)在多個(gè)客戶端(需獲取實(shí)時(shí)事件的每個(gè)外部智能電子設(shè)備)之間共 享同一個(gè)事件數(shù)據(jù)實(shí)體,采用一個(gè)寫指針和多個(gè)讀指針的雙向鏈表結(jié)構(gòu)。同時(shí)設(shè)置事件數(shù) 據(jù)引用計(jì)數(shù),每個(gè)客戶端讀取事件后,引用計(jì)數(shù)器即減1,當(dāng)引用計(jì)數(shù)值為0時(shí),回收該節(jié)點(diǎn) 到空閑索引節(jié)點(diǎn)鏈池。為了掉電后能重建鏈表,這個(gè)結(jié)構(gòu)需在SRAM和內(nèi)存中各保留一份, 根據(jù)內(nèi)存中的讀寫指針值來判斷是否有實(shí)時(shí)事件需對外傳輸。這樣,可以減少SRAM的開 銷,節(jié)省系統(tǒng)的硬件成本。(4)使用事件發(fā)生時(shí)間和事件優(yōu)先級(兩個(gè)關(guān)鍵字來處理實(shí)時(shí)事件之間的邏輯關(guān) 系。優(yōu)先級反映了實(shí)時(shí)事件的重要性。存儲事件時(shí),按發(fā)生時(shí)間從老到新的次序連入索引 節(jié)點(diǎn)的雙鏈表。并設(shè)置最近發(fā)生的低優(yōu)先級的事件的最少保存數(shù)目,在SRAM空間滿時(shí),根 據(jù)此值來選擇被覆蓋存儲的事件,此值由應(yīng)用程序指定,提高管理程序的靈活性。(5)根據(jù)存儲在SRAM事件數(shù)據(jù)體中的產(chǎn)生時(shí)間關(guān)鍵字,在初始化時(shí)完整并正確地 重建整個(gè)雙鏈表。在實(shí)時(shí)事件傳輸過程中,如果裝置失電并重新上電后,根據(jù)SRAM中事件 數(shù)據(jù)體的產(chǎn)生時(shí)間先后關(guān)系重建內(nèi)存中事件索引節(jié)點(diǎn)的鏈表,并根據(jù)存儲在SRAM讀寫指 針中的數(shù)組下標(biāo)值,恢復(fù)內(nèi)存中索引節(jié)點(diǎn)的鏈表一尾多頭的指針值,如此,可以滿足實(shí)時(shí)事 件管理的正確性。(6)建立與操作系統(tǒng)接口的過程列表,如分配和釋放內(nèi)存的系統(tǒng)接口,使用該列表 訪問操作系統(tǒng)接口,封裝操作系統(tǒng)的多樣性。根據(jù)應(yīng)用需求,為外部應(yīng)用程序提供初始化、 存儲以及讀取等實(shí)時(shí)事件管理例程接口,屏蔽實(shí)現(xiàn)細(xì)節(jié),使該方法具備良好的可擴(kuò)展性和 通用性。每個(gè)數(shù)據(jù)體的定義分為管理用數(shù)據(jù)頭和數(shù)據(jù)信息實(shí)體部分,并且管理數(shù)據(jù)頭在前, 便于抽象管理各種類型的實(shí)時(shí)事件。本發(fā)明的效果是本方法能夠提供對變電站內(nèi)各種類型的實(shí)時(shí)事件進(jìn)行管理,而且能夠適用于多種 實(shí)時(shí)操作系統(tǒng)上,簡化各種智能電子設(shè)備對實(shí)時(shí)事件的管理復(fù)雜度,而能更側(cè)重于對實(shí)時(shí) 事件的分析、計(jì)算與處理功能。本方法提出了一種將事件數(shù)據(jù)的內(nèi)容和相互之間的邏輯關(guān)系分開處理的方法,使 用雙向鏈表管理事件之間的邏輯關(guān)系,降低了處理過程的復(fù)雜性,提高了實(shí)時(shí)事件的處理 性能。提出了根據(jù)數(shù)據(jù)的某個(gè)關(guān)鍵字正確的重建鏈表的方法,保證了實(shí)時(shí)事件管理的正確
4性。另外,實(shí)時(shí)系統(tǒng)的內(nèi)存管理考慮到實(shí)時(shí)性的要求,一般采用高效的管理算法,如伙 伴系統(tǒng)和邊界標(biāo)識法等,并且采用較簡單的內(nèi)存回收和釋放算法,回收內(nèi)存時(shí),只是把相鄰 的空閑內(nèi)存塊合并成一個(gè)大塊,不存在專門的碎片回收算法。因此,如果頻繁申請和釋放內(nèi) 存,會導(dǎo)致系統(tǒng)內(nèi)存碎片的增加,影響實(shí)時(shí)系統(tǒng)的性能??紤]到本方案使用的數(shù)據(jù)體是等大 小的,本方法中使用了一個(gè)高效的鏈?zhǔn)匠氐墓芾矸椒▉砉芾砜臻e內(nèi)存區(qū),申請和釋放都是 從自管理的鏈?zhǔn)匠刂羞M(jìn)行,無需動態(tài)、頻繁地調(diào)用系統(tǒng)內(nèi)存管理接口函數(shù),而且申請和釋放 算法的時(shí)間復(fù)雜度為0(1),提高了系統(tǒng)的實(shí)時(shí)性能。
圖1是本方法中各種數(shù)據(jù)存儲結(jié)構(gòu)和對應(yīng)關(guān)系圖。圖2是本方法初始化實(shí)時(shí)事件管理器的流程框圖。圖3是本方法存儲實(shí)時(shí)事件的流程框圖。圖4是本方法讀取實(shí)時(shí)事件的流程框圖(包含事件刪除過程)。
具體實(shí)施例方式本方法的具體實(shí)施方案如下(1)定義存儲實(shí)時(shí)事件數(shù)據(jù)實(shí)體、索引節(jié)點(diǎn)以及各種管理數(shù)據(jù)的結(jié)構(gòu),各種結(jié)構(gòu)之 間的邏輯關(guān)系見圖1。在SRAM中定義存儲實(shí)時(shí)事件實(shí)體的數(shù)組,每個(gè)事件體定義一個(gè)公用信息頭,包括 的內(nèi)容有事件發(fā)生時(shí)刻、反映事件重要性的優(yōu)先級、引用計(jì)數(shù)器和有效性標(biāo)志位。在內(nèi)存 中定義存儲雙向鏈表前后節(jié)點(diǎn)位置的鏈表節(jié)點(diǎn),實(shí)時(shí)事件索引節(jié)點(diǎn)含有一個(gè)鏈表節(jié)點(diǎn)和一 個(gè)索引變量,該索引變量的值為SRAM區(qū)中事件數(shù)組的下標(biāo)序號。定義一個(gè)空閑索引節(jié)點(diǎn)的鏈?zhǔn)絻?nèi)存池,使用索引節(jié)點(diǎn)中鏈表節(jié)點(diǎn)的后向指針組成 單鏈表。在該鏈表中設(shè)置一頭指針,用于指示當(dāng)前的空閑索引節(jié)點(diǎn)。定義一個(gè)實(shí)時(shí)事件索引節(jié)點(diǎn)鏈表,使用索引節(jié)點(diǎn)中的鏈表節(jié)點(diǎn)組成雙向鏈表,所 有索引節(jié)點(diǎn)在該鏈表中按實(shí)時(shí)事件的發(fā)生時(shí)刻從舊到新排序。定義鏈表的頭指針與寫指 針,頭指針指向鏈表中的第一節(jié)點(diǎn),寫指針指向鏈表中的最后一個(gè)節(jié)點(diǎn)。并且為每個(gè)訪問客 戶端設(shè)置一個(gè)讀指針,指向當(dāng)前需向外部設(shè)備傳輸?shù)膶?shí)時(shí)事件索引節(jié)點(diǎn)。在SRAM中也需定 義與之相對應(yīng)的讀寫指針,讀寫指針在SRAM中保存的是事件數(shù)組的下標(biāo)序號,而在內(nèi)存中 保存的是索引節(jié)點(diǎn)的地址。(2)初始化事件管理器,建立內(nèi)存中空閑索引節(jié)點(diǎn)的鏈池,并重構(gòu)內(nèi)存中實(shí)時(shí)事件 索引節(jié)點(diǎn)的鏈表,具體流程見圖2。首先,根據(jù)用戶指定的客戶端數(shù)目和事件數(shù)目計(jì)算所需RAM(內(nèi)存)大小,一次性 從系統(tǒng)申請分配一塊大內(nèi)存塊。在內(nèi)存塊中預(yù)先留出兩個(gè)鏈表所使用的讀、寫指針的空間, 在剩余空間上建立空閑索引節(jié)點(diǎn)內(nèi)存鏈池。然后,判斷SRAM區(qū)是否是第一次被使用,如果是第一次被使用,需初始化SRAM事 件數(shù)據(jù)區(qū),按數(shù)組順序依次把所有事件數(shù)據(jù)體中的有效性標(biāo)志設(shè)置為無效,并設(shè)置SRAM中 的讀寫下標(biāo)序號為無效值。還需初始化內(nèi)存中的事件索引節(jié)點(diǎn)鏈表,設(shè)置該鏈表的所有讀寫指針為空指針。如果SRAM事件數(shù)據(jù)區(qū)被使用過,即按數(shù)組次序依次讀取事件數(shù)據(jù)體,根 據(jù)事件體的有效標(biāo)志判斷該事件是否有效,如果是有效數(shù)據(jù),取出空閑索引節(jié)點(diǎn)的鏈?zhǔn)絻?nèi) 存池的頭指針?biāo)傅墓?jié)點(diǎn),把頭指針指向下該節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),即從內(nèi)存鏈池中分配出 一個(gè)空閑索引節(jié)點(diǎn),把該索引節(jié)點(diǎn)中的索引值設(shè)置為該事件體的數(shù)組下標(biāo)序號。解下來,依 次遍歷事件索引節(jié)點(diǎn)鏈表,把該事件的發(fā)生時(shí)刻和鏈表中的事件發(fā)生時(shí)刻做比較,按發(fā)生 時(shí)間的先后次序插入到鏈表中的合適位置。此時(shí),如果SRAM中保存的讀、寫下標(biāo)序號等于 該事件的數(shù)組下標(biāo)序號,則把事件索引節(jié)點(diǎn)鏈表的讀、寫指針以及客戶端讀指針指向該索 引節(jié)點(diǎn),至此,已完成重構(gòu)內(nèi)存中的事件索引節(jié)點(diǎn)鏈表。最后,按順序遍歷空閑索引節(jié)點(diǎn)鏈表,把索引節(jié)點(diǎn)中的索引值設(shè)置為未保存過的 事件數(shù)組的下標(biāo)序號值。(3)當(dāng)智能電子設(shè)備接收到外部或自產(chǎn)生的實(shí)時(shí)事件時(shí),存儲該實(shí)時(shí)事件,具體流 程見圖3。首先,根據(jù)空閑索引節(jié)點(diǎn)內(nèi)存鏈池的頭指針值來判斷是否還有空閑索引節(jié)點(diǎn),如 果有,取出頭指針?biāo)赶虻目臻e索引節(jié)點(diǎn)。如果沒有,需要從事件索引節(jié)點(diǎn)鏈表中回收一個(gè) 合適的索引節(jié)點(diǎn)。回收索引節(jié)點(diǎn)時(shí),如果當(dāng)前低優(yōu)先級事件數(shù)目大于用戶設(shè)定的需保存的 最小數(shù)目,從事件索引節(jié)點(diǎn)鏈表的頭指針指向的索引節(jié)點(diǎn)開始,正向依次遍歷鏈表中的節(jié) 點(diǎn),找到優(yōu)先級最低的事件的節(jié)點(diǎn),即為優(yōu)先級最低的舊事件的索引節(jié)點(diǎn);否則取出事件索 引節(jié)點(diǎn)鏈表的頭指針指向的節(jié)點(diǎn),即為最先發(fā)生的事件的索引節(jié)點(diǎn),從該鏈表中刪除該索 引節(jié)點(diǎn)。然后,根據(jù)上述步驟得到的索引節(jié)點(diǎn)中的索引值,用此值作為數(shù)組下標(biāo)訪問SRAM 區(qū)中的實(shí)時(shí)事件區(qū),填寫實(shí)時(shí)事件數(shù)據(jù)體,并設(shè)置該事件的引用計(jì)數(shù)器值為最大的讀客戶 端數(shù)目,根據(jù)該事件的優(yōu)先級來修改當(dāng)前低優(yōu)先級事件數(shù)目。接下來,從事件索引節(jié)點(diǎn)鏈表 的頭指針指向的索引節(jié)點(diǎn)開始,正向依次遍歷鏈表中的節(jié)點(diǎn),找到第一個(gè)發(fā)生時(shí)刻大于該 事件的發(fā)生時(shí)刻的索引節(jié)點(diǎn),把該節(jié)點(diǎn)插入到上述找到的節(jié)點(diǎn)之前。插入后,如果該索引節(jié) 點(diǎn)為鏈表的最后一個(gè)節(jié)點(diǎn),需把事件索引節(jié)點(diǎn)鏈表的寫指針指向該索引節(jié)點(diǎn),并把SRAM區(qū) 的寫下標(biāo)序號設(shè)置為該索引節(jié)點(diǎn)的索引值。(4)當(dāng)智能電子設(shè)備向外部其他設(shè)備實(shí)時(shí)傳輸事件時(shí),讀取實(shí)時(shí)事件,并當(dāng)外部所 有客戶端都獲取完一個(gè)實(shí)時(shí)事件后,刪除該事件,具體流程見圖4。首先,判斷實(shí)時(shí)事件索引節(jié)點(diǎn)鏈表中該讀取客戶的讀指針是否等于寫指針,如果 兩者相等,則說明無新發(fā)生的需對外傳輸?shù)氖录H绻坏?,則說明有未傳輸過的新事件。然后,取出鏈表中該客戶端的讀指針?biāo)赶虻乃饕?jié)點(diǎn)中的索引值,作為數(shù)組下 標(biāo)訪問SRAM區(qū)中的實(shí)時(shí)事件區(qū),把事件區(qū)的數(shù)據(jù)拷貝到用戶緩沖區(qū),接下來,設(shè)置該客戶 端的讀指針為該索引節(jié)點(diǎn)后向指針指向的下一索引節(jié)點(diǎn)。相應(yīng)的,把SRAM中的寫下標(biāo)序號 設(shè)置為下一索引節(jié)點(diǎn)的中的索引值。最后,把事件的引用計(jì)數(shù)器值減1,如果該事件的引用計(jì)數(shù)值為0,從事件索引節(jié) 點(diǎn)鏈表中刪除該索引節(jié)點(diǎn)。在刪除節(jié)點(diǎn)時(shí),如果鏈表的寫指針或客戶端的讀指針指向該節(jié) 點(diǎn),需修改讀、寫指針指向本節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),同時(shí)修改存儲于SRAM中的寫下標(biāo)序號和 客戶端讀下標(biāo)序號。接下來,回收該索引節(jié)點(diǎn)到空閑索引節(jié)點(diǎn)內(nèi)存鏈池,把被回收節(jié)點(diǎn)的后 向指針的值寫為空閑索引節(jié)點(diǎn)內(nèi)存鏈池的頭指針的值,而頭指針的值寫為該索引節(jié)點(diǎn)的地址,即可完成回收索引節(jié)點(diǎn)的工作。 上述實(shí)施例不以任何形式限制本發(fā)明,凡采取等同替換或等效變換的方式所獲得 的技術(shù)方案,均落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
一種智能電子設(shè)備的實(shí)時(shí)事件管理方法,其特征在于,包括以下步驟1)把實(shí)時(shí)事件的數(shù)據(jù)實(shí)體和邏輯關(guān)系分開存儲和處理;具體為,數(shù)據(jù)實(shí)體存儲在SRAM,使用數(shù)組的數(shù)據(jù)結(jié)構(gòu)來管理;在內(nèi)存中對應(yīng)于SRAM中的每個(gè)事件數(shù)據(jù)的存儲空間建立1個(gè)存儲索引節(jié)點(diǎn),使用雙向鏈表來管理所有索引節(jié)點(diǎn),索引節(jié)點(diǎn)在鏈表中的位置次序動態(tài)反映實(shí)時(shí)事件之間的先后邏輯關(guān)系;2)使用鏈?zhǔn)匠氐臋C(jī)制來管理空閑索引節(jié)點(diǎn);具體為,在初始化事件管理器時(shí),根據(jù)管理所需的內(nèi)存大小,一次性從系統(tǒng)分配內(nèi)存后不再釋放,并建立鏈?zhǔn)絻?nèi)存池,根據(jù)運(yùn)行需要從該鏈?zhǔn)絻?nèi)存池中動態(tài)地分配和回收索引節(jié)點(diǎn),減少系統(tǒng)內(nèi)存碎片的增加,提高系統(tǒng)的穩(wěn)定性。3)采用一個(gè)寫指針和多個(gè)讀指針的雙向鏈表結(jié)構(gòu);具體為,同時(shí)設(shè)置事件數(shù)據(jù)引用計(jì)數(shù),每個(gè)客戶端讀取事件后,引用計(jì)數(shù)器即減1,當(dāng)引用計(jì)數(shù)值為0時(shí),回收該節(jié)點(diǎn)到空閑索引節(jié)點(diǎn)鏈池。為了掉電后能重建鏈表,雙向鏈表結(jié)構(gòu)需在SRAM和內(nèi)存中各保留一份,根據(jù)內(nèi)存中的讀寫指針值來判斷是否有實(shí)時(shí)事件需對外傳輸;4)使用事件發(fā)生時(shí)間和事件優(yōu)先級兩個(gè)關(guān)鍵字來處理實(shí)時(shí)事件之間的邏輯關(guān)系;具體為,存儲事件時(shí),按發(fā)生時(shí)間從老到新的次序連入索引節(jié)點(diǎn)的雙鏈表,并設(shè)置最近發(fā)生的低優(yōu)先級的事件的最少保存數(shù)目,在SRAM空間滿時(shí),根據(jù)最少保存數(shù)目來選擇被覆蓋存儲的事件,最少保存數(shù)目由應(yīng)用程序指定;5)根據(jù)存儲在SRAM事件數(shù)據(jù)體中的產(chǎn)生時(shí)間關(guān)鍵字,在初始化時(shí)完整并正確地重建整個(gè)雙鏈表;具體為,在實(shí)時(shí)事件傳輸過程中,如果裝置失電并重新上電后,根據(jù)SRAM中事件數(shù)據(jù)體的產(chǎn)生時(shí)間先后關(guān)系重建內(nèi)存中事件索引節(jié)點(diǎn)的鏈表,并根據(jù)存儲在SRAM讀寫指針中的數(shù)組下標(biāo)值,恢復(fù)內(nèi)存中索引節(jié)點(diǎn)的鏈表一尾多頭的指針值;6)建立與操作系統(tǒng)接口的過程列表和事件管理例程接口;具體為,使用過程列表使用操作系統(tǒng)提供的服務(wù),并根據(jù)應(yīng)用需求,為外部應(yīng)用程序提供初始化、存儲以及讀取實(shí)時(shí)事件管理例程接口,屏蔽實(shí)現(xiàn)細(xì)節(jié)。
2.根據(jù)權(quán)利要求1所述的一種智能電子設(shè)備的實(shí)時(shí)事件管理方法,其特征在于,所述 步驟5)中的數(shù)據(jù)體的定義分為管理用數(shù)據(jù)頭和數(shù)據(jù)信息實(shí)體部分,并且管理數(shù)據(jù)頭在前。
全文摘要
一種智能電子設(shè)備的實(shí)時(shí)事件管理方法,包括以下步驟1)把實(shí)時(shí)事件的數(shù)據(jù)實(shí)體和邏輯關(guān)系分開存儲和處理;2)使用鏈?zhǔn)匠氐臋C(jī)制來管理空閑索引節(jié)點(diǎn);3)采用一個(gè)寫指針和多個(gè)讀指針的雙向鏈表結(jié)構(gòu);4)使用事件發(fā)生時(shí)間和事件優(yōu)先級兩個(gè)關(guān)鍵字來處理實(shí)時(shí)事件之間的邏輯關(guān)系;5)根據(jù)存儲在SRAM事件數(shù)據(jù)體中的產(chǎn)生時(shí)間關(guān)鍵字,在初始化時(shí)完整并正確地重建整個(gè)雙鏈表;6)建立與操作系統(tǒng)接口的過程列表和事件管理例程接口。本發(fā)明有益效果在于能夠提供對變電站內(nèi)各種類型的實(shí)時(shí)事件進(jìn)行管理,而且能夠適用于多種實(shí)時(shí)操作系統(tǒng)上,簡化各種智能電子設(shè)備對實(shí)時(shí)事件的管理復(fù)雜度,而能更側(cè)重于對實(shí)時(shí)事件的分析、計(jì)算與處理功能。
文檔編號G06F17/30GK101944119SQ20101028877
公開日2011年1月12日 申請日期2010年9月21日 優(yōu)先權(quán)日2010年9月21日
發(fā)明者吳海, 張宏波, 張少波, 滕春濤, 田小鋒, 羅華煜 申請人:國網(wǎng)電力科學(xué)研究院