早在1999年就已经有了“物联网”这个概念,但是直到十年之后的2009年,IBM提出“智慧地球”的概念,才推动很多国家把物联网研究和发展提升到战略层面。但是比较遗憾的是,直到现在的2015年,我国的物联网的发展依然主要靠政府项目来拉动,所以现在的发展似乎前景越来越不明朗。
政府似乎意识到这是个问题,在一些互联网公司的倡导和推动下,提出了“互联网+”的概念。虽然“互联网+”和“物联网”都是以网为主,但是发展的侧重有了本质区别。“互联网+”是以互联网为主,外围智能模块和传感器为辅,构建互联生态。而“物联网”却是以互联网为基础,重点在传感器数据采集,设备控制,远程监控为主。
但是现在很多互联网公司,做的是“互联网+“的事,却以”物联网“的名义来宣传。所以现在的人越来越搞不清”物联网“的真实定位了。
我一直认为从技术角度来看,所谓“物联网“就是传统工控网的一个外延。传统的工业现场,考虑到生产安全,都是内部网络。另外实施和维护的代价相对较高。而在互联网和移动互联网越来越完善的今天,在各个领域都有了远程测控的要求。比如目前比较典型的农业大棚监控、森林防火监控、鱼塘监测和养殖管理等等。
“互联网+”和“物联网”由于发展的侧重点不同,在做架构设计上肯定有所不同。“互联网+“的项目,其实更看重的是用户数,通信数据流量,这是衡量一个”互联网+“项目成功的标志,当然这是也是那些做云平台为主的互联网公司最看重的,用户数和通信数据流量正是他们的利益点所在。
传统工控项目,一般相对庞大,环节多,开发和实施周期都比较久,当然项目的费用也是相对高昂的。往往一个实施工控项目的公司,一年能做十几个这样的项目就已经很繁忙了。而在物联网时代,由于互联网和移动互联网基础设施比较完善,云服务公司也是层出不穷,可以花最少的代价,相对快速的完成一些项目。
由于开发和实施的代价大大降低,所以可做的领域被大大拓宽了,形成了一个良性循环,做的越多,越可靠,也越便宜。越便宜,可做的项目也越来越多。
了解了工业级的物联网项目的一些特色,所以架构设计方面就有了方向和思路。我们先从技术角度分析,当前一个典型的物联网项目,从组成上来讲,至少有三部分:一是设备端,二是云端(主要指公有云),三是监控端。
设备端主要负责数据采集,工艺逻辑执行及控制。
由以上分析,从功能层面上分,设备端架构一般可分三层,一是数据采集&控制输出层;二是工艺流程执行层;三是数据上传&命令接收通信层。
云端一般包含三部分:Web前台+Web后台+中间件;
作为工业级的物联网项目,Web前台一般会显示这几部分内容,一是工艺画面,和现场实际的设备和工艺流程一一对应,画面可以实时反映工业现场运行的情况。二是各种数据报表、曲线数据的保存、查询和打印等。三是运行日志,保存各种运行情况,以备查询。四是显示系统诊断信息,便于系统出现问题的时候,及时判断问题所在。
Web后台相对复杂一些,一般完成三部分内容的工作,如果是设备端基于HTTP协议通信,往往需要处理Get和Put请求。由于前台有实时画面,所以Web后台有时候也需要向前台界面传输实时数据,目前有些实时数据是通过WebSocket协议进行传输,也可以由专门的程序来处理。还有一部分功能比较重要,就是要建立设备数据和各种报表,曲线,日志的对应关系,以便于适用尽可能多的现场。
监控端一般包含PC、手机或平板监控。
对一般项目而言,也许通过Web前台就可以掌控一切了,但是在移动互联网的时代,如果对应的手机或平板上没有对应的APP,那这个项目就感觉有了一个很大的缺憾。有了手机或平板APP,就可以身在任何地方,都可以相对方便的监控现场。
从功能上划分,架构可以相对简单的分为两层,一就是UI界面显示及操作层,二就是数据通信层,实现和服务器信息交互。
如果抛开其他一切因素,仅从技术角度来讲,实现以上三个大环节的功能,用什么系统平台,任何开发语言都可以完成其预定的功能。但是所谓的架构设计,不仅仅从功能角度来设计整个的系统平台,更多还要考虑其可靠性,扩展性,维护性等几个方面。
另外一个物联网项目,包含了嵌入式设备的开发、Web前后台的开发、服务程序开发还有手机和平板程序开发,每一项从技术平台上来说各种各样,比如嵌入式设备,有微软体系的WindowsCE/XPE/.NETMicroFramework,有linux体系的嵌入式linux/uclinux等等,还有uCOSII/FreeRTOS/mbedOS等等实时嵌入式操作系统,其开发工具,系统架构各不相同,各有特色。手机和平板目前至少也有三种开发类型,一种是iOS开发,一种是安卓开发和windows10UWP通用程序开发等等。另外Web开发就更多了,这里就不一一举例了。
所以如果在整体架构设计中,每种部分都选用不同的技术路线,那么每一种技术路线,意味着都要有一个团队去开发,并且开发完毕后,还需要上下进行沟通,以便于把整个项目有机地联系在一起。
开发完毕后,更多的还有维护工作,不仅是开发团队的维护,更为重要的是现场维护,除了问题,如何及时定位,及时解决。针对如上问题,加上多年的现场实施和维护经验,所以我更看重统一化和组态化的架构设计,下面我就讲讲我们是如何构建物联网项目的。
由于是一个物联网通用中间件开发平台,所以着眼点并不是一两个非常有行业特点的项目平台,而是面向不同行业,不同具体应用的二次开发平台,更多考虑跨行业应用的技术通用部分及同一个运行时平台支持多个项目点的功能。
下面我们就设备端、云端中间件及物联网通用平台分别进行介绍。
在工控领域,组态软件司空见惯。为什么很多工业项目采用组态软件,原因主要有两点,一是模块化搭积木式的设计,技术门槛低,实施速度快,非常适合工控技术人员使用;二是可靠性非常高,由于模块之间耦合性低,重用度高,并且每个模块往往在不同项目现场,实际都得到过运行考验,所以稳定性自不待言。
图1YFIOs系统架构
从图1架构图上可以看出,YFIOs包含三大部分:驱动层、策略层和核心层。
中间核心层是最关键的,除了启动驱动和策略引擎外,还创建了两个内存数据库。一个是IODB,主要存放点数据(如温度、湿度数据),另外一个是IOBC,主要存放块数据(如摄像头图片)。策略程序和驱动程序,完全解耦合,通过IODB和IOBC进行数据交互。
和传统组态软件(特指数据组态部分)相比,YFIOs有如下特色:
云端YFCloud中间件平台,可以说是完全脱胎于嵌入式YFIOs,从图2的架构图上就可以明显看出,可以这样说,YFIOs是一个“单机版”的数据组态平台,而YFCloud是一个“网络版”数据组态平台。
图2YFCloud中间件架构
YFCloud还集成了WebSocket服务器,Web动态网页可以通过WebSocket协议和服务器进行通信。
图3物联网通用平台架构
YFIOs嵌入式数据组态运行在物联网智能网关上,直接和YFCloud进行通信(云端中间件通过导入YFIOs的上传IO表,就可以直接进行通信了)。
物联网通用平台的Web前台,目前默认具备如下功能(每个项目模板可以根据需要,进行选择所需要的功能,项目完全继承了项目模板的选择)工艺流程显示、工艺报表(日报表,统计报表)、工艺曲线显示、项目运行日志、工艺参数配置和摄像头监控等等。
物联网通用平台的Web后台,主要功能就是用户管理、角色管理(和功能匹配的角色)、项目模板管理和项目管理。限于篇幅,就不详细介绍了。
该平台的最大优势就是,从软到硬,全部采用了.NET平台。所以不需要太多的技术人员,就可以从上到下进行项目开发。对客户来说,由于涉及到的技术领域比较少,所以二次开发及后续平台维护也比较容易。
图4远程监控检测设备连接图
客户可以通过PC、平板或手机远程监控蔬菜大棚中的作物生长情况。
图5农业大棚手机监控图
通过水质传感器,获取当前水质情况(ModbusRTU通信);通过摄像头获取当前图片;通过GPS获取当前经纬度;通过GPRS模块把数据传送到远端服务器。
图6渔业监控设备连接示意图
Web网页可以查看现场工艺流程界面,工艺报表及设置工艺参数等等。
图7污水监控设备连接示意图
图8污水监控Web界面图
现在国内外互联网企业巨头,瞄准的物联网领域,大都是民用领域,如智能家居、车联网等等。这些领域的特点就是量大、并且相对统一,每个客户不需要特别的定制(特别是硬件层面,区别不大,个性化最多在软件层面)。
但是在非民用领域,即使类似的项目,往往因为最终客户不同,工艺流程的差异,软硬件也会有相对大的变动。另外和民用产品不同,一是应用环境相对恶劣,二是要求24*7连续运行,对稳定可靠性要求比较高,三是要便于扩展,便于维护。
所以这类物联网项目,未来的发展方向,肯定是首先在可靠性上下工夫,满足长期使用的需求后,就是尽可能提取共用部分,让每个项目的修改量降到最低。
当然未来最有可能的发展方向就是,随着现在分工越来越细,云计算发展的越来越成熟,物联网协议标准的确立和客户技术能力的提高,未来也许是在最终客户的统一协调下,不同物联网厂商各做一部分(或软或硬),共同完成最终的项目。