黄 皎 许晓娟 陆晓春 任 姣 刘海荣
(河海大学计算机与信息学院1,江苏 常州 213022;江苏省输配电装备技术重点实验室2,江苏 常州 213022)
电磁流量计是随着电子技术的发展而迅速发展起来的新型流量测量仪表。由于不受温度、黏度、压力等物理参数的影响,因此电磁流量计具有管道中无任何阻力部件、节能效果显著等诸多优点,受到了国内外众多厂商的青睐,现已发展成为工业用四大流量计之一[1]。目前,现有的电磁流量计一般都是以单片机为核心控制器,采用点阵式液晶显示,小容量EEPROM存储数据,其测量精度、人机操作、信息存储等方面均存在着一定的局限性,已不能满足实际工业生产中流量测量与控制的需要。为此,本文提出一种基于ARM-Linux嵌入式开发平台,使用MiniGUI开发环境进行图形用户界面(graphical user interface,GUI)设计。该设计提供了友好的人机界面、大量数据存储与管理以及网络通信等功能,实现了电磁流量计的智能化、信息化与网络化。
电磁流量计的总体结构如图1所示。流量计主要由流量测量单元、智能监控终端和远程主机三部分组成。该仪表将嵌入式、数据库、图形开发和网络等技术集成到传统的电磁流量计中,构建了一个集流量测量、数据存储与管理和远程监控于一体的综合系统。
图1 电磁流量计的总体结构图Fig.1 General structure of the electromagnetic flowmeter
流量测量单元包括激磁电路、流量信号处理电路和存储器等模块,主要完成对流量的高精度测量,并将处理后的数据信息通过Modbus总线传输到智能监控终端。智能监控终端运行基于LCD触摸屏的现场监控软件,并对整个电磁流量计系统进行现场实时监控,实现仪表参数设定、串口设置、流量和电势标定等多种功能,且提供友好的人机界面、数据管理和网络服务。远程主机可以通过以太网登陆电磁流量计的远程监控系统,进行流量信息的实时查看、数据查询和用户管理等操作。
电磁流量计智能监控终端的硬件系统以基于ARM11内核的S3C6410为核心处理器,包括电源模块、存储器模块(64 MB~2 GB Nand Flash和128 MB SDRAM)、串行通信接口、10/100 Mbit/s以太网口和LCD液晶显示屏等外围接口。智能监控终端硬件结构如图2所示。
图2 智能监控终端硬件结构图Fig.2 Hardware structure of the intelligent monitoring terminal
智能监控终端硬件设计主要包括控制模块、存储模块和外围接口模块的设计。各模块介绍如下。
①控制模块采用S3C6410作为MCU。S3C6410是由Samsung公司生产的低功耗、高集成度的32位RISC微处理器,它提供丰富的外围模块,集成有独立的16 kB指令缓存、16 kB数据缓存、LCD控制器、4通道 UART、2 通道 SPI和 1 通道 IIC 等功能[2-3],可以满足电磁流量计智能监控终端所需性能要求。
②存储模块选用Samsung公司生产的Nand Flash芯片K9F1208U0M作为存储器,用于保存启动代码、Linux镜像文件、大容量程序和数据等;选用HYnix公司生产的SDRAM芯片HY57V561620BT-H运行程序、维护数据和堆栈区,其单片容量为32 MB。系统使用两片HY57V561620BT-H构成32位、64 MB的SDRAM存储器系统[4]。
③外围接口模块包含以太网接口、LCD液晶触摸式显示屏以及串行通信接口等。系统选用NEC公司生产的型号为NL2432HC22-22B的TFT真彩液晶屏作为显示器,并在软件上实现LCD的驱动。S3C6410没有集成以太网控制器,所以系统外接了以太网控制器DM9000A,实现以太网接入。在电路设计时需要完成DM9000A与S3C6410总线的连接,以及网络隔离变压器PH163539和以太网水晶接头RJ45的连接[5]。
电磁流量计智能监控终端的软件系统主要由4部分组成:硬件平台、嵌入式操作系统、设备驱动层和应用软件层。系统的软件设计主要包括嵌入式开发平台的建立和应用软件的设计,其软件结构如图3所示。
图3 智能监控终端软件结构图Fig.3 Software structure of the intelligent monitoring terminal
系统选用嵌入式Linux操作系统作为智能监控终端的软件开发平台,选用MiniGUI作为图形用户界面开发环境。嵌入式Linux操作系统源码开放,可移植性好,可以根据用户的需要进行相应的裁剪、定制,且具有强大的网络通信功能[6]。MiniGUI具有可伸缩性强、占用资源少、可配置性和支持多种嵌入式操作系统等特点,为嵌入式Linux系统提供了完整的图形系统支持。MiniGUI的运行需要一些动态链接库的支持,系统移植的库文件主要有:Zlib库、PNG库、JPEG库。要在目标板上运行MiniGUI for Linux应用程序,首先要使用PC宿主机对MiniGUI的源代码进行交叉编译,生成MiniGUI静态链接库文件;然后MiniGUI应用程序在宿主机上进行交叉编译,并且与MiniGUI静态链接库和POSIX线程库链接生成*.axf映象文件或*.bin二进制文件;最后将MiniGUI应用程序下载到目标板并运行[7]。
3.2.1 数据管理模块设计
系统采用SQLite数据库对测量数据和报警等记录进行存储和管理。SQLite是Hipp D R于2000年开发的一款轻型C库实现的关系数据库,其设计目标就是为嵌入式系统服务,而且源代码是完全公开的[8]。SQLite数据库提供的API函数有多个,系统使用到的函数有sqlite3_open()、sqlite3_exec()、sqlite3_get_table()、sqlite3_close()。当用户需要存储和管理流量信息时,只需构造对应的SQL语句即可。数据库编程如下。
3.2.2 用户界面操作模块设计
在MniGUI开发的人机交互界面中,用户可以通过操作触摸屏操控仪表。主界面的菜单栏中包含了登录管理、参数设置、数据管理、仪表标定、帮助和退出六个选项,每个选项又包含若干子选项。用户点击相应的弹出式菜单按钮,可进入相应的子窗口执行操作。主菜单页面中还显示当前的流量信息,包括流量、流速、百分比和空管比等测量值以及当前仪表报警情况。
3.2.3 串行通信模块设计
系统采用Modbus的RTU模式进行信息传输,Modbus规定RTU模式中有效功能码范围为1~255,设计选择67~71作为智能监控终端(主机)请求功能码,196~199作为流量测量单元(从机)回应功能码。
智能监控终端启动后,首先向从机发送功能码为67的请求帧,获取流量测量单元的仪表参数,然后调用check_setting(),比对消息帧的参数和智能监控终端的参数。比对相同时,系统采用流量测量单元的参数,否则,重新发送功能码。监控程序正常运行时,根据设定的时间间隔向流量测量单元发送流量数据和报警数据请求帧,如果在设定的通信时间内没有响应,则通信超时,主机重新发送请求帧。当用户在智能监控终端通过GUI完成仪表的参数设定或标定设置后,智能监控终端发送功能码为70或71的消息帧,把参数发送到流量测量单元,监控程序按设定的时间间隔读取串口数据,并调用analysis_data()解析从机的应答消息帧。解析时,先获得从机地址,然后判断功能码并采取不同的处理措施。解析流程图如图4所示。
图4 解析函数的程序流程图Fig.4 Program flowchart of analytic functions
3.2.4 网络服务模块的设计
在Linux下进行网络通信可以通过调用Linux内置的TCP/IP协议提供的Socket套接字接口函数来实现,常见的Socket主要有三种类型:流式Socket、数据报Socket、原始 Socket。本系统选用流式 Socket,即采用C/S模式,将智能监控终端构建成通信服务器,以响应监控软件的连接请求和操作。监控软件利用C++Builder6为开发平台,在通信中作为客户端发起连接请求,监控电磁流量计的运行状态。
系统运行后,主进程首先新建一个子进程,随后主进程运行MiniGUI的图形界面应用程序,由该子进程运行Socket通信服务器程序。为了支持多个客户端同时访问本服务器,系统采用多进程技术,每接收到一个连接请求,系统即创建一个新的子进程,由该进程负责与客户端的通信。Socket通信服务器有关代码如下。
本文结合嵌入式、数据库、网络和图形开发等技术,设计了一种基于嵌入式技术的电磁流量计智能监控终端。系统以高性能的S3C6410为核心处理器,以嵌入式Linux操作系统为软件开发平台,具有可靠性高、人机界面友好、网络功能强大等特点,弥补了传统电磁流量计监控终端设计存在的局限性。目前,该系统已进入产品测试阶段,试验结果表明,监控终端运行稳定、可靠,满足了企业的需求,具有一定的实用价值和推广价值。
[1]张学庆.流量测量的意义及流量传感器的现状[J].石油化工自动化,2005(5):99 -101.
[2]廖焕柱,方康玲,曹晶.基于S3C6410和WinCE6.0的12导联心电图机设计[J].计算机应用,2010,30(1):331 -333.
[3]冯川放.基于ARM11的矿用大容量组合开关控制系统的设计[J].长春工程学院学报,2010,11(1):41 -44.
[4]张明亮,黄静,张波.基于嵌入式技术的水质分析仪的研究[J].工业控制计算机,2010,23(7):112 -113.
[5]唐娜.基于TMS320F2812和DM9000A以太网接口设计[J].计量与测试技术,2010,37(11):14 -16.
[6]冼进.嵌入式Linux应用开发详解[M].北京:电子工业出版社,2007.
[7]郑端健,郭磊,魏世民.MiniGUI图形库在嵌入式Linux平台上的移植与实现[J].仪表技术,2008(10):10 -14.
[8]黄布毅,张晓华.基于ARM-Linux的SQLite嵌入式数据库技术[J].单片机与嵌入式系统应用,2005,30(4):21-24.
[9]黄皎,刘修峰,陆晓春,等.嵌入式智能磷酸根分析仪的设计[J].自动化仪表,2011,32(1):73-75.