车载ATP实时任务调度方法及其任务调度系统技术方案

技术编号:9295639 阅读:152 留言:0更新日期:2013-10-31 00:16
本发明专利技术属于城市轨道交通CBTC技术领域,具体公开了一种车载ATP实时任务调度方法及其任务调度系统。本发明专利技术方法包括生成全局变量、调用任务列表中优先级别最高的第一任务进入内核运行、比较正在内核运行的第一任务和所述新进入的第二任务的优先级别高低、继续按照优先级别高低依次调用任务列表中的各个任务进入内核运行或者中断第一任务转而运行第二任务。本发明专利技术系统包括全局变量生成模块、内核运行模块、优先级比较模块、以及内核任务运行状态判断模块。本发明专利技术主要是减少任务间的通信等待时间、提高切换效率、以及提高实时防护安全性能,以满足CBTC系统车载ATP子系统多变量、多任务、强实时的控制任务需要。

【技术实现步骤摘要】
车载ATP实时任务调度方法及其任务调度系统
本专利技术属于城市轨道交通CBTC
,具体涉及一种基于μC/OS-II嵌入式实时操作系统任务调度机制优化和改进的车载ATP的任务调度方法及其任务调度系统。
技术介绍
CBTC,它是基于无线通信技术的列车自动控制系统。在城市轨道交通信号控制系统中,其车载ATP(列车自动保护装置)负责获取并维护列车位置、接收移动授权并计算安全速度曲线、监督列车状态等功能。这些功能的实现需要车载ATP系统具有极高的实时性,才能对各个任务进行实时的响应和快速的调度。因此车载ATP系统普遍采用嵌入式实时操作系统,例如:TKCG-08型车载ATP装置就采用了μC/OS-II实时操作系统。μC/OS-II一种基于优先级的开源、抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量、邮箱、消息、队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。正是由于这些特点,使得μC/OS-II非常适合使用在实时性、可靠性和安全性要求高的场合。事实上,μC/OS-II使用在诸多领域,如军工、航空、航天、医疗设备及工业控制等。μC/OS-II操作系统属于可剥夺型内核系统,它的功能实现是基于任务的,目前车载ATP的任务调度系统中任务之间的通信与调度主要有以下几种方式:(1)基于信号量的任务管理方式μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。信号量的使用包含建立信号量、等待信号量、查询信号量和发送信号量几个功能。各任务间的通信依靠判断信号量的值来保证任务间数据使用的唯一性。例如任务A与任务B同时使用变量C,与此相关的信号量为D,任务A使用变量前需要通过等待信号量得到信号量D为“有效”的指令才可以正常运行。若信号量无效任务A将进入睡眠态,直到信号量有效或等待超时时间到。(2)基于邮箱的任务管理机制邮箱是μC/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。该指针指向一个包含了特定“消息”的数据结构。使用邮箱之前,必须先建立该邮箱。该操作可以通过调用OSMboxCreate()函数来完成(见下节),并且要指定指针的初始值。一般情况下,这个初始值是NULL,但也可以初始化一个邮箱,使其在最开始就包含一条消息。如果使用邮箱的目的是用来通知一个事件的发生(发送一条消息),那么就要初始化该邮箱为NULL,因为在开始时,事件还没有发生。如果用户用邮箱来共享某些资源,那么就要初始化该邮箱为一个非NULL的指针。在这种情况下,邮箱被当成一个二值信号量使用。各任务向邮箱中发送控制信息,其他任务使用邮箱关联的信息前,需要从邮箱中获取任务是否可用的授权。若邮箱信息不可用,则任务挂起直到邮箱信息可用或等待超时达到。因此,现有的μC/OS-II系统提供的任务通信与调度机制,虽然可以有效的防护不同任务间同时使用相同的数据,但是有以下缺点:(1)任务间大量的数据交换会造成调度指令非常繁琐,程序结构复杂;(2)单个任务出现异常会造成其他任务死锁;(3)没有专门的数据实时性防护机制,一旦信号量或邮箱工作异常,数据安全无法保障。
技术实现思路
为了解决上述问题,本专利技术的目的在于提供一种简洁的车载ATP的任务调度方法及其任务调度系统,以减少任务间的通信等待时间和提高切换效率。为实现上述专利技术目的,本专利技术所采用技术方案如下:一种车载ATP的任务调度方法,包括:生成至少一个可供多个任务共享的全局变量,每个全局变量指定一个任务对其进行数据修改更新;调用任务列表中优先级别最高的第一任务进入内核运行,当运行中的第一任务正对指定由其进行数据修改更新的全局变量进行数据修改更新时,内核锁死任务切换直至数据修改更新完成;在所述第一任务运行的同时监测任务列表中是否新进入第二任务;当新进入第二任务后,比较正在内核运行的第一任务和所述新进入的第二任务的优先级别高低;若所述第二任务的优先级低于所述第一任务,则继续按照优先级别高低依次调用任务列表中的各个任务进入内核运行;若所述第二任务的优先级高于所述第一任务,则判断内核是否处于锁死任务切换状态;若未处于锁死任务切换状态,则直接中断第一任务转而运行第二任务;若正处于锁死任务切换状态,则等待内核解除任务切换锁死状态后,再中断第一任务转而运行第二任务。进一步的,在所述生成至少一个可供多个任务共享的全局变量之前,该方法还包括:创建多个任务,并按照各任务之间的关系分配不同的优先级;激活每个任务以分别执行各任务相应的程序代码,并在任务定时计数完成后进入到任务表等待内核调用运行。进一步的,在生成至少一个可供多个任务共享的全局变量之前,该方法还包括:激活一个硬件定时器,该硬件定时器按照设定的周期递增以构建一个时间参考轴;在各个全局变量生成时或被修改更新后,立即读取所述时间参考轴上的时间数值作为该全局变量的时间戳;在各个任务被内核调用运行时也从所述时间参考轴上读取一个时间数值作为本任务的时间戳;在各个任务调用全局变量时,先获取本任务的时间戳与所调用的全局变量的时间戳的时间差值,再比较该时间差值与预设的时间阈值以确定对应全局变量的有效性。进一步的,所述比较该时间差值与预设的时间阈值以确定对应全局变量的有效性,具体是:当该时间差值小于或者等于预设的时间阈值时,认定该全局变量有效;当该时间差值大于预设的时间阈值时,认定该全局变量无效。进一步的,运行中的第一任务使用指定由其他任务负责数据修改更新的全局变量的具体方式是:在该第一任务的堆栈中定义一个映射的局部变量以供使用,其中该局部变量与指定由该第一任务负责数据修改更新的全局变量相对应。一种车载ATP的任务调度系统,包括:全局变量生成模块,用于生成至少一个可供多个任务共享的全局变量,每个全局变量指定一个任务对其进行数据修改更新;内核运行模块,用于调用任务列表中优先级别最高的第一任务进入内核运行,当运行中的第一任务正对指定由其进行数据修改更新的全局变量进行数据修改更新时,内核锁死任务切换直至数据修改更新完成;在所述第一任务运行的同时监测任务列表中是否新进入第二任务;优先级比较模块,当新进入第二任务后,用于比较正在内核运行的第一任务和所述新进入的第二任务的优先级别高低;若所述第二任务的优先级低于所述第一任务,则指令任务执行模块继续按照优先级别高低依次调用任务列表中的各个任务进入内核运行;若所述第二任务的优先级高于所述第一任务,则启动内核运行状态判断模块;内核任务运行状态判断模块,用于判断内核是否处于锁死任务切换状态;若未处于锁死任务切换状态,则指令内核运行模块直接中断第一任务转而运行第二任务;若正处于锁死任务切换状态,则指令内核运行模块等待内核解除任务切换锁死状态后,再中断第一任务转而运行第二任务。进一步的,该系统还包括任务创建模块和任务激活模块;其中,任务创建模块,用于创建多个任务,并按照各任务之间的关系分配不同的优先级;其中,任务激活模块,用于激活每个任务以分别执行各任务相应的程序代码,并在任务定时计本文档来自技高网
...
车载ATP实时任务调度方法及其任务调度系统

【技术保护点】
一种车载ATP实时任务调度方法,其特在于,包括:生成至少一个可供多个任务共享的全局变量,每个全局变量指定一个任务对其进行修改更新;调用任务列表中优先级别最高的第一任务进入内核运行,当运行中的第一任务正对其指定修改更新的全局变量进行修改更新时,内核锁死任务切换直至修改更新完成;在所述第一任务运行的同时监测任务列表中是否新进入第二任务;当新进入第二任务后,比较正在内核运行的第一任务和所述新进入的第二任务的优先级别高低;若所述第二任务的优先级低于所述第一任务,则继续按照优先级别高低依次调用任务列表中的各个任务进入内核运行;若所述第二任务的优先级高于所述第一任务,则判断内核是否处于锁死任务切换状态;若未处于锁死任务切换状态,则直接中断第一任务转而运行第二任务;若正处于锁死任务切换状态,则等待内核解除任务切换锁死状态后,再中断第一任务转而运行第二任务。

【技术特征摘要】
1.一种车载ATP实时任务调度方法,其特征在于,包括:生成至少一个可供多个任务共享的全局变量,每个全局变量指定一个任务对其进行数据修改更新;调用任务列表中优先级别最高的第一任务进入内核运行,当运行中的第一任务正对指定由其进行数据修改更新的全局变量进行数据修改更新时,内核锁死任务切换直至数据修改更新完成,运行中的第一任务可使用指定由其他任务负责数据修改更新的全局变量;在所述第一任务运行的同时监测任务列表中是否新进入第二任务;当新进入第二任务后,比较正在内核运行的第一任务和所述新进入的第二任务的优先级别高低;若所述第二任务的优先级低于所述第一任务,则继续按照优先级别高低依次调用任务列表中的各个任务进入内核运行;若所述第二任务的优先级高于所述第一任务,则判断内核是否处于锁死任务切换状态;若未处于锁死任务切换状态,则直接中断第一任务转而运行第二任务;若正处于锁死任务切换状态,则等待内核解除任务切换锁死状态后,再中断第一任务转而运行第二任务。2.根据权利要求1所述的车载ATP实时任务调度方法,其特征在于,在所述生成至少一个可供多个任务共享的全局变量之前,该方法还包括:创建多个任务,并按照各任务之间的关系分配不同的优先级;激活每个任务以分别执行各任务相应的程序代码,并在任务定时计数完成后进入到任务表等待内核调用运行。3.根据权利要求1所述的车载ATP实时任务调度方法,其特征在于,在生成至少一个可供多个任务共享的全局变量之前,该方法还包括:激活一个硬件定时器,该硬件定时器按照设定的周期递增以构建一个时间参考轴;在各个全局变量生成时或被修改更新后,立即读取所述时间参考轴上的时间数值作为该全局变量的时间戳;在各个任务被内核调用运行时也从所述时间参考轴上读取一个时间数值作为本任务的时间戳;在各个任务调用全局变量时,先获取本任务的时间戳与所调用的全局变量的时间戳的时间差值,再比较该时间差值与预设的时间阈值以确定对应全局变量的有效性。4.根据权利要求3所述的车载ATP实时任务调度方法,其特征在于,所述比较该时间差值与预设的时间阈值以确定对应全局变量的有效性,具体是:当该时间差值小于或者等于预设的时间阈值时,认定该全局变量有效;当该时间差值大于预设的时间阈值时,认定该全局变量无效。5.根据权利要求1所述的车载ATP实时任务调度方法,其特征在于,运行中的第一任务使用指定由其他任务负责数据修改更新的全局变量的具体方式是:在该第一任务的堆栈中定义一个映射的局部变量以供使用,其中该局部变量与指定由该第一任务负责数据修改更新的全局变量相对应。6.一种车载ATP实时任务调度系统,其特征在于,包括:全局变量生成模块,用于生成至少一个可供多个任务共享的全...

【专利技术属性】
技术研发人员:丁建隆何霖蔡昌俊李晋肖宝弟贾学祥郜洪民段晨宁尹逊政李博王芃陈宁宁李亮徐杰吕利民张楚潘黎晓东
申请(专利权)人:广州市地下铁道总公司中国铁道科学研究院
类型:发明
国别省市:

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

1