城市供水系统担任着为整个社会提供安全的生活工业用水以及合理调度用水环节、保障用水合理性的重要职责,是整个社会正常运行的命脉。而各个供水站又是整个供水系统中最为核心的工作部分。因此,城市供水站监控系统就显得特别重要[1]。
当前城市供水站监控系统多以单片机为核心,将外部传感器数据进行A/D转换后接入单片机,其精度可达12位,数据经过处理后用点阵显示屏显示。单片机为8位中央处理器,这对于要求较高的领域显得稍有不足。下位机与上位机之间多采用串口进行通信。串行485接口采用差分方式传输,传输距离最大可达1 200 m,但此距离速率只能达到100 Kb/s,且485在任何时刻只允许一个下位机向上位机传递数据,使得这种通信方式受到了一定限制。
嵌入式处理器和以太网技术的飞速发展为这些问题提供了解决的途径。
嵌入式处理器处理速度快、精度高、扩展接口丰富,且具有良好的人机交互性。以太网通信技术则以其实时性强、通信速度快、兼容性强、网络布线方便的优点,越来越受到人们的青睐。本文以ARM嵌入式处理器为核心,搭载WinCE嵌入式系统,结合TCP/IP通信协议,设计出基于ARM和TCP/IP的城市供水站高速数据采集系统。并对下位机数据采集程序、上位机程序以及系统通信的实现进行了详细的叙述[2-3]。
1 系统的总体架构及硬件设计
1.1 系统的总体架构
数据采集与监控系统的下位机以ARM9系列的三星S3C2440A嵌入式处理器为核心,处理器的主频400 MHz,最高达533 MHz,处理速度快,内置8路10位A/D转换器,最高转换频率为2.5 MHz,数据采集速度和精度都很高。在ARM9的基础之上搭载WinCE嵌入式操作系统,该操作系统具有与Windows XP相似的界面和操作,操作起来更加简便快捷;支持多系列的微型处理器,包括ARM系列,使下位机在硬件和软件方面得到了完美的融合。下位机接收传感器采集的数据,然后通过TCP/IP协议与上位机进行通信,上位机得到下位机传来的数据后进行数据存储、显示、报警操作。上位机进行远程监控并完成对各个下位机信息的汇总和分析处理等功能,系统结构如图1所示。
1.2 系统的硬件设计
城市供水站分布式监控系统要测量的物理量主要有各个供水站电机的电流、电压、温度等参数,以及供水站的流量、进出口压力、水温等水质的参数。要根据各种物理量以及其所处的具体工作环境选取合适的传感器[4]。
由图2可见,下位机硬件以ARM9为核心,其内置的A/D转换接口用来接收外部传感器的数据,搭载的TFT显示屏作为下位机的显示,同时其各个扩展接口可以提供其他的资源及为以后扩展所用。
传感器采集的外部数据经过放大、滤波等消除干扰的操作后接入ARM内部A/D转换器,在嵌入式系统中进行处理,并在下位机显示屏上进行显示和相应地人机操作。下位机扩展在板64 MB SDRAM内存和在板128 MB Nand Flash存储并支持32 GB的外部SD扩展槽,满足本机运行以及存储要求。扩展的RJ-45接口作为与上位机进行通信的接口。IIC总线以及其他接口作为扩展和其他功能用。
TCP/IP协议使用客户端/服务器(C/S)模式进行通信,其通信是点对点的,在网络中几乎可以实现无差错的数据传输,可靠性较高,速度快。由于与网络相关的路由和网关等技术的发展,使得多路通信的实现变得简单方便。
下位机ARM扩展了网络RJ-45网络接口,使上下位机之间实现TCP/IP通信变得更加简单。
每个供水站的下位机在将数据处理完毕之后,通过RJ-45网络接口与上位机相连,多处下位机通过路由器接入网络,然后再与上位机进行通信。其结构图如图1。
2 供水站分布式监控系统的软件设计
供水站分布式监控系统的软件设计包括下位机地址映射、下位机数据处理及显示、数据通信以及上位机程序的实现。
2.1 下位机地址映射与实现
下位机搭载WinCE操作系统,ARM数据采集是通过GPIO来操作相应的寄存器,WinCE系统则将GPIO的实地址映射到虚拟地址空间,通过对虚拟地址空间的操作来完成对GPIO及其他片内资源的控制。要在WinCE中操作ARM中的GPIO,就必须按照BSP中的基地址找到相应的虚拟地址。这就需要对其进行地址映射。图3为地址映射原理图。
地址映射的方法有2种:一是流驱动方法,即在流驱动中将物理地址进行相应地映射,将流驱动添加到底层映像中来实现。另一种方法是在外部WinCE程序中将物理地址与虚拟地址进行相应地映射,只需对外部程序进行操作,对内核没有影响,由于下位机数据采集部分并不复杂,所以采用第二种方法进行实现。
要实现地址映射,首先将所用到底层驱动中的寄存器作为一个类定义到WinCE嵌入式程序中去。然后把物理地址与虚拟地址用VirtualAlloc和VirtualCopy函数进行映射操作。VirtualAlloc函数用于在当前进程的虚拟地址空间中保留或者提交空间,在保留时以64 KB为单位,提交时以4 KB为单位。VirtualCopy函数则用来绑定物理地址到静态映射虚拟地址。VirtuaAlloc+VirtualCopy就可以将内核到当前进程进行映射,让当前程序找到对应的虚拟地址[5-6]。
把映射后的地址作为一个新类进行定义,就可对寄存器进行操作,如图3。
2.2 下位机数据处理及显示
下位机采集数据后采用数字模块进行显示,当数据超出上下限的时候,下位机中的蜂鸣器就会进行报警,通知现场操作人员。
数字显示模块采用重绘的形式,预先定义好相应的数字显示值,在接收到数据后对数字显示模块进行相应地重绘。数字显示模块作为一个插件加入到WinCE程序中,在主函数中调用模块中的显示函数来实现数字的显示。
下位机报警功能采用ARM扩展的蜂鸣器实现,蜂鸣器由PWM进行控制。在S3C2440A中GPB0为控制PWM的寄存器,通过地址映射的方法对相应的寄存器进行操作。
首先设置端口GPB0为TOUT0功能,然后设置预分频和分割值,计数器的输入时钟(CCLK)频率为:PCLK/(预分频+1)/分割值。预分频值和分割值分别由TCFG0、TCFG1来确定。接着设定初始值TCMPB3和TCNTB,由于计数器的输入时钟为PCLK/16/8;而rTCNTB0=(PCLK>>7)/freq;并且计数计到最大值的一半时发生翻转。因为计数的基值是由rTCMPB0设定为最大计数值的50%。最后是定时控制器的设定rTCON,TOUT0就产生频率是rTCNTB0,占空比是50%的方波,蜂鸣器就可以被驱动。当数据超限时就调用此函数进行蜂鸣器报警。
2.3 TCP/IP通信的实现
上下位机之间采用客户机/服务器(C/S)形式,下位机作为客户机上位机作为服务器进行通信,TCP/IP通信通过套接字(socket)来实现[7-8]。
下位机利用套接字socket的connect函数向上位机(server)发送连接请求,当连接成功之后,用send函数向上位机发送相应的数据,通信完成后关闭套接字。
上位机通信部分则与下位机相互对应,用套接字socket的bind函数将套接字绑定到本地地址和端口上,并将套接字设置为监听模式,用listen函数来准备接收client的请求,当用accept函数接收到连接请求后,调用recv函数来接收相应的数据,其流程如图4所示。
上位机作为服务器端,对设定的端口一直进行监控,因此运用多线程进行循环监听,直到相应的操作使其停止。
2.4 上位机显示报警及数据存储实现
上位机是整个系统监视的核心,数据显示为了直观,采用动态曲线显示;并进行声音报警,采用数据库将数据进行存储,上位机系统显示界面如图5。
上位机动态曲线显示利用画刷、曲线等函数进行绘制,当数据接收进来后绘制相应的曲线,并且随着数据的增多曲线进行移动,使显示的曲线一直为当前一段时间的数据。报警的实现比较简单,只需在数据超限的时候调用Beep 蜂鸣函数即可。
上位机的另一个主要的功能就是对数据进行存储,以便在以后调用。数据存储利用ADO对数据库进行访问。
ADO是一个用于存取数据源的COM组件,是微软最新的对象层次上的数据操作技术,它为操作OLE DB数据源提供了一套高层次自动化接口。从功能上来说,ADO又是一种OLE DB客户程序,它不依赖于特定的OLE DB服务器反而支持所有的OLE DB服务提供者。通过这些OLE DB服务提供者,ADO支持客户/服务器模式和基于Web的数据操作,尤其支持通过客户/服务器模式或者基于Web模式访问微软的SQL Server数据库服务器[9]。
用ADO的Connection、Command、Recordset等一系列关键对象,在数据库中建立表格对当前日期、时间以及传感器数据进行实时的自动存储。
为保证程序的运行状况,运用多线程实现对规定数据的储存操作。
本系统实现了对下位供水站数据的精确和高速的采集,并能将下位数据在嵌入式下位机系统中进行显示,实现在现场对数据进行观测和处理,同时又可以将现场的数据传输到上位机中,将不同下位机中的数据传输到上位机中进行汇总和相应的操作,实现了远程的监控和管理。此系统对其他的数据采集和监控系统来说也具有很好的参考价值。
参考文献
[1] 杨震.综合管理与控制系统在城市供水调度系统中的应用[J].产业与科技论坛,2008,7(6):113-114.
[2] 程言奎,李英.基于ARM9的高速数据采集系统的实现[J].现代电子技术,2008,31(11):140-142.
[3] 何宗键.Windows CE嵌入式系统[M].北京:北京航空航天大学出版社,2006.
[4] 叶俊华,许雪梅,黄帅,等.基于ARM和WinCE的数据采集系统设计[J].计算机工程与科学,2009,31(6),136-141.
[5] GRATTAN N, BRAIN M. Windows CE 3.0 Application Programming[M]. Microsoft Technologies series,2001.
[6] FLETCHER N H, ROSSING T D. The physics of musical instruments[M]. 2nd ed. Berlin: Springer-Verlag,1998.
[7] 史蒂文斯.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2003.
[8] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.
[9] 沈炜,徐慧.Visual C++数据库编程技术与实例[M].北京:人民邮电出版社,2005.