基于REST架构的离散制造业物联网平台

2016-01-21 08:43姚明海陈占省顾勤龙
浙江工业大学学报 2015年4期
关键词:物联网

姚明海,陈占省,顾勤龙

(浙江工业大学 计算机科学与技术学院,浙江 杭州 310023)



基于REST架构的离散制造业物联网平台

姚明海,陈占省,顾勤龙

(浙江工业大学 计算机科学与技术学院,浙江 杭州 310023)

摘要:因离散制造业传统物联网系统设计臃肿、扩展性差、复杂度高且系统应用之间耦合性大,使得新应用的引入与集成需要大量的工作,难以满足企业日益增长的业务需求.提出了基于REST架构风格的离散制造业物联网平台.将传感节点和节点状态数据抽象成资源,采用REST架构风格设计适合离散制造业的物联网平台原型并积木式搭建系统,便于系统整合应用,屏蔽设备异构.最后描述了系统的具体实现细节并将平台应用于企业生产实践进行验证.

关键词:REST;物联网;离散制造

随着传感网络、嵌入式技术和无线通信等物联网技术的不断成熟,离散制造业在信息化过程中也越来越多的引入物联网系统.物联网系统的引入,可以有效地帮助企业提高工艺流程的精确度、降低人工成本和提高效率.但企业物联网地引入是分阶段的引入,不同阶段引入不用的物联网应用,而这些不同阶段引入物联网应用都是独立开发,这些应用通常采用SOA架构进行设计,应用之间接口各异且契约不统一,导致应用之间孤立,信息流通困难,造成了整个系统紧耦合扩展性差、并且复杂度高,同时存在设备异构等缺点[1].

基于这些离散制造业现有的问题,提出了基于REST架构风格的离散制造业物联网平台.将传感节点和节点的状态数据抽象成资源,采用REST架构风格组建应用,设计适合离散制造业的物联网平台原型,便于整合应用,屏蔽设备异构,并描述了具体实现以及验证.

1相关工作

1.1REST技术

REST(Representational state transfer,表述状态转移)是由Roy Thomas Fielding博士于2000年在其博士论文中作为组建大规模分布式超媒体系统的架构风格首次提出的[2].REST架构风格将Web中的所有事物抽象成资源的集合,使用统一的资源标识符(URI)对资源进行标识,利用HTTP动词(GET,POST,PUT,DELETE等)作为统一接口对资源进行操作,同时客户端和服务器之间的交互式无状态的,但是交互的信息具有自描述性.所有的这些特性为构建一个低耦合、低复杂度及高扩展性的Web应用提供了良好的架构约束.

在REST被提出之前,也有一些架构风格也能实现统一接口的特性,如SOAP.但REST具有更好的效率与可扩展性.REST的统一接口是基于HTTP这一广泛使用的协议的接口;而SOAP使用的是自定义的接口[3-4].REST支持多种的数据交换格式,如XML,JSON,HTML等,但SOAP是一种基于XML的协议.当Web请求需要跨越两个或两个以上的Web服务时,可能会引起通信延时,REST Web服务相较于SOAP Web服务能减小这种通信延时[5].

1.2REST与物联网

目前,已经有一些研究者将REST思想应用在物联网上,文献[6]是基于Big Web Services采用SenseWeb将传感器等设备集成到Web服务中,但Big Web Services最初是为了整合分布式系统异构的API而设计的,会随着物联网应用的整合而变得复杂.随着android系统与智能移动设备以及Arduino与Raspberry Pi等开源硬件的发展,文献[7-9]将REST物联网应用到了这些方面.文献[10-12]将REST应用于物联网平台,但未涉及到具体行业业务.文献[13]将REST应用到了智能农场物联网,文献[14]将REST物联网应用到了地下作业安全方面.不同于以往的工作,实现了一个针对离散制造业基于REST架构风格的物联网平台的原型,解耦了离散制造业中不同的物联网系统,屏蔽了底层网关及节点与平台之间的异构,并提供了统一的接口.

2离散制造业物联网总体设计

离散制造业的物联网系统是一个分层系统,各个层次之间通过统一的REST风格接口进行信息交流,可以有效的降低各层系统之间的耦合性.下面将详细描述系统的各个层次,并重点描述系统服务平台的设计思想,以及层次统一接口的设计方式.

2.1离散制造业物联网体系结构

离散制造业的物联网体系结构,遵循着传统物联网的体系结构,如图1所示.

图1 离散制造业联网体系结构Fig.1 IOT for discrete manufacture system structure

感知设备层:该层的主要职能是采集生产中的实时数据并将这些数据发送到网络接入层.该层的设备是传感器节点,可以是Zigbee节点(如XB24-API-001J节点),也可以是支持REST API的节点.Zigbee节点将采集到的数据传输到网络接入层进行处理.而支持REST API的节点,则可以直接将采集好的数据解析后通过统一的API接口发送到服务平台层,能够省去网络接入层的网关,减少传输开销.但支持REST API节点的价格比较昂贵.

网络接入层:该层是服务平台层与感知设备层之间的数据通道.该层的主要职能是收集感知设备层采集的数据,将这些数据进行整合(如数据分类,格式转化等),并将整合完成的数据通过以太网转发到服务平台层.同时也对外提供REST API,服务平台可以通过网关提供的REST API,将节点的配置信息发送网关,网关将这些信息转化成节点的配置命令,进而动态的配置节点信息.

服务平台层:是整个物联网体系最重要的部分.服务平台提供了一系列的统一接口.这些统一接口能够减小行业应用层系统之间的耦合度,能灵活的为企业提供不同的应用服务;对下层的物理设备,这些统一接口能够接收不同节点传送的感知数据,同时也能为用户提供统一的节点配置方式,实现了不同应用与传感设备之间的灵活组网,也屏蔽了物理节点的多样性给平台带来的影响.服务平台的主要模块如下:

1) 路由模块,负责处理平台的通信功能.不论是接收节点或网关的信息,或是为行业应用提供数据,对外REST式Web服务API都是由路由模块去的驱动.可以说是路由模块定义了服务平台的访问方式.

2) 数据处理模块,负责整个平台的数据处理,包括了将接收到的节点数据解析存储,根据行业应用层的业务需求对数据进行分析、筛选以及序列化后再将数据提供给业务使用.

3) 设备管理模块,为设备提供了动态的注册、配置与注销功能.该模块通过对外的API,接收设备的信息,不论是节点发送的注册信息,或是用户发送的动态配置信息或注销信息.该模块会对这些信息进行分析,在对这些信息进行存储或转发.

4) 缓存模块,对数据的查询结构进行缓存,减小了对数据库的IO读写,优化了应用数据查询的效率.

5) 日志管理模块,提供了对平台故障的记录及平台访问的记录,为系统错误恢复提供了依据与保险.

行业应用层:该层是针对离散制造业行业特点所创建的应用集合.如制造资源计划(Manufacture resource planning, MRPII)、企业资源计划(Enterprise resource planning, ERP)和制造执行系统(Manufacture execution system, MES)等系统.这些系统实现了企业生产的自动化与信息化,提高了企业的生产效率.

2.2REST接口设计与实现

REST架构风格将所有的事物都被抽象成资源,需要有为每个资源分配一个URI,来对资源进行标识.

下面以节点实时数据收集这一离散制造业物联网最基本的功能为例.节点采集的实时数据对应的URI就是http://[DOMAIN]/realtime/nodes/{id}/.URI中的[DOMAIN]表示部署平台服务器的域名,也可以是该服务器的IP地址.上述的URI分为两类:

1) http://[DOMAIN]/realtime/nodes/是集合类型,表示整个平台收集的节点实时数据的集合.

2) http://[DOMAIN]/realtime/nodes/id/是单一类型,该URI带有特定的唯一id,指定了与该id对应的某一条实时数据.

REST接口除了需要每个资源的URI之外,还需要指定资源的访问方式.REST架构风格是由HTTP协议驱动的,通过HTTP协议定义GET、POST、PUT及DELETE四种方法对资源进行操作.例如对上述的URI http://[DOMAIN]/realtime/nodes/{id}/进行这四种方法的操作:

1) GET方法:获取实时数据,对不带id的URI,获取到的是整个实时数据集合,带有id的URI则获取到了该id对应的特定的某条实时数据.

2) POST方法:该方法只适合http://[DOMAIN]/realtime/nodes/,表示传感器采集了新的实时数据,向集合中添加实时数据.

3) PUT方法:该方法只适合http://[DOMAIN]/realtime/nodes/id/,表示修改指定的实时数据.

4) DELETE方法:该方法表示删除需要的实时数据,不带id则表示删除所有的数据(是一种比较危险的行为,一般不推荐实现),带有id则表示删除指定的某条实时数据.

同时接口可以携带查询参数,如节点实时数据,根据车间筛选,可以携带workshop_id的查询参数:http://[DOMAIN]/realtime/nodes/?workshop_id=1,之所以采用查询参数的方式,而不是增加接口目录的深度,是因为增加接口目录深度会给整个接口的实现带来巨大的工作量,同时接口设计复杂度增加,不易维护,灵活度会较差.在需要根据多个条件筛选时,接口的意义会变得模糊.基于这些原因,在后面实现上,将筛选功能放到查询参数中处理.

3系统实现

电机制造是一个典型的离散制造行业.下面将以浙江迪贝公司物联网系统的开发部署为例介绍系统的具体实现.

如图2所示,生产决策者可以根据公司接收到订单情况安排各个车间的车间生产计划,每个车间又可以根据车间计划的制定相应班组计划,然后车间根据这些班组计划进行生产.对每个车间的生产的数据进行采集,对这些数据进行统计分析,输出到看板反馈给生产决策者,决策者可以根据这些反馈,对生产过程与计划进行掌控,必要时可以进行调整,以对生产资源优化.

图2 电机生产计划流程Fig.2 Process for plan of motor manufacture

3.1路由与数据处理模块

整个平台架构利用了Python下Django框架进行了实现,Django是一个采用了MVC模式并有着强大路由功能的高效Web开发框架,也包含了类似缓存模块与日志管理模块等常见模块;并采用了Django REST Framework框架作为补充,在Django的基础上能够高效方便的搭建REST API同时提供了各种数据格式的序列化,提高开发效率.

在整个平台的实现中,各个功能是由一个个的Django app(应用)进行积木式搭建而成的,一般每个app中都包含了这三个文件:models.py、views.py与urls.py,分别对应于数据表的映射模型、视图显示控制(在API中用来处理API的具体实现)以及路由配置.系统项目组织结构如图3所示.

图3 项目组织结构Fig.3 Project organization structure

将整个平台取名为miot(Motor things of internet),由于系统仅用于内网,这里将平台对应的域名为一级域名dibei.com/,这是所有程序的对应入口,也是资源URI根目录.之后对应的app分为两类.

一类是专门用来处理不同物联网web应用的,对应于上图的apps以及之后的分支.如制造执行系统对应于上图名为MES的app,其访问地址是mes.dibei.com这个二级域名开头的部分.另一类是专门提供对外的统一接口的,对应于图3的apis以及之后的分支.其访问方式都是www.dibei.com/api/为前缀,之后的分支则表示资源的具体描述.如realtime app表示实时数据的目录,用以存储实时数据这一类型的资源,如节点信息nodes/.

3.1.1通过路由配置资源接口的访问路径

每个app的路由会根据api路径来处理.若当前目录不是路径的终点,则将访问转到下一目录,当到达api路径的终点,则将该api的访问引导到接口的具体实现中(及对应的Views中).

http://www.dibei.com/api/realtime/nodes/{id}/接口的访问显示在miot app中将访问转到apis app中url(r'^api/', include('apis.urls')),在apis中又将访问转到realtime app中url(r'^realtime/', include('realtime.urls')),在realtime app中,到达了api路径的终点,调用views.py中接口的具体实现url(r'', include(routerRealTime.urls)),routerRealTime.register(r'^nodes', NodedataViewSet).路由的访问流程如图4所示.

图4 路由访问流程Fig.4 Process of route access

3.1.2实现接口功能完成数据处理

在views中实现接口的具体操作,利用Django REST Framework快速的实现了接口的四个操作动作,并为接口的输出数据做了序列化.如果需要应付复杂的业务,也可以很方便在ViewSet类中覆写GET、POST、PUT与DELETE四个操作动作来完成复杂的业务.接口快速实现的代码片段如下:

#文件realtime/views的接口具体实现

#利用Django REST Framework快速的序列化与反序列化节点信息数据

class NodedataSerializer(serializers.ModelSerializer):

class Meta:

model=Nodedata #引入数据表映射模型

fields=('id', 'workshop_id', 'gateway_id',

'node_id', 'node_type', 'data_value',

'upload_date', 'status', 'feedback')

#利用Django REST Framework快速的实现

#api/realtime/nodes/[id]接口GET、POST、PUT及DELETE四个动作

class NodedataViewSet(viewsets.ModelViewSet):

queryset=Nodedata.objects.all()

serializer_class=NodedataSerializer

#将最后的nodes/[id]路径与具体实现注册到路由

routerRealTime=routers.DefaultRouter()

routerRealTime.register(r'^nodes', NodedataViewSet)

部分API的访问方式如图5所示.

图5 接口访问方式Fig.5 Access methods of interface

3.2设备管理模块

由于智能设备的发展普及,以及Arduino与Raspberry Pi等开源硬件的发展,网关或节点的功能越发的强大,可以在网关或者直接在节点中布置一个小型的Web服务,这样便可以使用统一的REST接口通过网关管理节点或者直接管理节点,同时实现了关注点分离,将节点的配合方式从服务平台中转移到节点自身,避免了由于节点种类的增加,导致设备管理模块的复杂度的增长.

在节点连接上物联网平台时,会向http://www.dibei.com/api/realtime/sensers/[id]/发送POST请求,并将自己的信息注册到管理平台,该信息必须包括节点自身的id与ip地址.

当要修改某个节点的配置时,可以根据该节点的id,向http://www.dibei.com/api/realtime/sensers/id/发送PUT请求,此时在该接口PUT请求对应的实现中,需要进行一个转发机制,根据该节点注册到服务平台的ip,将新的配置信息转发给该节点.服务平台实现节点配置信息转发功能的代码片段如下:

#文件realtime/views

#对Sensers的PUT请求进行转发处理

#…

url='http://'+ipAddress+'/api/senser/config/

req=urllib.request.Request(url,data)

response=urllib.request.urlopen(req)

#…

同样的道理,对节点进行注销,也只需要发送DELETE请求到对应的http://www.dibei.com/api/realtime/sensers/id/接口,并在服务平台上对应的转发该请求即可,设备管理方式如图6所示.

图6 设备管理方式Fig.6 Method of equipment management

动态的设备管理方式可以对节点进行重复利用,以适生产线的重组.

3.3结果展示

REST架构风格的物联网平台能够为应用提供服务数据.通过统一接口,应用能够快速方便地获取所需的数据,不必考虑平台的限制,从而为跨平台的应用实现提供了简便的基础.下面以电机生产中高冲这个工序为例:

在每次高冲动作完成时,设备的继电器会产生一个脉冲信号,表示动作完成.采用Arduino UNO R3作为传感节点处理单元,传感节点到智能网关之间采用ZigBee作为传输协议,传感节点传输模块采用了Digi公司XBee模块.而智能网关架构在Tiny4412开发板上,采用Android操作系统.传感节点采集每一次的高冲动作,按照节点设定的比例转化成对应的产品数,数据从传感节点经智能网关通过统一接口上传至服务平台,车间看板程序通过统一接口向服务平台请求整合过的生产数据,展示了生产的实时数据.图7的车间看板Android应用展示了高冲工序的实时生产数据.

图7 车间看板android应用Fig.7 Android app for workshop board

4结论

提出了基于REST架构风格的离散制造业物联网平台,将REST架构风格应用到了离散制造业的物联网系统中,构建一个松耦合,复杂度低且高效的物联网平台,可以将各种不同的应用以积木的方式搭建,同时提供的统一接口为各种行业应用的跨平台开发提供了便捷的基础,更好的为离散制造业的生产提供信息化支持.但目前平台的研发还处于探索实验阶段,应用中,对于生产线的节点部署并未对所有的生产过程进行部署.服务平台所有的缓存模块是Django自带的模块,而日志管理模块使用了Apache HTTP Server与Django的自带模块,还未在这些基础上进行优化.这些问题有待进一步的研究和解决.

参考文献:

[1]秦海平,王美清.离散制造企业应用集成开发研究[J].制造业自动化,2010(7):29-33.

[2]FIELDING R T. Architectural styles and the design of network-based software architectures[D]. California:University of California at Irvine,2000.

[3]毛力锐,蔡鸿明,徐博艺,等.基于REST面向资源的企业集成平台框架[J].计算机工程,2010,36(2):254-256.

[4]冯新扬,沈建京.REST和RPC:两种Web服务架构风格比较分析[J].小型微型计算机系统,2010(7):1393-1395.

[5]陈海明,崔莉,谢开斌.物联网体系结构与实现方法的比较研究[J].计算机学报,2013,36(1):168-188.

[6]PAUTASSO C, ZIMMERMANN O, LEYMANN F. Restful web services vs. big'web services: making the right architectural decision[C]//WWW '08: Proceedings of the 17th International Conference on World Wide Web. New York: ACM,2008:805-814.

[7]CHRISTENSEN J H. Using RESTful web-services and cloud computing to create next generation mobile applications[C]//OOPSLA '09: Proceedings of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications. New York: ACM,2009:627-634.

[8]GUINARD D, FLOERKEMEIER C, SARMA S. Cloud computing, REST and mashups to simplify RFID application development and deployment[C]//WOT '11: Proceedings of the Second International Workshop on Web of Things. New York:ACM,2011:9-15.

[9]KOVATSCH M, LANTER M, DUQUENNOY S. Actinium: a RESTful runtime container for scriptable internet of things applications[J]. International Conference on Internet of Things,2012,567(1):135-142.

[10]ZHANG Xinshuang, WEN Zhigang, WU Yuexin, et al. The implementation and application of the internet of things platform. based on the rest architecture[J]. Business Management & Electronic Information International Conference on,2011(2):43-45.

[11]程冬梅,王瑞聪,刘燕,等.基于REST架构风格的物联网服务平台研发[J].计算机工程与应用,2012,48(14):74-78.

[12]LAINE M. RESTful web services for the Internet of things[EB/OL]. [2015-05-09]. http://media. tkk. fi/webservices/personnel/markku_laine/restful_web_services_for _the_internet_of_things. pdf.

[13]SIVAMANI S, KWAK K, CHO Y. A design of Web-based services using RESTful API for vertical farm[J]. Life Science Journal,2014,11(7):763-767.

[14]CHENG Bo, CHENG Xin, CHEN Junliang. Lightweight monitoring and control system for coal mine safety using REST style[J]. Isa Transactions,2015,54(1):229-239.

(责任编辑:陈石平)

Research on the internet of things platform of discrete manufacturing

enterprises based on REST architecture

YAO Minghai, CHEN Zhansheng, GU Qinlong

(College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China)

Abstract:For the problems of bloated design, poor scalability, high complexity and tight coupling between application systems in the internet of things of traditional discrete manufacturing, the import and integration of new applications requires a lot of work, It is difficult to meet the growing business needs of enterprises. An internet of things platform for discrete manufacturing enterprises based on REST-style architecture is presented. The sensor and their status are abstracted as resources. The REST architecture is used to construct block system in order to facilitate the integration of applications and shield heterogeneity of devices. Finally, specific implementation details of the system are described and the platform will be applied in the enterprises for verification.

Keywords:REST; internet of things; discrete manufacturing

文章编号:1006-4303(2015)04-0425-06

中图分类号:TP393

文献标志码:A

作者简介:姚明海(1963—),男,浙江嘉兴人,教授,研究方向为模式识别与智能控制,E-mail:ymh@zjut.edu.cn.

基金项目:国家自然科学基金资助项目(61070113);浙江省科技厅重大科技专项(2012C01035-8)

收稿日期:2013-02-08

猜你喜欢
物联网
基于物联网的无线测温模块设计
基于物联网ZigBee技术的智能家居监控系统 
基于高职院校物联网技术应用人才培养的思考分析
如何在高校架设学生洗衣服务系统
基于无线组网的智慧公交站点信息系统研究与实践
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
中国或成“物联网”领军者