张建奇 李墨翰 张建锋 王安民
(西安航天自动化股份有限公司1,陕西 西安 710065;中国市政工程西北设计研究院有限公司2,陕西 西安 730000)
随着物联网技术的兴起,无线技术开始越来越受到人们的重视。ZigBee是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术,主要用于近距离无线连接。它依据IEEE 802.15.4标准,能够在数千个微小的传感器之间相互协调实现通信。这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个网络节点传到另一个节点,具有非常高的通信效率,应用前景广泛。Profibus是现在应用最广泛的开放工业现场总线之一。将ZigBee无线通信技术接入Profibus现场总线,可以方便地将无线技术融入到工业控制当中,如电力系统自动化等行业[1],从而实现无线生产过程控制以及监控等功能[2-3]。
Profibus总线的无线网网关能够将Profibus总线及带路由功能的无线采集模块(即路由I/O模块)透明连接到一起,通过PLC可以实现对每一个路由I/O的配置以及数据的采集、指令的下发和报警的处理。整个无线采集系统如图1所示。
图1 系统结构图Fig.1 Structure of the system
Profibus总线无线网网关可以划分为ZigBee模块、协议转换模块、Profibus总线协议模块和供电模块4个部分。ZigBee模块核心采用TI公司的CC2530芯片,主要完成无线网络的组网管理以及数据采集的工作。协议转换模块使用ATMEL公司的8位单片机Atmega128A。Profibus总线协议及接口模块通过使用PROFICHIP公司的VPC3+C和ADI公司的ADM2486来实现。电源模块采用NI的LM25575芯片,其将24 V的输入电压转换成5 V电压供系统使用。
系统协议转换单元Atmega128A起到承上启下的作用,它既可以对VPC3+C进行配置管理,与Profibus总线进行数据交换,又可以通过串口和网络协调器CC2530通信,采集终端数据,并将PLC发送的数据传送给CC2530,最终传送到指定的路由 I/O。其中,CC2530使用了TI的 Z-STACK协议栈[4]。
系统协议转换单元Atmega128A在传输数据的同时对数据进行校检,从而保证数据的可靠性,实现Profibus总线到无线网络数据的无缝交换[5]。
系统无线网络协调器采用TI的CC2530实现。CC2530 是用于 2.4 GHz IEEE 802.15.4 的片上系统解决方案,它结合了领先的RF收发器的优良性能,是业界标准的增强型8051 CPU。系统内具有8 kB RAM和最大256 kB闪存,以及许多其他强大的功能,最高通信速度可达250 kbit/s。CC2530具有不同的运行模式,使得它尤其适用于超低功耗要求的系统。
网关中的CC2530作为无线网络的网络协调器,是整个无线网络的中心,它负责自组网管理以及I/O数据的采集、传输、路由、汇聚、下发等多种工作。给CC2530加入射频前端CC2591,可以大幅提高无线网络覆盖范围。
无线网络协调器电路如图2所示。
图2 无线网络协调器电路Fig.2 Circuit of wireless network coordinator
系统采用VPC3+C实现Profibus-DP的从站功能,与Profibus总线的接口芯片使用Profibus兼容芯片ADM2486。Profibus接口电路原理图如图3所示。
图3 Profibus接口电路Fig.3 Interface circuit of Profibus
VPC3+C集成了全部的Profibus协议,可以方便地实现各种 Profibus总线功能[6],最高速度可达 12 Mbit/s。VPC3+C支持4种通信模式,这里Atmega128A采用同步Intel模式与VPC3+C通信。ADM2486为半双工隔离式的RS-485收发器,具有25 kV/μs的高共模瞬变抗扰度及热关断保护功能[7]。
系统软件分为网关协议转换和ZigBee无线网络两个部分。
在本方案的设计中,网关软件的协议转换子程序为主程序模块/中断处理模块的形式。Atmega128A单片机使用同步Intel模式与VPC3+C芯片通信。主程序模块主要负责系统初始化和寄存器状态查询,并根据寄存器状态进行相应操作[8]。
①初始化
在VPC3+C芯片正常工作之前,首先需要对其进行初始化,对寄存器进行配置。这包括设置协议芯片的中断允许,写入从站识别号和地址,设置VPC3+C方式寄存器,设置诊断缓冲区、参数缓冲区、配置缓冲区、地址缓冲区、初始化长度等;并根据以上初始值得出各个缓冲区的指针和辅助缓冲区的指针;根据传输的数据长度,确定输出缓冲区以及输入缓冲区和指针。
VPC3+C初始化流程图如图4所示。
图4 VPC3+C初始化流程图Fig.4 Flowchart of VPC3+C initialization
②外部存储器映射
VPC3+C芯片的内部RAM作为Atmega128A单片机的外部扩展存储器,因此,Atmega128A可以直接以访存的形式访问VPC3+C芯片上的存储器。按照硬件设计,Atmega128A单片机的PA0~PA7引脚作为外部8位数据总线,PC0~PC7引脚作为外部8位地址总线,且地址最高位通过取反后接到VPC3+C芯片上,形成片选信号。当地址最高位为1时,表示访问外部存储器,即VPC3+C芯片内部的存储器;反之访问Atmega128A内部存储器。
③产品识别ID号及从站地址的设置
产品识别ID号在从站设备描述文件(general station device,GSD)中加以设置。程序在初始化VPC3+C芯片时,同样要设置产品识别ID号,且必须与GSD文件里描述的一致。从站地址在PLC配置程序里设定。考虑到一个Profibus总线上可以同时挂接多个网关,因此,网关的从站地址必须方便用户修改。
④设置VPC3+C芯片输入输出缓冲区大小
VPC3+C芯片内部设有专门的用户I/O数据缓冲区,在使用前需要对其进行配置。在配置VPC3+C芯片前,需要先对GSD文件输入输出大小的定义作修改,如:Module=“100 Byte In,40 Byte Out”0x6f,0x63,0x5f,0x5f,0x5f,0x51。
该设置表示从站输入缓冲区为100 B、输出缓冲区为40 B。接下来配置VPC3+C芯片。配置前,首先需取得其配置缓冲区指针,并依次把配置数据写入配置缓冲区(需与GSD文件中的一致)。
然后根据缓冲区大小便可计算出输入输出缓冲区指针。对于该指针的读写操作,其会被VPC3+C芯片转换成Profibus协议上传到PLC中,实现数据的传输。
⑤ZigBee协议数据与Profibus协议数据映射转换
当Atmega128A接收到无线网络协调器发送的数据时,需要根据数据中的帧类型、站号、站类型字段计算出VPC3+C中输入缓冲区指针,并将数据按格式写入输入缓冲区中对应的位置。
同样当接收到PLC从Profibus总线发送的数据时,需要根据开关量所在地址计算出实际对应的站号与站类型,并且封装成规定的帧结构,通过网络协调器发送给对应的路由I/O设备[9]。
ZigBee无线网络协议通过TI的Z-STACK协议栈来实现。Z-STACK采用操作系统的思想来构建,采用事件轮询的方式来对事件进行处理。当各层完成初始化后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,则判断优先级,逐次处理事件。这种软件构架可以极大地降低系统功耗[10]。此外,只需要编写应用层程序就可以实现ZigBee无线网络的应用开发,不需要将过多的精力投入到网络协议的具体细节当中。
协调器与路由I/O通过以下数据结构组织通信数据。
系统上电后,根据程序配置数据,在指定的信道中建立网络号为PANID的网络。部分源代码如下。
此时,只要网络中有路由I/O设备上电,由于有相同的信道号与网络标志号,路由I/O设备会自动加入到该网络。若加入网络成功,则会触发协议栈中的ZDO_STATE_CHANGE消息,应用程序在应用层接收到该消息并确认后,便可以正式开始路由I/O的工作流程。
当路由I/O设备加入网络后,需要先与协调器实施绑定。绑定过程在协议栈应用层实现,路由I/O设备读取自身的拨码值与短地址,并按照上述协议数据结构,封装成命令帧发送给协调器。部分源代码如下。
协调器接收到命令帧,经确认无误后,在本地RAM中记录站号与短地址的对应关系,并回复命令应答帧给相应的路由I/O设备。至此,路由I/O设备的绑定过程结束。如当协调器有控制数据需要下发时,只需要先查表,根据站号查出对应的短地址,便可发送至目的路由I/O设备。
对西门子S7-300 PLC进行编程。实际运行测试结果表明,无线模块的发射功率、接收灵敏度、通信距离、误包率和速度均满足工业应用的实时性和安全性要求。网关可以通过工业现场总线Profibus加入到工业应用当中,具有功耗低、布置方便、编程使用简单可靠等优点,可以替代原来有线传输的方式。随着工业物联网技术的兴起和发展,此无线模块具有良好的应用前景。
[1]张高群.电力系统应用ZigBee技术初步研究[J].电子测量技术,2008(11):20-22.
[2]梁湖辉,张峰,常冲,等.基于ZigBee的变电站监测报警系统[J].电力系统保护与控制,2010(12):33-34.
[3]何杏宇,张浩,彭道刚.ZigBee技术在工业环境监测系统中的应用研究[J].机电一体化,2008(7):111-112.
[4]杜焕军,张维勇,刘国田.ZigBee网络的路由协议研究[J].合肥工业大学学报:自然科学版,2008(10):79-80.
[5]杨顺,章毅,陶康.基于ZigBee和以太网的无线网关设计[J].计算机系统应用,2010(1):43-45.
[6]王保永,汪鹏,卢宏军.基于PROFIBUS的智能接口芯片SPC3及其应用[J].国外电子元器件,2005(3):23-25.
[7]张婕,王征,郭天乐.SPC3在现场总线智能从站设计中的应用[J].现代电子技术,2008(3):5-7.
[8]李孝辉,张慧慧,孙树文.基于C8051和SPC3的PROFIBUS智能从站设计[J].微计算机信息,2007(26):120-123.
[9]王学伟.PROFIBUS-DP现场总线智能节点的设计[D].哈尔滨:哈尔滨理工大学,2008.
[10]胡鸿豪,林程,宋丽平.基于S3C2410的ZIGBEE无线传感器网络网关的设计[J].大众科技,2008(12):43 -45.