基于CC1101的分布式节能测控网络设计
2010-06-22童亚钦纪春国
童亚钦,纪春国
(山东航天电子技术研究所,烟台264003)
引 言
CC1101是TI公司生产的一种单片、低成本的 UHF频段无线收发器,基于IEEE 802.15.4标准开发,主要应用领域为低功耗无线测控。芯片具有无线电唤醒(WOR)、数据包处理、数据缓冲、突发数据传输、清晰信道评估、链接质量指示等功能,内部的参数寄存器和数据传输FIFO可通过SPI接口控制,所需的周边器件很少,使用简单。受限于发射功率和天线结构,CC1101的视距传输距离一般在400~800 m范围内,超出此距离范围则必须由中继设备对无线信号进行放大、转发。本文设计的一种分布式无线测控系统通过局域网对中继设备进行互连,大大降低了系统的无线通信协议复杂性,同时达到了使用无线通信时伴随的低功耗设计要求,具备很强的实际工程应用价值。
1 总体设计方案
测控网络采用3级结构,网络拓扑结构如图1所示。
最底层的测控基站负责进行工作现场的数据采集和控制指令的执行,测控基站上安装有无线收发器芯片CC1101和天线,通过空中无线信道与中继节点通信。测控基站采用电池供电。
中间层的中继节点负责接收中心计算机发出的控制指令,向底层的测控基站转发,或者接收底层测控基站发出的测量数据,向中心计算机转发。中继节点上安装有无线收发器芯片CC1101和天线,通过空中无线信道与底层的测控基站通信;同时中继节点也具备访问局域网的功能,可以通过外部局域网与中心计算机通信。中继节点采用市电经AC—DC模块变换出的直流电压供电。
图1 测控网络拓扑结构图
中心计算机负责采集所有测控基站的测量数据,进行数据管理,也可以向测控基站发出控制指令。中心计算机通过网络接口连接到外部局域网,与中继节点通信。中心计算机采用市电交流供电。
2 通信协议总体设计
中继节点与中心计算机通过有线局域网通信,类似协议工程上有比较成熟的方案,本文不再详述。
中继节点与测控基站的无线链路层协议涉及到防冲突、节能等问题,直接关系到系统可靠性、可用性指标最终实现,是系统通信协议设计的重点。
系统中依靠无线信道传输的数据归结为4种,简述如下:
①命令帧。当中继节点向测控基站下传控制指令时发出。
②基站应答帧。当测控基站收到中继节点下传的控制指令后,需要向中继节点返回一个基站应答帧,告知指令执行情况。
③中继应答帧。当测控基站向中继节点上传状态信息后,中继节点需要向测控基站返回一个中继应答帧,告知已经收到状态信息。
④测量帧。当测控基站测量到的工作现场数据发生改变后,必须向中继节点发出测量帧,通知中继节点向中心计算机声明更新对应测控基站的记录信息。
为了简化处理流程,系统中传输的所有的数据的帧格式统一采用如下所示的固定长度12字节的格式。
由于CC1101通信时以数据包为最小处理单位,可以也设置CC1101的包长度为12字节,借助CC1101的处理能力屏蔽掉对链路层级别以下的通信协议处理过程。
数据帧内部各数据域定义简述如下:
①同步头。标记一帧数据的开始,CC1101必须在收到与内部设定的同步头值相等的数据后才启动内部电路接收一个数据包。数据帧类型不同,同步头数值也不同。
②地址。每个测控基站都由系统分配一个唯一的2字节标识地址,测控基站只响应地址等于本地标识地址的命令帧或中继应答帧。
③帧类型。用以区分本帧数据属于4种类型中的哪一种。
④数据。本帧需要传输的有效数据,可以是中继节点下传给测控基站的指令,也可以是测控基站上传给中继节点的状态。
⑤CRC。对数据帧前10个字节计算出一个2字节的校验数据,当接收端发现CRC校验错误时将丢弃本帧数据。
3 测控基站设计
测控基站采用电池供电,处于无人职守的环境下工作,在设计方案中必须最大限度的考虑节能要求,特别是对无线收发器芯片CC1101进行低功耗设计,这主要通过精心设计测控基站和中继节点间的无线通信链路协议来实现。
测控基站使用TI公司的CC1101射频收发器模块[1]作为无线通信接口,该模块已集成了CC1101、外围射频电路和天线等硬件,只需直接通过SPI向其送入指令和数据即可。模块使用26 MHz时钟工作,通信频段为433 MHz,调制方式为GFSK,通信速率为250 kbps。
3.1 接收协议节能设计
CC1101具备WOR功能,使用该功能可以让CC1101在睡眠态和接收态间自动轮流切换,如图 2所示,其中Time0为WOR周期,Time1为接收时间。由于在睡眠态时,CC1101的接收功耗电流仅为9.8 μ A,而接收态时功耗电流达16.5 mA,从节能的角度考虑,在使用WOR功能时,应该使睡眠态的工作时间占空比尽可能的大。
图2 CC1101的WOR流程
但当CC1101处于睡眠态时,无线接收电路不工作,在此时间间隔内无法收到从无线信道传输的数据,影响通信的正确性。因此为保证可靠地接收数据,必须保证在一个WOR周期内,接收态期间CC1101能收到至少一帧完整的数据。
测控基站从中继节点接收的控制命令帧长度为12字节,当CC1101通信速率为250 kbps时,一个完整命令帧传输所需要的时间为:12×8/250=0.384(ms)。
选定WOR模式的接收态占空比为0.781%时,假定在接收态需要保留5个完整命令帧的接收时间窗口以确保稳定、可靠的收到一个完整命令帧,那么可以计算出WOR周期为:5×0.384/0.781%≈246(ms)。
从CC1101的应用手册上可知[2],WOR周期与CC1101内部相关寄存器的值具有如下关系:
式(1)中fosc为CC1101的工作时钟频率,为26 M Hz,EVENT0为事件0计数器值,WOR_RES为计数器分辨率,一般可设置为0。这样可以计算得到当WOR周期为246 ms时,EVENT0值为 0x2150。
当WOR模式的接收占空比为0.781%时,可以根据接收态和睡眠态分别的功耗电流计算出CC1101总的功耗电流:9.8×10-3×99.219%+16.5×0.781%=0.13(mA)。
若测控基站使用两节容量为2000 mAh的普通5号干电池供电,可以计算出在只供C1101工作的情况下设备可连续工作时间为:2×2000/0.13≈30 770(小时)=3.5(年)。
3.2 接收协议处理流程
CC1101接收数据时设定同步头内容为0xEB90,这样可以保证它只响应同步头为0xEB90的类型的数据帧,其他类型的数据帧不会误触发CC1101,简化测控基站软件的协议处理流程。
当需要接收命令帧时测控基站工作流程如图3所示。测控基站默认处于等待接收状态,此时CC1101工作于WOR模式;当收到一个完整命令帧后,CC1101退出WOR工作模式,进入发送工作模式,同时测控基站控制软件必须通过帧地址域判断命令帧是否是发给本设备,若命令帧是发给本设备,需要执行该命令并返回应答给中继节点,然后设置CC1101重新进入WOR工作模式,若命令帧不是发给本设备,则直接设置CC1101进入WOR工作模式即可。
需要注意的是由于无线信道易受干扰,测控基站在收到中继节点的命令帧后必须给中继节点回送一个应答帧,确认命令帧执行情况。为了防止应答帧引起其它测控基站的错误触发,应答帧同步头与命令帧同步头不同,为0x146F。
图3 接收命令帧时测控基站工作流程
3.3 发送协议处理流程
当测控基站需要反馈控制命令执行情况或主动上传测量数据时,必须通过 CC1101向外发送数据。为减少测控基站对无线信道的占用,只有在设备状态产生变化时,测控基站才主动向中继节点发出数据帧通知本设备产生了状态变化,需要中继节点向中心计算机登记该次变化。
为了防止多个测控基站同时共用无线信道时发生冲突,必须对发送协议进行防冲突设计,这通过CC1101的载波侦听功能实现。在每次需要发送数据前,CC1101检测无线信道中载波功率电平值,并将电平值反映到RSSI寄存中,当测控基站发现RSSI电平高于某一阈值时,认为无线信道已被占用,将一直等待直到RSSI值低于阈值时才使用无线信道发送数据。
使用载波侦听功能,测控基站向中继节点上传测量数据时处理流程如图4所示。由于需要上传测量数据的时间占总工作时间的比例很小,CC1101不需工作在WOR模式以节约电能。为防止测量帧触发其他处于接收命令状态的测控基站,测量帧同步头设置为0x1ACF。
图4 发送测量帧时测控基站工作流程
4 中继节点设计
中继节点使用Microchip公司PIC18FF66J60单片机进行局域网协议的处理和上级中心计算机协议的转发控制,同时使用CC1101与下级的测控基站通信。
PICl8F66J60芯片具有嵌入式以太网控制器模块[3],是一个完整的以太网连接解决方案,要完全实现介质访问控制和物理层收发器模块功能,只需使用2个脉冲变压器和一些无源器件即可将单片机直接与以太网相连。该单片机内部已经嵌入了TCP/IP协议栈[4],上电后协议栈自动运行,单片机软件只需调用相应的TCP/IP处理函数即可。
中继节点的硬件电路如图5所示,在与局域网通信端,PIC18F66J60单片机的4个以太网专用引脚TPOUT+、TPOUT-、TPIN+、TPIN-与网络变压器直接相连;在与无线信道通信端,单片机通过SPI引脚与CC1101直接相连。
图5 中继节点硬件电路示意图
中继节点采用220 V市电经AC—DC转换后供电,没有节能处理的要求,CC1101不需使用WOR工作模式,处于常开状态,最大限度的保证通信链路的可用性。默认状态下中继节点在与测控基站通信的过程中处于被动地位,随时准备接收测控基站上传的测量数据帧。
中继节点时工作流程如图6所示,它不断监视本区域内的无线基站状态,只有当发现测控基站测量数据有改变时才向中心计算机转发数据;同时响应中心计算机发送的控制指令,向本区域内的无线基站转发。
图6 中继节点处理流程图
中继节点使用PIC18F66J60单片机 TCP/IP协议栈与中心计算机通信的软件处理步骤简介如下。
①PIC18F66J60单片机根据中心计算机IP地址向局域网广播发出地址解析(ARP)包。中心计算机工作在TCPSERVER的模式下,应答中继节点发送的ARP解析请求,向中继节点回送MAC地址。相关函数调用为:void ARPResolve(IP_ADDR*IPAddr),发出地址解析包,IPAddr为模块的IP地址。BOOL ARPIsResolved(IP_ADDR*IPAddr,MAC_ADDR*MACAddr);IPAddr,MACAddr为中心计算机的IP地址与MAC地址。
②建立中继节点与中心计算机的连接,查看连接是否建立与断开连接。相关函数调用为:TCP_SOCKET TCPConnect(NODE_INFO*remote,TCP_PORT port),建立连接。BOOLTCPIsConnected(TCP_SOCKET hTCP),查看是否建立连接。void TCPDisconnect(TCP_SOCKET hTCP),断开连接。
③PIC18F66J60单片机检查网口缓冲区中是否有数据收到,如果有数据,将数据组合成命令帧。函数调用为:BOOL TCPIsGetReady(TCP_SOCKET socket),检测网口是否收到数据。BOOL TCPGet(TCP_SOCKET socket,BYTE*byte),从网口缓冲区中读出一个字节数据。
④当PIC18F66J60单片机需要向中心计算机发送数据时,检查网口是否做好准备发送数据,如已准备好,直接向网口缓冲区中写入数据。函数调用为:BOOL TCPIs-PutReady(TCP_SOCKET socket),检查网口是否准备好发送数据。BOOL TCPPut(TCP_SOCKET hTCP,BYTE byte),向缓冲区写入一个字节的注塑机参数。void TCPFIush(TCP_SOCKET hTCP),将网口缓冲区的全部数据发送出去。
5 中心计算机设计
中心计算机由应用软件、数据库组成,负责管理整个测控网络系统的测控信息管理。该数据中心主要有以下功能:
①网络拓扑结构的修改,可以在网络中增加或删除中继节点或测控基站;
②与中继节点或测控基站进行通信,查询运行状态,发出动作指令,完成运行维护管理;
③与中继节点或测控基站进行通信,读取测控基站测量数据,进行测量信息的管理;
④各种统计和查询;
⑤数据维护。
结 语
按上述设计方案研制成的分布式测控网络系统,在智能楼宇项目中得到成功应用。测控网络系统利用楼宇中广泛存在的网络接口,在总控室设置一台中心主控计算机,在每一层设置一个中继节点,它们之间通过网线互连,不需重新布线,大大节约了工程成本。另外,在每一楼层各个房间安装一个测控基站,每层的测控基站只与同层的中继节点联系,实现了对每个房间的智能化管理。测控终端与中继节点间通信速率为250 kbps,传输带宽满足大部分的日常测量、控制信息的通信要求;测控终端使用2节普通5号干电池供电,电量足够一年使用,维护成本极低。
对测控网络系统的技术方案稍加修改,如中继节点与中心计算机间使用GPRS无线通信,该测控网络系统即可应用于野外无人值守测控系统,或者是电力计费、管理系统。无线测控网络系统具有构建成本低、易维护、通信性能高等优点,在分布式测控领域具备良好的应用前景。
[1]CC1100/1101 RF module datasheet[OL].[2010-07].www.serialmicro.com.
[2]TI.CC1100/CC2500-Wake-On-Radio(AN047).
[3]Microchip.PIC18F97J60 Family Data Sheet.
[4]Microchip.The Microchip TCP/IP Stack(AN833)[OL].[2010-07].www.microchip.com.