时间片轮转调度在微控制器C8051F020中的实现及应用
扫描二维码
随时随地手机看文章
在微机控制领域中,多数系统是实时控制系统。实时的含义是对随机发生的外部事件做出及时的响应并对其进行处理。为了更好地完成实时数据的采集、处理、存储和相应的多种实时控制操作,必须同时考虑到实时性和多任务并行性这2个因素。既要保证系统以足够快的速度对外部事件进行响应并处理,又能在宏观上并行执行多个任务。实时多任务系统依靠适当的任务调度方法来决定在系统中哪个任务可以获得CPU和其他系统资源,哪个任务暂时退出运行状态,从而达到实时处理多任务的目的。时间片轮转算法是实现多任务调度的常用算法。在这种算法中,如果将某个时间片分配给某个任务,那么在此时间片内,这个任务获得CPU并运行,然后在下个时间片到来时又将CPU分配给另一个任务。这样,并发任务在微观上交替运行,而在宏观上并行执行。
1实时多任务机制的实现
实时控制系统中允许多个实时任务并行执行,在一些测控系统中有数据采集、端口检测、模拟量输出、开关量输出数据处理和存储等多种任务。在单片机中,要达到这样的效果:在微观上,某一时刻只能运行一个任务,但在宏观上这些任务是同时运行的。
实时任务通过分时处理实现,相当于操作系统中的进程。每个任务有3种状态,即运行状态、就绪状态和等待状态,某个任务一旦建立后即处于这3种状态之一。处于运行状态的任务独占CPU 和其他一些资源;就绪状态是该任务已获得了除处理机以外的一切所需资源,运行条件满足,只因为缺少CPU而不能运行;等待状态是一个任务在等待某个事件(如其他任务的信息,等待某系统资源等)的发生而暂时停止执行。通过有效的任务调度来完成3个状态的转变。在实时多任务系统中任务调度算法的优劣直接关系到系统的实时性与并行性。
时间片轮转法是根据某一时间片的切换轮流地调度所有就绪任务的方法:将CPU 的运行时间划分为许多小的时间片,由调度程序按一定顺序分配给不同任务,每个任务分别在自己的时间片内访问CPU,中断实现系统对外界信息的实时响应,同时担当时间片切换的驱动力。考虑到不同任务的实时性要求不同,不能统一划分,我们采取以最小时间片为基准,其他时间片是他的倍数,这样就提高了系统的资源利用率。
在这种调度算法中,时间片的选择很重要,通常要考虑所要完成任务的数目、各任务的不同实时性要求、系统的处理能力等因素。
2时间片轮转调度在火车闸片摩擦系数测试系统中的应用
2.1系统分析
要模拟火车刹车的过程,完成对火车闸片的摩擦系数的测试,需实现以下几个步骤:
(1)用模拟输出端口输出0~10 V电压作为变频器的频率设定值,使变频器控制电机按升速时间将车轮转速逐步提升,按升速时间达到设定速度。
(2)据设定气压和实际气压的比较决定应该排气还是进气,并执行相应的打开/关闭进气阀或出气阀的操作,使气压达到设定值。在未测试前要不断检测气压状态,保持气压的稳定。
(3)测试按钮按下时,打开加压阀,开始刹车。由于要模拟火车的刹车惯量,电机不能立即停止,因此在加压的同时,要使变频器控制电机逐步减速。系统按降速时间降到0,在这个减速刹车的过程中,同时记录从测力传感器采集并平滑后的数据放入指定变量区。
既要保证任务的实时响应,又要实现多任务在宏观上的同时进行,我们采用时间片轮转调度算法,且根据不同任务的不同实时性要求, 以最小时间片为基准,划分不同时间片。该测试系统要实现数据采集,模拟量输出,开关量输出/读入等操作,这些操作对应的具体任务及其实时性要求如表1所示。
实时性要求相同的任务,为同一级别,用状态变量来区分任务是处于就绪状态,还是等待状态,从而决定是否分配时间片。
2.2时间片的选定
在时间片轮转算法中,时间片的大小对系统性能有很大影响。如果时间片太大,大到每个任务都能在该时间片内执行完毕,则时间片轮转调度算法就失去意义,而且可能耽 误一些实时性较强的任务;时间片过小,会使一些任务来不及响应。由上面的分析,可以看出在这个测试系统中,所要选择的基准时间片为1 ms,其他的时间片为他的倍数。
3软件设计与实现
3.1软件设计
每个子任务时间片的划分由系统时钟定时完成,系统调度程序将他分给各个子任务。系统用其内带的定时器来完成这一工作,定时频率设计为各子任务要求执行频率的整数倍。
使用CYGNAL公司的C8051F020微控制器,系统时钟选择f=11.059 2 MHz;采用定时器中断和记数来实现时间片:
主要测试任务的实时要求为10 ms,将10 ms划分为10块,一个任务执行时间为1 ms,那么每隔10 ms,一个特定任务就会调度一次,且在这10 ms内,可以让10个任务得到交替执行,既满足了实时性要求,又实现了多任务操作。其调度结构如下:
有些任务,要以其他任务的完成为前提,如:在速度未到达设定值前,不能进行测试 操作,不能执行降速任务,因而该任务处于等待状态。必须根据任务所处的状态,动态地加载任务。
在测试过程中,DA值输出为10 ms一次,每执行一个时间片,进行记数,记到n时, D A值增加25个,即以n×10 ms为周期,DA值增加一次,使变频器控制电机转速匀速上升。下降过程也同样,这样,既能保证DA值匀速上升/下降,又能根据最大DA值(10 V输出对应DA值为4 000)和每n个时间片周期内下降的DA值来准确控制上升和下降时间,将大任务分成一个个小任务来执行,提高系统资源利用率和实时性。
3.2测试系统的实现
下位机用时间片轮转调度法实现实时多任务系统。上位 机用虚拟仪器开发平台LabVIEW 实现人机界面,通过ModBUS协议和下位机通信,在指定数据区写入各设定参数,进行测试,把测试结果存放在指定数据区,取得数据后经公式换算得到摩擦系数,降速过程中每一单位速度(km/h)数对应一个摩擦系数瞬时值,得到的曲线如图1所示。
?
4结语
对于实时多任务操作系统,主要任务是对实时性要求不同的各种任务做出及时响应。
在单片机中引入时间片轮转调度的任务分配方法,有 效地改善了系统的结构,系统可以在宏 观上并行执行各种任务, 使资源的利用率进一步提高;并使其在事件发生时能够在严格的时 限内做出响应,从而实现了实时多任务的测控系统。
参考文献
[1]马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计[M] .北京:北京航空航天大学出版社,2001.
[2]徐士良,朱明方.软件应用技术基础[M].北京:清华大学出版社 ,2000.
[3]庞丽萍.操作系统原理[M].武汉:华中理工大学出版社,1987.
[4]李刚,林凌.与8051兼容的高性能高速单片机C8051FXXX系列[M].北京:北京航空航天大学出版社,2002.