張航,王振岳,韓冬,王爽,劉婧孜
(1.許繼集團有限公司,河南 許昌 461000; 2.華北水利水電大學(xué) 電力學(xué)院,鄭州 450045)
?
一種電力規(guī)約轉(zhuǎn)換裝置進程間通信優(yōu)化方法
張航1,王振岳1,韓冬1,王爽2,劉婧孜2
(1.許繼集團有限公司,河南 許昌461000; 2.華北水利水電大學(xué) 電力學(xué)院,鄭州450045)
通過闡述傳統(tǒng)電力規(guī)約轉(zhuǎn)換方式存在的問題,提出了一種基于嵌入式操作系統(tǒng)的電力規(guī)約轉(zhuǎn)換裝置進程間通信優(yōu)化方法,介紹了其消息結(jié)構(gòu)和消息處理邏輯,并分析了優(yōu)化系統(tǒng)的優(yōu)越性。該方法解決了嵌入式操作系統(tǒng)在多進程間通信情況下,常規(guī)共享內(nèi)存消息傳遞機制所存在的無用消息重復(fù)傳遞、消息處理效率不高的問題。
嵌入式;進程;通信;電力規(guī)約轉(zhuǎn)換
變電站自動化系統(tǒng)主要由保護系統(tǒng)、狀態(tài)監(jiān)測系統(tǒng)、“五防”系統(tǒng)、交直流供電系統(tǒng)、智能一次系統(tǒng)等多個子系統(tǒng)組成[1],隨著智能電網(wǎng)的快速建設(shè),接入變電站自動化系統(tǒng)的智能子系統(tǒng)越來越多,各子系統(tǒng)普遍采用不同規(guī)約、不同網(wǎng)絡(luò)通信方式的智能裝置[2]。為了增加不同規(guī)約設(shè)備間的互操作性和兼容性,通常采用嵌入式計算機來實現(xiàn)規(guī)約轉(zhuǎn)換[3]。常規(guī)嵌入式計算機主要利用管道、先入先出隊列(FIFO)、消息隊列、域間套接字及共享內(nèi)存等技術(shù)手段進行內(nèi)部數(shù)據(jù)的交互與傳遞[4],由于共享內(nèi)存具備簡單、靈活、訪問效率高、數(shù)據(jù)量不受限制的特點,在嵌入式計算機進程間通信中得到了廣泛應(yīng)用[5]。
隨著接入子系統(tǒng)的增加,需要規(guī)約轉(zhuǎn)換的智能設(shè)備數(shù)量呈幾何式增長,出現(xiàn)大量多對多復(fù)雜規(guī)約轉(zhuǎn)換的應(yīng)用場景,造成通道進程間消息數(shù)量激增,很多本進程不需要的信息也被傳遞,從而引起互斥同步操作過于頻繁,數(shù)據(jù)交換效率低下,尤其是在20個以上通道進程互斥訪問共享內(nèi)存的情況下,如何使數(shù)據(jù)交換更高效,成為一個亟待解決的課題。
利用共享內(nèi)存的消息機制解決嵌入式計算機作為通信管理機時通信接口間相互轉(zhuǎn)換的問題,一般由1個優(yōu)先進程建立共享內(nèi)存空間,進行消息通信并管理,其余通道訪問、讀取和寫入共享內(nèi)存以實現(xiàn)信息傳遞。為保證信息交互過程的同步性和數(shù)據(jù)的可靠性,通過信號量實現(xiàn)共享內(nèi)存的互斥訪問,防止共享內(nèi)存讀寫失步,造成數(shù)據(jù)錯誤。
這種方案沒有考慮多進程通信在數(shù)據(jù)同步方面的時間損耗。由于每個進程在訪問共享內(nèi)存時都需要經(jīng)歷等待、鎖定、操作、釋放的過程,原本效率較高的共享內(nèi)存消息機制在多通道通信模式下效率大幅下降,在突然出現(xiàn)網(wǎng)絡(luò)風(fēng)暴時,通信處理延時較長,甚至?xí)袛唷R虼?,這種技術(shù)只適用于少量或單一設(shè)備規(guī)約轉(zhuǎn)換的通信場合。
首先由管理進程依據(jù)測點配置文件創(chuàng)建實時內(nèi)存庫,包括參數(shù)共享內(nèi)存和實時數(shù)據(jù)庫共享內(nèi)存,然后管理進程讀取系統(tǒng)通道設(shè)備配置文件,確定系統(tǒng)的設(shè)備運行狀態(tài)、設(shè)備接口數(shù)量、設(shè)備數(shù)量等信息,采用不同特征值建立特征消息結(jié)構(gòu)體,最后啟動若干設(shè)備通信進程,進入規(guī)約轉(zhuǎn)換工作狀態(tài)。實時內(nèi)存庫讀寫操作由管理進程負責(zé)實現(xiàn),每個通信進程都有自己獨立的消息處理隊列。
通道進程只對各自的消息隊列進行讀取操作以獲得自身需要處理的信息,并將需要與其他進程交互的消息寫入管理進程消息隊列;管理進程從管理消息隊列中讀取消息進行實時處理,并將結(jié)果根據(jù)消息特征發(fā)送到不同的通信消息隊列中。消息機制如圖1所示。
圖1 消息機制
2.1消息結(jié)構(gòu)
消息隊列共享內(nèi)存單元由管理進程消息內(nèi)存空間和通道進程消息內(nèi)存空間2個獨立的部分組成,其結(jié)構(gòu)如圖2所示。
管理進程消息內(nèi)存空間用于存儲管理進程需要處理的消息隊列信息,建立獨立的索引身份標志號(ID),內(nèi)存讀、寫指針,采用獨立的信號量控制同步。
通道進程消息內(nèi)存空間用于交互通信進程的消息隊列,所有通信進程采用1個公用的信號量來控制同步,每個通信進程具有1個獨立特征值標志的消息隊列,各消息隊列均采用相同的消息結(jié)構(gòu)體,所述消息結(jié)構(gòu)體包括3個部分:讀寄存器序號,寫寄存器序號,消息隊列空間。
圖2 消息隊列結(jié)構(gòu)
2.2消息處理邏輯
在整個通信轉(zhuǎn)換過程中,管理進程按照FIFO的方式讀取管理消息并檢測未處理管理消息量是否為零:如果是,結(jié)束本次處理過程;否則,作如下判斷。若是管理進程自身操作的消息,根據(jù)要求處理并繼續(xù)讀取剩余消息;若是其他進程的消息,根據(jù)所屬映射,將其寫入通道進程相應(yīng)標識的通道消息隊列,循環(huán)直至完成所有消息的讀取操作。
對于通道進程,標明消息數(shù)量的讀指針、寫指針采用循環(huán)指針,如果所屬通道消息寫指針加1后與讀指針重疊,則將消息讀指針加1,舍棄相應(yīng)消息數(shù)據(jù),同時上送消息溢出異常信號。通道進程消息處理過程與管理進程類似,不同點在于通道進程從各自獨有的消息內(nèi)存中讀取消息,向管理進程消息內(nèi)存中寫入交互消息。
(1)通過建立不同的消息隊列,建立一種單向的消息讀取和寫入模式,每個進程間的通信均采用寫入管理消息隊列,讀取自身特征值標示的消息隊列方式。通過以上步驟,可以解決較多進程下的共享內(nèi)存訪問瓶頸,滿足嵌入式系統(tǒng)在多進程通信情況下對通信效率的要求。
(2)管理進程采用讀取管理消息隊列并寫入相應(yīng)特征值通道進程的方式進行操作。通過此種操作方式,可以有序地進行消息讀取、寫入,減少公共信息處理次數(shù),減少非必要信息寫入、讀取操作次數(shù)。同時在管理進程處理過程中,可以便捷地增加管理消息內(nèi)容,便于進程運行狀態(tài)監(jiān)視和控制。
(3)在消息讀取過程中,采用一次操作讀取多個消息的方式,可以減少對消息隊列的操作次數(shù),減少各進程在消息處理過程中的排隊時間,也可以與異步通信方式結(jié)合,將高速的中央處理器(CPU)和低速通信設(shè)備有序結(jié)合,綜合提高設(shè)備通信效率。
本文提出的基于嵌入式操作系統(tǒng)的電力規(guī)約轉(zhuǎn)換裝置進程間通信優(yōu)化的方法,能夠建立更加有效的消息傳遞機制,降低消息傳遞過程中出現(xiàn)的消息重復(fù)問題,提高消息處理效率,提高設(shè)備整體性能,實現(xiàn)進程間消息處理與通信接口之間的快速聯(lián)系?;诒疚脑O(shè)計思想的規(guī)約轉(zhuǎn)換裝置在220 kV及以下電壓等級常規(guī)變電站已經(jīng)大量應(yīng)用。
后續(xù)改造可以在此基礎(chǔ)上優(yōu)化信號數(shù)量,建立批量分類化的消息訪問機制,以便適應(yīng)更大規(guī)模的信息處理。該技術(shù)同時可以應(yīng)用到其他嵌入式系統(tǒng)環(huán)境,充分發(fā)揮嵌入式系統(tǒng)多進程運行、高效率的協(xié)同特點。
[1]陳杰,杜偉春,王振岳,等.基于嵌入式技術(shù)的工業(yè)通信管理機的開發(fā)及應(yīng)用[J].電力系統(tǒng)保護與控制, 2010, 38(11):113-116.
[2]遠動設(shè)備及系統(tǒng):第5部分 數(shù)據(jù)傳輸規(guī)約: DL/T 719—2000[S].
[3]張艷林,李慧勇,李紹滋. 基于編譯器的通信規(guī)約自動解析研究[J].電力系統(tǒng)保護與控制, 2010, 38(2):101-105.
[4]理查德·史蒂文斯,拉戈. UNIX 環(huán)境高級編程[M].尤晉元,張亞英,戚正偉,譯. 北京:人民郵電出版社,2006.
[5]蔣湘濤, 賀建飚, 李楠. 電力信息采集的通用型通信規(guī)約解析系統(tǒng)研究與設(shè)計[J].電力系統(tǒng)保護與控制, 2012, 40(9): 118-122.
(本文責(zé)編:弋洋)
2016-01-07;
2016-06-11
TM 769
B
1674-1951(2016)06-0058-02
張航(1979—),男,河南許昌人,工程師,從事電力系統(tǒng)自動化方面的工作(E-mail:33809750@qq.com)。
王振岳(1979—),男,河南平頂山人,高級工程師,從事電力系統(tǒng)自動化相關(guān)研究。
韓冬(1976—),男,吉林吉林人,工程師,從事電力系統(tǒng)自動化相關(guān)研究。