基于嵌入式Web Server的用户侧智能终端设计
2022-03-18福建网能科技开发有限责任公司柳玉銮
福建网能科技开发有限责任公司 柳玉銮
随着配电网规模的不断增大和用电客户数量的持续增加,传统使用于用户侧智能终端管理系统存在的监测范围不全面、监测结果不准确等问题也在不断凸显,已无法满足供电企业管理用电客户和检测配电网运行状况的需求,因此设计一种运行效率高、能耗小、成本低廉的用户侧终端管理系统,已成为供电企业增强自身服务能力的关键所在[1]。另一方面,随着物联网和工业物联网的问世和持续使用,嵌入式微处理器和嵌入式系统的适用范围和运行性能等都得到了有效地改善,已被广泛运用于我国的通信、汽车、军事以及电力等多个领域,在促进上述领域智能化水平方面起到了举足轻重的作用。
在参考相关研究资料后,结合多年工作经验设计了一种以嵌入式Web Server为核心技术的用户侧智能终端的系统。该系统采用的是用户直管模式,有效地避免传统用户侧终端过度依赖PC代理的弊端,可有效满足广大供电企业的管理需求和用电客户的智能用电需求。
1 构建用户侧智能终端的意义
就目前而言,越来越多的企业都将业务的重心倾向于智能家居的设计和量产领域,但就目前市场上使用的各种信息交互智能终端而言,他们都存在着一个共同的特点,就是社区系统主站只能通过PC代理的模式进行登录,其适用范围和使用场景等受到了很大的限制。
此外,在传统的供电模式中由于缺乏精准的用户用电数据,供电企业只能根据用户以往的用电量和用电习惯等向其输送电力能源,常常出现供电量不足或过多的情况,不仅增加了供电企业的运营成本,同时也大大降低了电力能源的有效使用率。因此,构建用户侧智能终端是供电企业快速提升盈利能力的有效途径之一。再有就是,研发与智能电网相适应的智能用电交互终端,可全面改善智能用电技术和供电企业的服务能力,与现阶段国家大力推进的智能电网发展背景下的智能用电政策相一致。所以,研究用户侧智能终端管理系统,是我国供电领域持续生存与发展的必由之路[2]。
2 智能用电信息交互系统整体架构
文章所设计的智能用电信息交互系统主要包含智能用电信息交互平台、通信信道以及应用现场3个部分。其中智能用电信息交互平台由数据库服务器、Web服务器、通讯服务器、应用工作站、磁盘阵列、机构服务器以及GPS时钟等7个设备组成,主要用于获取、整理和管理用户用电数据信息;通信信道主要包含了远程通信信道和本地通信信道两个部分。远程通信信道指的是智能用电信息交互平台与计量自动化系统、现场应用等模块之间的通信信道。通信服务器主要采用Internet作为通信方式,它能有效确保信息交互过程始终处于一种高效、稳定、可靠的通信网络中,且这种通信方式还具备了成本低、带宽高、灵活快速、可拓展以及方便管理等优势,可满足系统通信需求。
此外,系统还采用了以太网方式为主的通信模式,该模式主要由路由器、防火墙等设备组成,其中防火墙主要应用于智能用电信息交互平台与计量自动化等系统之间,有效确保了系统信息的安全。本地通信信道指的则是用户侧的本地网络,主要采用了无线通信技术ZigBee、WiFi、低压电力线载波等通信方式来实现其通信功能;应用现场由用户侧智能终端、智能电表、智能家电、智能安防、分布式电源、温湿压记录仪等多种设备组成。
3 嵌入式Web Server用户侧智能终端设计
3.1 硬件设计
本方案的硬件平台主要运用了ARM11系列的微处理器作为系统的硬件核心模块,并在该模块上运行Android操作系统、嵌入式数据库(SQLite)、Web server(I-Jetty)及业务处理模块。系统硬件主要由微处理器ARM11、电源系统、通信系统、外部设备接口、存储系统以及用户接口6个部分组成,同时在外围设备和拓展模块中添加设备接口、地址译码等功能。Data Flash的主要作用是负责对处理器结构、工作模式、系统自动化检测等硬件设施进行配置和监测,SDRAM的作用是负责处理软件系统的所有文件。系统在经历过初始化、自检等操作后,便可按照引导程序确定运行地址,并自动开始运行。
图1 嵌入式Web server用户侧智能终端硬件框架图
3.2 软件平台设计
3.2.1 系统软件框架
用户侧智能终端系统软件包含了底层驱动、系统、协议栈以及应用层4个部分,其中底层驱动包括:WiFi接口、无线通信技术ZigBee接口、红外通信接口、TTL、Data Flash、TFT液晶、触摸屏、USB接口、SD卡座等外围设备驱动;终端系统主要运用的是Android嵌入式系统;协议栈包含TCP/IP协议栈、上行通讯协议栈、下行通讯协议栈以及ZigBee协议栈;应用层由Web Server服务器,业务处理模块以及GUI三个部分组成。业务应用层次所具备的功能有智能能源管理、智能安全管理、智能自动化管理以及智能环境质量检测等几个模块。
3.2.2 Android平台建立
Android是用户侧智能管理中相对独立和相对完整的嵌入式子系统,主要涵盖了底层内核(Linux)、中间件以及关键应用软件。Android系统中有着一套生成Make file的程序和独立的变量和宏。开发人员能够运用系统中的使用变量编写Android build系 统 的Make file—Android.mk。每个模块(如一个应用、一个共享库等),均拥有属于自己的Android.mk。在编译的过程中,Android.mk里面的宏会被展开为相应的make规则,变量也能够被代入相应的规则。待整个Android源码编译结束后,系统中生成的二进制文件、image等就会被自动安装在Out/目录下。
3.2.3 嵌入式系统TCP/IP
协议簇主要包含了传输控制协议、网际协议、用户数据报送协议以及信息报送控制协议四种,文章所介绍的系统采用的是传输控制协议TCP和网际协议IP协议簇,考虑TCP/IP协议簇都有着繁杂的协议种类,所以为确保TCP/IP协议能够更好地适应嵌入式系统,我们在选择协议簇之前根据具体应用的对协议内容进行适当的精简[3]。例如,考虑到家庭用户是嵌入式Web Server用户侧智能终端管理系统的主要应用对象,用户连接数和应用数据量等都处于一个相对较小的范围。所以,我们在设计该智能管理终端时,除了需要考虑全面满足应用外,还需要综合考虑系统的能源消耗问题。
本方案选用的TCP协议主要采用的是“停止等待算法”,它与常规应用的“滑动窗口算法”相比,具有能耗小、计算更加快速精准等优势。同时,“停止等待算法”不仅降低了实现系统智能化的难度,还增强了系统处理用户数据的能力和速度。此外,应用数据量小,还预示着嵌入式Web Server用户侧智能终端管理系统对网络的要求不高,因此可以删减掉TCP协议中的流量控制功能。再有就是可以通过取消TCP协议发送缓冲区和接收缓冲区的方式,降低协议对存储环境的要求。如此一来,不但实现了降低系统耗能的目的,还能为户数段安全、稳定、高效的传输提供可靠的渠道。
3.2.4 HTTP协议及实现
服务程序协议HTTP引擎是嵌入式Web Server技术的核心,而HTTP协议则是Web应用的标准协议,HTTP1.1标准协议的应用,能够帮助系统实现在浏览器和服务器之间为多个HTTP事务提供同一个TCP连接,该功能的实现使智能管理系统的智能化水平和稳定性能等都得到了显著的提升。所以,将HTTP1.1协议应用于Web服务器具有明显的可行性和效益性。嵌入式Web Server主要通过小服务程序Servlet接口在HTML(超文本链接标示语言)文件中运行,供随机存取存贮器RAM读/写数据。HTML页面内容通过只读存储器中的压缩文件和快速运行的代码动态产生。
另一方面,系统应用代码主要是通过Java和Java脚本等技术在客户端生成,因此服务端的主要任务就只是发布网页,该模式有效减少了服务端的代码和容量,从根本上提升了服务器的运行质量和运行效率。为有效降低嵌入式系统的资源消耗量,本设计还将嵌入式Webl5-6制作成单任务模式,使系统只需要对正在进行的HTTP协议连接复用和为独立用户Servlet开辟进程即可,有效避免了传统用户侧智能服务终端中存在的需要开辟每个进入服务端连接进程和处理多路复用进程的弊端。
3.2.5 I-Jetty服务器的移植与部署
Jetty服务器是一个可以在Android移动设备平台上运行的Jetty。该服务器完全由Java实现,经常被作为一个福利的服务软件被使用,它不仅是一个开源的HTTP服务器,还是javax和servlet等服务器的容器,有着高内聚、低耦合以及扩展性强等优势,适合作为嵌入式Web Server用户侧智能终端的移植和部署服务器。I-Jetty服务器在智能终端系统中的应用始终遵循了简单、易操作的指导原则,一进入市场就因部署速度快、发布信息及时等优势被广泛应用于各种智能化设备中。I-Jetty服务器还具有可插拔和可扩展的优势,能被轻松地嵌入到各种类型的产品和系统中。
总而言之,I-Jetty服务器具备了适用范围广、速度快、体积小等优势,是嵌入式环境下Web Server开发中移植和部署的首选服务器。操作流程大致如下:首先,对事先开发好的应用程序进行编译,生成WAR包,并将其移动到I-Jetty服务器的Web apps目录下;其次,创建一个Server对象,同时设置端口,为Server对象添加一个默认的Handler;再次,用配置文件Jetty.xml设置Server对象;最后,通过Java向Jetty服务器发出启动指令,待服务器启动后即可实现远程访问和远程操作等功能。
3.2.6 基于Java Bean+Servlet模型的动态页面实现
Java Bean是以Java语言为基础构建的一种可重用组件,Java Bean的应用,可以将智能终端管理系统中由Java代码创造的对象进行打包,并且为其他开发者通过内部页面和Servlet提供了通道,使得其他Java Bean以及小型应用程序等可以自由地使用这些对象[4]。Servlet则是一种服务器端的Java应用小型服务程序,拥有独立的平台和协议,是生成动态Web页面的核心技术。Servlet的主要任务是负责处理客户的请求和相应服务器的中间层。它位于Web服务器内部的Java应用程序中,运行原理与传统的从命令到运行再到启动Java应用程序不同,Servlet主要是通过Web服务器进行加载。
Java Bean+Servlet模型是按照视图控制器的原理进行设计的,主要由Model层、View层和Controller层三个部分组成。其中Model层的主要功能是实现业务逻辑,负责存储与使用应用程序产生的数据资料;View层则主要被用于用户界面的现实,它能够自由访问Model层的数据信息;Controller层是控制和联系Model层与View层。Java Bean+Servlet模型在具体的使用过程中,各层级之间相互协作,有效实现了对客户端数据的收集、转化和应用。该模式所具备的功能如下:
第一,由Java Bean作为Model层实现具体的应用逻辑和功能;第二,由Servlet作为Controller层处理HTTP请求,包括对输入数据的检查和转换、通过Java Bean访问数据库、初始化HTML页面中需要使用的Java Bean和对象,以及根据处理的分支和结果判断HTML位置等;第三,将HTML作为View层获取Servlet生成的对象和Java Bean,待取出其中的数据后返回生成交互信息的页面。