張航,王振岳,韓冬,王爽,劉婧孜
(1.許繼集團有限公司,河南 許昌 461000; 2.華北水利水電大學 電力學院,鄭州 450045)
?
一種電力規約轉換裝置進程間通信優化方法
張航1,王振岳1,韓冬1,王爽2,劉婧孜2
(1.許繼集團有限公司,河南 許昌461000; 2.華北水利水電大學 電力學院,鄭州450045)
通過闡述傳統電力規約轉換方式存在的問題,提出了一種基于嵌入式操作系統的電力規約轉換裝置進程間通信優化方法,介紹了其消息結構和消息處理邏輯,并分析了優化系統的優越性。該方法解決了嵌入式操作系統在多進程間通信情況下,常規共享內存消息傳遞機制所存在的無用消息重復傳遞、消息處理效率不高的問題。
嵌入式;進程;通信;電力規約轉換
變電站自動化系統主要由保護系統、狀態監測系統、“五防”系統、交直流供電系統、智能一次系統等多個子系統組成[1],隨著智能電網的快速建設,接入變電站自動化系統的智能子系統越來越多,各子系統普遍采用不同規約、不同網絡通信方式的智能裝置[2]。為了增加不同規約設備間的互操作性和兼容性,通常采用嵌入式計算機來實現規約轉換[3]。常規嵌入式計算機主要利用管道、先入先出隊列(FIFO)、消息隊列、域間套接字及共享內存等技術手段進行內部數據的交互與傳遞[4],由于共享內存具備簡單、靈活、訪問效率高、數據量不受限制的特點,在嵌入式計算機進程間通信中得到了廣泛應用[5]。
隨著接入子系統的增加,需要規約轉換的智能設備數量呈幾何式增長,出現大量多對多復雜規約轉換的應用場景,造成通道進程間消息數量激增,很多本進程不需要的信息也被傳遞,從而引起互斥同步操作過于頻繁,數據交換效率低下,尤其是在20個以上通道進程互斥訪問共享內存的情況下,如何使數據交換更高效,成為一個亟待解決的課題。
利用共享內存的消息機制解決嵌入式計算機作為通信管理機時通信接口間相互轉換的問題,一般由1個優先進程建立共享內存空間,進行消息通信并管理,其余通道訪問、讀取和寫入共享內存以實現信息傳遞。為保證信息交互過程的同步性和數據的可靠性,通過信號量實現共享內存的互斥訪問,防止共享內存讀寫失步,造成數據錯誤。
這種方案沒有考慮多進程通信在數據同步方面的時間損耗。由于每個進程在訪問共享內存時都需要經歷等待、鎖定、操作、釋放的過程,原本效率較高的共享內存消息機制在多通道通信模式下效率大幅下降,在突然出現網絡風暴時,通信處理延時較長,甚至會中斷。因此,這種技術只適用于少量或單一設備規約轉換的通信場合。
首先由管理進程依據測點配置文件創建實時內存庫,包括參數共享內存和實時數據庫共享內存,然后管理進程讀取系統通道設備配置文件,確定系統的設備運行狀態、設備接口數量、設備數量等信息,采用不同特征值建立特征消息結構體,最后啟動若干設備通信進程,進入規約轉換工作狀態。實時內存庫讀寫操作由管理進程負責實現,每個通信進程都有自己獨立的消息處理隊列。
通道進程只對各自的消息隊列進行讀取操作以獲得自身需要處理的信息,并將需要與其他進程交互的消息寫入管理進程消息隊列;管理進程從管理消息隊列中讀取消息進行實時處理,并將結果根據消息特征發送到不同的通信消息隊列中。消息機制如圖1所示。

圖1 消息機制
2.1消息結構
消息隊列共享內存單元由管理進程消息內存空間和通道進程消息內存空間2個獨立的部分組成,其結構如圖2所示。
管理進程消息內存空間用于存儲管理進程需要處理的消息隊列信息,建立獨立的索引身份標志號(ID),內存讀、寫指針,采用獨立的信號量控制同步。
通道進程消息內存空間用于交互通信進程的消息隊列,所有通信進程采用1個公用的信號量來控制同步,每個通信進程具有1個獨立特征值標志的消息隊列,各消息隊列均采用相同的消息結構體,所述消息結構體包括3個部分:讀寄存器序號,寫寄存器序號,消息隊列空間。

圖2 消息隊列結構
2.2消息處理邏輯
在整個通信轉換過程中,管理進程按照FIFO的方式讀取管理消息并檢測未處理管理消息量是否為零:如果是,結束本次處理過程;否則,作如下判斷。若是管理進程自身操作的消息,根據要求處理并繼續讀取剩余消息;若是其他進程的消息,根據所屬映射,將其寫入通道進程相應標識的通道消息隊列,循環直至完成所有消息的讀取操作。
對于通道進程,標明消息數量的讀指針、寫指針采用循環指針,如果所屬通道消息寫指針加1后與讀指針重疊,則將消息讀指針加1,舍棄相應消息數據,同時上送消息溢出異常信號。通道進程消息處理過程與管理進程類似,不同點在于通道進程從各自獨有的消息內存中讀取消息,向管理進程消息內存中寫入交互消息。
(1)通過建立不同的消息隊列,建立一種單向的消息讀取和寫入模式,每個進程間的通信均采用寫入管理消息隊列,讀取自身特征值標示的消息隊列方式。通過以上步驟,可以解決較多進程下的共享內存訪問瓶頸,滿足嵌入式系統在多進程通信情況下對通信效率的要求。
(2)管理進程采用讀取管理消息隊列并寫入相應特征值通道進程的方式進行操作。通過此種操作方式,可以有序地進行消息讀取、寫入,減少公共信息處理次數,減少非必要信息寫入、讀取操作次數。同時在管理進程處理過程中,可以便捷地增加管理消息內容,便于進程運行狀態監視和控制。
(3)在消息讀取過程中,采用一次操作讀取多個消息的方式,可以減少對消息隊列的操作次數,減少各進程在消息處理過程中的排隊時間,也可以與異步通信方式結合,將高速的中央處理器(CPU)和低速通信設備有序結合,綜合提高設備通信效率。
本文提出的基于嵌入式操作系統的電力規約轉換裝置進程間通信優化的方法,能夠建立更加有效的消息傳遞機制,降低消息傳遞過程中出現的消息重復問題,提高消息處理效率,提高設備整體性能,實現進程間消息處理與通信接口之間的快速聯系。基于本文設計思想的規約轉換裝置在220 kV及以下電壓等級常規變電站已經大量應用。
后續改造可以在此基礎上優化信號數量,建立批量分類化的消息訪問機制,以便適應更大規模的信息處理。該技術同時可以應用到其他嵌入式系統環境,充分發揮嵌入式系統多進程運行、高效率的協同特點。
[1]陳杰,杜偉春,王振岳,等.基于嵌入式技術的工業通信管理機的開發及應用[J].電力系統保護與控制, 2010, 38(11):113-116.
[2]遠動設備及系統:第5部分 數據傳輸規約: DL/T 719—2000[S].
[3]張艷林,李慧勇,李紹滋. 基于編譯器的通信規約自動解析研究[J].電力系統保護與控制, 2010, 38(2):101-105.
[4]理查德·史蒂文斯,拉戈. UNIX 環境高級編程[M].尤晉元,張亞英,戚正偉,譯. 北京:人民郵電出版社,2006.
[5]蔣湘濤, 賀建飚, 李楠. 電力信息采集的通用型通信規約解析系統研究與設計[J].電力系統保護與控制, 2012, 40(9): 118-122.
(本文責編:弋洋)
2016-01-07;
2016-06-11
TM 769
B
1674-1951(2016)06-0058-02
張航(1979—),男,河南許昌人,工程師,從事電力系統自動化方面的工作(E-mail:33809750@qq.com)。
王振岳(1979—),男,河南平頂山人,高級工程師,從事電力系統自動化相關研究。
韓冬(1976—),男,吉林吉林人,工程師,從事電力系統自動化相關研究。