基于arm7环境监测数据采集系统的开发

发布时间:2010-4-7 18:13    发布者:我芯依旧
关键词: 环境监测 , 开发 , 数据采集 , 系统
引言

在工业污水处理过程中,常常需要对现场的排污水流量、水质量等参数进行监测,通过采集污水流量、水质参数如TOC、COD等数据进行随时了解,从而分析排污水流量是否超标,诊断水质受污染的程度。现在常用的数据采集方式是通过数据采集板卡来进行数据的接入。但采用板卡不仅安装麻烦、易受机箱内环境的干扰,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。一般的基于单任务顺序机制的单片机数据采集系统又很难胜任于稳定性、实时性要求很高的场合。基于此,本文设计了一种基于PHILLIS公司 ARM7处理器LPC2138的嵌入式、多任务数据采集系统。很容易就能实现低成本、高可靠性、多点的数据采集。

1 系统总体结构设计

图 1为系统结构总体框图,此嵌入式数据采集系统核心部分为图中的核心板部分,其中嵌入了数据采样/控制模块,远程通信模块,计算模块及报警逻辑等功能模块。其主控制芯片为ARM7处理器LPC2138,芯片内部内置了宽范围的串行通信接口和512kB的Flash存储系统,该存储器可用作代码和数据的存储。对Flash存储器的编程可通过以下几种方法来实现:通过内置的串行JTAG 接口,通过在系统编程(ISP)和UART0,或通过在应用编程(IAP)。使用在应用编程的应用程序也可以在应用程序运行时对Flash进行擦除或编程。在本系统中使用了在应用程序运行时对Flash进行擦除和编程,使用这种方法为数据存储和现场固件的升级都带来了极大的灵活性。故此LPC 2138非常适合于嵌入式系统的开发和应用,并提供了大规模的缓冲区和强大的处理功能。

1.gif
图1 系统结构总体框图

2 系统硬件设计介绍

系统中除了基本的电源电路、复位电路、系统时钟电路,系统存储器电路外,主要电路有按键电路、显示电路。按键电路、显示电路实现系统的基本人机交互界面。

2.1 数据采集系统总体描述

如图1所示,数据采集系统置于监测仪器设备(如有机污染监测仪,流量计,PH计等)处。设备所检测到的数据(如COD,TOC,流量等)通过相应监测仪器的输出端子输入到本系统的串口模块(或状态量模块或其他采集模块),经过内嵌入核心板的计算模块,经过数据处理后,通过GPRS模块或ADSL就可以进行远程数据传输,将处理后的结果传送给远端的上位机。只要在线监测仪器生产厂家提供相关数据通讯协议就可增加相关仪器数据采集功能,直接存储、显示COD、 pH等数据,同时本系统还支持数据查询,指标超标报警等功能。

2.2 数据存储部分

在本系统中,采用Flash存储,存储内容包括了以下内容:流量计槽型,槽号,槽高,瞬间值,累计流量;系统当前时间;各种污染物的上下限参数;定时上报时间;实时上报时间间隔;TOC/PH采集频率;测量数据。

数据根据时间顺序存储,30秒为1个记录。如果某个仪器没有数据则其数据位为以符号“-”表示。数据存储在EEPROM物理位置如下:
t.gif

2.3人机界面设计

此本分主要完成人机对答,数据查询,定时发送和定时采集时间设定等功能。实现人机智能化操作的目的。

2.gif
图2系统启动界面(左)和启动成功后系统运行界面(右)

其中“TFFFF”5位表示如下(从左至右):

是否登陆到中心 T(是)/F(否)
流量通信是否正常 T(是)/F(否)
PH通信是否正常 T(是)/F(否)
TOC通信是否正常  T(是)/F(否)
备用     T(是)/F(否)

3.gif
图3定时采样界面(左)和实时上报时间问隔设置界面(右)

3 系统软件实现

整个数据采集系统的软件大致要完成3个部分的工作:系统的初始化代码、uc/OS-II移植、应用任务的编写。以下分别对各部分要点进行说明。

3.1 系统的初始化代码编写流程

在嵌入式系统中,启动时用于完成初始化操作的这段代码被称为Boot.loader程序。通过这段程序,可以初始化硬件设备、建立内存空间的映射图。从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确环境。本系统的 Boot.loader流程图如图4所示。

4.gif
图4 Boot.loader流程图

3.2 操作系统uc/OS-II在LPC2138上的移植

系统采用的操作系统为uc/OS-II。uc/OS-II是一种源码公开的实时嵌入式操作系统。它是一种占先式的实时内核,是基于优先级的,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占先式的内核要好。它包含了实时内核、任务管理、时间管理、任务间通信同步(信号量、邮箱、消息队列)和内存管理等功能:它的绝大部分代码是用C语言编写的,可移植性强。要使uc/OS-II正常运行,处理器需要满足以下要求:

● 处理器的 C编译器能产生可重入代码;
● 用C语言就可以打开和关闭中断;
● 处理器支持中断,并且能产生定时中断(通常在 10至 100Hz之间);
● 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈;
● 处理器有将堆栈指针和其它 CPU寄存器读出和存储到堆栈或内存中的指令;

uC/OS-II在LPC2138上的移植所采用的编译器为ARM ADS自带的C语言编译器。具体做法主要包括:声明10个与编译器相关的数据类型(包括堆栈的数据类型),用#define设置一个常量 (OS_CPU.H),表明堆栈的增长方向;用C语言编写6个与操作系统相关的函数(OS_CPU_C.C);任务堆栈初始化函数;用汇编语言编写4个与处理器相关的函数和5个钩子函数:

● OSStartHighRdy0,用于在调度中使最高优先级的任务处于就绪态并开始执行,uC/OS-II启动时使用OSStartHighRdy运行第一个任务;
● OSCtxSw0。完成任务级的上下定义切换;
● OSIntCtxSw0。完成中断级任务切换,其过程与OSCaSw0类似。只是在执行中断服务子程序后可能使更高优先级的任务处于就绪态,即中断退出时的入口;
● SoftwareInterrupt是软件中断,用于提供一些系统服务。

3.3 应用程序的编写

此部分主要是完成通信协议的编写及注册任务等工作,但不是系统所必须的。

4 实际测试结果

以下是采用型号为OPM-410A的有机污染监测仪监测到的COD数据与本嵌入式系统采集
COD数据对比。

表1 OPM-410A与本系统实测数据对比(单位:mg / L)
b1.gif

表1中 COD1 是指型号为OPM-410A有机污染监测仪监测到的COD数据数值;

COD2 是采用本嵌入式系统所采集的数据数值;误差=COD2-COD1;

表1中的数据仅仅是本系统在实际测试过程中所采集到的一部分,从表中可以看出,本系统所采集到的数据低于监测仪器采集到的数据,误差不低于-5mg/L,可以满足环保部分对有机污染监测的要求,达到预期的效果。

结束语

本嵌入式数据采集系统采用了基于ARM7的LPC2318处理器,可以使系统小型化,便于提高性能,降低成本,同时本系统基于uc/OS-II操作系统,应用程序的编写以任务为单元,实现了数据采集等多任务的管理与调度。另外本系统对具体的不同环境下的应用可通过适当增减任务来实现,从而可以广泛应用于各种数据采集场合。

本文作者创新点:本文利用开源的uc/OS-II操作系统,在arm7处理器LPC2138上实现插件式的多点数据采集,可通过多任务的管理和调度来实现工业污水排放量、TOC/COD,PH等数据的采集,并实时将采集到的数据传送至环保监控部门的上位机,同时可实现数据存储及查询等功能。


作者:蒋梁中,许勇,卞青青      来源:《微计算机信息》(嵌入式与SOC)2009年第5-2期
本文地址:https://www.eechina.com/thread-10227-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表