W1WW_P4LCJS_COM-PLC-技.术_网
1 引 言 WWW_PL※CJS_COM-PLC-技.术_网
现代仪器仪表产品已成为最具典型性的高科技产品。随着科技发展,仪器仪表正朝着数字化、智能化、网络化、微型化、高性能、高可靠性、高稳定性的方向发展[1]。面对行业发展需求,仪器仪表产品在软件上有必要引入新的设计思想和方法。WWW.PLCJS.COM——可编程控制器技术门户
WWW_P※LCJS_COM-PLC-)技.术_网
2 仪器仪表存在的问题WWW_PL※CJS_COM-PLC-技.术_网
早期的仪器仪表,考虑成本,性能等方面的要求,大多基于8位和16位单片机按单任务顺序机制进行软件开发,因此不可避免地存在中断延迟与频繁复位问题。由于应用程序是一个无限的大循环,所有的事件都必须按顺序执行,由大循环程序调用相应的函数完成相应的操作,而与时间相关性较强的事件只能靠定时中断来保证。但中断服务提供的信息一直要等到后台程序运行到中断标志位时才能得到相应处理[2],最坏情况下的任务级响应时间取决于整个循环的执行时间。由于仪器仪表所处的运行环境干扰较严重,常导致程序跑飞或是陷入死循环,影响系统稳定运行,一般只能依靠看门狗复位重新启动后再投入运行。WW.W_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
近年来在通信、电子、自动化等领域,随着高端单片机以及32位系列芯片应用的普及,引入嵌入式的实时操作系统既能满足复杂的应用需求又能充分发挥硬件功能[3]。现在采用嵌入式操作系统以提高系统实时性与稳定性已成为主流。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLC※JS_COM-PmLC-技.术_网
本文讨论采用嵌入式实时操作系统统μC/OS-II,借助操作系统提供的消息邮箱服务,设计仪器仪表系统中的监控任务,较好地解决了仪器仪表的实时性和稳定性问题。WWW_PLC※JS_COM-PmLC-技.术_网
plcjs.技.术_网
3 基于邮箱监控的系统设计WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
μC/OS-II是一种免费的且源码公开的嵌入式操作系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。其内核提供任务调度与管理、时间管理、任务间的同步与通信、内存管理和中断服务等功能,最小可编译至2KB左右,很适合用于小型控制系统应用,以下对一些关键技术作些讨论。WWW_PLC※JS_COM-PmLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
3.1 任务优先级与调度P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
基于操作系统的应用程序设计过程,就是把问题分解成多个任务的过程。每个任务都是整个应用程序的某一部分,无限循环地各自实现某一特定的功能。每个任务被赋予一定的优先级,有自己的一套CPU寄存器和栈空间。将复杂问题分解成各自独立的多个任务进行设计,可以简化应用软件的开发难度,并有助于从整体上提高系统的稳定性与可靠性[4]。WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
μC/OS-II控制下的任务可以分为休眠态、就绪态、运行态、中断态和挂起态。在仪器仪表系统中,为节省存储器空间不会保留休眠态的任务。正在使用CPU的某个任务处于运行态。当系统运行时,如某一就绪态任务优先级高于该运行态任务的优先级时,内核的任务调度服务就会将该运行态任务转入挂起态,以等待某一消息或信号量[5],或者转入就绪态。处于就绪态中拥有较高优先级的任务将占有CPU的使用权而转为运行态。挂起态任务在所规定的时间内,如果得到所期待的数据(可能是消息邮箱,也可能是信号量等),就将自动转为就绪态;如果等待超时,将被时间管理模块强制转化为就绪态,等待任务的调度。当中断发生时,系统将强行剥夺运行态任务对CPU的使用权,将其转入中断态,在保存相关数据到堆栈区之后,执行相应的中断服务程序。在中断返回时,系统返回函数重新进行任务调度,将优先级最高的就绪态任务转为运行态。多任务运行的实现实际上是由CPU的转换、调度完成的,图1是任务状态切换示意图。WW.W_PLC※JS_C,OM-PL,C-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
plcjs.技.术_网
3.2 任务的设计WWW_P※LCJS_COM-PLC-)技.术_网
仪器仪表系统中常用的有4个任务模块:信号采集模块、信号处理模块、控制运算模块和输出模块,并按照上述顺序从低到高依次设定优先级,即信号采集任务优先级较低,输出任务优先级较高。输出任务可以是对键盘、触摸屏的响应或液晶显示,作为人机交互信息最直接的通道,能否实时地响应用户的需求直接影响到用户满意程度。所以将输出任务的优先级设定较高,只要系统进入就绪态就可及时响应,可很好地解决在单任务环境下很难解决的键盘查询和显示处理的实时性问题。任务优先级均设定为静态优先级,在运行过程中任务优先级不变。WWW_PLC※JS_COM-PmLC-技.术_网