基于低功耗蓝牙的虚连接方法及利用该方法的无线充电协议
技术领域
本发明属于无线充电技术领域,特别涉及一种基于低功耗蓝牙的虚连接方法及利用该方法的无线充电协议。
背景技术
在无线电能传输方案和协议实现中,电能发送单元(PTU)和电能接收单元(PRU)一般使用低功耗蓝牙(BLE)技术来传输信息。PTU和PRU组成一个标准的蓝牙微网,其中PTU是主设备,PRU是从设备。
在几乎所有BLE蓝牙微网实现中,最多允许8个从设备同时与主设备通讯(低功耗蓝牙5.0版本起,不再限定一个蓝牙微网中从设备的数目必须低于8,但是几乎所有的低功耗蓝牙协议实现中,均保留了这一限制)。所以应用低功耗蓝牙技术实现的无线充电协议也有这样的限制,即PTU最多能同时和8个PRU设备通讯并给它们充电。与此同时,如果PTU需要集成从角色并提供一个管理接口(即允许其他主设备连接此PTU),则能最多同时充电的PRU数目降为7。
如果使用场景是十几个甚至几十个BLE设备需要同时充电,或者PTU还需要集成从角色用以开放管理接口,那么应用了几乎所有的现有BLE实现的标准无线充电协议并不能满足要求。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种基于低功耗蓝牙的虚连接方法及利用该方法的无线充电协议,可满足一台PTU同时为多台PRU充电的要求。
为了实现上述目的,本发明采用的技术方案是:
一种基于低功耗蓝牙的虚连接方法,所述虚连接使用服务端/客户端模式,在一台BLE设备上设置多个服务端和多个客户端,一个服务端与其它BLE设备的客户端建立虚连接,一个虚连接由四元组标识:服务端蓝牙地址、服务端端口、客户端蓝牙地址以及客户端端口,在通讯流程中,所述客户端发起连接,所述服务端等待并接受连接,所述服务端设定有监听端口,所述客户端发起连接时,指定要连接的服务端的监听端口为目的端口,指定要连接的服务端的蓝牙地址为目的蓝牙地址,服务端接收到连接请求时,检测指定的目的蓝牙地址是否与自身的蓝牙地址匹配,如匹配才可接受连接请求。
所述服务端接受连接请求并发送确认信息以确认连接成功,客户端接收到连接确认信息,此时服务端和客户端能够发送和接收应用层数据。无论服务端还是客户端,若没有需要传输的应用层数据,则会发送保持存活信号;无论服务端还是客户端,均可发起断开连接的请求,另一方需要确认断开连接。
所述虚连接的协议栈建立在标准低功耗蓝牙协议栈之上,由四部分组成:核心协议栈、广播管理单元、扫描管理单元和应用接口层,其中,核心协议栈用于管理和维护虚连接的连接状态,管理虚连接数据包队列以及对应用层数据进行分片和重组;广播管理单元用于管理各个虚连接的待发送数据包,使用分时技术将各个虚连接的待发送数据包发送出去;扫描管理单元用于连接标准低功耗蓝牙协议栈的扫描接口并将接收到的虚连接数据包输入到核心协议栈;应用接口层提供编程接口供应用层程序使用虚连接进行通讯。
所述虚连接中使用了序号和确认机制以提高传输稳定性并使数据包保持顺序。即,在虚连接帧中含有SEQ及ACK两项,SEQ表示当前帧是帧发送方发出的第几个帧,ACK表示帧发送方已经接收到了对方多少帧,在本方接收到帧时,保存帧中的ACK,这表示对方接收了多少本方发出的帧;在本方发出的下一个帧中,SEQ=本方保存的对方目前已经接收的帧数+1,从而保证双方发出的数据包不会乱序,并且能够应对数据包丢失的情况。
所述BLE设备通过分时技术发送多个不同的广播包,每个广播包面向一个虚连接的终端BLE设备。
在虚连接协议中,包括两种消息:控制消息和数据消息,控制消息在虚连接协议栈内部自动处理;数据消息用来传输应用层数据,所有的消息都以虚连接帧的形式发送,帧是存放在BLE广告数据包的制造商区域并随广告数据包发送的,为了不影响正常的BLE连接通讯,协议中使用无连接模式的广告数据包来发送虚连接帧。
本发明还提供了利用所述基于低功耗蓝牙的虚连接方法的无线充电协议,在电能发送单元(PTU)上设立虚连接服务端,在电能接收单元(PRU)上设立虚连接客户端,使得多个PRU能够同时与PTU建立虚连接并交换A4WP协议数据,实现无线充电。同时,PTU与PRU仍然可以建立低功耗蓝牙的标准连接,然后相互交换A4WP协议数据,两种连接模式可以同时使用。
与现有技术相比,使用本发明虚连接后,一个BLE设备可以同时和多于8个的BLE设备进行双向通讯,并且原来的BLE连接通讯几乎不受影响。同时使用虚连接与BLE标准连接,与一台BLE设备上能同时进行双向通讯的BLE设备数目可以很容易的提高到十几个甚至几十个。引入虚连接并扩展A4WP无线充电协议后,可以同时充电的PRU数目能提高到十几个甚至几十个。并且PTU并不必须限定是BLE主设备,PRU并不必须限定是BLE从设备。
附图说明
图1是本发明虚连接服务端架构图。
图2是本发明虚连接客户端架构图。
图3是本发明虚连接通讯流程示意图。
图4是本发明虚连接服务端状态机流程示意图。
图5是本发明虚连接客户端状态机流程示意图。
图6是BLE连接和虚连接共存的连接过程示意图。
图7是BLE连接和虚连接共存的消息通讯过程示意图。
图8是标准A4WP无线充电协议中的通讯流程示意图。
图9是标准PTU与具有虚连接扩展的PRU通讯流程示意图。
图10是具有虚连接扩展的PTU与标准PRU的通讯流程示意图。
图11是具有虚连接扩展的PTU与具有虚连接扩展的PRU通讯流程示意图。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
本发明提出了一种基于BLE广播和扫描技术,以使得两个BLE设备能够双向通讯的虚连接技术。如果仅仅使用广播和扫描技术,采用无连接的模式来交换信息的话,很容易出现数据包丢失和乱序。为了提高传输稳定性、并使数据包保持顺序,协议中使用了序号和确认机制。通过此协议实现的通讯连接被称为虚连接(以和标准的BLE连接区分)。显然,通过虚连接技术,并且使用分时技术的话,一个BLE设备能够同时和多个BLE设备通讯。使用多个虚连接的BLE设备需要通过分时技术发送多个不同的广播包,每个广播包面向一个虚连接的终端BLE设备。实际上,如果一个BLE设备只使用了一个虚连接,并且此设备是从设备的话,此设备也可能需要发送两种广播,一种广播被虚连接使用;另一种广播用来广告此设备原来的服务。
显然,相比标准的BLE连接,虚连接的带宽会低很多,并且数据包传输时间也长很多。然后虚连接与标准的BLE连接可以共存于同一BLE设备上,而不管此BLE设备是主设备或者从设备,并且几乎不影响标准BLE连接的传输带宽和速度。
参照图1和图2,虚连接协议栈由四部分组成:核心协议栈、广播管理单元、扫描管理单元、和应用接口层。虚连接协议栈建立在标准低功耗蓝牙协议栈之上。广播管理单元的作用是发送不同虚连接的数据包;扫描管理单元的作用是连接系统的扫描接口并将虚连接数据包输入到核心协议栈;应用接口层提供了实用的编程接口供应用层程序使用虚连接进行通讯。
虚连接使用服务端/客户端模式,并且一台BLE设备上上可存在多个服务端和多个客户端。一个虚连接由四元组标识:服务端蓝牙地址,服务端端口,客户端蓝牙地址,客户端端口。
参照图3,一个典型的虚连接通讯流程如下所示:
1.启动服务端,设定监听端口。
2.启动客户端,指定本地端口。
3.客户端发起连接请求,并指定要连接的服务端的监听端口为目的端口。作为可选项,客户端可以指定服务端的蓝牙地址为目的蓝牙地址,若指定了目的蓝牙地址,服务端在接收到连接请求时需要检测指定的目的蓝牙地址是否与自身的蓝牙地址匹配,若不匹配则不能接受连接请求。
4.如果连接请求中的目的蓝牙地址和目的端口与服务端相符,则服务端接受连接请求并发送确认信息以确认连接成功。此时服务端可以发送和接收应用层数据。
5.客户端接收到连接确认信息。此时客户端可以发送和接收应用层数据。
6.无论服务端还是客户端,若没有需要传输的应用层数据,会发送保持存活信号,
7.无论服务端还是客户端,均可以发起断开连接的请求,另一方需要确认断开连接。
即,连接可由任一方关闭。
在虚连接协议中,有两种消息:控制消息和数据消息。控制消息在虚连接协议栈内部自动处理;数据消息用来传输应用层数据。所有的消息都以虚连接帧的形式发送,较大的消息可能需要连续多个帧来发送,这些帧称为分片。参照表1,帧是存放在BLE广告数据包的制造商区域并随广告数据包发送的。为了不影响正常的BLE连接通讯,协议中使用无连接模式的广告数据包来发送虚连接帧。
表1 帧/分片格式
len |
more |
ctrl |
mark |
session id |
seq |
ack |
payload |
Ien:本帧/分片的长度
more:是否还有更多的分片
ctrl:标识本条消息是控制消息还是数据消息
mark:保留
sesslon id:标识已经建立的伪连接
seq:本帧/分片的序号
ack:多少帧/分片已经被确认了
payload:负载数据
虚连接协议中使用的控制消息如表2所示:
表2 虚连接协议中使用的控制消息
PC_CTRL_REQUEST_CONN |
发起伪连接请求 |
PC_CTRL_CONFIRM_CONN |
接收并确认伪连接 |
PC_CTRL_REJECT_CONN |
拒绝伪连接请求 |
PC_CTRL_KEEP_ALIVE |
保持存活 |
PC_CTRL_CLEAR_QUEUE |
清除未使用的数据分片 |
PC_CTRL_REQUEST_DISCONN |
关闭伪连接 |
PC_CTRL_CONFIRM_DISCONN |
确认关闭伪连接 |
虚连接协议中使用状态机来保持服务端和客户端的状态。简化的状态机流程如图4和图5所示。
使用虚连接后,一个BLE设备可以同时和多于8个的BLE设备进行双向通讯,并且原来的BLE连接通讯几乎不受影响。同时使用虚连接与BLE标准连接,与一台BLE设备上能同时进行双向通讯的BLE设备数目可以很容易的提高到十几个甚至几十个。理论上,能支持的最多同时双向通讯设备数目只限定于BLE带宽。然后实际场景中,必须要考虑到环境因素(例如环境中有太多的无线信号)。同时,随着BLE设备上虚连接数目的增加,处理负载、能量消耗、及分时技术带来的时间延误都会增加,这些因素会影响虚连接通讯的可靠性。强烈建议在实际场景中进行实测。
参照图6,本发明相关的一个实验中,涉及到5个设备,分别是M,S1,S2,S3,和B。其中M是主设备,并且是虚连接服务端;S1是从设备;S2和S3均是从设备,并且均是虚连接客户端;B是另外一个蓝牙微网的主设备,并且是虚连接客户端。
各设备启动后,M向S1,S2,和S3发起BLE连接,同时S2,S3,和B向M发起虚连接请求。
M向S2,S3,和B确认虚连接。
BLE连接和虚连接建立后,均可双向传输消息。参照图7,BLE连接内的数据通讯使用蓝牙数据通道,虚连接内的数据通讯使用蓝牙广播通道。(请注意,虚连接的建立会比BLE连接慢十几毫秒~几十毫秒,这与虚连接中扫描和广播的调度周期有关)。
无论BLE连接还是虚连接,完成数据传输后,连接任一方均可发起关闭连接。其他连接内的通讯不受影响。
采用上述方法,引入虚连接并扩展A4WP无线充电协议后,可以同时充电的PRU数目能提高到十几个甚至几十个。并且PTU并不必须限定是BLE主设备,PRU并不必须限定是BLE从设备。然而为了与标准的A4WP协议兼容,这些限定被保留。
图8为A4WP无线充电中标准PTU与标准PRU的通讯流程。PTU收到PRU的BLE广告后发起连接。BLE连接建立后,PTU和PRU相互交换静态和动态参数,若条件允许,PTU命令PRU使能充电。期间PRU一直向PTU发送信息报告或者告警。所有通讯在标准BLE连接中完成。
图9为标准PTU与具有虚连接扩展的PRU的通讯流程。PTU收到PRU的BLE广告,此广告携带有额外信息表明PRU试图连接PTU上的虚连接服务端。由于标准PTU不具有虚连接扩展,所以PTU会忽略上述广告中的连接请求并向PRU发起标准BLE连接。标准BLE连接建立后,PRU会关闭虚连接扩展,此后PRU与PTU的所有通讯均在标准BLE连接中完成。
图10为具有虚连接扩展的PTU与标准PRU的通讯流程。PTU收到PRU的BLE广告,此广告不含有任何虚连接信息,PTU向PRU发起BLE连接。通讯流程与图6中所示一样。
图11为具有虚连接扩展的PTU与具有虚连接扩展的PRU的通讯流程。PTU同时也是虚连接服务端,PTU收到PRU的BLE广告,此广告携带有额外信息表明PRU试图连接PTU上的虚连接服务端。PTU接收并确认此虚连接请求,随后PRU会接收到PTU的连接确认,至此虚连接完全建立,PTU与PRU的所有信息通讯均在虚连接中完成。