你的位置:首页 > 新闻动态 > 行业新闻

Android安卓工业监控控制软件设计原理(安卓工控一体机)

2017-02-15 11:41:18      点击:
    Android安卓工业监控控制软件设计原理(安卓工控一体机)
  传统控制系统监控上位机软件一般运行于PC机端,现场监控人员需要固定在中心监控室中进行查看操作,给工作人员带来了较大的不便。同时在传统工业现场中设备维护与调试一般需要用对讲机实现现场操作人员与中心控制室的通信和信息交换,这提高了设备维护巡检的难度。而在某些重要的工业现场如燃气、油站对设备的防火等级都有严格的规定,传统的PC机与笔记本不能被带入现场,这样进一步提高了改进维护方式的难度。基于上述问题,监控软件移动化逐渐成为工业控制系统未来发展的方向。以iOS和Android为代表的智能移动终端迅速发展,为工业控制系统监控软件的革新提供了技术保障。目前,国外已有SPEL公司推出了基于iOS系统开发的相关产品,并在市场中得到极大的反响。但是,在移动智能终端系统占有率最大的Android系统平台上的相关产品,在国内外一直处于空白状态。
  另一方面SPEL公司出品的相关软件仅支持国外部分工业控制系统,其对国产控制系统几乎不支持,这使得设计一款基于Android设备的用于国产控制系统的监控软件非常有必要。本文介绍一种基于Android设备开发的监控软件,该软件可用于国产iCSG3/G5工业控制系统,能够获取远程测控终端(RemoteTerminalUnit,RTU)控制器或PLC控制器的实时数据,动态更新流程画面,接收报警推送。
  一种基于Android设备开发用于国产iCSG3/G5工业控制系统[12]控软件。它能够获取RTU(RemoteTerminalUnit,远程测控终端)控制器或PLC控制器的实时数据,动态更新流程图画面,接收报警推送。它填补了国内外Android设备相关产品的空白,有效解决了传统上位机软件的诸多不便,具有广泛的应用市场和前景。Android架构Android系统是新一代移动通信平台,它拥有更加先进的硬件和软件架构Google公司于2007年底发布的开源手机操作系统,如今已经发布至4.1版本系统它提供极其丰富的应用层API,支持多种无线通信方式,支持强大的硬件配置。Android系统主要是基于Linux内核、面向移动终端设备的开源操作系统,其架构主要分为4个层次,即应用层、应用框架层、组件库和虚拟机、Linux内核层。处于最底层的Linux内核层为系统提供诸如进程管理、内存管理、设备驱动等基本功能;组件库和虚拟机包含重要的C库文件和JAVA运行时环境,提供对应用框架层的支持;而应用框架层则是开发应用程序所关心的部分,Android应用程序都是基于应用框架层所提供的基本框架和API进行开发。针对大多数Android应用开发,Google发布了AndroidSDK(softwaredevelopingkits)。其中包括了若干开发工具集和一整套基于JAVA开发的API。其后Google公司又针对C/C++开发者提供了NDK(nativedevelopingkits)。NDK开发的程序仍需通过JNI(JAVANativeInterface)方式与JAVA层代码进行交互才能构成一个完整的应用程序。NDK开发能在一定程度上加快程序运行的速度,但是会增加程序开发的复系统总体结构设计系统总体结构设计充分考虑与传统工厂控制监控系统之间的兼容性,做到尽量降低系统升级的成本。在不改变传统控制监控系统网络拓扑结构的前提下,通过在工厂局域网络中加入移动终端服务器和铺设Wifi路由器或VPN服务器来构成整体通讯链路。
  传统控制监控系统的结构图:工厂中各个控制点的数据经由变送器和IO模块传输至控制器,控制器则通过以太网的方式连接到工厂局域网中,中心服务器负责为传统PC端监控站等提供报警等服务功能。PC端监控站中心服务器Android设备I/O模块各种变送器工厂控制监控系统移动终端服务器短信猫Wifi路由设备VPN隧道访问控制器3GWifi移动控制监控系统工厂局域网工厂局域网I/O模块各种变送器防火墙系统总体结构图系统总体结构图右侧显示了移动控制监控系统的核心结构。移动终端服务器通过工厂局域网与中心服务器相连,从而获取报警等功能的相关数据。在移动终端服务器获取到报警信息之后通过一个短信猫将报警信息通过SMS短信息推送到Android设备,发起报警推送。由于移动互联服务器与中心服务器实际为两个独立服务器,即使移动互联服务器受到了攻击或自身崩溃,也同样不影响原有的控制监控系统的运作,这样提高了整体系统的可靠性和安全性。为了节约流量,在有条件的工厂进行Wifi网络覆盖,这样Android客户端可以直接通过本地局域网访问。而在某些恶劣的工厂环境中,则采用3G转VPN的方式接入到工厂网络中进行访问[11],访问数据通路中加入网络防火墙,防止来自Internet的攻击。Android设备能够与控制器通讯连接,以获取实时流程图数据。考虑系统信息安全性的需求,本软件和移动终端服务器均只配置为只读权限,仅能够对工业数据进行读取,而无法对其修改。通过增加登录认证环节,来降低受到攻击的风险。在客户端中对数据信息文件不进行保存,来减少终端设备遗失所带来数据泄密后移动监控系统软件开发3.1流程图软件的设计3.1.1流程图软件结构流程图软件结构层次见图2所示。位于最顶层的是绘图逻辑层,主要用来实现各种的图元的静态绘制、动态效果、动作响应等逻辑。该层次采用面向对象的流程图设计方法进行开发[11],主要抽象出Shape、Animation、Action三个基类。
  不同形状的图元、动画效果、动作响应分别继承自这三个基类。ShapeAnimationAction绘图逻辑层CanvasPaint基础绘图层实时数据获取流程图xml文件xml解析JNI调用SDK开发(JAVA)实时数据订阅接口数据存储映射管理网络通讯管理NDK开发(C++)Socket流程图软件层次结构图绘图逻辑层向下一层分别是基础绘图层、XML解析层、实时位号数据获取等。基础绘图层中是Android提供的绘图方法,Canvas类提供一个画布的抽象,包含多种绘制不同形状的方法。Paint则提供一个画笔的抽象,能够设置画笔颜色等属性。XML析层提供对流程图XML文件和位号点信息解析功能。流程图XML文件和位号点信息XML文件分别记录了流程图中各个图元对象的信息和位号点的相关信息。文件解析使用XPP(XMLPullParser)方法,相对于传统的DOM和SAX解析方法,它具有占用内存少、更高效、更轻量的优势。对在资源受限以及为了提高性能的情况下,是一种理想的选择。为简化流程图显示部分的开发工作,绘图逻辑层与xml解析等均采用AndroidSDK开发的方式,有效提高了开发效率。网络通讯和数据订阅部分采用了AndroidNDK开发方式,极大提高了位号实时数据通讯的速度和实时性的要求。NDK开发与SDK发之间通过JNI调用的方式进行交互。3.1.2流程图实时数据获取实时数据订阅接口为上层流程图显示部分提供了一个实时数据传输的通道,接口层内部维护不同位号点的唯一ID识别码来方便的对数据进行存取。位号点数据的格式和ID识别码有如下对应关系:TAG=Path+Index+Offset+LenID位号点由Path、Index、Offset、Len一确定,其中Path表示RTU控制器在局域网中的唯一地址,用于唯一标识控制器设备。Index表示位号点数据在RTU控制器存储器的分区索引号,Offset表示数据在RTU控制器存储器分区中的偏移地址,Len表示数据的长度,单位是字节。Index、Offset、Len共同决定位号点数据在RTU控制器中的地址和长度。数据区映射RTU数据映射示意图为使位号点数据的存取速度加快,保证流程图中数据得到实时更新,引入了一种数据存储映射机制。软件为每个位号点开启一段内存,用于映射到对应RTU控制器中的位号数据存储区,这样上层流程图显示部分就只需从映射区获取数据,整个数据传输过程变的透明化。数据映射过程如图3所示。位号数据是由工作人员进行组态,同一张流程图中的数据能够紧凑的分布于RTU控制器内,数据拥有良好的空间局部性。因Index2220PN1PN214PO索引(2bit)一级页表二级页表页内偏移(6bit)(8bit)(9bit)nullnull多级页表映射机制示意图此数据的映射机制可以考虑采用多级页表映射方式。这样既能够有效降低页表的存储空间,同时也能简化数据的存取,加快寻址速度。考虑到数据传输过程需要尽量减少网络传输的负荷量,降低发包次数,同时兼顾UDP传输的特性,软件应尽量将包大小控制在512字节左右,因此软件设定多级页表映射的页内偏移大小定为512字节。由此我们可以得到图4所示的数据多级页表映射机制。中假设Index分区索引为2Bit,即个分区。Offset长度为21Bit,即每个分区可寻址8MB空间,对单设备的总寻址空间为32MB。如果索引和页表所指向的地址没有被订阅,则将其置为空,以减少地址空间的占用。
  数据映射区数据帧解析器数据帧构造器接收队列缓冲接收队列管理器接收网络帧子线程发送队列缓冲发送队列管理器通知回收相应数据发送网络帧子线程接收网络数据写入数据区进发送队列发送网络数据垃圾数据清理子线网络通讯管理过程网络通讯管理过程见图5所示,通讯采用异步发送接收而非阻塞等待的模式来保证每个位号点数据都能得到公平快速的发送。通过定义发送和接收队列管理器,避免直接对数据区进行操作,还能够保证数据多线程访问的同步性。当接收队列管理器收到应答网络数据帧(图中步骤5)后会通知发送管理器回收对应正处于等待状态的发送数据(图中步骤6),并将数据写入数据映射区中(图中步骤8)。模块定义三个不同的子线程:发送数据帧子线程定时循环发送队列缓冲中的数据并更新其时间戳标志,包括重发次数和发送时间;接收子线程一直处于监听状态,收到网络数据帧后将数据通过接收管理器推入接收队列缓冲;清理子线程负责将超时或重发次数超过最大限制的垃圾数据清理出队3.2报警和登录模块的设计3.2.1报警推送报警推送的整体流程见图所示。报警推送采用短信方式来发起报警连接请求,服务器端通过一个短信猫来进行报警提示短信的发送,在发生报警时移动终端服务器会给注册过的客户端发送一条短信通知。客户端程序通过扩展系统提供的BroadcastReceiver类来得到短信接收通知,在程序中过滤特殊号码的短信及内容。确认收到短信后客户端对报警服务器发起一次连接,请求获取实时报警的信息,报警的数据采用JSON的方式来组织。
  JSON是一种常用的轻量级数据交换格式,常被用于网络数据交换。警报发送短信提示报警TCP连接,获取详细报警信息任务栏通知、震动、响铃确认警报报警服务器短信猫Android设备报警推送流程软件将接收到的报警数据存储于SQLite的数据库并通过Context.NOTIFICATION_SERVICE在系统通知栏中产生一个通知信息,通过Context.VIBRATOR_SERVICE生震动提示并通过AudioManager.STREAM_NOTIFICATION产生一个声音提示。产生的历史报警信息都可以在报警功能模块中进行查看。报警信息以分组列表的形式展示。用户可以在报警界面中手动确认报警,这时Android客户端将会给服务器发起一次报警确认连接的请求。3.2.2登录认证及安全性本软件需接入至工厂网络,因此软件安全变得极其重要。为了降低来自外网的攻击,在3G访问通道中,加入了防火墙设计。同时对于移动部分的所有数据,均只有只读的权限,从根本上杜绝了通过修改控制数据所带来的安全隐患问题。为了满足安全性要求,软件还增加了一个安全认证过程,过程见图7所示。在初始运行软件时,会有一个登录认证过程,软件将用户输入的用户名和密码以及本机的手机号码和设备码通过密文方式发送至服务器,服务器端维护一个所有用户信息的数据库,认证用户名、密码、手机号、设备号均一一对应后才能进行后续操作。同时客户端待机超过15分钟后,软件需要重新进行登录认证才能进行操作。对于意外遗失的设备终端,可在服务器注销设备访问权限。考虑到数据的保密性,对于实时工业流程图数据,采取即看即取得方式,历史数据在退出程序后即得到删除,防止意外的数据泄露。登陆界面读出手机号、设备号输入用户名、密码验证身份认证信息待机超过15min正常操作正确不正确侦听设备读取网络身份认证信息数据验证用户信息数据库返回认证结果认证是否成功设备加入获取报警列表发送认证信息Android端移动设备服务器端网络通讯网络通讯结论本文介绍了基于Android平台的控制系统移动监控软件的设计和开发。相对于传统的控制系统监控软件,本软件创新性地将平台放在了移动终端领域。它迎合了计算移动化的趋势经测试,本系统很好的完成了流程图实时数据展示、报警推送信息等功能。