基于实时多任务操作系统的蒸汽流量仪的设计

   2023-09-13 互联网2200
核心提示:  摘 要  介绍了一种基于嵌入式实时多任务操作系统的高精度蒸汽流量仪的设计。仪表硬件平台选用FreescaleM68HC908AZ60单片

  摘 要  介绍了一种基于嵌入式实时多任务操作系统的高精度蒸汽流量仪的设计。仪表硬件平台选用FreescaleM68HC908AZ60单片机,运行自主研发的FDCX08操作系统,支持现场总线通信。通过引入多任务调度和模块化的软件设计,解决了传统仪表单任务顺序执行和实时性差的缺点,增强了系统的可靠性和可移植性;蒸汽计算模型使用IAPWS-IF97公式,精度高。

  0 引 言

  在工业生产中,流量是最基本的过程参数之一,直接反映了生产效率和经济效益,需要经常进行测量和控制,以单片机为主体的智能化流量仪表得到了越来越广泛的应用。传统的仪表,多采用单任务顺序执行的设计方案,软件是一个无限循环,各模块构成一个整体,作为一个任务运行,异步事件和时间相关性很强的关键操作靠中断服务来保证。这种设计方案的优势在于:程序较为直观,但系统的实时性、稳定性较差,完全依赖于设计工程师的经验和水平,只要一个模块出错卡住,整个系统工作就会被打乱,只有等待看门狗进行硬复位。随着生产自动化程度的提高,对仪表的精度和实时性的要求越来越高,仪表所包含的功能和软件的复杂性成倍增长,我们通过实地调研发现,采用单任务机制设计的仪表,当软件复杂性和规模超过一定程度后,在实际运行中,会出现人机界面响应迟缓,看门狗频繁执行复位操作的现象,严重影响仪表的正常使用。

  针对这种情况,我们通过引入多任务调度和RTOS对前述问题加以解决,基于自主研发的FDCX08实时多任务操作系统,在FreescaleM68HC908AZ60单片机上设计并实现了一种新型的蒸汽流量表。除了流量积算功能,我们还加入了控制输出功能和对CAN总线的支持,可以对生产过程进行反馈控制,并和CAN总线上其他节点进行通信,充分做到了一表多用。工程实践表明,这种设计方案较好地解决了仪器仪表实时性和稳定性的问题。

  1 总体结构设计

  该仪表主要由温度、压力传感器、流量传感器、反馈输出电路和二次仪表组成,支持CAN总线通信。系统的硬件结构图如图1所示。

  

  作为通用型流量表,为了配合各种常见的传感器,我们为其设计了丰富的输入通道,包括1路频率输入, 8路开关量输入和6路A/D输入。其中A/D输入通道支持4-20mA, 0-10mA, 0-5V,热电阻Pt100,K、E分度热电偶以及半导体结等;频率通道输入范围从20Hz到200kHz,使用AZ60的时钟模块的输入捕捉功能计算输入信号的周期,然后通过周期计算频率。输出部分设计了三种不同的输出通道: 1路可控硅输出, 2路标准模拟量输出, 8路开关量输出。

  12位A/D输入和D /A输出采用现成芯片,通过SPI与MCU连接。考虑到仪表所处环境可能较为恶劣,为了避免现场强电的干扰, SPI和开关量输入输出均采用光电隔离技术,使MCU与现场信号之间完全隔离,提高抗干扰能力。

  核心MCU选用FreescaleM68HC908AZ60。它是M68HC08系列高速8位微控制器的一种,内置MSCAN08控制器,支持CAN 2. 0 A/B规程;内部总线频率高达8. 4MHz;具有16位寻址模式, 16位变址寄存器和栈指针, 60KB闪速存储器(具有在线编程能力和保密功能), 1KB E2PROM, 2KB内部RAM,保证性能的同时降低了成本。

  2 软件设计

  2. 1 FDCX08实时操作系统概述

  FDCX08(Fudan Distributed Control eXecutive),是复旦大学嵌入式系统实验室专为单片机设计的,具有自主知识产权的嵌入式实时多任务操作系统。和其他RTOS如μC/OS、μCLinux  相比,FDCX08实时性好,有针对CAN/LIN总线设计的通信设施,小巧精悍,整个系统完整编译的目标文件只有2KB多,而μC/OS最少也需要6KB,优势相当明显。相比之下, FDCX08更适合应用于工业控制领域和智能仪表中。

  FDCX08采用基于优先级的抢占式调度,不支持动态优先级。每个任务的TID即为其优先级,TID越大优先级越高,最多可以支持16个任务同时运行,每个任务都有自己的上下文,包括寄存器堆、栈指针和堆栈区等。FDCX08的结构如图2所示(图中虚线部分在软中断中实现,其它部分在各自的中断服务子程序中实现)。

  

  邮局是FDCX08最具特色的部分,它不仅支持同一现场节点内的任务之间进行通信,还支持跨现场总线的两个不同节点内的任务进行通信。应用层的任务在使用邮局时,完全可以忽略CAN/LIN总线的通讯规程细节。

  除邮局外, FDCX08还提供了信号量、中断控制,实时时钟等服务。信号量是实现任务间的同步或互斥,对共享资源进行保护,避免出现竞争或死锁的有效手段;时钟服务实现了对任务的定时、等待超时等功能,它和中断处理服务一起,是系统硬实时性的保证。

  2.2 任务划分

  对于一个实时多任务系统,考虑到系统重入问题,在进行任务划分时,一般将相同或者近似的功能尽量集中在同一个任务中实现,各个任务之间彼此相对独立:

  1)数据采集任务InputTask,负责按照各个输入通道的采样周期进行A/D采样和读取开关量;

  2)流量计算任务FlowCalcTask,根据数据采集任务采集到的工况数据,按补偿数学模型经计算得到流量;

  3)三个控制任务ControlTask1, 2, 3,每个控制任务代表一种控制通道,按预设的控制方式和控制参数计算控制输出,支持的控制方式包括普通PID控制和程序PID控制;

  4)输出任务OutputTask, D /A输出直接在任务中实现,继电器输出和可控硅输出必须通过定时器中断实现,任务中只进行初始化和参数设置;

  5) CAN总线收发任务CANTask;

  6)按键扫描任务KeypadTask;

  7)显示任务DisplayTask;

  8)监控任务MoNItorTask。

  监控任务优先级最高,它定时喂看门狗,并监视其他任务是否工作正常;数据采集和计算、控制,以及输出任务等需要较强实时性的任务,占据除监控任务之外最高的优先级;作为人机接口的按键扫描任务和显示任务只要具有适中的优先级,使操作员感觉不到明显的延迟就可以了; CAN总线收发任务只有在需要发送或者发生CAN接收中断的时候才唤醒执行,平时处于睡眠状态,给予最低的优先级。

  任务总体结构图如图3所示。如果用户有需要,可以很容易地增添其他任务以实现功能的扩充。

  

  

2.3 流量计算任务的设计

  流量计算是一个特殊的模块,它作为仪表的核心,主要是进行数学计算,不需要直接和硬件打交道,我们单独作为一个任务来实现。

  按照预定设计,本仪表的适用范围是0. 1-22. 064MPa, 0-600℃。这个区域涵盖了饱和蒸汽线和一部分过热蒸汽,它在IAPWS-IF97公式中的位置如图4所示。

  

  过热蒸汽和0-350℃这一段饱和曲线,计算公式同属于IAPWS-IF97公式第2区。过热蒸汽的密度和比焓是温度和压力的二元函数,要找到精度足够且形式简单的近似表达式相对困难,因此直接采用IAPWS-IF97第2区公式,这是目前精度最高的方法。

  利用IAPWS-IF97第2区的导出公式,可推导出密度表达式(压强单位为MPa,温度单位为℃,密度单位为kg/m3)如下式:

  

  

  插值用Matlab实现,为了避免高次插值带来的振荡,经反复试验,将区间分为三段,分段应用Lagrange插值。最终得到的拟合多项式系数如表1所示。

  

  流量计算任务运行时,先调用蒸汽状态判断子程序判断蒸汽状态,以决定使用哪个公式。判断的方法是:根据当前工况状态下压力p或者温度t,计算对应的饱和蒸汽温度ts或饱和蒸汽压ps,再与t或p对比,若t>ts或者p ts或者p=ps,则为饱和蒸汽,除此之外说明已经进入过饱和蒸汽状态,过饱和蒸汽极不稳定,除非极度纯净,否则只要有凝结核,就会析出水后会变成饱和蒸汽,工业用蒸汽一般都含有杂质,故我们仍按照饱和蒸汽来对待,同时设置报警位。

  

3 系统运行过程

  系统上电后,首先对开关量输入输出、E2PROM和PLL进行初始化,然后初始化CAN,创建信号量和消息队列,对全局变量进行初始值设定;接着初始化各任务堆栈,依次创建各个任务并将所有任务都置为就绪状态,最后启动FDCX08。

  由于监控任务优先级最高,得以最先执行,监控任务分别查询每个被监控任务是否如期发来心跳包,如果没有,则该任务主动将自己挂起,并设置超时时间。按照优先级顺序,数据采样任  务将投入运行,执行A/D采样和读取开关量,执行数字滤波和其他预处理后,将结果送入公共缓冲区1,通知计算任务就绪,并向监控任务发送心跳包,然后将自己挂起。

  监控任务收到心跳包后转为就绪态,抢占CPU得以运行,继续查询其它被监视任务的运行状况,如果没有,则进入挂起态,再次等待其它被监视任务的运行消息,系统按任务优先级继续执行优先级高的就绪态任务,在本系统中流量计算任务将投入运行。尽管控制任务优先级比流量计算任务优先级高,但是控制任务必须等待流量计算任务的计算结果。流量计算任务在计算完成后,结果送公共缓冲区2,通知控制任务就绪,并向监控任务发送心跳包。执行过程依此类推。由于系统监视任务正常情况下只是查询消息量,程序执行时间很短,甚至可以忽略,所以并不影响其他任务的执行。

  作为整个仪表的核心模块的流量计算任务,其总流程图如图5所示(kα和kε分别为流量系数非线性补偿系数和差压式流量计气体流束膨胀系数补偿系数)。

  

  4 结 论

  本文给出了一个基于自主研发的FDCX08嵌入式实时多任务操作系统的蒸汽流量表的实现方案。实验表明,本系统相对任务切换时间仅为7. 5μs,相对中断延迟时间为1μs;仪表的误差集中于350-373. 4℃区间,在设计范围内的最大相对误差为-0. 109962%,发生在饱和蒸汽线的右端点处,除此之外都在0. 01%附近,插值区间上的最小相对误差为-0. 008595%,加权平均误差为-0. 024492%,整体精度较好。插值区间绝对误差的分布如图6所示。

  

  经过一段时间的实际使用表明,这种在工控仪表中引入嵌入式实时多任务操作系统的设计方案,解决了传统单任务设计下无法回避和解决的问题,极大地提升了仪表的实时性、稳定性和测量精度,为工控系统和智能仪表的设计提供了一种新的思路。

  参 考 文 献

  [ 1 ] The InternationalAssociation for the Properties ofWater and Steam.Release on the IAPWS IndustrialFormulation 1997 for the Thermody-namic Properties ofWater and Steam [R]:Erlangen,Germany, 1997.

  [ 2 ] WagnerW, Kruse A. Properties ofWater and Steam [M]. Berlin:Springer-Verlag, 1998.

  [ 3 ]张友德,涂时亮,陈章龙.M68HC08系列单片机原理与应用[M].上海:复旦大学出版社, 2001.

  [ 4 ]涂时亮,张友德,陈章龙.单片机微机软件设计技术[M].重庆:科学技术文献出版社重庆分社, 1988.

  [ 5 ] Freescale Semiconductor, Inc.MC68HC908AZ60 Data Sheet.

  [ 6 ]姚勇,涂时亮.基于CAN/LIN总线的实时操作系统的设计与实现[J].计算机工程, 2007, 33(10): 265-367, 279.


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅