刘海杰
(河北省特种设备监督检验研究院唐山分院,河北 唐山 063000)
当前,物联网ZigBee技术的应用越来越广泛。物联网技术在工业现场的应用,可建立物与物、物与人的网络连接,实现泛在感知,支持机器自动识别,提升自动化监控水平和效率。笔者设计了一种基于物联网的工业现场监控系统,通过组建无线传感器网络采集工厂运行中设备及环境所产生的信号,并传递给本工位的智能交互终端,交互终端具有本地监控的功能,且可作为网络服务器供远程用户访问,为工作人员进行现场管控提供快捷、便利的多重交互方式。
基于物联网的工业现场监控系统大致分为三部分。一是无线传感器网络部分,主要应用ZigBee技术和ZigBee协议栈进行开发[1],实现组网、数据采集和传输。二是本地端部分,即应用C语言和界面开发工具GTK+在嵌入式开发板上实现本地客户端的开发。本地端主要实现ZigBee采集数据的处理和显示,以及通过摄像头实现对工厂环境的监控。三是网络端的开发,应用网络开发的前端技术、HTML超文本标记、JavaScript脚本及服务器端的CGI开发,实现服务器与客户端浏览器的数据交互,实现在客户端浏览器上显示环境监测数据及对工厂内部设备的管理,完成对工业现场的实时监控。整个系统的原理框图如图1所示。
图1 系统的原理框图
基于ZigBee协议的无线传感器网络由终端节点和协调节点组成[2]。其中协调节点应用ZigBee无线通信协议组建及管理网络。
系统采用模块化的结构设计,每个ZigBee终端节点均包括无线数传模块和控制接口部分[3]。无线数传模块主要负责ZigBee信号的无线收发,实现基于ZigBee网络与协调节点的数据通信。不同类型终端节点的无线数传模块电路相同,而接口电路却有差别。本系统的接口电路主要用于驱动温湿度传感器、红外传感器、烟雾传感器、振动传感器、液位传感器以及继电器控制模块,用于感知工厂设备及环境信息。由于各终端节点布放位置不同,故其携带不同的传感器,各节点协同工作。终端节点1的温湿度传感器和红外人体传感器HC-SR501的数据引脚分别连接CC2530的P0_4和P0_7;终端节点2的振动传感器SW-18010P的DO引脚和液位传感器的D引脚分别连接CC2530的P0_6和P0_7;终端节点3的CC2530 P0_6引脚连接烟雾传感器和P0_5引脚用于继电器控制。
协调器是整个ZigBee网络的中心,负责传感器网络的建立、管理以及来自终端节点数据的汇集与处理。本设计针对管控系统硬件要求具有易开发、低功耗、低成本的特点,因此协调节点和终端节点均采用CC2530射频芯片作为ZigBee芯片。CC2530采用无线SOC(System On Chip)设计,系统所需的一般电路都已集成在芯片内部,只需简单外围电路即可实现信号收发功能[4]。
在本系统中,协调器通过串口与智能交互终端相连,并通过串口通信与交互终端进行数据的收发,主要是向客户端发送终端节点上传来的数据信息,并接收来自交互终端的控制信号。协调器节点结构图如图2所示。
图2 协调器节点结构图
2.3.1 协调器节点软件设计
协调器节点的主要功能是组建网络和维护网络,对节点进行绑定,进行数据的接收,将收到的数据发送给上位机,工作流程如图3所示。
图3 协调器节点工作流程
2.3.2 终端节点的软件设计
终端节点需定时采集工厂环境及设备数据并发送到协调器节点,其工作流程如图4所示。其步骤是节点初始化,尝试加入网络,进入网络后等待中断指令,当Sensor收到外部中断指令时,等待Sensor数据转换后进行数据发送,发送完数据后Sensor进入休眠状态,等待下一次的中断请求。
图4 终端节点的工作流程
2.3.3 程序设计
整个程序的设计考虑了以下三个部分:第一,网络节点对传感器的驱动;第二,传感数据的采集;第三,终端节点和协调器节点间的数据传输。
程序的设计以数据传输为主线,系统中数据分为上行数据和下行数据。上行数据主要用于实时数据和报警信息的采集,而下行数据则是针对报警信息而发送的控制指令。SampleApp_Init()初始化函数主要对终端节点的外部设备进行一些初始化操作,如对连接传感器的接口做输入输出的配置。
(1)上行数据的发送。上行数据(继电器节点除外)用SampleApp_Send_P2P_Message()函数打包传输,并在函数中调用数据采集函数,然后将数据保存到全局变量里,并调用AF_DataRequest()函数将数据发送到协调器。
(2)上行数据的接收。当终端节点发送数据后,协调器节点将接收到该数据,并调用处理消息的函数SampleApp_MessageMSGCB(),其中对应簇ID为SAMPLEAPP_PERIODIC_CLUSTERID,然后对数据进行处理,并将接收到的数据通过HalUARTWrite()函数串口传到交互终端。
(3)下行数据的发送。当按下协调器的S1按键时产生中断信号,用SampleApp_SendPeriodicMessage()这个函数处理中断信息。通过AF_DataRequest()函数,将命令发给继电器终端节点。
(4)下行数据的接收。下行数据主要由协调器控制继电器,通过终端处理函数SampleApp_HandleKeys()来控制继电器的功能。
以工位为单元使用智能交互终端,以Arm(S5PV210)嵌入式开发板作为开发平台,在Linux系统中进行本地端与网络服务器端的开发,采用触摸屏提供交互式操作,本地端负责感知数据的处理、显示。网络服务器端实现物联网网关的功能,负责ZigBee网络与Internet网络的连接,响应远程客户端的数据请求,同时通过串口通信实现对ZigBee网络的监控。
本地端的开发目的是使管理者在交互终端上对工厂环境进行监控。本地端的设计基于嵌入式Linux操作系统,用C语言和GTK+工具进行开发。
在Linux操作系统下,任何设备都被看作是文件描述符。当ZigBee网络的协调器通过串口连接到本地端时,在本地端的操作系统下会出现串口描述符/dev/ttyUSB0。通过串口的描述符,读取ZigBee的数据和进行数据分析,并用界面的操作工具GTK+进行显示,且可利用摄像头进行视频监控。
考虑到本地端的局限性,因此借用互联网的方式来获取工厂现场的设备及环境数据,以实现对工厂内部环境的管控。
通过在开发板上嵌入一个支持CGI脚本的Web服务器,生成动态页面,用户在任何地方都可以通过浏览器对系统设备进行监控。选择专门为嵌入式设备设计的Boa服务器作为嵌入式Web服务器,Boa是一个单进程的HTTP服务器,完成一个用户请求后,才响应另一个用户的请求,无法并发响应;它支持CGI,能为CGI连接开启新的进程。Boa服务器的体系结构如图5所示。通过移植Boa服务器,编写HTML页面并结合CGI技术,用户通过Internet就可以访问和控制嵌入式设备,从而实现对工业现场的监控。
图5 Boa服务器的结构图
远程客户端采用HTML+JavaScript技术进行客户端网页的编写,实现远程用户对现场数据的监测和管理。客户端页面主要分为设备控制、现场环境、视频监控三部分。图6为系统在实验阶段对室内环境的数据采集结果,包括温度、湿度、烟雾、红外入侵等信息。
图6 室内环境数据采集结果显示界面
本系统实现了基于物联网的工业现场监控,通过底层传感器网络进行设备及环境信息的采集,并传输至交互终端进行本地监控及供远程用户访问。经测试,系统可稳定地进行上下行数据传输,具有实时性好、可扩展性强的特点,在现场管控领域有较好的应用前景。