999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于智能電能表微內核動態優先級任務調度方法

2023-11-18 04:31:22侯慧娟李夢溪郭思維
電測與儀表 2023年11期
關鍵詞:智能

侯慧娟,李夢溪,郭思維

(國網河南省電力公司營銷服務中心,鄭州 450052)

0 引 言

隨著IR46智能電能表、智能物聯電能表(新一代智能電能表)的快速發展[1],軟件迭代更新、系統功能管理、維護等需求也隨之受到了研發人員的廣泛關注,其中運行可靠性和實時性成為了新一代智能電能表軟件開發的重點[2-4]。嵌入式操作系統作為一種用途廣泛的系統軟件,提供任務調度和管理、內存管理、任務間同步與通信、時間管理等功能,具有執行效率高、實時性能優良和擴展性強等特點。因此,將其部署到智能物聯電能表軟件系統中,是新一代智能電能表邁向高性能、高穩定性、可擴展性和高可靠性的關鍵技術。

目前,實時嵌入式操作系統的種類繁多,但由于智能電能表RAM等資源的限制,使得所移植的嵌入式操作系統必須滿足輕量級、可裁剪、可移植和高可靠性等特性。微內核作為嵌入式操作系統內核的精簡版本,具有占用內存小、移植性強等特點[5],為智能物聯電能表嵌入式系統開發提供了可能,并將為其優異的性能發揮強大的潛力。

在嵌入式操作系統中,任務調度是其中最為核心的功能[6]。根據任務調度方式的不同,通常可將嵌入式操作系統內核分為非搶占式和搶占式兩種,因此對于任務調度而言,搶占式任務調度更加能夠體現任務響應的實時性。例如μC/OS操作系統采用最高優先級作為任務調度方法,任務優先級越高,當處于就緒態時,其切換至運行態的可能性越大[7-8]。然而,針對任務集中優先級較低的任務,因其時常被高優先級搶占而得不到執行,文獻[9]提出了一種任務補償調度機制,使得在設定的時間內對較低優先級任務進行補償調度。文獻[10]首先將任務劃分為實時任務、分時任務和后臺任務,實時任務采用優先級最高執行調度,而分時任務采用時間片調度算法,后臺任務則以中斷響應為主,實現整個操作系統任務的調度。在上述嵌入式系統中,任務優先級通常屬于靜態,不具有動態變化特性,從而限制了任務調度的靈活性以及系統的進一步擴展。

針對任務優先級動態設置問題,國內外研究者分別提出了多種經典的任務調度算法,其中最早截止時間優先調度(eearliest deadline first,EDF)可以根據任務的截止時間排序執行任務調度[11-12],從而大幅提升處理器的利用率。然而當系統任務過載時,容易引發任務錯失截止時間而影響后續其他任務的執行,為此文獻[13]綜合考慮任務截止時間、執行價值和消耗能耗三種因素確定任務優先級,并通過希爾排序算法對任務進行選擇,從而降低任務錯失率。文獻[14]在EDF算法基礎上,綜合截止期和關鍵度兩種特征參數,提出一種動態截止期-關鍵度調度算法,通過構建判斷函數執行任務調度,從而降低任務錯失率和保障重要任務的調度成功率。文獻[15]針對混合任務調度問題,提出了一種靜態周期性可搶占式混合任務調度策略,該策略問題同時支持中斷級與任務級的任務切換,并采用EDF算法對被搶占的時間觸發任務進行恢復,提高系統資源利用率,并最大限度保證任務實時性。然而,動態優先級調度方法只針對任務的時間特性,并沒有考慮任務的重要程度,容易引起資源的競爭,引發優先級反轉、死鎖等隱患,一定程度上增加了任務調度算法設計的難度。此外,針對不同的應用,如何綜合多種因素實現穩定可靠的任務調度,也成為了任務調度算法研究的熱點[16-20]。

文中針對智能物聯電能表實際應用,在其RAM等資源受限等情況下,通過引入微內核架構設計軟件及相應任務,提出一種微內核動態優先級任務調度方法。首先,根據智能物聯電能表功能需求,采用功能模塊任務化設計,劃分為周期性任務和事件觸發任務,并引入最高優先級、最早截止時間調度以及補償調度等方法,通過構建動態優先級分配方法,確保任務調度的實時性和可靠性。最后,通過仿真分析驗證文中方法的有效性。

1 智能電能表任務設計

1.1 驅動層實現

隨著新一代智能電能表中多芯的引入,微內核作為小型嵌入式操作系統的核心,已經成為了嵌入式系統開發的一個重要方向。圖1給出了目前智能物聯電能表硬件架構圖,其包含了自身的電量計量模組,同時增加了擴展模組、管理模組等。此外,MCU、計量芯以及擴展模組等多芯的使用,使得智能電能表管理芯面臨代碼執行效率優化以及各模塊運行的實時性跟進等問題。

圖1 智能物聯電能表框圖

目前,整個電能表管理芯的功能框架主要包含了10種功能的開發,例如LCD顯示、按鍵控制、繼電器、存儲器、通信以及計量等,具體如表1所示。顯然,在底層軟件開發過程中,不僅需要滿足表計法制計量功能的要求,而且面對下行擴展功能模塊的通信與交互同樣要求具備實時響應特性。為此,微內核的引入,并將各個功能模塊任務化,一方面可大大降低其編程的復雜度,同時也可利用任務調度算法提高各個功能模塊的實時響應能力。

表1 智能電能表硬件驅動

1.2 應用層任務設計

由表1以及圖1可知,整個智能物聯電能表需要實現的功能主要包括:電能量計量、數據凍結、事件記錄、顯示、通信(藍牙、串口交互)等功能。為了使得各功能模塊具有并發處理能力,文中將各個功能模塊與任務建立對應關系,具體如表2所示。

表2 智能物聯電能表任務的構建

同時,利用嵌入式操作系統任務調度執行整個智能電能表軟件系統,具體設計如下:

1)任務類型的設計。

根據表2可知,任務可劃分為周期性任務和事件觸發任務,其中任務1~任務6屬于周期性任務;任務7~任務11為事件觸發任務。考慮到在周期性任務中存在事件觸發,文中將其事件觸發修改為判斷全局變量值來保證任務只執行周期性任務。例如任務6,在按鈕中斷響應中改變全局變量的值,而在該任務周期執行中,加入對這個全局變量的判斷執行相應的功能;

2)任務調度算法的設計。

為了確保整個操作系統穩定、可靠的運行,在上述任務中,針對周期性任務,可采用最高優先級的方式進行調度;而通信部分采用的是事件觸發機制,即可在通信接收中斷函數中發放信號量等,使得等待信號量的各個通信接收處理任務能夠獲得CPU而執行。因此,相對于周期性任務而言,其要求任務調度具有一定的實時性。為了滿足這個特性,可采用EDF等動態優先級任務調度算法;

3)任務之間的同步與通信的設計。

在嵌入式操作系統內核管理中,各個任務間不允許相互調用,需通過同步與通信機制來進行協調。例如在數據通信中,通常采用串口中斷的方式實現數據的接收。因此,在中斷函數中接收到一幀數據后,通過發放信號量的方式觸發相應的任務,使得等待該信號量的任務能夠執行,例如任務7和任務9。

為了清晰描述各個任務以及與中斷之間關聯特性,圖2給出了整體軟件系統框架。整個嵌入式系統的處理主要分為三大部分:周期性任務處理、中斷響應處理以及事件觸發任務處理,其中在中斷響應中,負責協調周期性任務和事件觸發任務。

圖2 軟件系統框架

2 任務調度算法

為了確保周期性任務和事件觸發任務的實時性,文中采用搶占式嵌入式操作系統設計,并引入最高優先級調度以及最早截止時間優先調度算法。

2.1 最高優先級調度

最高優先級優先是一種高效的調度算法,它可以通過查表法快速查找優先級,具體如圖3所示,定義一個OSEventGrp字節變量,其中從低位開始第i位表示數組OSEventTbl[i]中對應的那一行是否存在就緒任務;然后再根據OSEventTbl[i],從最低位開始查看每一位是否存在相對應的就緒任務。

圖3 μC/OS II 最高優先級查找法

為了能夠快速查找最高優先級任務,通常采用OSUnMapTbl[256]數組[7],記錄一個字節變量所對應從低位到高位第一次出現為1的位置,此時最高優先級通過以下三步即可找到:

y=OSUnMapTbl[OSEventGrp]

(1)

x=OSUnMapTbl[OSEventTbl[y]]

(2)

prio=(y<<3)+x

(3)

當需要尋找次優先級時,可以將OSEventTbl[y]中最高優先級所在位賦0,繼續尋找更低一級優先級,從而遍歷所有就緒任務。

2.2 最早截止時間優先調度算法

最早截止時間優先(EDF)算法是一種經典的實時調度算法。在每一個新的就緒狀態到來時,調度器都將從那些已就緒或者當前沒有完全處理完畢的任務中根據最早截止時間排出新的執行次序,并且按照新任務的截止時間的先后決定是否調度該新任務。為了便于清晰說明,圖4給出了最早截止時間優先調度的一個示例。

圖4 最早截止時間優先調度

式中任務P1的周期為t=25,任務P2周期t=35。整個執行過程如下:

1)任務P1和P2處于就緒態。由于P1的截止時間最早,即t=50,因此它的初始化優先級要比任務P2高而開始執行,直至任務P1執行完成一個周期 (t=25),此時P2開始執行;

2)當P2執行完一個周期,此時任務P1就緒,并給定截止時間t=100,優先于其給定的任務2的截止時間,P1開始執行,直至任務P1結束(t=85),此時,任務P2開始運行;

3)在時刻t=100處,任務P1處于就緒態,由于其截止時間(t=150)要比任務P2的截止時間(t=160)要早,因此任務P2被任務P1搶占,當其完成后任務切換,任務P2恢復執行,直至任務P2完成。

3 改進的任務調度算法

通常,在嵌入式操作系統中,最高優先級調度屬于固定優先級調度算法,而EDF算法則屬于動態優先級調度算法,為了能夠提高任務調度的實時性和可靠性,文中融合了最高優先級調度和最早時間截止調度方法。針對周期性任務,采用最高優先級調度,而對于事件觸發任務,采用了最早截止時間調度機制,并通過優先級的換算,集中采用最高優先級查找,執行最高優先級任務。此外,為了避免出現因任務低優先級而得不到執行等問題,文中引入了任務補償調度方法,使得整個系統能夠穩定、可靠地運行。

3.1 動態優先級分配

在事件觸發任務中,引入一個衡量優先級的度量值Pi,其包括任務價值Vi和截止時間Ci兩個重要度參數,其計算如下:

Pi=ceil(kvVi+kcCi-0.5)

(4)

式中kv、kc分別表示任務價值和運行時間的權重,滿足kv+kc=1;ceil(·)表示向上取整。

式(4)中,將任務價值Vi設置為用戶初始化任務時設置的靜態優先級,表示當任務優先級值越小,任務價值越大。而截止時間Ci與當前運行時刻t和任務截止運行時間有關。同樣地,截止時間越短,則任務優先級越高。為了描述其優先級動態變化特性,Ci直接采用距離截止時間遠近來度量,即:

Ci=Pmax×(Ti-t)/Ti

(5)

式中Ti表示任務i的截止時刻;Pmax為靜態優先級最大值。當t接近Ti時,Ci值越小,式(4)計算得到的Pi越小,表示優先級越高。當t超過Ti時,此時引入補償調度機制,確保當前任務能夠獲得執行。

進一步地,kv、kc這兩個靜態參數決定了任務的優先級。由于Vi在設計中采用靜態優先級值,因此,式(4)中優先級值的變化主要由Ci決定,而系數kc則將控制優先級調節范圍。顯然,當kc=0時,此時得到的優先級即為用戶設置的靜態優先級;而當kc逐漸增大,任務優先級則逐步由最早截止時間優先級決定。因此,該權重參數需要根據實際應用具體設置。另外,需要注意的是,當計算得到的任務優先級存在相同情況,采用時間片輪轉的方式進行調度。

3.2 補償調度機制

隨著系統中任務的執行,當高優先級任務處于就緒隊列時其總能夠得到執行,而低優先級任務則有可能因此得不到調度。為此,文中引入任務補償調度方法。其基本思想是在任務中設置截止運行時間作為一個補償調度周期,即任務在進入就緒態后就開始啟動補償計時,如果在設定的截止運行時間前任務被執行了,則重新補償計時;如果在截止運行時間之后還未執行,則進入補償隊列,并啟動任務補償調度,以確保低優先級任務響應的實時性。

圖5為整個補償調度機制的流程圖。當任務進入就緒隊列后,通過與其內在的截止運行時間進行比較,當超過了截止運行時間,則修改該任務的截止時間為最先,并啟動補償調度時間計數器。在補償調度過程中如果出現補償調度時間片已經用完,但補償調度任務還未執行完成時,中止該任務,并將其任務恢復初始截止運行時間并轉入就緒態;如果任務在補償調度時間內執行完成時,任務恢復初始截止運行時間并進入下一輪調度。

圖5 補償算法執行流程

另外,在任務補償調度過程中,補償調度時間的設置對于被中斷的當前任務的正常運行是存在一定影響。通常設置補償調度時間短,執行完一次任務可能需要被執行多次補償調度,而任務補償調度時間較長,可能會影響當前被中斷的任務的實時響應。因此,這個補償時間通常相對比較短,在實際應用中,需要用戶根據實際需要來設置。

4 實驗結果與分析

為了驗證文中的任務調度方法,文中針對表2中的任務集,并根據智能物聯電能表實際應用開發,給出了具體任務集及其參數,如表3所示。其中設置優先級最大值Pmax=15,周期性任務和事件觸發任務優先級權重kv,kc均設置為0.5。為了不頻繁發生調度,更改動態優先級的步長t設置為50 ms。此外,設置任務補償調度時間為50 ms,對于相同優先級任務,時間片輪轉設置為50 ms,且忽略在任務切換中MCU的消耗。

表3 智能物聯電能表任務集及其參數

圖6給出了周期性任務t1~t6按最高優先級調度的執行時序圖,不難發現,在沒有事件觸發任務情況下,這些任務都能夠得到有效執行。然而,當執行完這些周期任務時,在周期1 s內空閑時間為90 ms,這對于后續執行事件觸發的任務而言,會影響任務調度的實時性,如圖7所示,在事件觸發下,任務t5和t6需要在下一個周期內獲得MCU。

圖6 任務執行過程時序圖

圖7 事件觸發任務執行時序圖

圖7給出了文中方法在事件觸發任務t7發生下任務運行的時序圖,其中t=300 ms時刻任務t7就緒。由式(4)計算可得,當前任務動態優先級為10,因當前執行的任務t4優先級為8,高于任務t7優先級,故t4繼續執行;當t=450 ms時,t4執行完成,此時t7優先級為8,高于任務t3優先級而開始執行;當執行到500 ms時,因任務t5和任務t6截止時間到,盡管當前任務1已經就緒,但是任務t5和任務t6會進入補償調度隊列,進而執行補償調度。執行完成后,任務1因優先級高而開始執行。由于任務t7屬于事件觸發任務,因此其優先級是每隔50 ms動態變化的,當執行到t=650 ms時,此時任務t7的優先級為3,高于任務t1的優先級4,此時任務t7搶占任務t1而執行。相比于圖7所示的任務調度效果,文中方法(見圖8)在事件觸發任務觸發下,各個任務都能夠在1 000 ms周期內都能獲得運行。

圖8 文中方法任務執行序圖

為了能夠更好地驗證文中方法的先進性,采用了與最高優先級方法和最早截止事件算法進行了對比,其結果如圖9和圖10所示。從圖中可以看出,在最高優先級調度過程中,由于事件任務觸發,使得低優先級的任務5和任務6在其第一個周期內并沒有得到調度運行。最早截止時間調度方法,由于任務集中截止時間存在相同,為此采用50 ms時間片輪轉方法進行調度。從測試結果中可以看出,盡管最早截止時間能提升處理器的利用率,但是最早截止時間方法并沒有將任務的緊急程度體現到優先級中,使得顯示、指示燈等任務執行優先于比其重要度高的優先級。另外,由于截止時間設置的不合理,存在任務切換頻繁問題,這在一定程度上會耗費MCU資源,影響執行效率。而文中在任務的優先級分配上,針對事件觸發型任務,采用動態優先級和靜態優先級相結合的方法,為事件任務響應的實時性提供了可行。其次,對低優先級任務調度,任務時間補償機制也為任務的實時響應奠定了基礎。

圖9 最高優先級任務執行序圖

圖10 最早時間截止任務執行序圖

5 結束語

文中針對智能物聯電能表嵌入式操作系統開發,提出了一種微內核動態優先級任務調度方法。該方法根據電能表任務類別的不同,構建了一種基于周期性任務最高優先級和事件任務動態優先級調度策略以及動態優先級分配方法。同時,為了避免低優先級在截止運行時間范圍內未獲得調度,采用一種時間補償任務調度方法,提升任務的實時響應能力。最后,通過案例仿真分析驗證了文中方法的有效性。在下一步工作中,將針對新一代智能電能表的實際應用場景,進一步優化設計任務調度,盡可能降低任務調度的頻繁性。同時,對于任務補償調度時間進行測試,使得整個智能物聯電能表能夠具有高響應能力、高穩定性的任務調度性能,進而為新一代智能電能表實時任務處理應用奠定基礎。

猜你喜歡
智能
智能與自主
讓紙變得智能
一種智能微耕機的研發
智能制造 反思與期望
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
智能制造·AI未來
商周刊(2018年18期)2018-09-21 09:14:46
爭渡智能石化
能源(2018年4期)2018-05-19 01:53:44
主站蜘蛛池模板: 成人欧美在线观看| www中文字幕在线观看| 精品无码一区二区三区电影| 日韩精品久久无码中文字幕色欲| 国产成人无码播放| 亚洲资源站av无码网址| 超碰免费91| 亚洲人成日本在线观看| 欧美无专区| 日韩AV无码一区| 91在线国内在线播放老师| 国产丝袜第一页| 久久婷婷综合色一区二区| 国产手机在线小视频免费观看| 国产福利2021最新在线观看| 波多野结衣中文字幕一区| 国产18在线| 国产亚洲现在一区二区中文| 国产精品短篇二区| 欧美成人精品高清在线下载| 91无码国产视频| 亚洲色无码专线精品观看| 欧美成人午夜视频免看| 又粗又硬又大又爽免费视频播放| 欧美一级高清片久久99| 日韩在线影院| 亚洲美女AV免费一区| 国产黄在线免费观看| 蜜桃视频一区二区| 国产系列在线| 午夜精品久久久久久久99热下载| 色哟哟国产精品一区二区| 日本免费福利视频| 国产日本欧美在线观看| 午夜色综合| 亚洲另类色| 国产黑丝视频在线观看| 妇女自拍偷自拍亚洲精品| 99这里只有精品在线| 国产伦片中文免费观看| 亚洲成人免费看| 中文字幕欧美日韩高清| 2021最新国产精品网站| 在线毛片免费| 国产jizz| 亚洲天堂自拍| 青青草原偷拍视频| 亚洲精品视频网| 久久香蕉国产线看观| 69国产精品视频免费| 91视频免费观看网站| 99视频在线精品免费观看6| 亚洲大尺码专区影院| 亚洲日本在线免费观看| 无码精品一区二区久久久| 毛片免费在线视频| 国产精品刺激对白在线| 第九色区aⅴ天堂久久香| 熟妇人妻无乱码中文字幕真矢织江 | 国产在线麻豆波多野结衣| 三级国产在线观看| 精品三级网站| 爱色欧美亚洲综合图区| 精品国产成人a在线观看| 欧美日韩精品综合在线一区| 54pao国产成人免费视频| 成人午夜精品一级毛片| 中文字幕调教一区二区视频| 一个色综合久久| 亚洲欧洲日产国产无码AV| 五月婷婷中文字幕| 人人看人人鲁狠狠高清| 国产午夜人做人免费视频中文| 欧美国产日产一区二区| 欧美亚洲激情| 成人中文在线| 五月六月伊人狠狠丁香网| 欧美伦理一区| 久久黄色小视频| 五月天福利视频| 精品少妇人妻无码久久| 天堂成人av|