吳堯輝, 崔啟明, 吳昊珍
(1.河南理工大學 電氣工程與自動化學院,河南 焦作 454000; 2.河南理工大學 煤礦井下智能供電系統實驗室,河南 焦作 454000; 3.鄭州工商學院,河南 鄭州 451400)
隨著礦山電網智能化的發展,供電系統對綜合保護開關設備的智能化要求也不斷提高,現階段使用的綜合保護器主要采用8位或16位單片機,僅有數字顯示界面、機械按鍵交互方式,ARM公司32位微處理器以模塊化設計集成了多種工業實用型外設,形成了高集成度的芯片級片上系統(silicon on chip,SOC)。STM32系列產品是典型的SOC芯片,功能豐富的片上外設簡化了硬件電路的結構,增強型F103系列芯片72 MHz的時鐘頻率提升了處理速度,使保護器在完成保護任務的同時加入圖形用戶界面(graphical user interface,GUI)圖形交互任務。
交互任務是利用STemWin庫開發方式,構建保護器實用美觀圖形交互界面,使保護器更加符合現代供電保護設備智能化的發展需求。交互任務的加入加強了對保護系統實時性和CPU資源合理利用的要求,同時要實現保護系統的多種保護功能,需要根據功能對軟件系統進行多務規劃,使用μC/OS-III微實時操作系統能夠針對多任務進行運行管理,并提高軟件系統實時性[1,2]。
硬件核心采用STM32F103ZET6型號的SOC主控芯片,外部硬件設備包括:液晶觸摸顯示屏、調理電路、串口通信模塊、外部存儲設備、保護器供電電源模塊等。系統硬件結構如圖1所示。

圖1 系統硬件結構
軟件部分采用多層次結構,分為用戶層、操作系統層、微控制器軟件接口層(CMSIS層)[3],用戶層為C語言的應用程序,操作系統層對用戶層多個應用任務進行任務運行管理,操作系統層通過CMSIS接口層對片上外設進行調用,實現對外部硬件層的控制,軟件層次結構如圖2所示。

圖2 軟件層次結構
保護器的功能包括基本功能和交互功能。各功能的任務關系結構如圖3所示。

圖3 GUI交互與綜合保護功能關系結構
一方面要在供電系統正常運行時實時采集顯示數據,并在故障發生時進行判斷、可靠動作;另一方面要對采集到的數據和故障數據進行記錄和通訊傳輸,以便分析數據排除故障。因此保護器應具備:保護判斷功能、數據采集處理功能、數據存儲傳輸功能、時間日期功能等?;竟δ芡ㄟ^3.5版本STM32庫開發方式,使用芯片上ADC、FSMC、GPIO等外設實現。
2.3.1 交互界面觸摸顯示設計
交互功能的實現要完成兩項任務:1)把保護器的工作狀態實時的顯示給用戶;2)用戶通過觸摸屏實現保護器多級窗口顯示和參數設置。硬件部分采用3.2寸液晶顯示屏(liquid crystal display,LCD)電阻觸摸屏實現,有顯示和觸摸兩部分組成:通過ILI9341芯片,使用FSMC的NOR FLASH模式模擬8080接口實現液晶屏的顯示控制;使用TSC2046芯片讀取觸摸屏電壓差變化來實現觸摸功能的控制[4]。
交互界面主界面顯示如圖4所示,其中包括:指針儀表和設備信息顯示部分,分別顯示電網系統電壓、電流、開關狀態、絕緣電阻、故障警報等主要實時參數及實時時鐘;以及二級界面創建按鈕,分別實現數據顯示、參數設置、歷史時間和系統設置等功能的二級界面創建。

圖4 主界面顯示
交互界面設計通過STemWin圖形函數庫實現,這種開發方式用于設計提供高效且獨立于處理器和顯示控制器的圖形用戶界面,使開發使用難度大大降低[5~7]。STemWin庫為使用者提供了功能全面的控件函數,可以通過相關函數的使用,達到控件創建、刪除和參數設置的目的。交互系統使用到了WINDOW,FRAMEWIN,BUTTON,TEXT等控件,如主界面中按鈕使用BUTTON控件創建,按鈕按下彈出的二級界面使用FRAMEWIN控件創建等。
2.3.2 實時顯示功能設計
根據采集處理得到的數據進行實時顯示刷新,主要通過三種方式實現。
1)使用STemWin窗口管理器(WM)的重繪功能,通過重繪指定區域達到實時刷新目的。這種方式的重繪由于系統發送重繪消息的時間間隔,而導致屏幕刷新時存在明顯閃爍,所以只適合靜態圖像、數據的變更。
2)通過STemWin創建存儲設備功能來實現界面平滑重繪。要實現二級界面中的數據顯示功能,由于顯示數據實時刷新,直接使用重繪消息會出現刷新閃屏,在創建窗口前,窗口管理器將重繪任務儲存至存儲設備中,再由存儲設備復制到顯示器從而實現平滑刷新顯示,適用于文字、圖像刷新。
3)通過STemWin以分段存儲為基礎自動設備對象功能實現分層實時刷新。主界面中的儀表顯示指針需要根據采集到的數值實時變化,若對整個表盤進行實時刷新,受到創建存儲器大小的限制,界面實時刷新無法流暢進行,所以要對靜態表盤和動態指針進行分層顯示。靜態表盤顯示使用位圖顯示,將圖片轉換為C語言代碼調用顯示在屏幕上;動態指針使用圖形函數于表盤圖片上層顯示。自動設備對象函數的使用能夠減少CPU處理時間,使顯示刷新更加穩定、流暢。
使用操作系統對保護器各功能任務進行管理,使CPU資源得到高效利用。加入操作系統后的工程文件目錄如圖5所示。app.c文件中包含操作系統任務的創建、應用任務創建和管理的程序代碼,系統任務是操作系統運行和創建應用任務的基礎,應用任務實現保護器的各個功能;Bsp.c文件通過庫函數調用外設實現保護器基本功能。

圖5 工程文件目錄
μC/OS-III是一種實時操作系統,通過對應用任務運行管理能夠提高軟件系統運行穩定性,具有可剪裁、可固化、可剝奪型的實時內核,任務管理數目不受限制等特點,可實現資源管理、任務間同步、任務間通信等功能[8~10]。
μC/OS-III實時操作系統可以通過對軟件任務設置堆棧、優先級等參數,對應用任務進行管理。保護系統要實現的功能較多,在軟件設計時需要根據任務功能和任務實時性要求劃分不同任務,使各個功能獨立實現且協調運行。根據功能和實時性要求可劃分為數據采集處理、保護判斷動作、數據接收發送等11個應用任務。
μ/cos-III應用工程的軟件部分由配置文件、應用代碼、庫文件、CPU相關文件、操作系統相關文件及板級支持包組成。移植時需要根據所使用CPU類型、編寫或修改μ/cos-III內核文件和CPU文件,再提供板級支持包(board support package,BSP)系列文件來連接μ/cos-III與系統定時器及中斷控制器。μ/cos-III體系結構如圖6所示。對于μC/OS-III實時操作系統的運用主要根據μC/OS-III提供的應用程序編程接口(application program interface,API)參考手冊,使用MDK編譯器進行程序編譯調試,通過μC/OS-III函數對軟件任務進行管理。

圖6 μ/cos-III體系結構
操作系統在運行管理過程中,各任務根據功能需要交替獲得CPU的使用權限,任務間切換通過μC/OS-III提供的信號量、事件標志組和時間片輪轉調度等功能實現。通過對各個任務的調度管理,使保護系統使用有限的CPU資源,實時可靠地實現保護任務和交互顯示。
應用任務運行管理要在操作系統中根據任務實時性需要配置任務優先級;按任務使用嵌套函數所使用的局部變量的數目確定堆棧大小,任務內容、優先級及堆棧設置如表1所示。

表1 多任務優先級堆棧配置
μC/OS-III具有μC/probe運行檢測功能,通過合理配置可對應用程序進行實時檢測。檢測功能配置分為在MDK編譯器中對C程序進行配置和在μC/probe軟件中進行配置兩部分。在MDK中要將相關函數定義為使能,并且需要在創建的系統任務中調用操作系統的檢測功能函數。在μC/probe軟件中,配置界面如圖7所示。

圖7 μC/probe配置界面
需要選擇芯片、驅動類型和編譯接口接口,檢測實驗配置為Cortex-M3內核驅動,并添加μC/OS-III內核顯示界面,之后添加MDK編譯程序完成后生成的調試信息文件(.axf文件),點擊運行即可開始程序檢測。
使用μC/probe進行軟件系統運行檢測實驗,檢測界面如圖8所示。其中,主界面顯示運行時總CPU使用率在40 %左右,通過交互創建二級界面時CPU使用瞬時增至50 %后恢復到40 %或更低。整體系統運行CPU使用在合理范圍內,使保護系統可靠性得到保障。
檢測界面中還能看到任務運行狀態,由于優先級設置高低不同,在數據采集和保護判斷任務運行時,交互任務處于延時狀態等待將CPU權限交出,在保護任務執行完后又獲取處理后數據對交互界面進行刷新。保護系統能夠通過軟件程序實現定時任務切換與實時任務調度,體現了保護系統的實時特性。

圖8 μC/probe軟件檢測界面
GUI交互型的智能綜合保護器,能更好滿足電網供電智能化的需求,基于操作系統的保護器功能設計能更可靠解決實時性需求,操作系統應用更易于系統軟件升級優化。交互功能的合理任務規劃,進一步降低CPU使用率是系統優化的目標。