基于Si1000的无线M-Bus通信系统
扫描二维码
随时随地手机看文章
摘要:仪表总线M-Bus协议是专门为消耗量计量仪表设计的通信标准。无线M-Bus是M-Bus的一个无线通信标准,无需布线。在布线困难的地方,可以选用无线M-Bus进行通信。本文介绍了基于Si1000的无线M-Bus通信系统主/从节点的硬件系统及软件系统,并对无线M-Bus系统中低功耗的实现进行了探讨。
关键词:无线M-Bus;Si1000;低功耗
引言
有线M-Bus是专为家用仪表数据传输而设计的总线制系统,它是一个层次化的系统,由主设备、若干从设备和一对连接线组成。有线M-Bus的提出满足了公用事业仪表组网和远程抄表的需要,同时可以满足远程供电需求,在智能小区的自动抄表系统中有广泛应用。可是有线M-Bus系统在网络布线施工过程中往往需要破墙掘地,破坏周围的环境。因此无线应用给它在竞争中带来优势,易于安装和维护,不会对周围环境造成影响。无线M-Bus是专门用于水表、气表、热能表、电表和数据集中器之间的数据无线传输的一个通信标准,它正广泛被欧洲市场所接受。
现在大多数仪表都是用电池进行供电的,因此对于低功耗的要求比较高。为了延长电池的使用寿命,本文选用低功耗芯片Si1000组建一个无线M-Bus通信系统,并对Si1000的低功耗性能问题及在软硬件上的实现进行了分析。
1 无线M-Bus
无线M-Bus标准规定了仪表和集中器之间的通信。图1给出了一个简单的无线M-Bus通信系统,其中集中器作为主节点,仪表作为从节点。
主节点和从节点之间的通信,定义了3种不同的通信模式:
①S-mode静止模式。S1-mode是从仪表到其他系统单元的单向通信;S1m-mode如同S1,但是数据采集装置不能进入低功耗模式;S2-mode是仪表和其他系统单元之间的双向通信。
②T-mode频繁传送模式。T1-mode是从仪表到其他系统单元的单向通信;T2-mode是仪表和其他系统单元之间的双向通信。
③R-mode是频繁接收模式。R2-mode是仪表和其他系统单元之间的双向通信。
当仪表能够和集中器直接进行通信时,其他系统单元就是图1中的集中器。可是在实际应用中,从节点仪表有时不能直接与主节点集中器进行通信,那么就需要路由节点来转接它们之间的数据,此时的系统单元就是高性能网关。
2 无线M-Bus收发系统设计
2.1 无线M-Bus收发系统原理
仪表抄读无线收发系统原理框图如图2所示。无线数据的收发由无线微控制器Si1000实现。主节点Si1000内部的发送模块将数据进行编码处理,以特定的格式经天线发送给接收模块。从节点Si1000内部的接收模块接收到有效数据后,Si1000内部的微处理器通过扩展接口读取外部仪表的数据,并进行相应的调整、转换处理后通过射频发送给主节点。主节点通过GPRS与集抄中心进行通信。
由于采用的是无线微控制器,主/从节点发送/接收模块不需要使用传统的MCU+RF模块的设计方式,只需要一片Si1000就可以完成射频通信。
2.2 射频部分
Si1000作为Si10xx系列的成员之一,在极精简的5 mm×7 mm封装中结合了8051内核、工作频段为240~960 MHz高穿透力的EZRadioPRO RF收发器、64 KB的Flash和10位ADC。Si1000系列提供优越的RF性能,具有最高输出功率、接收灵敏度以及最低功耗的唤醒转换等特性。该无线微控制器在工作模式下有最低的电流消耗(160μ/MHz),在休眠模式下,以内部低频振荡器(LFO)作为频率源的RTC工作时,消耗电流低至315nA。在深度休眠模式下,仅需25 nA工作电流,且不会丢失RAM数据。图3给出了射频部分硬件原理图。
从节点中,仪表与芯片Si1000的UART串口引脚P0.4/TX和P0.5/RX相连。主节点芯片Si1000的UART串口引脚P0.4/TX和P0.5/RX与集中器进行连接,集中器内部MCU串口通过RS232与GPRS模块相连,借助移动网和Internet实现数据的远程传输。图中可编程负载电容是可集成的,L1~L6和C1~C5的值是由频率带宽、天线阻抗和供给电压决定的。
无线收发模块的通信是以数据包的形式发送的,无线发送程序负责写入数据,参考无线M-Bus通信协议,为数据加上前导码、同步字、数据载荷长度及CRC校验字节,形成数据包将其发送出去。为保证接收到数据的正确性,无线接收程序负责接收数据包并检验CRC字节。
2.3 无线M-Bus协议栈实现
协议栈如图4所示。物理层定义了位是如何编码和传输的、RF调制解调器的特性(码率、前导码和同步字)和RF参数(调制、中心频率和频率偏移)。物理层是通过硬件和嵌入式软件结合来实现的,EZRadioPRO实现了所有RF和调制解调器的功能。MbusPhy.c模块提供SPI接口、编码/解码、块的读/写和数据包处理,并且管理收发器的状态。
无线M-Bus数据链路层是在MbusLink.c模块上实现的。M-Bus应用程序编程接口由公共函数组成,这些公共函数可以从主线程的应用层调用,MbusLink模块也实现了数据链路层。数据链路层规定了数据的格式,为数据加上头文件和循环冗余校验,并且将数据从应用程序TX缓冲区复制到MbusPhy TX缓冲区。
Si1000的射频芯片为发送和接收提供了一个64字节FIFO。在数据链路层实现了数据包的发送和接收,数据包发送和接收流程图如图5所示。
在发送时,计算编码字节的总数。如果编码字节总数(包括前导码)小于64字节,那么将整个数据包写到FIFO,并且只有包发送中断有效。大多数短包将在一个FIF0转移中被发送。如果编码字节的数量大于64字节,那么需要多次FIFO转移发送数据包。将前64个字节写到FI FO,包发送中断和TX FIFO几乎空中断有效,把TXFIFO几乎空阈值设置为10字节。在每一个nIRQ之前,读取状态2寄存器。首先检查包发送位,如果数据包没有被完全发送,那么将编码数据接下来的32字节写到FIFO,重复上述过程直到所有编码字节都被写到FIFO,并且包发送中断发生。
在接收时,最初只有同步字中断是有效的。接收同步字后,同步字中断无效且FIFO几乎满中断有效。FIFO几乎满阈值设置到2字节,首个FIFO几乎满中断用于确认这两个长度字节何时已收到。一旦接收到这个长度,那么解码这个长度且计算出编码字节的数目,然后将RXFIFO几乎满阈值设置到54字节,RX FIFO几乎满中断和有效数据包中断有效。在接收到一个有效数据包中断后,MCU等待接收FIFO几乎满中断,然后从接收FIFO读取32字节。重复上述过程直到全部字节有效载荷被接收。在CRC错误的情况下,MCU将复位接收FIFO并丢弃数据包。
3 无线M-Bus系统低功耗的实现
为了延长电池的使用寿命,Si1000在工作过程中并不是一直运行的。当没有数据要发送时,Si1000处于休眠状态,其内部的MCU和射频都是关闭的,只有定时器在工作。经过一定时间后,内部MCU唤醒侦听载波,判断是否有数据需要它来发送,当有数据需要发送时,Si1000发送数据。发送数据完成后,关闭MCU和射频。这样重复进行,只有数据发送时它才进行工作,否则一直处于休眠状态,这样就大大延长了电池的使用寿命。
结语
无线M-Bus是一种专门用于各种消费类型仪表的远程读数或读取相关信息的通信标准。将无线M-Bus与Si1000应用到各种消费仪表上,可将数据收集并传到中心集中器,然后通过GPRS传送到集抄中心进行相应的处理。这样就可以实现远程数据实时采集、巡检和监控等功能。无线M-Bus在我国的应用还处于起步阶段,但考虑到它在计量应用领域的优势,应用前景十分广阔。