基于ZigBee的航标遥测终端
扫描二维码
随时随地手机看文章
摘要:介绍了一种基于ZigBee无线传感器网络技术来实现航标遥测的新型终端,该终端是航标遥测遥控系统的关键部件。它的硬件电路采用S3C2410 ARM9微处理器、GPS模块、ZigBee模块和CDMA模块搭建;软件采用嵌入式ARM-Linux操作系统开发平台,通过多线程的协同模块化设计和模块之间的有机组合,实现整个终端所需功能的程序设计。经过调试和移植,结果表明终端可以稳定地实现航标灯、GPS数据采集、Zig-Bee网络和CDMA双模数据传输功能和双模自动切换、航标灯的遥测遥控等功能。
关键词:ZigBee;遥控终端;ARM-Linux;多线程
0 引言
航标是船舶在海上安全运行的重要保障,航标遥测终端的主要功能是实现对航标运行状态、参数的实时监控,并将数据传输到控制中心。对航标遥测终端的开发和研究已经将近10年,也取得了一些成果,对航标的管理和维护也有着重要的作用。但是,当前使用的航标遥测终端,由于处理器系统主要采用单片机,通信网络采用GSM,CDMA,GPRS网等公网实现数据传输,使这种终端在功能和硬件资源方面有限,并在海上有的地方会出现通信的盲区或者信号不稳定,造成目前的航标遥测遥控终端还存在着性能和稳定性等方面的问题,还不能完全满足现代化、信息化航标管理的要求。因此,使用新的技术和手段来开发航标遥测终端是相当必要的。
ZigBee无线网络能够通过自组网形式进行数据的实时传输,并具有低宽带、功耗低、体积小、集成度高、成本低、安全等特点,目前已经在自动控制、远程监控等领域得到了广泛的应用。对于航标遥测系统,由于需要传输的数据量不大,所以采用高宽带是多余的,而使用ZigBee技术是适合的。
因此,本文介绍一种在S3C2410处理器和ARM-Linux操作系统平台下,基于ZigBee无线网络的航标遥测终端的开发。
1 ZigBee无线传感器网络
1.1 ZigBee概述
ZigBee是一个由多到65 000个无线数传模块组成的无线数传网络平台,在整个网络范围内,每一个ZigBee网络数传模块之间可以相互通信,每个网络节点间的通信距离可以从标准的75 m到几百米、几千米,并且支持无限扩展。ZigBee技术基于IEEE 802.15.4标准。ZigBee标准制定了IEEE 802.15.4的物理层、MAC层及数据链路层、网络层、加密层及应用描述层,而且ZigBee联盟对其网络层协议和API进行了标准化。它的完全协议对于基本节点只有4 KB,而作为Hub或路由器的协调器也只有32 KB。每个协调器可连接多达255个节点,而几个协调器则可形成一个网络,对路由传输的数目则没有限制。ZigBee联盟还开发了安全层,以保证这种便携设备不会意外泄漏其标识,使这种网络远距离传输的数据不会被其他节点获得。可见,利用ZigBee模块将航标组网,可以形成一个相互连接的航标网络,实现航标状态信息的遥测。
1.2 ZigBee模块
本项目使用的ZigBee模块是无线龙LBee系列模块,它是基于IEEE 802.15.4/ZigBee标准生产的,兼具短、中、长距离的无线ZigBee网络低功耗模块。模块工作在2.4 GHz的ISM频段。本项目选用长距离的无线ZigBee网络低功耗模块,型号为CC2430-F128,室外可视的最远通信距离可达2 000 m。对于厦金航线的航标之间的距离最远是1 400 m左右,因此选用该模块可满足通信距离的要求。
LBee系列模块采用的协议为ZigBee 2006,支持网状、星状、串状等多种网络拓扑。LBee系列模块集成了所有的射频组件,并已实现软件升级、参数设置。模块采用标准的AT指令接口,支持AT指令集,其AT指令的通用帧格式如图1所示。图中,帧头为FEH;控制命令中COMD0,COMD1分别表示控制命令中的低字节和高字节;检验位是从控制命令到数据的每个字节的异或后所得的值。标志/状态和有效数据长度对不同的帧是不一样的,例如在发送数据的帧格式中,标志/状态为一个字节,而在设置节点的通道、PANID、设备类型的帧格式中,标志/状态位为2个字节,而有效数据长度变成了目的地址,且为2个字节,详细的帧格式请参见文献。这样基于ZigBee技术的航标遥测终端的开发,需要做的工作就是连接电源、串口及I/O口。ZigBee模块可以通过AT指令集来实现通信距离、信道、网络参数、低功耗参数(工作模式)的设定以及收发数据包,并可通过编程来实现I/O控制、A/D采集、PWM输出、定位等功能。
[!--empirenews.page--]
2 终端的硬件组成
根据功能要求,设计的航标遥测终端组成框图如图2所示,主要由处理器模块、ZigBee/CDMA通信模块、GPS定位模块、航标灯数据采集模块及供电系统组成。
处理器模块是以S3C2410 32 b RISC ARM9处理器为中心,主要由时钟/复位单元、存储系统、调试接口等组成。它是整个终端的核心,负责整个终端系统的管理、控制运行、数据采集以及通信协议的解析和数据处理。S3C2410微处理器具有3个串口,即UART0,UART1,UART2,通过合理分配串口,并设计控制电路,对不足的串口资源进行复用,使其满足应用需求。ZigBee/CDMA通信模块的作用是负责终端和控制中心之间的远程双向无线数据传输。GPS定位模块用于实现终端的定位,使终端可以实时监视浮标是否产生漂移。由于目前的航标灯均自带有数据采集模块,并通过RS 485输出数据。因此,终端通过发送采集指令给航标灯,航标灯数据就会自动传输给终端,即只需要利用一个RS 485到RS 232转换器就可实现对航标灯数据的采集。处理器与外围通信模块的通讯是通过串口连接,处理器可以通过AT指令对通信模块进行操作和控制,从而实现ZigBee/CDMA网络的无线接入,并与控制中心建立通信链路,以提供远程数据双向传输的通道。通过以太网控制器芯片DM9000扩展一个网口,以满足运用,同时方便调试开发的功能。由于输入是12 V,而不同的模块所需的电压不一样,所以要进行电压的转换,即供电系统部分。由于采用了ARM9嵌入式系统和模块化设计,使系统硬件的外围电路相对简单,因此具体电路本文将不介绍。
3 终端软件设计
3.1 多线程设计
终端软件是在Linux 2.4.18操作系统内核上采用多线程开发的。与进程相比,线程很小,创建一个线程可以使用相对较少的CPU时间,提高了CPU并行处理的能力。因此,多线程编程与多进程编程相比,在性能和通信等方面都有显著的优势,所以终端软件的开发采用单个进程多线程的编程方式实现。
在整个终端软件系统中,创建了五个线程:主线程、通信线程、遥测遥控线程、协议处理线程及定时处理线程。主线程是进程对应的线程,是整个软件的控制线程,它控制其他线程的工作,具体包括创建管道、打开驱动、建立线程及安装触发线程的信号等功能;通信线程负责终端通信方式的选择、通信模块的驱动及收发数据等工作;遥测遥控线程主要负责航标数据采集、GPS数据采集、遥测数据的上传及遥控命令的执行;协议处理线程根据通信协议对数据进行变换、格式转换、打包和解包;定时处理线程主要完成周期性的控制,包括定时数据上传、定时故障和异常判断与报警、定时休眠、重新启动等。
由于整个终端需要处理的任务较多,下面仅介绍几个关键功能模块的设计。[!--empirenews.page--]
3.2 通信功能模块设计
终端的通信具有ZigBee,CDMA两种通信方式,由通信处理线程实现。具体完成ZigBee,CDMA模块的初始化、数据发送与接收、智能切换通信方式以及模块工作状态的监测等功能。
通信线程的处理机制是利用信号的异步通知机制,通过安装信号处理函数,当某一通信方式出现异常时就发送信号并携带相关的信息,从而触发信号处理函数进入中断处理异常信息,并根据信息来选择重建当前通信或建立另一种通信方式或重启系统。在此主要介绍双模通信中的ZigBee通信方式。
当选择ZigBee通信方式时,必须对ZigBee进行初始化,其初始化流程图如图3所示。
部分初始化程序如下:
fd表示的是连接ZigBee/CDMA与ARM的串口的文件句柄;sendPort相当于UNIX中的write()函数,即将Send_buf中的数据写入到串口。
因为在终端中用的ZigBee通信模块有其固定的帧格式,所以需要将采集到的数据进行打包,然后才能传输,利用一个函数send_prepare(int mode,unsignedchar send_buf[512],int length)实现数据的打包。其中,mode表示的是ZigBee和CDMA中的一种模式;send_buf[]表示需要发送的有效数据,此函数的主要功能是将有效数据加入到ZigBee和CDMA能识别的帧格式中。然后调用发送函数sendPort(fd_com,send _buf)将数据通过ZigBee或CDMA发送到控制中心。当数据发送到控制中心,控制中心模块会给终端一个应答。通过对此帧的解析,可以看出发送是否成功。例如,在ZigBee通信方式中,状态/标志位为00时表示发送成功,否则表示发送失败。
3.3 遥测遥控功能模块设计
3.3.1 遥测功能模块
遥测包括数据采集与数据传输两部分。数据采集包括航标灯数据和GPS数据的采集。航标灯是一种请求-应答式的设备,要采集航标灯数据就必须通过处理器或是控制中心发送采集命令。在终端上采用定时的方式,当设置时间到时,终端就会自动发送遥测命令给航标灯,当航标灯收到数据并通过CRC检验后,航标灯将其实时的数据发送给处理器,然后通过通信模块发送到控制中心。GPS数据是通过读取GPS-OEM板自动输出的NMEA-0183格式数据获得的,在程序中采用中断方式接收,每1 s接收一次数据。GPS和航标灯数据采集流程图如图4,图5所示。
当采用ZigBee通信方式时,由于ZigBee模块发送数据的最大长度为63个字节,所以将终端发给服务器的有效数据分为两帧发送,在两帧之间加上一个标志0x21,有助于服务器端解析终端数据。[!--empirenews.page--]
3.3.2 遥控功能模块
此模块主要负责对控制中心发来的命令进行解析,并对其做出相应的处理。控制中心的数据通过通信模块发送给终端之后,在协议处理线程中进行控制命令的解析。当数据校验正确后,终端根据命令进行处理并返回一个遥控成功的信息。遥控命令主要包括轮巡时间间隔设置、跟踪时间间隔设置、报警时间间隔设置、遥控航标灯、终端重启等,其具体流程图如图6所示。
4 调试结果与结论
根据上述软硬件设计和调试结果表明,该终端能实现航标灯数据和GPS数据的采集;能正确、稳定地以ZigBee或者CDMA通信方式实现与服务器之间的数据传输,并且双模通信模块能自动进行切换;能通过遥控命令对终端进行设置,对航标灯进行遥控;并且可以稳定的运行。由此可见,在S3C2410处理器和ARM-Linux操作系统平台下,采用基于ZigBee无线网络的航标遥测终端开发,可以方便地实现航标遥测终端功能;采用双模通信,可以克服其中一种断线时数据丢失的缺陷。当然,由于ZigBee模块本身的通信距离有限,当航标间距较远时,需要通过增加功率放大器来增大其通信距离,以满足航标间距较远的应用场景。