廣州南方電力集團科技發展有限公司 王炬峰
基于嵌入式實時操作系統的配電自動化監控裝置應用
廣州南方電力集團科技發展有限公司 王炬峰
目前國家正在大力推廣配網側自動化改造,進一步提高配電網的可靠性。改造的其中一環就包括升級加裝智能化的配電自動化監控裝置。本文介紹基于實時操作系統Linux+Xenomai雙內核方式實現軟件功能的配電自動化監控裝置,提供移植過程,為開發配電自動化監控設備提供一種方便、通用、高性價比的解決方案。
配電自動化;實時;嵌入式; 實時操作系統
隨著國民經濟的飛速發展和人民生活水平的提高,對供電質量和可靠性也提出了更高的要求。在我國,國家電網和南方電網這兩大國家電力公司都對配電網投入大量的資金和進行大規模的配電網改造,其目的就是為了進一步提高配電網的可靠性,要達成這個目標還必須全面實現高水平的配網自動化。配網自動化就是利用現代電子技術、通訊技術、計算機及網絡技術,實現配電系統正常運行及事故情況下的監測、保護、控制和配電管理的現代化。配電自動化其中一個重要一環就是配電遠方終端,利用現代電子和通信技術,并基于操作系統進行軟件開發的配電遠方終端本文稱為配電自動化監控裝置。它能實現對配電網數據采集、四遙(遙信、遙測、遙控、遙調)、狀態監視、報警、事件順序記錄、統計計算等功能。本文介紹基于實時操作系統Linux+Xenomai雙內核方式實現軟件功能的配電自動化監控裝置,它能兼顧實時性和基于Linux開發的便利性,為開發配電自動化監控設備提供一種方便、通用、高性價比的解決方案。
對于自動化領域,實時性是不可忽略的問題,實時性是一個模糊的概念,每個對響應時間敏感的應用都有自己相應的實時性的概念。業內通常認為實時性要求分以下幾種:
(1)軟實時:
這種級別的實時性要求能滿足大部分目標用戶交互的需求,這種實時性要求應用使用一般的操作系統就能支持,例如數字音樂的播放等應用。
(2)生命安全級別實時
這種級別要求系統能100%滿足在應用規定的時間內做出響應,如果不能滿足響應要求,就會有人身安全問題或出現設備損壞情況。
(3)100%硬實時
這種級別要求系統能100%滿足在應用規定的時間內做出響應。比如工業過程控制,如果不能滿足要求會出現廢品情況。
(4)95%硬實時
這種級別要求系統能至少95%滿足在應用規定的時間內做出響應。比如數據收集系統,如果要求不能滿足會導致采樣的部分數據是不合格的,但收集系統可以接受這種情況。
配電自動化監控裝置主要功能為實現對配電網數據采集、四遙(遙信、遙測、遙控、遙調)、狀態監視、報警、事件順序記錄、統計計算等,這些功能根據實時性要求可以劃分為實時性任務和非實時性任務。這種方案采用專用的嵌入式應用程序,不依賴操作系統系統函數庫編寫,沒有操作系統的內部任務調度。因此實時性指標相當好。但這個架構的缺點也很明顯,就是使用專用的嵌入式程序,與硬件耦合程度非常高,一旦硬件架構改變,移植的工作量很大。其次就是沒有依托操作系統,其多任務能力先天不足,而且沒有操作系統的依托,很多協議(如TCP/IP)需要自行編寫或移植。
為了能夠進一步提高通用性,降低相關硬件的耦合度,嵌入式應用領域推出實時操作系統的概念。目前應用的實時操作系統有很多,其中一種就是本文所推薦的Linux+Xenomai雙內核架構的實時操作系統。
Xenomai這個項目開展于2001年,它開始的目的是能夠仿真傳統的實時操作系統,作為Linux的一個外掛補丁,仿真傳統的實時操作系統如VxWorks、pSOS+和VRTXsa的API,將實時API與POSIX API及原生的API集成在一起。但隨后幾年它就以獨立的Linux實時框架的形式存在。Adeos/I-pipe是Xenomai的核心組件,它作用是通過自己中斷處理流程傳遞各種高優先級的事件給內核,從而實現短而且是可預測的響應時延。Xenomai的實時應用需要按照RTDM的標準重新寫相應的驅動程序,但除了實時應用外的其他應用均可以使用Linux自帶的驅動程序。實時應用除了可以使用Xenomai API 也可以使用POSIX 接口,這樣用戶就能很方便將自己的應用程序及以前的RTAI接口編寫的程序進行合并開發,加快開發的過程,并提高可靠性。
采用Linux+Xenomai雙內核架構的方案如圖1雙內核嵌入式應用架構所示,方案采用單一硬件平臺,所有的應用均運行在該平臺上,將移植好的Linux+Xenomai作為該平臺的操作系統。 Xenomai實時內核為開發實時應用提供了豐富的功能,主要包括實時線程調度與管理、用戶空間實時任務支持、線程同步服務、時鐘服務、中斷服務、動態內存申請和實時對象注冊服務等。Linux內核則提供除實時應用外的其它功能,如線程調度與管理,用戶空間任務等。在配電自動化監控裝置中Xenomai實時內核負責模擬數據采集,開關狀態采集及事件順序記錄,Linux內核負責用戶交互應用、主站通信規約處理、數據處理和存儲,告警數據形成和上送。兩個內核之間通過文件、共享內存等方式實現數據共享。

圖1 雙內核嵌入式應用架構
本文的硬件平臺MCU采用ATMEL公司的AT91SAM9260為主MCU,其平臺框架如圖2硬件平臺框架。
Xenomai分兩種配置,分別是Cobalt和Mercury。Cobalt是作為實時內核與Linux內核共同工作,Cobalt內核比Linux內核具有更高優先級,負責處理如終端處理、實時線程調度等工作。Xenomai通過Cobalt內核提供所有的實時操作系統API包括內嵌POSIX 1003.1c服務的libcobalt。Mercury配置依賴PREEMPT-RT實時補丁的Linux內核,通過這個修補過的Linux內核提供實時服務。但這種配置由于Linux內核的缺陷,會帶來比較大的響應延時。

圖2 硬件平臺框架
本文以Cobalt內核為例,Xenomai 的Cobalt配置是以補丁的形式提供,使用內置的腳本執行打補丁操作scripts/prepare-kernel.sh --linux=$linux-srctree --ipipe=$ipipe-patch --arch=arm($linux-srctree為內核代碼路徑 $ipipe-patch為ipipe補丁路徑)。補丁操作提示成功后,可進入Linux內核目錄進行內核配置:

圖3 Cobalt內核配置
配置好編譯就能生成內核映像uImage。
要實現實時功能必須使用Xenomai的Cobalt庫,需要自行編譯。
configure CFLAGS="-march=armv4t" LDFLAGS="-march=armv5" --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi- --withcore=cobalt
將生成的dev和usr文件夾放入文件系統相應目錄。應用程序應當包含生成的頭文件按照Xenomai編譯方法編譯使用。
首先需要確認Xenomai cobalt內核是否正常啟動,可以通過系統啟動信息,看到“[Xenomai] Cobalt”等信息 即可確認Xenomai cobalt內核正常啟動。本文測試是針對任務響應做的測試方案。任務響應分三個階段:
外界產生一個事件,事件通過中斷通知CPU處理。
中斷句柄確認處理,然后喚醒用戶空間的任務,準備處理這個事件。

圖4 用戶任務模式延時分布圖
用戶空間的任務處理事件并反饋給外界。
這過程中能確保一定能完成任務的最長響應時間稱作延時(latency)。本文測試方案就是為了測試這延時。延時在三個階段都可能產生,如中斷本身的延時,中斷句柄處理延時,任務調度本身及任務調度產生的延時。
任務響應測試需要在一定負荷的情況下進行測試,才能反映正常運行的情況下的實時性指標。為了模擬,專門編寫了負荷測試腳本load.sh。這個腳本包含有四個內容: nc 利用網絡接口內部傳輸文件,模擬網絡負荷并產生大量中斷;hackbench模擬線程調度負荷;ls和dd模擬整體負荷。
方案分三種測試模式,分別是用戶任務模式、內核任務模式及定時器中斷模式。以下為三種情況下分別測試2小時的測試結果。
用戶任務模式
在用戶任務模式下,平均延時為112.184nS,最少延時為60.384nS,最大為144.756nS,采樣延時分布如圖4所示:
內核任務模式:
在內核任務模式下,平均延時為61.291nS,最少延時為18.443nS,最大為94.262nS,采樣延時分布如圖5所示:

圖5 內核任務模式延時分布圖
定時器中斷模式:
在內核任務模式下,平均延時為347.114nS,最少延時為6.551nS,最大為73.508nS,采樣延時分布如圖6所示:

圖6 定時器中斷模式延時分布圖
通過實時性指標驗證,在用戶任務模式下最大延時為144.756nS,比配電自動化監測終端要求的事件記錄分辨率2mS的指標小得多,如果有其他對實時性要求更嚴苛的情況還可以采用內核任務模式或定時器中斷來完成,采用Linux+Xenomai雙內核方案對硬件要求不高,即可以利用Linux平臺的成熟協議和編程方法,也可以繼承之前實時操作系統的實時應用程序,并擁有不錯的實時性能,方案的性價比很高。隨著智能化設備的網絡化,配電自動化設備采用Linux+Xenomai雙內核方案將會有很大的優勢,具有很好的推廣前景。
[1]郁發新.常用嵌入式實時操作系統比較分析[J].計算機應用,2006(04).
[2]張威編寫.Linux網絡編程教程[M].北京希望電子出版社,2002.
[3]羅蕾.嵌入式實時操作系統及應用開發[M].北京航空航天大學出版社,2011,1.
[4]拉姆耶.嵌入式實時操作系統的多線程計算 基于Thread和XARM[M].北京航空航天大學出版社,2005.
[5]王洋.VvWorks嵌入式實時操作系統設備驅動與BSP開發設計[M].北京航空航天大學出版社.
[6]科波特(Corbet,J.) Linux設備驅動程序[M].中國電力出版社,2006.