时间:2015-10-30 21:05:24 来源: 复制分享
早在1999年就已经有了“物联网”这个概念,但是直到十年之后的2009年,IBM提出“智慧地球”的概念,才推动很多国家把物联网研究和发展提升到战略层面。但是比较遗憾的是,直到现在的2015年,我国的物联网的发展依然主要靠政府项目来拉动,所以现在的发展似乎前景越来越不明朗。
政府似乎意识到这是个问题,在一些互联网公司的倡导和推动下,提出了“互联网+”的概念。虽然“互联网+”和“物联网”都是以网为主,但是发展的侧重有了本质区别。“互联网+”是以互联网为主,外围智能模块和传感器为辅,构建互联生态。而“物联网”却是以互联网为基础,重点在传感器数据采集,设备控制,远程监控为主。
但是现在很多互联网公司,做的是“互联网+“的事,却以”物联网“的名义来宣传。所以现在的人越来越搞不清”物联网“的真实定位了。
我一直认为从技术角度来看,所谓“物联网“就是传统工控网的一个外延。传统的工业现场,考虑到生产安全,都是内部网络。另外实施和维护的代价相对较高。而在互联网和移动互联网越来越完善的今天,在各个领域都有了远程测控的要求。比如目前比较典型的农业大棚监控、森林防火监控、鱼塘监测和养殖管理等等。
“互联网+”和“物联网”由于发展的侧重点不同,在做架构设计上肯定有所不同。“互联网+“的项目,其实更看重的是用户数,通信数据流量,这是衡量一个”互联网+“项目成功的标志,当然这是也是那些做云平台为主的互联网公司最看重的,用户数和通信数据流量正是他们的利益点所在。
而以中小项目为主的“物联网”项目,其实更看重的,一是系统稳定可靠,能保证系统长期稳定的运行,因为有些监控点往往部署在人迹罕至的地方,系统的可靠性成为关键。二就是系统便于开发和维护,因为基于不同行业,不同工艺需求的,很难开发出像民用领域的通用产品,需要根据现场实际调整相关的业务逻辑和监控画面,所以是否易于开发很关键。当然维护更为重要,因为偏工业级的“物联网”项目一般设计至少是三年或更长的生命周期,所以项目维护难以避免,甚至系统还会根据现场工艺的变更进行变化,易于维护是“物联网“项目一个不可或缺的要素。
由以上的说明,我们可以很清晰地了解,从技术角度来讲,做“互联网+”和“物联网”项目的架构设计是有很大的不同,本篇文章主要介绍工业级“物联网”项目的架构设计及实施。
工业级物联网的概念和特色
由于笔者曾经在传统工控领域工作7年之久,所以理解“物联网”更多是从工控的角度来考虑。所谓的工业级物联网,不是工业领域的物联网,而是具备工业领域的特色的物联网项目,比如农、林、牧和渔业等领域的相关项目。和工业领域的项目不同,没有那么庞大和要求严格,采集和监控的数据也相对较少,对设备、及实施和维护的成本比较敏感,并且一般要求远程监控。但是相同的要求是,设备要稳定可靠,便于根据工艺要求调整控制策略,方便升级、扩展,易于维护。
传统工控项目,一般相对庞大,环节多,开发和实施周期都比较久,当然项目的费用也是相对高昂的。往往一个实施工控项目的公司,一年能做十几个这样的项目就已经很繁忙了。而在物联网时代,由于互联网和移动互联网基础设施比较完善,云服务公司也是层出不穷,可以花最少的代价,相对快速的完成一些项目。
由于开发和实施的代价大大降低,所以可做的领域被大大拓宽了,形成了一个良性循环,做的越多,越可靠,也越便宜。越便宜,可做的项目也越来越多。
工业级物联网项目架构设计思想
了解了工业级的物联网项目的一些特色,所以架构设计方面就有了方向和思路。我们先从技术角度分析,当前一个典型的物联网项目,从组成上来讲,至少有三部分:一是设备端,二是云端(主要指公有云),三是监控端。
【设备端架构设计】
设备端主要负责数据采集,工艺逻辑执行及控制。
无论底层的设备数量有多少,通信协议有多复杂,考虑到项目安全等等因素,往往和云端通信,汇集在一个设备上,这样的设备的角色往往是物联网网关,除了专门负责和云端进行通信外,有时候也会对原始数据进行一定的处理,执行一些业务逻辑相关的代码。 和云端通信有很多协议可选,常见的有基于HTTP协议的Get或Put方法,从服务器获取一些设置及状态,及向服务器推送采集到的数据。但是对数据量相对比较大,实时性要求高的,往往是直接的Socket TCP/UDP通信,这样传输的代价相对较低,但是对编程设计方面要求比较高。
由以上分析,从功能层面上分,设备端架构一般可分三层,一是数据采集&控制输出层;二是工艺流程执行层;三是数据上传&命令接收通信层。
【云端架构设计】
云端一般包含三部分:Web前台+ Web后台+中间件;
作为工业级的物联网项目,Web前台一般会显示这几部分内容,一是工艺画面,和现场实际的设备和工艺流程一一对应,画面可以实时反映工业现场运行的情况。二是各种数据报表、曲线数据的保存、查询和打印等。三是运行日志,保存各种运行情况,以备查询。四是显示系统诊断信息,便于系统出现问题的时候,及时判断问题所在。
Web后台相对复杂一些,一般完成三部分内容的工作,如果是设备端基于HTTP协议通信,往往需要处理Get和Put请求。由于前台有实时画面,所以Web后台有时候也需要向前台界面传输实时数据,目前有些实时数据是通过Web Socket协议进行传输,也可以由专门的程序来处理。还有一部分功能比较重要,就是要建立设备数据和各种报表,曲线,日志的对应关系,以便于适用尽可能多的现场。
在工业级物联网项目中,一般中间件必不可少,其主要功能就是负责和现场设备进行通信,获取数据或发送相关控制指令。此外还有一个比较重要的功能,由于中间件程序一般是作为系统的一个服务程序或普通应用程序,生命周期较长,可以长时间连续运行,可以处理一些相对复杂的业务逻辑、数据换算及数据转储。
【监控端架构设计】
监控端一般包含PC、手机或平板监控。
对一般项目而言,也许通过Web前台就可以掌控一切了,但是在移动互联网的时代,如果对应的手机或平板上没有对应的APP,那这个项目就感觉有了一个很大的缺憾。有了手机或平板APP,就可以身在任何地方,都可以相对方便的监控现场。
从功能上划分,架构可以相对简单的分为两层,一就是UI界面显示及操作层,二就是数据通信层,实现和服务器信息交互。
【小结】
如果抛开其他一切因素,仅从技术角度来讲,实现以上三个大环节的功能,用什么系统平台,任何开发语言都可以完成其预定的功能。但是所谓的架构设计,不仅仅从功能角度来设计整个的系统平台,更多还要考虑其可靠性,扩展性,维护性等几个方面。
作为工业级的物联网项目,大都是面向工、农、牧、渔等具体行业,每种行业虽然从技术角度而言有很多类似的部分,但是从工艺流程角度又有很大的区别,所以针对具体的项目,进行代码调整及相关功能的扩展及二次开发必不可少。但是面向一线的工程师往往技术水平及能力相对比较低,能否快速编写出可靠、健壮的代码显的非常重要,毕竟每个项目现场实施时间是有限的,但是同时项目要求也是比较高的。
另外一个物联网项目,包含了嵌入式设备的开发、Web前后台的开发、服务程序开发还有手机和平板程序开发,每一项从技术平台上来说各种各样,比如嵌入式设备,有微软体系的Windows CE/XPE/.NET Micro Framework,有linux体系的嵌入式linux/uclinux等等,还有uCOSII/FreeRTOS/mbed OS等等实时嵌入式操作系统,其开发工具,系统架构各不相同,各有特色。手机和平板目前至少也有三种开发类型,一种是iOS开发,一种是安卓开发和windows 10 UWP通用程序开发等等。另外Web开发就更多了,这里就不一一举例了。
所以如果在整体架构设计中,每种部分都选用不同的技术路线,那么每一种技术路线,意味着都要有一个团队去开发,并且开发完毕后,还需要上下进行沟通,以便于把整个项目有机地联系在一起。
开发完毕后,更多的还有维护工作,不仅是开发团队的维护,更为重要的是现场维护,除了问题,如何及时定位,及时解决。针对如上问题,加上多年的现场实施和维护经验,所以我更看重统一化和组态化的架构设计,下面我就讲讲我们是如何构建物联网项目的。