基于uC/OS-II的齿轮流量计二次仪表的设计
引言
随着工业生产和技术的不断发展,流量测量的对象越来越多,精度要求也越来越高,新的测量方法和测试仪器也不断涌现。但依据信号输出类型,各种流量计总是可分为开方式模拟量输出流量计、线性模拟量输出流量计、脉冲式输出流量计。例如,差压式流量计属于开方式模拟量输出流量计,流量同输出信号的开方成线性关系;线性模拟量输出流量计有电磁流量计、质量流量计、旋进漩涡式流量计等,这些流量计的输出信号与流量成线性关系;脉冲式输出流量计包括容积式流量计、涡轮流量计、涡街流量计、插入式流量计等,这些流量计的发信器输出脉冲信号,一个脉冲代表一定体积的流量。
对于不同信号类型输出的流量计,二次显示仪表的测量原理都是不一样的。例如:线性模拟量输出流量计,二次仪表测量模拟量(如4-20mA)信号,经过线性转换之后就得到瞬时流量,然后根据瞬时流量进行累积运算;对于开方式模拟量输出流量计的测量,需要在模拟量的测量后增加开方运算,开方后经过线性转换得到瞬时流量,再根据瞬时流量进行累积运算。从这两种流量计的测量方法可以看出,二次显示仪表从一次表获得的参数只有瞬时流量,而累积流量是二次表内部对瞬时流量的积分运算后得到的,即M=ƒ Ftdt,式中:M为累积流量;Ft为瞬时流量。对于脉冲式输出流量计,二次表通过测量脉冲频率,经过线性转换后得到瞬时流量,而对于累积流量的测量,也可以通过对瞬时流量的积分运算获得。
本文针对脉冲式输出流量计的特点,提出一种以LPC2119处理器为核心,以uC/OS-II嵌入式操作系统为软件平台,可以自动调零,线性化,补偿环境因素变化,并配以LED显示并具有超量程报警输出,具有CAN总线输出接口的智能型脉冲式输出流量计专用二次仪表。
1 频率测量方法
脉冲式输出流量计的脉冲频率一般在10KHz以内,如涡街流量计输出频率为0~5KHz,容积式流量计更小,一般只有几百Hz,甚至几十Hz。流量计输出脉冲一般不是很均匀的脉冲,例如容积式流量计(又称定排量流量计,简称PD流量计),利用机械测量元件将流体连续不断地分割成单个已知的体积部分,根据测量室逐次重复地充满和排放该体积部分流体的次数来测量流体体积总量,其内部测量元件的转动通过磁性密封联轴器及传动齿轮减速机构传递给计数器,并附加发信装置输出脉冲信号,由于机械传动部分不可避免地存在输出脉动和噪音,在一个转动周期内,脉冲的分布不均匀。对于这样的脉冲信号,就需要有一种合适的频率测量方法来提高测量精度和响应速度,并解决瞬时流量的跳动和抗干扰问题。
通常采用的频率测量方法有两种:测频法,就是在一定的时间间隔T内,对输入的周期信号脉冲计数为N,则信号的频率为f=N/T,这种方法适合于高频信号的检测;测周法,通过计数器计量输入信号n个周期内所用的时间为T,则信号的频率为f=n/T,这种方法适合于低频信号的测量。两种方法各有优缺点,测频法适合于高频信号的测量,但对于像容积式流量计输出的低频信号,测量精度低,不宜采用;测周法适合于低频信号的测量,为了提高精度,一般在多个被测信号周期内计量标准信号的脉冲数,但这样会增加采样时间,降低响应速度。
本文所设计的二次仪表在测量频率时将测频法和测周法二者有机地结合起来,充分利用它们的优点,以达到在较宽的频率范围内有较好的精度和响应速度。初始情况下以时间T1为计时时间,首先采用测频法对输人频率脉冲进行计数N1,若计时时间中止时N1为零,则表明输入脉冲频率低于该计时时间所能测到的最低频率1/T1,应改用测周法重新对该输入脉冲进行测量。每次测周法测量完毕后,还要将当次测量结果与临界频率1/T1X110%相比较,若fx>1/T1×110%则下次计算频率时改用测频法对脉冲进行测量。在此设定临界频率为1/T1×110%,主要为消除输入脉冲频率刚好位于1/T1附近,而带来两种测量方法的频繁切换影响频率测量的相应速度。
2 系统硬件组成
在实际工程环境下,流量计传送的流量脉冲信号较微弱,同时受外界环境影响,信号携带大量噪声,故电路配置了光耦隔离电路和运放电路进行信号整形,然后送入LPC2119单片机的定时器/计数器1;在液压系统的流量测量中,为保证测量的精度,需要实时采集液压油的温度作为补偿信号,电路中设置了温度信号输入接口,可直接将管路上的温度传感器信号直接接入仪表,经有源滤波和调理电路后,送入LPC2119单片机;在通讯方面,采用LPC2119内部所带有的串口和CAN总线收发单元,直接完成向上位机传送数据的任务;人机界面采用6位8段数码管和三个按键。
LPC2119单片机
LPC2119单片机是飞利浦半导体公司最新推出的一款基于支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU的微控制器,并带有128k字节嵌入的高速Flash存储器,通过片内PLL可实现最大为60MHz的CPU操作频率。由于LPC2119较小的64脚封装、极低的功耗、2个32位定时器、4路10位ADC、1路CAN以及多达9个外部中断使它特别适用于各种仪器仪表,测试单元,工业控制单元中。本设计选用LPC2119单片机作为仪表的核心,由于本身集成了较多的功能模块,这样无需其他过多外围器件支持,使得整个仪表的可靠性和整体成本大大降低。
E2PROM存贮电路
CAT24WC01是一个1K位串行CMOS E2PROM,内部含有128个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗,CAT24WC01有一个8字节页写缓冲器,I2C总线接口进行操作,并有一个专门的写保护功能。仪表中用户所设值的高低报警值,量程范围的值,通讯方式都存放在这里,以方便掉电后可以重新读取。
通讯电路
CAN-bus是一种多主方式的串行通讯总线,有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。CAN总线还具有传输距离远,多主机,时间同步多点接受等特性。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN-bus已被广泛应用到各个自动化控制系统中。由于LPC2119内置了CAN总线控制器,故只需在外围添加一个CAN收发器TJA1050即可实现CAN总线的通讯。本仪表还提供串口通讯方式和上位机传输数据。
数码管显示和按键电路
数码管和按键均由LPC2119的普通I/O驱动。面板中央6位8段数码管动态显示当前流量值,依据用户所设量程小数点的位置会浮动显示。当流量超过设定界限时,高报警灯HI或低报警灯LO点亮,继电器同时吸合,从仪表后面板输出相应的信号。按键功能依次为保存切换键,光标左移键,数值加一键,用户通过面板按键可以设定采用CAN总线或UART来实现通讯,并可以设定脉冲当量数,用户量程,高低报警界限等参数。
3 软件设计
uC/OS-II是源代码公开的实时嵌入式操作系统,它具有可移植性强、可裁减、完全抢占式多任务的实时内核、任务栈、系统服务、可固化、稳定性、中断管理等特点,包含了任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列等)和内存管理等功能。它是面向中小型嵌入式系统的,包含全部功能模块的内核大约为10KB,如果经过裁减只保留核心代码,则可压缩到2KB左右。由于结构简单,源代码量少,对处理器及外围电路的要求不高,因此非常适合于应用在仪器仪表的内嵌微控制器。
仪表采用uC/OS-II操作系统做为软件开发的平台,并在上面开发数据队列、I2C总线驱动,CAN总线驱动,串口驱动等中间件,uC/OS-II上创建任务时只需调用这些中间件就可以完成对实际硬件的操作。左图4说明了uC/OS-II的软硬件体系结构。应用程序处于整个系统的顶层,每个任务都可以认为自己独占CPU,因而可以设计成为一个无限循环。uC/OS-II处理器无关的代码提供了uC/OS-II的系统服务,应用程序可以使用这些API函数进行内存管理、任务间通信以及创建、删除任务等。由于设计uC/OS-II时就考虑到了在不同处理器上移植,因而移植uC/OS-II实际上需要修改的代码量很小,其中需要修改的部分只是与处理器相关部分的文件。在uC/OS-II的官方网站www.uC/OS-II.org提供了uC/OS-II在一百多种处理器上的移植代码,其中也包括针对LPC2119处理器的移植源代码,故具体移植过程和方法再此就不多叙述。
任务建立
根据仪表的功能要求,系统设计了频率测量,数据传输,A/D采集,数码管显示,仪表参数设置5个任务具体程序流程图详见图。每个任务都有自己的名称、内存空间和优先级。不同的任务必须有不同的优先级,它们可以是0~62之间的任意值,数值越小优先级越高。优先级的设置有不同的依据,以本仪表为例,频率测量的任务对时间要求最苛刻,该任务的实现频率直接关系到仪表的精度和响应速度,优先级设为最高;串口通讯或CAN总线通讯要及时将所测流量值传送给上位机,优先级设置为高;显示任务只是通过LED显示瞬时流量值提供给用户参考,优先级设为次高;提供AD采集任务运行使用来采集油温,为测量实际流量提供补偿量,由于改量缓慢变化特性,对其采样频率不必太快,优先级设为低;参数设置任务只实现人机交互,显示状态和参数对控制器性能没有直接影响,优先级设为最低。uC/OS-II要求为每个任务分配OS_STK类型的堆栈空间,并且它们占用的RAM存储空间必须是连续的。任务延时是指任务执行完毕处于挂起等待状态到下一次重新运行之间的时间间隔,它的单位是时钟中断节拍。由于OS_TICKS_PER_SEC为100,每一拍为10ms。每个任务的调用间隔不能小于一个节拍,否则它将影响模拟量的采样频率。各个任务的属性定义如表1所示。
表1 任务属性定义
任务名称 |
优先级 |
内存空间 |
延时(节拍) |
主要功能 |
Task_Measure |
8 |
40 |
2 |
计算当前流量 |
Task_Uart |
9 |
80 |
2 |
串口发送数据 |
Task_Can |
10 |
80 |
2 |
CAN发送数据 |
Task_Show |
11 |
100 |
5 |
LED显示流量 |
Task_A/D |
12 |
40 |
5 |
采集油温 |
Task_Set |
13 |
100 |
5 |
设置仪表参数 |
各个任务是通过抢占CPU的使用权来运行的,它们之间存在一定的逻辑关系,彼此互相联系又互相制约。信号量、邮箱、消息队列等功能为实现任务间通信提供了有力工具,它们的使用方法灵活多变,如用信号量设置事件标志,唤醒任务、用邮箱在任务间传递参数、用消息队列的循环寻址功能进行模拟通道的数据采集等。本仪表采用一个信号量SemSet,在出现按键中断后该信号量置位,用来唤醒主程序中仪表参数设定任务。数据队列Trans_Que,用来在频率测量任务和通讯任务之间传递实际需要发送的参数。邮箱ADCMbox,邮箱PARAMboX和邮箱LEDMboX是分别用来在AD采集任务、参数设定任务、数据显示任务与频率测量任务之间建立联系的纽带。
4 结论
本仪表采用LPC2119处理器和uC/OS-II操作系统设计了一个针对脉冲输出型流量计二次仪表,硬件结构简单成本低廉,软件借助于操作系统的多任务管理,任务间同步与通信特点,提高了系统的可靠性和实时性。经标准信号发生器输出频率范围0-500KHz的方波信号,经该仪表测量最大误差均不超过0.5%。
本设计创新之处在于大大降低了生产成本,约为国外同等产品的二十分之一,同时又实现了高精度,高可靠,安装方便,使用简单的要求。该仪表在实际工程项目中已大量使用。
参考文献:
[1] Jean J.Labrosse著.邵贝贝译.嵌入式操作系统uC/OS-II.北京航空航天大学出版社
[2] 宋寅卯 张青波.基于uC/OS-II的旋转体非接触测温系统[J].微计算机信息2005,10-2