





摘要:可編程控制器允許用戶編寫符合IEC 61131-3標準的程序,并按功能劃分為不同任務執行。中央處理器(CPU)根據任務的優先級、運行時間和資源環境等條件調度任務執行,而調度算法的優劣直接影響任務執行效率和用戶需求的滿足。本文提出一種高效的任務調度算法,用于解決可編程控制系統中的任務分配與調度問題。該算法綜合考慮了可編程計算環境的用戶需求、調度效率、執行時間和優先級等因素,將任務劃分為時間片任務、周期任務和中斷任務,并通過延遲機制優化周期任務的調度,以提高調度效率。
關鍵詞:可編程控制器;任務調度;優先級;中斷;時間片;延遲機制
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2025)06-0126-03開放科學(資源服務)標識碼(OSID):
0 概述
隨著工業自動化程度的不斷提高,可編程控制器(Programmable Logic Controller,PLC)在工業控制系統中扮演著越來越重要的角色。PLC 需要實時處理各種任務,高效的任務調度算法對于保證控制系統的實時性和可靠性至關重要。傳統的PLC 任務調度算法,例如時間片輪轉調度算法、優先級搶占式調度算法等,存在調度效率低、無法有效處理應急任務、任務通信與切換開銷大等問題。為了解決上述問題,本文提出一種基于時間片和延遲機制的高效任務調度方法。該方法將任務劃分為時間片任務、周期任務和中斷任務,并通過延遲機制優化周期任務的調度,以提高調度效率。
名詞解釋如下:
時間片:任務執行的基本單位
優先級:CPU調度任務的優先順序
中斷:CPU運行過程中的出現的緊急處理事項
任務延遲機制:任務調度的一種算法
1常見任務調度方法研究
可編程控制器要求代碼執行快速、反饋及時、可靠性高,對任務調度算法的效率提出了更高的要求。現有的可編程計算系統主要采用以下幾種調度方法。
先來先服務調度算法 (First Come First Serve, FCFS):按照任務提交的先后次序分配CPU 執行,簡單易實現,但無法保證高優先級任務的及時執行【1】。
時間片輪轉調度算法(Round Robin, RR):為每個任務分配固定的時間片,時間片結束后強制切換到下一個任務[3]。該算法能夠保證每個任務都有機會獲得CPU 資源,但不適用于實時性要求高的場景。
基于優先級的搶占式調度算法:優先級高的任務可以搶占優先級低的任務執行,能夠更好地滿足實時性要求,但同等優先級的任務調度不夠靈活[4]。
多級反饋隊列算法:綜合了時間片輪轉和優先級搶占兩種算法的優點,將任務按優先級分組,組內采用時間片輪轉,組間采用優先級搶占,兼顧了效率和公平性[5]。
然而,上述傳統的任務調度方法應用于可編程控制器時,仍存在一些不足。
任務調度效率問題:現有的可編程控制器大多采用時間片輪轉和優先級搶占相結合的任務調度算法,但固定的時間片長度難以適應不同任務的實時性要求,頻繁的上下文切換也會降低調度效率。
應急任務處理問題:現有的可編程控制器難以有效處理應急任務,因為循環執行的方式無法保證應急任務的及時響應。
任務通信與切換問題:現有的可編程控制器中,任務間的通信和切換機制較為復雜,會產生較大的時間開銷,不利于系統的實時性。
2一種高效任務調度方法
2.1任務劃分
本文提出一種高效任務調度方法。其特征在于,將任務至少劃分為以下類型:時間片任務T0,周期任務T1,……,TN,中斷任務I 1,……,I K,其中,N、K為正整數,所述中斷任務的優先級高于所述周期任務的優先級。調度待執行的N個周期任務,其中,所述N 個周期任務的周期間隔分別為T0*mn,T0為任務執行的基本時間單位,m和N為正整數,n為整數;延遲執行所述N個周期任務,以使每一個T0上待執行的周期任務不超過m個周期間隔。
以下僅結合一示例對上述任務執行過程進行說明,N個周期任務的周期間隔分別為T0*mn ,實施例中,所述m=2,N=5。
任務劃分為:時間片任務T0,周期任務T1-T5,中斷任務:I1-I6,其中:
T0:時間片任務,任務執行的基本時間單位,其他周期任務以其作為倍增因子劃分時隙并動態配置。
T1-T5:周期任務,以固定的時間間隔執行,以T0 周期為基本時間單位,最多5個周期任務,周期任務的周期間隔為T0*2n(n=0,1,2...)。
I1-I6:中斷任務,在任意時間點觸發,可動態配置到不同的預定義中斷源,最多8個中斷任務;
任務優先級:預定義周期任務與中斷任務的優先級,不同任務同時就緒時,任務調度按優先級進行,其中任務優先級:
T0gt;I1gt;I2gt;I3 gt;I4gt;I5 gt;I6 gt;I7 gt;I8 gt;T1 gt;T2gt;T3 gt;T4 gt;T5
2.2 調度策略
每個時鐘周期最多執行2個任務,即在每個時間間隔內T0內,最多僅調度2個任務的執行(不包括T0 任務)。調度策略如下:
假設調度T1-T5五個周期任務執行,其中倍增因子分別為:m =1 n1=1,n2=2,n3=4, n4=8, n5=16,這任務調度分配為:
任務延遲機制確保每個時間間隔的任務不超過兩個,并且所有任務仍以“時間等價”方式執行,即任務雖然延遲到后續時隙執行,但任務執行的周期仍保持不變。如圖2,T3,T4,T5延遲后的執行的時間間隔不變。
任務延遲機制另一方面分配多余任務到少于兩個任務執行的“空閑”時隙內執行。任務延遲機制盡可能地將任務執行分配給空閑時隙。主要目標是保證每個任務執行的時間點的等距離。
以下發明兩種任務延遲調度算法。
延遲調度方法:
計算任務調度的延遲偏移,將原始調度時隙轉化為優化后的調度時隙
計算的nxOffset為:0/0/1/3/7,優化調度后為:
2.3 任務的執行模式任務的執行模式
住務的執行模式(mode)表示任務在執行的一個周期的時間間隔內處于的不同的運行階段,可編程控制程序在不同的時間點以不同的方式運行,且在每個周期運行多次,但每次執行不同的代碼段。其模式劃分如下。
①Init模式
冷啟動(codestart)或熱啟動(warmstart)時執行并且僅執行一次,獨立于可編程控制任務,一般用于系統級的初始化代碼執行。
②System模式
每個任務執行周期開始時執行,對于所有周期任務共享同一個System模式,對于中斷任務每個任務擁有各自的System模式。System模式一般用于任務級的共享代碼的執行,System模式受任務鎖保護,不能中斷。
③Normal模式
任務標準運行模式,所有任務擁有各自的Normal 模式,在System模式之后執行。Fast/Consistent import 模式,任務Normal模式之前運行,其中Fast Import模式用于讀取共享內存,可用于周期任務和中斷任務,Consistent Import模式用于支持共享內存一致性,僅用于周期任務。
④Fast/Consistent export模式
任務Normal模式之后運行,其中Fast Export模式用于寫共享內存,可用于周期任務和中斷任務,Con? sistent Export模式用于支持共享內存一致性,僅用于周期任務。
下圖為任務執行模式的運行階段,假設包括T1 和T3兩個任務。
其中:
TxS表示:任務Tx的System模式
TxFI表示:任務Tx的Fast import模式
周期任務T1-T5 共享同:一個System模式,作為獨立的任務單獨運行。中斷任務I1-8則擁有各自的System和 Normal模式,如:I1S和I1N,兩類任務的System模式均不能中斷。
3技術特征
多級任務劃分:將任務劃分為時間片、周期任務和中斷任務,并通過優先級和時間片調度機制,實現了CPU的負載均衡,并顯著減少了CPU負載率,提高了執行效率,能夠更好地滿足不同類型任務的實時性需求。
延遲機制:采用延遲機制優化周期任務的調度,能夠避免在短時間內集中調度多個周期任務,從而提高調度效率。
靈活的任務執行模式:定義了多種任務執行模式,包括 Init 模式、System 模式、Normal 模式、Fast/ Consistent Import/Export 模式等,能夠滿足不同任務對代碼執行順序和資源訪問的要求。
4 結論
1)通過本方法的技術實現,利用時間片輪轉原理和時間延遲算法,顯著改善了CPU負載執行效率,解決了任務調度的效率低下等問題。
2)除周期任務外,還支持中斷任務,滿足對特定條件下觸發僅需一次執行的程序代碼的需要,如異常和特殊情況的處理等。
3)每個周期最多支持m個任務執行,時間周期更加靈活,不會因時鐘周期過大或過小引發的調度效率問題。并且通過劃分不同的時鐘周期,時序性強的放到周期短,優先級高的任務中,反之放到周期長,優先級低的任務中。
4)通過任務模式的劃分,利于解決任務間的變量共享,輸入輸出同步等問題。
5)隨著工業控制的功能復雜性和對控制精度要求的日漸提高,可編程控制器執行的程序運行時系統(RunTime)必須具備高效、準確的任務調度算法,本文僅提供了其中的一種思路,隨著計算機和控制科學的發展,未來該方向的研究需求仍然迫切。以筆者所在的軌道交通行業為列,隨著智能化列車和列車智能運維(PHM)技術、多網融合集約化控制技術的發展,可編程控制器承擔的功能和要求呈指數級增長,傳統的任務調度方法已經很難滿足,必須使用高效的方法。