文中仅为简要介绍,如有兴趣请联系我,可以提供部分模块的代码。
1 概述
1.1 项目背景
在工业生产中,生产过程的监控是十分重要的环节:现场工程师需要对控制系统进行监控,实时监控工业流程各重要参数,浏览历史记录及各参数趋势,及时对报警信息进行处理;控制工程师需要对生产过程进行优化,监控控制系统各个重要参数,评估控制系统性能,记录历史信息作为控制算法优化的依据;产品经理需要制定生产策略,实时方便的获得产品生产的进度、状态等。基于多方面的需求,兼顾使用的便捷性、平台的通用性和开发的难度,我们提出了一种Android平台控制系统监控软件的解决方案。
1.2 项目简介
为了满足工业生产中系统监控的需求,前几年使用PDA作为移动终端监控控制系统,现在PDA逐渐被功能更加强大、普及率更高的智能手机替代,而且其软件的定制、扩展和移植比较困难。另外智能手机还具有携带方便、人性化、易扩展、操作系统开放等优点,因此项目研究 基于Android平台开发控制系统监控软件,实现参数的采集、数据库开发以及人机界面开发,注重其可扩展性和移植性,减少定制的成本,弥补了市场的空白。
1.3 国内外研究现状
经过调研发现,基于Android平台的控制软件领域的研究主要有以下方面:基于Android的学报管理系统、基于变电站的移动终端系统还有基于可信计算的移动终端用户认证方案、基于CDMA系统的移动终端定位系统,主要还都是在生活和办公中的应用。在工业上针对控制系统监控的解决方案主要是在PDA设备开发的Windows Mobile平台下的监控软件,具有流程图浏览、数据浏览、棒图显示、趋势图显示等功能。但是随着技术的发展,PDA在工业上逐渐被淘汰,但是其功能和业务上的成果还是值得借鉴的。
1.4 研究内容
本项目的研究内容主要分为以下几个方面:1)调研工业控制系统国内外情况,调研手持型终端的功能要求和应用需求;2)wifi或者3G通讯驱动,工业控制系统数据协议实时通讯开发;3)基于Android小型数据库(数据机构)构建;4)控制系统功能软件开发,包括流程图、数据采集显示、报表、报警(声音、短信)、历史记录、趋势记录、棒图等。项目主要研究方向是人机界面的开发,提高屏幕的刷新效率、增强画质并且减小资源占用。
2 软件设计
2.1 需求分析
用户对象:
拥有Android移动终端的监控工业生产流程的现场工程师、控制工程师、产品经理等
用户期望:
1、对控制系统进行监控:实时监控工业流程各重要参数,浏览历史记录及各参数趋势,及时对报警信息进行处理;
2、对生产过程进行优化:监控控制系统各个重要参数,评估控制系统性能,记录历史信息作为控制算法优化的依据;
3、制定生产策略,实时方便的获得产品生产的进度、状态等。
软件功能:
1、浏览实时更新的新闻,选择监控内容
2、浏览系统概况及其整体流程图,从整体流程图直接进入各节点的流程监控
3、以曲线图和柱形图的形式监控各节点的流程信息,查看设备信息
4、查看传感器配置表并对服务器IP和端口进行设置
5、查看系统警告及错误信息
6、查看历史及统计信息,统计信息可以以饼状图、柱状图、趋势图的形式查看,并进行多数据对比分析
软件特点:
人性化、易扩展、操作系统开放、屏幕的刷新效率高、画质优越、占用资源小
2.2 软件UI框图
3 主要技术路线
3.1 软件总体设计
基于Android移动终端的控制系统监控软件是典型的C/S结构的应用,多个Android移动客户端可同时向服务器发起请求并获取实时的数据。其中,服务器端主要由基于C#的管理界面和Microsoft SQL Server数据库,主要用于维护数据库数据以及并发地响应客户端请求;移动客户端主要是由通讯模块、交互模块、绘图模块、数据库模块等各部分组成,为了节约资源消耗,服务器与客户端之间通过Socket短连接完成请求过程,由于网络连接的非可靠性,因此需要异步的网络请求服务。
3.2 服务器端
如图右半部分为服务器端的软件框架,服务器主要用来维护原始数据并且响应客户端的请求。主要分为人机界面模块、Socket异步通信模块、逻辑处理模块(Service)、数据库抽象层(DAO)等部分。
通信模块用于相应客户端请求,当监听到一个客户端的连接请求时,创建新的线程处理该请求,调用逻辑模块进行逻辑处理,完成处理后向客户端发送结果并关闭线程。在多客户端的情况下,可以并行的处理各用户的请求,可以提高处理效率和用户体验。
逻辑处理模块用于处理客户端的具体业务请求,通过调用数据库抽象层完成数据库操作,并对其进行适当的转换和解析返回给用户。
数据库抽象层用于数据库操作,使用NHibernate框架将数据库操作对象化、模板化,并且封装了一系列数据库操作,用于逻辑处理模块调用。
3.3 客户端
如图左半部分为Android客户端框架,主要分为界面交互模块、逻辑处理模块、数据库模块、通信模块、报表模块、流程图模块等。
界面交互模块:
基于Android SDK进行界面的事件处理,并且根据实际业务需求定制Android组件,为用户提供更好的交互。
逻辑处理模块:
根据不同的业务需求,通过调用数据库接口和网络通信接口,将原始数据转化为与用户进行交互的数据,完成主要的逻辑处理。
数据库模块:
数据库模块将SQLite数据库操作抽象化,以对象的形式访问和处理数据库中的记录,封装了基本的数据库操作,并将返回结果对象化,另外还支持自动建表和原生SQL模式。
如图为数据库框架图,主要分为业务处理层(Service)和数据库抽象层(DAO),每一个数据库中的表对应一个类(Entity),其中Entity中可以使用@Column(name=”?”, length=?)注解声明数据库中的字段,并可以自动根据字段的类型(int、String、long、double、float等)以及字段的长度(用于字符串型)建表。在DAO中对数据库进行insert、update、select等操作时,使用的参数或返回值都是Entity。在Service中,通过调用一系列DAO的接口完成一些特定的业务操作,并作为接口提供给逻辑模块使用,大大提高了代码的复用性和鲁棒性。
通信模块:通信模块基于Socket通信,底层为字符串的传输。通信模块将网络请求抽象化,每一种请求作为一个Service,将请求参数和返回值对象化,并可以自由的定制回调函数。另外,返回值的等待过程为异步的,因此可以在发送远程请求时不阻碍主线程的操作,即使在网络不佳的情况下也可以保证流畅的操作。
如图为框架图,整个请求过程由主线程和独立的Service线程完成,其中主线程中主要进行请求的解析、发送、Service线程的启动、Service的缓存等操作,处理速度较快。而请求返回的监听则在独立的Service线程中进行,由于网络环境的影响可能等待时间较长,但是不会影响到主线程中用户的正常操作。每一次请求的Service对象都缓存在堆栈中,并且以哈希表的结构存储(Map<BusNode, List<Service>>),当接收到请求返回值时,可以即时地从堆栈中取出发送请求时保存的状态,完成整个请求过程。该框架具有异步性、较高的容错性和可靠性,并且长期运行的过程中资源消耗较小,适于作为稳定的框架来使用。
3.4 流程图模块
流程图模块通过调用OpengGL工具库实现绘制。OpenGL是一个跨平台的图形API,提供了软件操作3D图形硬件的接口.OpenGLES是一个专用于嵌入式设备的OpenGL规格。Android通过OpenGL包含了对高性能2D和3D图形的支持。从Android1.0开始支持OpenGLES 1.0和1.1API规格。从Android2.2 (API Level 8)开始,框架支持OpenGLES 2.0 API规格。
四、应用前景及研究展望
4.1 软件应用前景
将移动终端引入控制系统,实现了控制网络的无线移动监控,具有体积小,携带方便,移动灵活等特点。利用3G高速通信网络,具有较好的实时性和可用性 ,为现场工程师进行系统调试提供了便利,有效地提高工业现场调试与维护的效率。利用远程监控系统进行监控,可以及时消除隐患提高系统的安全性和可靠性,节省人力和财力。
4.2 研究展望
1)软件功能的进一步完善
软件项目是一个逐渐完善的过程,而且由于项目组前期主要集中于软件框架的搭建和优化,第一版的软件功能可能还不够完善,因此需要根据用户的使用体验进行进一步的功能细化和完善。
2)软件框架的优化
目前我们已经开发了较为完善和高效的软件框架,包括数据库服务框架、异步通信接口框架、基于开源AChartEngine插件的动态图表、基于OpenGL的可配置的流程图模块。这些模块已经进行了一系列的开发测试,并且可以方便的移植到其他App的开发中,可以大大的提高开发效率和软件的稳定性。另外,我们还计划对现有的框架进行性能上的优化,尤其是数据库框架中的事务性、异步通信接口的网络错误处理、流程图模块的显示优化等,对以后的软件开发具有较大的意义。