一种工业逻辑控制任务调度方法技术

技术编号:39069535 阅读:10 留言:0更新日期:2023-10-12 20:01
本发明专利技术公开一种工业逻辑控制任务调度方法,属于任务调度技术领域,包括以下步骤:步骤S1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤S2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。本发明专利技术公开了一种工业逻辑控制任务调度方法,解决了在通用操作系统上任务没有周期执行和超时的机制,能够满足工业逻辑控制任务的调度要求,实现不同任务具有不同优先级,且优先级能够按照工业逻辑控制调度进行分配。配。

【技术实现步骤摘要】
一种工业逻辑控制任务调度方法


[0001]本专利技术属于任务调度
,尤其涉及一种工业逻辑控制任务调度方法。

技术介绍

[0002]工业逻辑控制任务的调度要求如下:1)严格按照任务优先级执行,高优先级可抢占低优先级任务2)不允许有同等优先级的任务3)任务按周期执行,如果在下个周期前未执行完毕,视作超时4)低优先级任务在执行过程中,可以允许被高优先级任务抢占而通用操作系统的任务调度一般都是优先级方式,但任务没有周期执行的机制,没有超时机制,同时允许多个任务设置为相同优先级,同优先级也是基于时间片轮转等调度机制,因此无法满足工业逻辑控制任务的调度要求。

技术实现思路

[0003]本专利技术提供一种工业逻辑控制任务调度方法,旨在解决上述存在的问题。
[0004]本专利技术是这样实现的,一种工业逻辑控制任务调度方法,包括以下步骤:步骤S1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤S2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。
[0005]进一步的,在步骤S1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。
[0006]进一步的,在步骤S2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。
[0007]进一步的,在创建定时器时,将逻辑任务的task ID作为定时器触发的参数,定时器启动后立即触发一次。
[0008]进一步的,在步骤S2中,逻辑任务满足触发条件具体包括:定时器触发,发送消息给调度任务库,并将对应逻辑任务的task ID作为消息参数传递给调度任务库;调度任务库接收消息,从消息中获取逻辑任务的task ID,确定需要被调度的逻辑任务。
[0009]进一步的,在步骤S2中,根据检查结果决定是否执行逻辑任务,具体包括:获取task ID对应逻辑任务的执行状态;若逻辑任务还未完成执行,则记录逻辑任务超时,并触发超时处理策略;若逻辑任务上个周期已经完成执行,则释放逻辑任务等待的信号量,逻辑任务获
取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
[0010]与现有技术相比,本专利技术的有益效果是:本专利技术公开了一种工业逻辑控制任务调度方法,在通用操作系统上,实现按工业逻辑控制调度任务的执行,解决通用操作系统的调度方式无法满足工业逻辑控制的执行。
具体实施方式
[0011]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0012]本专利技术公开一种工业逻辑控制任务调度方法,包括以下步骤:步骤S1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤S2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。
[0013]具体地,在步骤S1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。
[0014]在步骤S2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。
[0015]在创建定时器时,将逻辑任务的task ID作为定时器触发的参数,定时器启动后立即触发一次。
[0016]在步骤S2中,逻辑任务满足触发条件具体包括:定时器触发,发送消息给调度任务库,并将对应逻辑任务的task ID作为消息参数传递给调度任务库;调度任务库接收消息,从消息中获取逻辑任务的task ID,确定需要被调度的逻辑任务。
[0017]在步骤S2中,根据检查结果决定是否执行逻辑任务,具体包括:获取task ID对应逻辑任务的执行状态;若逻辑任务还未完成执行,则记录逻辑任务超时,并触发超时处理策略;若逻辑任务上个周期已经完成执行,则释放逻辑任务等待的信号量,逻辑任务获取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
[0018]本专利技术公开了一种工业逻辑控制任务调度方法,在通用操作系统上,实现按工业逻辑控制调度任务的执行,解决通用操作系统的调度方式无法满足工业逻辑控制的执行。
[0019]本实施方式中,本专利技术定义了一个专门控制逻辑任务的调度任务(以下称为schedule task),由调度任务来控制逻辑任务(以下称为logic task)的执行。
[0020]schedule task设置为操作系统中优先级最高的任务;logic task按照应用中任务的优先级设置logic task的优先级,但不能超过调度任务的优先级;本专利技术公开的一种工业逻辑控制任务调度方法,采用以下步骤实现:
步骤S0:schedule task创建消息队列,并循环等待调度消息;步骤S1:logic task创建后,向schedule task注册,等待被调度的通知;步骤S2:schedule task根据每一个logic task的执行周期分别设置一个定时器;步骤S3:当定时器触发时,通知schedule task调度定时器对应的logic task;步骤S4:schedule task接收到定时器通知后,获取是哪个logic task需要被调度;步骤S5:schedule task检查对应的logic task上个周期的执行情况;步骤S6:根据检查结果决定是否通知logic task运行;步骤S7:logic task被通知运行后,执行应用程序,执行完成后,设置执行完成状态,并再次等待被调度的通知。
[0021]其中,在步骤S0中,在schedule task中创建一个消息队列。
[0022]在步骤S1中,创建logic task时,创建一个信号量,并向schedule task注册,然后循环等待信号量。
[0023]在步骤S2中,schedule task为每个注册的logic task都需要创建一个定时器。定时器以logic task的执行周期为定时周期,周期触发。在创建定时器时,将logic task的task ID作为定时器触发的参数。定时器启动后立即触发一次。
[0024]在步骤S3中,当定时器触发时,在定时器处理函数中,发送消息给schedule task,并将task ID作为消息参数传递给schedule task。
[0025]在步骤S4中,当schedule task接收到消息后,从消息获取task ID,确定是哪个task需要被调度。
[0026]在步骤S5中,获取task ID对应logic task的执行状态,如果logic task还未完成执行,则记录logic task超时,并触发超时处理策略。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种工业逻辑控制任务调度方法,其特征在于,包括以下步骤:步骤S1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤S2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。2.根据权利要求1所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤S1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。3.根据权利要求1所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤S2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。4.根据权利要求3所述的一种工业逻辑控制任务调度方法,其特征在于,在创建定时器时,将逻辑任务的task I...

【专利技术属性】
技术研发人员:冯科佳吴家祥
申请(专利权)人:成都科江科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1