一种基于TMS320F2812的实时多任务控制系统软件设计方法的研究

时间:2022-04-19 11:52:02

一种基于TMS320F2812的实时多任务控制系统软件设计方法的研究

摘要:本文提出了基于TMS320F2812设计实时多任务控制系统软件的一种设计方法,即综合利用TMS320F2812的中断系统、CPU定时器及程序切割法,将控制系统中实时性要求相对较低、执行周期相对较长的子程序切割为几部分合理有序的安排在CPU空闲时间段执行,保障关键子任务的实时性。本方法已在某型微型燃机控制系统中得到了成功应用。

关键词:实时多任务控制系统 TMS320F2812 中断 定时器 程序切割法

中图分类号:TN79 文献标识码:A 文章编号:1007-9416(2011)12-0137-02

控制系统一般需要并行执行多个子任务,如模拟量数据采集、开关量输入扫描、数据存储、PID控制计算、模拟量输出、开关量输出、串口通讯等。对于单核处理器来说,同时执行多个子任务是不可能的,只能是以极快的速度按照任务的轻重缓急顺序完成各个子任务,使其看起来像是同时在执行。

对于不同的子任务有着不同的实时性要求。对于某型微型燃机控制系统来说,其PID控制子程序要求20ms调用1次,而串口通讯子程序,则要求500ms才调用1次,但调用1次其执行的时间却大于实时性要求较高的PID控制子程序的调用周期20ms,即一旦开始执行串口通讯子程序,PID控制子程序将无法按要求的时间间隔被调用执行。

对于一个实时多任务控制系统,应根据子任务不同的实时性要求来调用各个子程序,使其即使在最恶劣的情况下也能够被一一实时执行。

所谓实时,是指信号的输入、计算、存储和输出都要在一定的时间范围内完成,亦即计算机对输入信息,以足够快的速度进行控制,超出了这个时间,就失去了控制的时机,控制也就失去了意义[1]。

所谓多任务,是指控制系统需要并行执行多项工作。

如何使长执行周期的子程序(如串口通讯)得到完整执行,又能保证高实时性的子程序(如PID控制)被及时调用,这是设计实时多任务控制系统软件的一个关键问题。

TMS320F2812是一款用于控制的高性能、多功能、高性价比的32位定点DSP芯片,最高可在150MHz主频下工作。TMS320F2812片内集成众多资源,并一改传统的冯・诺依曼结构,采用了先进的哈佛总线结构,使数据的吞吐率提高了一倍[2]。TMS320F2812的高性能使其在处理速度、精度方面要求高的领域得到了广泛的应用。

基于tms320f2812设计实时多任务控制系统软件,综合利用其3级中断系统、片内32位CPU定时器以及TI专为定点处理器设计的快速浮点运算函数库IQmath,使用以程序切割为核心的程序设计方法设计实时控制程序,能够开发出满足某型微型燃机控制要求的实时多任务控制系统软件。

1、中断系统在实时多任务控制系统中的应用

中断的灵活使用不仅能够实现最高级别实时子程序的调用,而且合理的中断安排可以提高事件执行效率。

TMS320F2812的中断系统为3级中断,分别为外设级、PIE级以及CPU级,如图1所示。对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断[3]。

在微型燃机控制系统中,故障报警、紧急停机等紧急事件可以利用中断触发其相应的处理程序被立即执行,满足其对实时性的最高要求。

2、程序切割法

正如引言中所提到的,一旦长执行时间的子程序被主程序调用,调用周期较短的子程序将不能够按设计要求被及时调用,从而影响控制器的控制性能及响应事件的实时性。

我们以微型燃机控制系统PID控制子程序和串口通讯子程序为例进行研究说明。系统要求每20ms调用1次PID控制子程序,执行1次PID控制子程序的时间大约为2ms。串口通讯子程序为每500ms执行1次,执行1次大约需要100ms。串口通讯子程序一旦被主程序调用执行,在其执行完毕前PID控制子程序将无法被调用。如何既能够使串口通讯子程序被执行,又能使PID控制子程序按设计要求的20ms调用周期被实时调用?

注意到PID控制子程序两次调用时间间隔虽然为20ms,但每次的执行时间仅为2ms,CPU还有大约18ms的空闲时间(暂假定系统只有PID控制和串口通讯两个子程序需要执行)。串口通讯子程序1次执行时间虽然为100ms,但调用周期为500ms,即在500ms内执行完整个通讯程序即能满足其实时性设计要求。

一种有效的解决方案是将串口通讯子程序切割为几个执行周期很短(小于CPU空闲时间18ms)的子程序,分别安排在PID控制子程序执行后被执行,每个子程序只完成很少数据的传输任务,经过多次调用即可完成1次完整的数据通讯任务,与PID控制子程序合计总执行时间小于500ms,能够满足通讯任务的实时性能要求。这就是本文提出的实时多任务控制系统的程序切割设计方法。

通过程序切割法还可以对控制系统中其它子程序进行切割分步执行,满足其不同的实时性要求。

3、CPU定时器在实时多任务控制系统中应用

对于一个实时多任务控制系统,许多子程序的调用与相对时间有关,如20ms调用一次PID控制程序、500ms调用一次串口通讯子程序、点火操作最长时间为10秒等。

显然使用延时程序不但不容易实现精确定时,更重要的是会占用CPU时间,不利于实现实时多任务控制系统的设计。

一种有效的方法是利用TMS320F2812片上的CPU定时器进行定时,由定时中断子程序去判断时序,触发相应的子程序,可以很好的协调不同实时性要求的子程序有序执行。

TMS320F2812器件上有3个32位CPU定时器(TIMER0/1/2)。当TMS320F2812运行在150MHz时,CPU定时器可以触发最短6.67ns定时周期的定时中断。

本文提到的基于TMS320F2812设计的某型微型燃机控制系统,对各个子程序设置一个启动标志变量,启动CPU定时器,定时周期设置为4ms。在定时器中断服务子程序中对定时中断次数进行计数,以实现4ms分辨度的精确计时,并根据计数结果改变相关子程序启动标志变量值。主程序依次判断各个标志变量值,根据判断结果调用相应的子程序,使各个子程序能够按照固定的时间间隔被启动执行。程序流程图如图2~3所示。

从图中可以看出,每次CPU定时器中断(即4ms)启动1次ADC转换子程序,每5次定时中断(即20ms)执行1次PID控制子程序,并执行某1个序列号的串口通讯子程序,在最后1个序号的串口通讯子程序中将通讯子程序启动标志变量置0,停止执行通讯子程序。每125次定时中断(即500ms)重新启动串口通讯子程序,将启动标志变量置1。

4、试验验证

使用上述设计方法设计的基于TMS320F2812的某型微型燃机控制系统经试验验证,能够满足系统多任务的功能要求,也能够满足各个子任务的实时性能要求。图4为试验中控制系统上位机界面。从图中可以看到控制器通过串口实时向上位机传输上来的燃机运行状态数据。

5、结语

本文提出的基于TMS320F2812的实时多任务控制系统的设计方法已在某型微型燃机控制系统中得到应用。经试验验证,利用该方法在单核信号处理器TMS320F2812上设计的实时多任务控制系统软件可靠,能满足系统各个子任务实时性能的要求。

参考文献

[1]于海生,丁军航.微型计算机控制技术(第2版).清华大学出版社,2009.

[2]孙丽明.TMS320F2812原理及其C语言程序开发.清华大学出版社,2008.

[3]TEXAS INSTRUMENTS.TMS320x281x DSP System Control and Interrupts Reference Guide,2008.

[4]王潞钢,陈林康.DSP C2000程序员高手进阶.机械工业出版社,2005.

上一篇:基于数据挖掘的汽车销售CRM系统设计 下一篇:基于web的精品课程平台设计