宋兴儒, 凌志浩
(华东理工大学化工过程先进控制和优化技术教育部重点实验室,上海200237)
在工业应用现场,对诸如温度、压力和流量等变量的监控对生产的安全有序进行至关重要。在传统的监控方式中,大多采用如Profibus、CAN和LonWork等现场总线的方式,而在一些铺线困难和需要进行大规模铺线等要求的工业现场,传统的监控方式无疑显现出了很大的弊端。随着网络技术、通信技术和计算机技术的快速发展,无线传感器网络的不断应用使得工业控制网络的扩展得到进一步的增强。与传统的工业控制网络相比,工业无线网络具有低成本、易使用、易维护、高度灵活性、扩展性强等特点[1]。无线网络的应用不仅能节省出大量的连接线缆所用的成本,而且使得监控的空间区域得到了极大的扩展,具有广阔的应用前景[2]。
针对工业领域应用技术的低功耗、高可靠性等特点,本文采用ZigBee无线网络技术来构建工业设备的通信网络。ZigBee技术是一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术,主要适合于自动控制和远程控制领域,可以嵌入各种设备中,同时支持地理定位功能[3]。基于上述特点,ZigBee技术被有效地应用于工业控制、消费类电子产品、家庭和楼宇自动化设备、医疗器械和农业自动化等领域。
在工业控制现场应用无线技术对节点设备进行监测,还需要将实时信息传递给客户端,从而完成对网络管理的交互处理,本文采用嵌入式以太网,与无线网络完成异构通信,提出了一种基于32位ARM(Advanced RISC Machines)处理器、嵌入式Linux实时操作系统的无线网关设计方案。
本文的网关系统采用ARM920T核处理器S3C2440,应用嵌入式实时操作系统Linux,并在ARM 9处理器中移植Web服务器Boa[4],负责对整个工业现场设备的管理及远程监控。现场节点设备通过ZigBee无线传感网络与网关进行数据传输,网关则通过工业以太网与上位机进行通讯。
该网关是面向无线网络和工业以太网互联的通信应用,主要完成异构网络之间的通信和控制,使用ZigBee无线射频模块与工业节点设备采集的数据进行无线传输。网关的基本工作原理如下:网关系统的无线模块接收现场节点设备采集的数据;然后网关核心控制器控制以太网控制器,将接受到的数据进行封装后在工业以太网中传输,通过有线的方式将数据传输至外部以太网。用户可以通过远程用户界面访问网关内部的Web服务器,从而实现对现场设备的监控和管理,完成异构网络的集成。
网关装置采用核心板和扩展板组合的硬件结构模式,核心板是一个基于ARM核处理器的最小系统,包括2片32MB的HY57V561620芯片,构成64MB的SRAM的存储系统;1片K9F1G08U0B芯片,构成64MB的NAND FLASH存储系统。硬件平台由核心板进行扩展,主要由控制器模块、无线通信模块、以太网模块、电源模块等组成,硬件平台的结构框架如图1所示[5]。
图1 网关硬件结构Fig.1 Structure of gateway hardware
主处理器是整个嵌入式工业无线网关的核心模块,主要完成现场节点设备组成的无线传感器网络的配置,接受ZigBee终端节点设备发送进来的数据,将节点设备的数据经过处理后经工业以太网发送到用户管理端。由于工业现场复杂环境的要求,所采用的微控制器必须要满足一定的电磁抗干扰能力;另外,针对数据处理的实时性,要求控制器必须具有高速的处理能力,且具有低功耗等特点。
本文所采用的控制器是Samsung公司的一种基于ARM920T内核的亦适用于工业领域的微处理器S3C2440。该处理器提供了低功耗和高可靠性的微控制器解决方案,具有功耗低、高速度、高精度和高可靠性等优点。主频最高可达533MHz,运算速度快,片内集成度高,可以满足高速应用的要求。
S3C2440是一款32位嵌入式精简指令集微处理 器 (Reduced Instructions Set Computer,RISC),其主要特性包括[6]:具备16KB的指令缓存和16KB的数据缓存和内存管理单元(Memory Management Unit,MMU)、1个液晶显示器(Liq-uid Crystal Display,LCD)、3通道的通用异步接收/发送装置(Universal Asynchronous Receiver/Transmitter,UART)、8通道的10位模/数变换器(Analog-to-Digital,ADC)、4通道的直接内存存取器(Direct Memory Access,DMA)、4通道脉冲宽度调制(Pulse Width Modulation,PWM)定时器和1通道内部定时器/看门狗定时器、2个USB接口,130个通用I/O口和24个外部中断源。
在工业现场监测系统中,采用ZigBee无线传感技术将现场的节点设备组成星形网络。在无线网络中,网关的无线通信模块作为无线网络的中心协调器,负责网络的建立和维护。其他现场节点作为无线终端设备,可以与网关建立同步、关联和数据传输。现场设备之间需要通过网关和上层系统实现数据交互。
ZigBee模块采用TI公司的CC2530。这是一款与IEEE 802.15.4协议兼容的低成本无线控制模块,是TI公司继CC2430后的新一代系统级芯片(System on Chip,SOC)。该模块结合了一个射频收发器和一个8051处理器,具有49dB相邻通道抑制和宽泛的温度范围:-40~+125℃,符合工业标准[7]。它具有功耗低、接口简单、易于组网和通信稳定等优点,在智能无线传感网络设计中有着广阔的应用前景。ZigBee模块与S3C2440通过串口UART1相连,设置相应波特率后实现数据传输。核心处理器与无线模块的通信比较简单,只需将ARM芯片的TXD1和RXD1两根信号线连接到CC2530的USART0口,即可实现两者的数据传输通信。
2.3.1 电源模块 整个网关系统采用24V直流稳压电源供电。24V分别经过2片PP1R5-24-5电源芯片转换成2路5V电源,一路经过SPX1117M3-3.3和SPX1117M3-1.8芯片分别变压为3.3V和1.8V,分别为板上芯片、外设和内核供电;另一路为RS-485接口供电。
2.3.2 以太网接口 本文采用的以太网接口芯片是DAVICOM公司推出的工业级芯片DM9000CIEP,它是一种高度集成、功能强大、少引脚、性价比高的单片快速以太网控制芯片[8]。S3C2440通过外接以太网控制芯片DM9000CIEP和RJ45接口,完成与工业以太网之间的连接。RJ45接口元件选用内置网络变压器的工业级元件HR911105A。接口部分的电路图如图2所示。2.3.3 串行接口 RS-232C是目前较为通用的串行数据传输总线标准。本文设计采用MAX3232芯片来实现逻辑电平转换,并采用目前常用的9芯D型插头为接口,分别将S3C2440的RXD0(数据接收)、TXD0(数据发送)、NRTS0、NCTS0与芯片的RXD、TXD、RTS、CTS进行连接。而RS-485接口电路采用的是ADM2483电平转换芯片,RS-485需要隔离的5V电源通过DCDC模块得到。
软件平台采用在各种嵌入式设备上广泛应用的Linux操作系统,在此基础上完成相关的驱动程序和应用程序的编写。软件系统主要包括操作系统的移植、设备驱动程序和应用程序。网关软件平台主要包括设备驱动层、操作系统内核层、协议层和应用程序层。其中应用程序层是在操作系统上移植嵌入式Web服务器Boa,从而可以使用户通过浏览器访问网关,实现对整个无线网络节点设备的监测和管理。
网关正常工作时,网络协议层主要负责完成ZigBee协议和以太网协议之间相互转换工作。从工业现场设备采集到的数据,经过ZigBee无线网络发送到网关无线模块,由无线模块通过串行通信接口将数据传送至网关核心处理器S3C2440,处理器将ZigBee报文按照通信转换协议转换成TCP/IP报文发送到以太网端口,进而上传至有线网络的一端。在网关中的转换步骤如下[9]:网关无线模块接收ZigBee报文→解除ZigBee PHY层分组→解除ZigBee MAC层分组→打包添加TCP/IP MAC层→打包添加TCP/IP PHY层→打包封装成TCP/IP报文发送。以太网模块接收数据发送至无线模块的转换方式是上述步骤的逆过程。ZigBee与以太网之间的通信协议模型如图3所示。
图2 以太网接口原理图Fig.2 Schematic of ether net interface
图3 网关通信协议模型Fig.3 Model of gateway communication protocol
操作系统的移植包括引导加载程序(Bootloader)、内核和根文件系统的移植。Bootloader初始化硬件设备、建立内存空间的映射图,从而将系统的软、硬件环境带到一个合适的状态,为最终执行内核准备好环境[10]。Bootloader的移植依赖于所选CPU的体系结构和设备具体外围接口设备的配置,本文选择Uboot 1.1.6作为网关设备的引导程序[11]。网关采用Linux 2.6作为其操作系统,在构建嵌入式Linux内核的过程中,其剪裁和配置可以根据需要完成,做到首先要保证系统具有的基本功能,然后保证系统各部分硬件电路的正常运行,包括基本输入、输出口的使用,以及存储器、串口、USB和ZigBee无线模块驱动。设备的根文件系统选用jffs2文件系统,最后制作好的jffs2映像文件将烧录到Nand Flash中。文件系统中基本、必须应具有的目录包括/dev,/proc,/bin,/usr,/lib,/etc和/sbin[12],其余可以根据系统的实际需要添加。网关设备允许多用户登陆使用查看,故保留root和home目录;另外,保留mnt目录用于支持外围设备的临时挂载。其中,采用嵌入式Linux系统中的“瑞士军刀”Busybox创建 bin,sbin,usr/bin和 usr/sbin 4个目录[13]。
无线模块CC2530运行TI公司的协议栈ZStack。Z-Stack包括一个小型的操作系统抽象层(Operating System Abstraction Layer,OSAL)。当OSAL启动初始化之后,系统进入低功耗模式,OSAL通过任务事件的触发进行工作。每个任务包括多种事件,一旦有事件触发,就唤醒系统进行处理,事件处理完成后继续进入低功耗模式[14]。ZigBee模块是整个网络的协调器,主要任务是建立并维护整个无线网络,并且完成处理器S3C2440和ZigBee网络之间的数据传输。
无线模块作为网络的协调器,在OSAL操作系统初始化启动后,开始扫描空闲信道,找到后创建网络并分配16位的地址,监听等待节点设备的加入。现场节点设备向协调器发送绑定请求信号,得到响应后发送地址请求信号,协调器接收信号后开始给节点分配节点地址,完成节点设备的加入。网络组建完成后,协调器又进入监听状态,当接收到节点设备采集到的湿度、温度和压力等数据量时,立即触发任务事件,进入事件处理函数,对数据进行处理,处理完成后触发中断机制,通过串口总线向主处理器发送数据。数据处理完毕后,协调器继续进入监听状态。应用程序的流程如图4所示。
图4 无线模块程序流程图Fig.4 Flow chart of wireless module program
网关上电启动后,先运行u-boot的第1部分代码,即完成Flash及同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)控制器等硬件初始化和系统时钟初始化,接着搬运第2部分代码到SDRAM中运行[15]。这部分代码完成异常向量表构建和重映射,初始化全部硬件,然后加载运行操作系统,接着完成应用程序的初始化。网关主程序流程图如图5所示。
图5 网关主处理器程序流程图Fig.5 Flow chart of gateway processor program
整个系统完成启动后,网关进入监听状态。监听来自以太网端口和无线通信端口的有效信息,当接受到传感器节点数据时,网关进入串口中断状态,接着对数据进行解包,并按照TCP/IP协议栈打包发送到以太网模块,然后返回监听状态;如果监听到的数据是来自以太网端口的IP数据包,则把数据解包并按照ZigBee协议进行封装发送到无线模块,接着继续返回监听状态。
本文提出了工业嵌入式无线网关的总体构架,通过对工业现场工控网络与以太网之间的异构通讯方法的研究,完成了两种网络之间互联互通的技术实现,分别设计了网关装置的硬件和软件平台,实现了对工业现场设备的远程监控和管理。本文提出的工业无线网关设计方案已应用于某锅炉厂的焊接质量检测系统中,成功地将现场设备监控的数据通过无线网络上传至上位机,取得了良好的应用效果,并降低了工厂的设备成本。相信随着无线技术的不断应用,该系统将具有越来越广泛的应用前景。
[1] 杨 淼,梁 炜,徐伟杰.基于WIA-PA的工业无线网络网关设备[J] .计算机工程,2010,36(23):258-261.
[2] Cerpa A,Elson J,Estrin D,et al.Habitat monitoring:application driver for wireless communications technology[C] //ACM SIGCOMM Computer Communication Review:Workshop on Data Communications in Latin America and the Caribbean,2001,31(2):20-41.
[3] 王 东,张金荣,魏 延.等.利用ZigBee技术构建无线传感器网络[J] .重庆大学学报:自然科学版,2006,29(8):95-97,110.
[4] 张 振,王晓宁,张 元.嵌入式 Web服务器移植与测试[J] .电子设计工程,2010,18(6):1-3.
[5] 任 雯.嵌入式网关设计及其在异构系统集成中的应用[J] .自动化仪表,2011,32(6):15-18.
[6] Samsung Electronics Co.,Ltd..S3C2440A32-bit RISC microprocessor user's manual[Z] .[S.L.] :Samsung Electronics Co.,Ltd.,2009.
[7] 李俊斌,胡永忠.基于CC2530的ZigBee通信网络的应用设计[J] .电子设计工程,2011,19(16):108-111.
[8] DAVICOM Semiconductor Inc.DM9000Aethernet controller with general processor interface data sheet[M] .Taiwan:DAVICOM Semiconductor Inc.,2005.
[9] 满 莎,杨恢先,彭 友,等.基于ARM9的嵌入式无线智能家居网关设计[J] .计算机应用,2010,30(9):2541-2544.
[10] 赵连玉,靳 飞.嵌入式计算机系统Bootloader的设计与实现[J] .天津理工大学学报,2011,27(1):18-20.
[11] 袁 磊,朱怡安,兰 婧.嵌入式系统BootLoader设计与实现[J] .计算机测量与控制,2009,17(2):389-391.
[12] 彭 浩,龚 杰,秦建敏.基于S3C2440的嵌入式Linux根文件系统构建[J] .电子设计工程,2010,18(6):20-22.
[13] 熊 伟,董金明.嵌入式Linux中根文件系统的实现[J] .电子测量技术,2007,30(7):78-80.
[14] 石家骏,钟 俊,易 平.基于ZigBee的无线抄表系统网关的设计与实现[J] .计算机工程与设计,2011,32(3):875-878.
[15] 帅 磊.U-Boot在S3C2440上的分析与移植[J] .计算机系统应用,2010,19(4):204-207.