一种工业逻辑控制任务调度方法与流程
未命名
10-16
阅读:112
评论:0
1.本发明属于任务调度技术领域,尤其涉及一种工业逻辑控制任务调度方法。
背景技术:
2.工业逻辑控制任务的调度要求如下:1)严格按照任务优先级执行,高优先级可抢占低优先级任务2)不允许有同等优先级的任务3)任务按周期执行,如果在下个周期前未执行完毕,视作超时4)低优先级任务在执行过程中,可以允许被高优先级任务抢占而通用操作系统的任务调度一般都是优先级方式,但任务没有周期执行的机制,没有超时机制,同时允许多个任务设置为相同优先级,同优先级也是基于时间片轮转等调度机制,因此无法满足工业逻辑控制任务的调度要求。
技术实现要素:
3.本发明提供一种工业逻辑控制任务调度方法,旨在解决上述存在的问题。
4.本发明是这样实现的,一种工业逻辑控制任务调度方法,包括以下步骤:步骤s1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤s2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。
5.进一步的,在步骤s1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。
6.进一步的,在步骤s2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。
7.进一步的,在创建定时器时,将逻辑任务的task id作为定时器触发的参数,定时器启动后立即触发一次。
8.进一步的,在步骤s2中,逻辑任务满足触发条件具体包括:定时器触发,发送消息给调度任务库,并将对应逻辑任务的task id作为消息参数传递给调度任务库;调度任务库接收消息,从消息中获取逻辑任务的task id,确定需要被调度的逻辑任务。
9.进一步的,在步骤s2中,根据检查结果决定是否执行逻辑任务,具体包括:获取task id对应逻辑任务的执行状态;若逻辑任务还未完成执行,则记录逻辑任务超时,并触发超时处理策略;若逻辑任务上个周期已经完成执行,则释放逻辑任务等待的信号量,逻辑任务获
取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
10.与现有技术相比,本发明的有益效果是:本发明公开了一种工业逻辑控制任务调度方法,在通用操作系统上,实现按工业逻辑控制调度任务的执行,解决通用操作系统的调度方式无法满足工业逻辑控制的执行。
具体实施方式
11.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
12.本发明公开一种工业逻辑控制任务调度方法,包括以下步骤:步骤s1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤s2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。
13.具体地,在步骤s1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。
14.在步骤s2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。
15.在创建定时器时,将逻辑任务的task id作为定时器触发的参数,定时器启动后立即触发一次。
16.在步骤s2中,逻辑任务满足触发条件具体包括:定时器触发,发送消息给调度任务库,并将对应逻辑任务的task id作为消息参数传递给调度任务库;调度任务库接收消息,从消息中获取逻辑任务的task id,确定需要被调度的逻辑任务。
17.在步骤s2中,根据检查结果决定是否执行逻辑任务,具体包括:获取task id对应逻辑任务的执行状态;若逻辑任务还未完成执行,则记录逻辑任务超时,并触发超时处理策略;若逻辑任务上个周期已经完成执行,则释放逻辑任务等待的信号量,逻辑任务获取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
18.本发明公开了一种工业逻辑控制任务调度方法,在通用操作系统上,实现按工业逻辑控制调度任务的执行,解决通用操作系统的调度方式无法满足工业逻辑控制的执行。
19.本实施方式中,本发明定义了一个专门控制逻辑任务的调度任务(以下称为schedule task),由调度任务来控制逻辑任务(以下称为logic task)的执行。
20.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被通知运行后,执行应用程序,执行完成后,设置执行完成状态,并再次等待被调度的通知。
21.其中,在步骤s0中,在schedule task中创建一个消息队列。
22.在步骤s1中,创建logic task时,创建一个信号量,并向schedule task注册,然后循环等待信号量。
23.在步骤s2中,schedule task为每个注册的logic task都需要创建一个定时器。定时器以logic task的执行周期为定时周期,周期触发。在创建定时器时,将logic task的task id作为定时器触发的参数。定时器启动后立即触发一次。
24.在步骤s3中,当定时器触发时,在定时器处理函数中,发送消息给schedule task,并将task id作为消息参数传递给schedule task。
25.在步骤s4中,当schedule task接收到消息后,从消息获取task id,确定是哪个task需要被调度。
26.在步骤s5中,获取task id对应logic task的执行状态,如果logic task还未完成执行,则记录logic task超时,并触发超时处理策略。如果已经完成执行,则进行下一步。
27.在步骤s6中,如果task id对应logic task上个周期已经完成执行,则释放logic task等待的信号量。
28.在步骤s7中,logic task获取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
29.以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种工业逻辑控制任务调度方法,其特征在于,包括以下步骤:步骤s1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤s2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。2.根据权利要求1所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤s1中,所述调度任务库创建有消息队列,逻辑任务发送至消息队列进行注册。3.根据权利要求1所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤s2中,调度数据库为每个注册的逻辑任务创建对应的定时器,以及信号量;所述定时器以逻辑任务的执行周期为定时周期进行周期触发,所述信号量用于控制逻辑任务执行应用程序。4.根据权利要求3所述的一种工业逻辑控制任务调度方法,其特征在于,在创建定时器时,将逻辑任务的task id作为定时器触发的参数,定时器启动后立即触发一次。5.根据权利要求3所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤s2中,逻辑任务满足触发条件具体包括:定时器触发,发送消息给调度任务库,并将对应逻辑任务的task id作为消息参数传递给调度任务库;调度任务库接收消息,从消息中获取逻辑任务的task id,确定需要被调度的逻辑任务。6.根据权利要求3所述的一种工业逻辑控制任务调度方法,其特征在于,在步骤s2中,根据检查结果决定是否执行逻辑任务,具体包括:获取task id对应逻辑任务的执行状态;若逻辑任务还未完成执行,则记录逻辑任务超时,并触发超时处理策略;若逻辑任务上个周期已经完成执行,则释放逻辑任务等待的信号量,逻辑任务获取到信号量后,开始执行应用程序,执行完成后,记录执行完成状态,并再次等待信号量。
技术总结
本发明公开一种工业逻辑控制任务调度方法,属于任务调度技术领域,包括以下步骤:步骤S1:创建逻辑任务,并将所述逻辑任务向调度任务库进行注册,等待被调度通知;步骤S2:当逻辑任务满足触发条件时,调度任务库检查逻辑任务上一周期的执行情况,并根据检查结果决定是否执行逻辑任务。本发明公开了一种工业逻辑控制任务调度方法,解决了在通用操作系统上任务没有周期执行和超时的机制,能够满足工业逻辑控制任务的调度要求,实现不同任务具有不同优先级,且优先级能够按照工业逻辑控制调度进行分配。配。
技术研发人员:冯科佳 吴家祥
受保护的技术使用者:成都科江科技有限公司
技术研发日:2023.09.04
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
