吳堯輝, 馮 沖, 吳昊珍
(1.河南理工大學(xué) 電氣工程與自動(dòng)化學(xué)院,河南 焦作 454000;2.河南理工大學(xué) 許繼電氣股份有限公司煤礦井下智能供電系統(tǒng)實(shí)驗(yàn)室,河南 焦作 454000;3.鄭州工商學(xué)院,河南 鄭州 451400)
電網(wǎng)智能化發(fā)展是電網(wǎng)技術(shù)發(fā)展的必然趨勢(shì),供電保護(hù)器面臨著功能復(fù)雜化、美觀圖形交互界面、實(shí)時(shí)性好等要求。小型前后臺(tái)系統(tǒng)在應(yīng)用任務(wù)越來(lái)越多的情況下,后臺(tái)的應(yīng)用任務(wù)將變得異常復(fù)雜,前臺(tái)的中斷服務(wù)程序也并不滿足供電綜保對(duì)硬實(shí)時(shí)特性的要求;傳統(tǒng)的數(shù)字交互界面不能直觀和美觀地將數(shù)據(jù)呈現(xiàn)給工作人員??蓜儕Z型μC/OS-Ⅲ多任務(wù)操作系統(tǒng)以較好的實(shí)時(shí)性被廣泛的應(yīng)用于醫(yī)療技術(shù)、消費(fèi)電子、工業(yè)控制等領(lǐng)域;STemWin圖形庫(kù)文件的API函數(shù)可以方便、快捷地構(gòu)建美觀的人機(jī)交互界面[1,2]。
本文采用基于ARM Cortex-M3內(nèi)核的STM32F103為主控芯片,3.2in(1in=2.54 cm)的LCD觸摸屏用于人機(jī)交互界面,設(shè)計(jì)了供電綜保系統(tǒng)。μC/OS-Ⅲ對(duì)供電綜保多任務(wù)統(tǒng)一管理,嵌入式圖形化emWin庫(kù)開(kāi)發(fā)為L(zhǎng)CD觸摸屏提供圖形人機(jī)交互界面,配有μC/Probe軟件對(duì)系統(tǒng)各項(xiàng)數(shù)據(jù)進(jìn)行監(jiān)測(cè),有利于系統(tǒng)的改進(jìn)和升級(jí)。
供電綜保硬件由單片機(jī)(micro-controller unit,MCU)和外圍硬件電路構(gòu)成,如圖1所示。MCU選擇高性能、低功耗、主頻為72 MHz的Cortex-M3作為主芯片滿足供電保護(hù)器系統(tǒng)的外設(shè)需求[1],外圍硬件電路分成六個(gè)模塊,電源模塊包括MCU可識(shí)別的直流3.3 V電壓、電氣信號(hào)調(diào)理電路所需12 V電壓、人機(jī)交互模塊所需的5 V電壓和用于漏電檢測(cè)判斷所附加的外部24 V電壓;開(kāi)關(guān)量輸入與繼電輸出模塊用于檢測(cè)開(kāi)關(guān)狀態(tài)和執(zhí)行開(kāi)關(guān)動(dòng)作;電網(wǎng)參數(shù)獲取模塊主要功能是將參數(shù)獲取后經(jīng)信號(hào)調(diào)理電路把電氣信號(hào)轉(zhuǎn)換成中央處理器(central processing unit,CPU)進(jìn)行A/D轉(zhuǎn)換能識(shí)別的0~3.3 V單極性信號(hào);通信模塊包括保護(hù)器與上位機(jī)之間的通信和各保護(hù)器間的通信兩種;數(shù)據(jù)存儲(chǔ)模塊增加了SD卡存儲(chǔ)方式;ILI9341觸摸液晶屏用于人機(jī)交互模塊。
圖1 保護(hù)器硬件框圖
在使用μC/OS-Ⅲ操作系統(tǒng)的前提下,任務(wù)具有“并發(fā)性”的基本特征,根據(jù)圖1的系統(tǒng)硬件結(jié)構(gòu)框圖對(duì)任務(wù)劃分為數(shù)據(jù)采集處理任務(wù)、保護(hù)任務(wù)、顯示任務(wù)、觸摸任務(wù)、通信任務(wù)等12個(gè)應(yīng)用任務(wù),實(shí)現(xiàn)功能和內(nèi)容如表1所示。
表1 應(yīng)用任務(wù)劃分及內(nèi)容
數(shù)據(jù)采集處理綜合考慮實(shí)時(shí)性與精度的平衡采用雙模數(shù)轉(zhuǎn)換器(analog to digital converter,ADC)采樣提高采樣率[3],處理算法包括快速傅里葉變換(fast Fourier transform,FFT)算法、均方根和平均值算法[4,5]。ADC采樣、SD卡存讀及CAN通信都采用直接存儲(chǔ)器訪問(wèn)(direct memony access,DMA)方式。
保護(hù)器系統(tǒng)總體軟件以MDK開(kāi)發(fā)環(huán)境,采用分層思想,如STM32庫(kù)函數(shù)、操作系統(tǒng)、emWin圖形庫(kù)等,分層結(jié)構(gòu)便于系統(tǒng)設(shè)計(jì)與升級(jí)。軟件層包括用戶所需的應(yīng)用程序?qū)印⒉僮飨到y(tǒng)層和CMSIS標(biāo)準(zhǔn)層[6],如圖2所示。應(yīng)用程序受操作系統(tǒng)的管理,操作系統(tǒng)層包括μC/OS-Ⅲ操作系統(tǒng)、emWin圖形庫(kù)、FatFs文件系統(tǒng),CMSIS標(biāo)準(zhǔn)層是ARM公司與各芯片廠商建立,位于操作系統(tǒng)層與硬件層之間,提供外設(shè)接口和操作系統(tǒng)軟件接口,便于軟件的移植。
圖2 系統(tǒng)軟件層次
人機(jī)交互界面采用3.2寸液晶電阻觸摸屏,分辨率為320×240。由于普通I/O口控制效率太低,通過(guò)配置時(shí)序寄存器和控制寄存器由FSMC的NORFLASH模式8080接口控制ILI9341液晶屏;通過(guò)XPT2046芯片讀取觸摸位置的ADC電壓值轉(zhuǎn)化成坐標(biāo)來(lái)實(shí)現(xiàn)觸摸功能。
emWin圖形庫(kù)位于硬件層與用戶應(yīng)用層之間,運(yùn)行在硬件層之上并向應(yīng)用層提供GUI相應(yīng)API函數(shù)接口,起到承上啟下作用。分層的概念使應(yīng)用程序不依賴硬件平臺(tái),更加便于移植和優(yōu)化。從表2的emWin軟件架構(gòu)可以看出,包括控件層、窗口管理器、GUI核心層、存儲(chǔ)設(shè)備。
表2 emWin軟件架構(gòu)
保護(hù)器的人機(jī)交互界面包括主界面和4個(gè)二級(jí)界面,主頁(yè)面以表盤的形式動(dòng)態(tài)實(shí)時(shí)顯示電壓、電流、絕緣阻抗等,4個(gè)二級(jí)界面用于查看和設(shè)置詳細(xì)電網(wǎng)系統(tǒng)的各項(xiàng)參數(shù),包括數(shù)據(jù)實(shí)時(shí)顯示、保護(hù)參數(shù)設(shè)置、故障信息查詢和系統(tǒng)時(shí)間顯示。保護(hù)器主界面如圖3所示。
圖3 保護(hù)器主界面
Segger公司為emWin開(kāi)發(fā)的小工具對(duì)于交互界面的前期設(shè)計(jì)極其方便,如GUIBuilder對(duì)界面進(jìn)行初設(shè)計(jì)后可生成C代碼文件,BmpCvtST.exe軟件將繪制好的背景圖PNG格式的圖片轉(zhuǎn)換成C語(yǔ)言代碼的位圖顯示,FontCvtDemo軟件生成字庫(kù)或字模等[7]。
保護(hù)器對(duì)交互界面數(shù)值更新與顯示有實(shí)時(shí)性和美觀性要求。主界面的創(chuàng)建使用位圖顯示的2D靜態(tài)表盤和動(dòng)態(tài)指針,使用靜態(tài)圖像表盤+動(dòng)態(tài)指針的分層處理可使主界面刷新變的流暢,由于位圖圖片存儲(chǔ)所需空間較大,所以選擇位圖、指針及顯示數(shù)值的分段存儲(chǔ)方式。電網(wǎng)數(shù)據(jù)實(shí)時(shí)顯示若選擇直接使用窗口重繪功能將會(huì)導(dǎo)致屏幕不斷閃爍,因此,二級(jí)界面中的數(shù)據(jù)顯示窗口選擇存儲(chǔ)設(shè)備進(jìn)行渲染并通過(guò)回調(diào)機(jī)制實(shí)時(shí)顯示電網(wǎng)參數(shù)。中文字庫(kù)若選擇直接讀取外置字庫(kù)的方式,CPU利用率變大且速度較慢,因此使用外部FLAH直接調(diào)用字庫(kù)的方法。
相較于以前版本,μC/OS-Ⅲ功能和性能都有所提高,已經(jīng)是第三代內(nèi)核系統(tǒng)。它是一個(gè)可裁剪、可固化、基于優(yōu)先級(jí)可剝奪型的多任務(wù)內(nèi)核。由于源代碼開(kāi)放使其有更多的學(xué)習(xí)資料,依靠穩(wěn)定性和實(shí)時(shí)性好等特點(diǎn)也廣泛應(yīng)用于工業(yè)控制、信息處理等領(lǐng)域。下載官方相應(yīng)內(nèi)核評(píng)估板的μC/OS-Ⅲ源代碼文件,大大降低移植的復(fù)雜度。操作系統(tǒng)文件結(jié)構(gòu)[8]如圖4所示,在工程中添加操作系統(tǒng)文件組,移植工作主要包括(5)和(3),(5)主要針對(duì)特定CPU架構(gòu)進(jìn)行修改,(3)是保護(hù)器功能所需外設(shè)的交互代碼。文件組(8)根據(jù)對(duì)應(yīng)用任務(wù)運(yùn)行時(shí)間、運(yùn)行頻率以及實(shí)時(shí)性的不同要求,對(duì)應(yīng)用任務(wù)進(jìn)行的合理配置,os_cfg.h文件體現(xiàn)了μC/OS-Ⅲ操作系統(tǒng)是一個(gè)可裁剪內(nèi)核,可根據(jù)設(shè)計(jì)需要將#define OS_CFG_APP_X_EN置1或0(X表示配置項(xiàng))。
圖4 操作系統(tǒng)文件結(jié)構(gòu)
根據(jù)對(duì)應(yīng)用任務(wù)運(yùn)行時(shí)間、運(yùn)行頻率以及實(shí)時(shí)性的不同要求,對(duì)應(yīng)用任務(wù)進(jìn)行的合理配置,從而保證系統(tǒng)的實(shí)時(shí)性和運(yùn)行穩(wěn)定性。應(yīng)用任務(wù)配置如表3所示,數(shù)據(jù)采集任務(wù)使用ADC以DMA方式進(jìn)行采集,因此CPU執(zhí)行采集任務(wù)的時(shí)間很短,小于1 ms,使用20 ms延時(shí)函數(shù)控制采樣周期,在采集延時(shí)過(guò)程中,CPU執(zhí)行其他任務(wù)。在20 ms的延時(shí)時(shí)間段內(nèi),數(shù)據(jù)處理任務(wù)處理上一次采樣的原始數(shù)據(jù),設(shè)計(jì)要求小于5 ms,四個(gè)保護(hù)任務(wù)運(yùn)行時(shí)間要小于5 ms,綜上理論上保護(hù)類任務(wù)的總延時(shí)不會(huì)超過(guò)30 ms,滿足各種保護(hù)任務(wù)的實(shí)時(shí)性要求。
對(duì)于應(yīng)用任務(wù),優(yōu)先級(jí)的配置也更加靈活卻也極為重要,優(yōu)先級(jí)需要綜合考慮任務(wù)重要性、任務(wù)運(yùn)行時(shí)間限制、任務(wù)運(yùn)行頻度和留有適當(dāng)?shù)拈g隔。任務(wù)??臻g的分配原則是先給每個(gè)任務(wù)足夠大的??臻g后充分利用μC/Probe的任務(wù)監(jiān)視功能,得到每個(gè)任務(wù)棧的實(shí)際使用情況,所得值再乘以1.5~1.8安全系數(shù)用于中斷嵌套。
在μC/OS-Ⅲ中任務(wù)間通過(guò)全局變量和消息隊(duì)列進(jìn)行數(shù)據(jù)通信,任務(wù)消息隊(duì)列在任務(wù)創(chuàng)建后就存在于該任務(wù)TCB中,消息傳遞速度較快,適合通信量較少的任務(wù)間。對(duì)于數(shù)據(jù)量較多的則選擇全局變量的方式。如表4所示,保護(hù)器系統(tǒng)數(shù)據(jù)資源表。
表4 保護(hù)器系統(tǒng)數(shù)據(jù)資源表
共享資源有數(shù)據(jù)采集的原始數(shù)據(jù)、數(shù)據(jù)處理任務(wù)的電氣信號(hào)、故障信息結(jié)構(gòu)體、時(shí)間日期結(jié)構(gòu)體。對(duì)于共享資源的處理有關(guān)中斷、信號(hào)量、互斥信號(hào)量等,若采用關(guān)中斷方式保護(hù)共享資源則不利于保護(hù)器系統(tǒng)實(shí)時(shí)性,也增加中斷延遲時(shí)間;若采用信號(hào)量方式,會(huì)導(dǎo)致任務(wù)優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,μC/OS-Ⅲ操作系統(tǒng)是基于任務(wù)優(yōu)先級(jí)剝奪CPU使用權(quán),低優(yōu)先級(jí)任務(wù)先于高優(yōu)先級(jí)任務(wù)執(zhí)行顯然不合理;因此本設(shè)計(jì)使用互斥信號(hào)量方式對(duì)共享資源進(jìn)行保護(hù)。
數(shù)據(jù)采集到數(shù)據(jù)處理再到保護(hù)類任務(wù)由信號(hào)量和事件標(biāo)志組實(shí)現(xiàn)了嚴(yán)格的雙向同步,因此不會(huì)產(chǎn)生對(duì)共享資源的破壞,不需要互斥信號(hào)量,加快了保護(hù)類任務(wù)的執(zhí)行。對(duì)電氣信號(hào)、故障信息、時(shí)間信息使用互斥信號(hào)量進(jìn)行共享資源管理。
μC/OS-Ⅲ操作系統(tǒng)提供了多種同步機(jī)制的內(nèi)核對(duì)象,如事件標(biāo)志組、信號(hào)量、消息隊(duì)列等[9]。如圖5所示任務(wù)間同步運(yùn)行,包括數(shù)據(jù)采集處理與保護(hù)類任務(wù)的同步、保護(hù)類任務(wù)故障時(shí)與其他任務(wù)的同步、中斷服務(wù)管理任務(wù)與通信及時(shí)間日期的同步。
圖5 任務(wù)間同步運(yùn)行與通信
保護(hù)類任務(wù)以高優(yōu)先級(jí)先運(yùn)行,在運(yùn)行完畢后將標(biāo)志位置1,等待事件標(biāo)志組全部置1后數(shù)據(jù)采集任務(wù)執(zhí)行,ADC采集電氣信號(hào)后由數(shù)據(jù)處理任務(wù)對(duì)原始數(shù)據(jù)處理并生成保護(hù)類任務(wù)所需的各項(xiàng)參數(shù),并發(fā)布廣播信號(hào),使保護(hù)類任務(wù)處于就緒態(tài)。
當(dāng)有故障產(chǎn)生,保護(hù)類任務(wù)執(zhí)行并在故障解除后以任務(wù)消息隊(duì)列的形式進(jìn)行單向同步,SD卡存儲(chǔ)、GUI顯示、通信任務(wù)的上位機(jī)顯示以阻塞的方式等待任務(wù)消息。
中斷使用延遲發(fā)布模式,通過(guò)優(yōu)先級(jí)為0的中斷服務(wù)管理任務(wù)發(fā)布任務(wù)消息實(shí)現(xiàn)RTC每秒定時(shí)和CAN通信報(bào)文的接收和發(fā)送。
使用μC/Probe對(duì)綜保系統(tǒng)運(yùn)行檢測(cè)情況如圖6所示,能夠顯示任務(wù)狀態(tài)、任務(wù)優(yōu)先級(jí)、切換頻率和任務(wù)堆棧等,CPU利用率為64.32 %,符合CPU利用率在60 %~70 %之間的要求;堆棧利用率均在50 %~70 %之間,考慮到任務(wù)堆棧要有1.5~1.8倍的余量,所以任務(wù)堆棧設(shè)置合理。在不對(duì)系統(tǒng)進(jìn)行任何操作時(shí),優(yōu)先級(jí)較低的空閑任務(wù)和GUI任務(wù)的任務(wù)切換頻率和CPU運(yùn)行率較大,保證低優(yōu)先級(jí)任務(wù)能為高優(yōu)先級(jí)任務(wù)運(yùn)行讓出CPU使用權(quán);當(dāng)有參數(shù)設(shè)定及故障查詢后,數(shù)據(jù)采集處理任務(wù)和保護(hù)判斷類任務(wù)顯示各項(xiàng)數(shù)據(jù)相近,滿足任務(wù)間的同步及正常通信,保證了系統(tǒng)的實(shí)時(shí)性。
圖6 系統(tǒng)運(yùn)行檢測(cè)
本文介紹了基于μC/OS-Ⅲ和emWin的供電綜合保護(hù)器設(shè)計(jì)。設(shè)計(jì)的保護(hù)器具備常見(jiàn)故障類型的保護(hù)判斷及動(dòng)作功能,根據(jù)應(yīng)用任務(wù)要求配合μC/OS-Ⅲ操作系統(tǒng)實(shí)現(xiàn)多任務(wù)運(yùn)行管理,系統(tǒng)能夠穩(wěn)定運(yùn)行且滿足任務(wù)實(shí)時(shí)性要求,emWin圖形庫(kù)設(shè)計(jì)的人機(jī)交互對(duì)電網(wǎng)各參數(shù)的監(jiān)測(cè)有更加直觀和美觀的體驗(yàn)。