基于时间片和延迟机制的可编程控制器高效任务调度方法

作者: 王胜启

基于时间片和延迟机制的可编程控制器高效任务调度方法0

摘要:可编程控制器允许用户编写符合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个中断任务;

任务优先级:预定义周期任务与中断任务的优先级,不同任务同时就绪时,任务调度按优先级进行,其中任务优先级:

T0>I1>I2>I3 >I4>I5 >I6 >I7 >I8 >T1 >T2>T3 >T4 >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)技术、多网融合集约化控制技术的发展,可编程控制器承担的功能和要求呈指数级增长,传统的任务调度方法已经很难满足,必须使用高效的方法。

经典小说推荐

杂志订阅