摘要:传统嵌入式系统软件设计中广泛采用单任务顺序机制,它常带来的重要问题是系统安全性差,这将导致系统频繁复位以致无法达到设计目标。为此本系统在软件设计中引入嵌入式操作系统uC/OS-II并设计监视任务实时监视系统运行,使该问题得到了较好的解决。
关键字:嵌入式操作系统;监视任务;消息队列;安全性能
在传统的嵌入式系统软件设计中,多采用单任务顺序机制。此机制的优势在于流程直观,但它常带来一个重要的问题--系统安全性差,即程序运行中任一环节出错都会导致系统混乱,只能依靠看门狗复位重新运行。在焊缝跟踪系统中,弧光干扰严重,若存在单任务顺序机制,虽存在多种硬件高层干扰措施,系统有时仍需频繁复位以致无法达到系统。为此在焊缝轨迹智能跟踪系统中,作者将实时嵌放式操作系统uC/OS-II用于单片机80c196的软件设计中,并设计监视任务,较好地解决了该问题。uC/OS-II是一种免费的操作系统且源代码公开,其可靠性已在许多应用中得到了证明。
1 系统概
述
系统设计目标为:在TIG焊条件下,焊接速度为24cm/min时,焊头与焊缝偏差小于1mm。
系统的设计思路为:采用电弧传感器采集焊头相对焊缝不同位置时的焊接电流信号,将此信号经信号处理得焊头相对于焊缝的偏差置,此偏差量经控制运算后得相应的控制信号。将此控制信号输出到电机,从而改变焊头与焊缝的偏差。
系统的功能块有信号采集、信号处理、控制运算、输出等。另外由于本系统的弧光干扰严重,为防止程序运行中因一个环节出错而导致系统混乱以致无法控制焊头与焊缝的偏差,本系统设计了监视模块用来及时纠错。
系统结构图如图1所示,由外而内可分三层,分别为硬件电路层、任务层及操作系统层。
2 硬件电路层设计
本系统的硬件电路层包括一块信号采集板和一块驱动板。前者的用途在于从电弧传感器获取电流信号并将其转换成电压信号。此电流信号能有效表征焊头与焊缝的位置关系www.cechina.cn,此电压信号将被任务层的信号采集任务获取。后者的用途在于制任务层中输出任务产生的命令(此命令作用于单片机输出口)传输到电机,从而改变焊头和焊缝的偏差。
3 任务层设计
3.1 系统任务层组成及其优先权设置
系统任务层并行存在的几个任务依其优先权从高到低依次为:监视任务、输出任务、控制运算任务、信号处理任务、信号采集任务。优先权的设置由各任务的执行顺序以及对系统安全性影响的大小决定。本系统采用静态优先权,即运行过程中任务优先权不变。
3.2 任务的状态
本系统中各任务的状态有4种:等待态、就绪态、运行态以及中断态。状态的转换关系如图2所示。
当一个任务点用CPU时该任务处于运行态,其优先权必较所有就绪态任务优先权高。若系统运行导致就绪态某一任务的优行权高于运行态任务优先仅,则调用调度函数,运行态任务将丧失对CPU的占用权而转为就绪态,优先权最高的就绪态任务转为运行态。某一时刻只能有一个任务处于运行态。任务在就绪态和运行态间的转化被称为任务切换。
当运行态的任务期待某一消息时(即别的任务和该任务的数据传递,本设计中任务间的数据传递被称为消息),该任务将丧失对CPU的占用权而转为等待态,等待时间可由系统设定。若等待时间内该任务收到消息,任务将转为就绪态,否则将被时间管理函数强行转为就绪态。
中断发生时运行态的任务将转入中断态,丧失对CPU的占用权。因为断中可能有消息发送使等待态的任务转入就绪态,故中断返回后将首先运行调度函数,决定任务状态。
3.3 任务的构成
系统中每个任务均有以下三部分组成:应用程序、任务堆栈以及任务控制块。其中只有应用程序被烧入ROM控制工程网版权所有,而任务本身则置于ROM,待系统运行时再予于建立。
任务堆栈以存储CPU寄存器内容。当某任务由运行态变为其它状态时CONTROL ENGINEERING China版权所有,CPU寄存器内容压入相应任务堆栈,反之则将相应任务堆栈内容置入CPU寄存器。
作为系统中定义中一个数据结构,任务控制块的内容包括任务堆栈的地址、任务当前状态、任务优先权等。操作系统通过查询任务控制块内容实现对任务的管理。
3.4监视任务的设计
因系统工作环境干扰强烈,虽已采取多种软硬件抗干扰措施如光电隔离、软件陷阱等,仍有可能因瞬间扰动使系统陷入混乱,导致 系统只能依靠看门狗复位重新运行CONTROL ENGINEERING China版权所有,以致无法实现设计目标。为此本系统采用监视任务监督其它任务是否正常运行CONTROL ENGINEERING China版权所有,若未能正常运行则采取相应措施以尽量减少看门狗复位次数。
监视任务设计思路为:被监视任务正常运行时其执行时间是可预估的,被监视任务在其即将运行完毕时向监视任务发送消息说明自身