欢迎来到天天文库
浏览记录
ID:24841253
大小:67.00 KB
页数:10页
时间:2018-11-16
《knx-eib通信协议的实时性分析与改进》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、KNX/EIB通信协议的实时性分析与改进KNX/EiB通信协议的实时性分析与改进引言.L. 随着楼宇智能化应用越来越普及,产生了许多楼宇智能化通信协议,其中KNX/EIB(Konnex/ElectricalInstallationBus)通信协议应用最为广泛。KNX/EIB通信协议是唯一一个开放式并经过认证的标准,2006年成为国际标准ISO/IEC145433,并于2007年正式成为中国国家标准GB/Z209652007[1]。 在家庭或者楼宇智能环境中,对通信协议实时性传输的要求非常高。每个数据命令的发送执行都有一个期限,如果超过这个期限,将会有新的随机数据命令产生,前一条
2、命令可能就已经失效了。换句话说,一条数据命令必须在要求的时间内得到执行,同时还要求每条数据命令的传输时延要稳定。KNX/EIB通信协议采用了无线通信常采用的带冲突避免的载波侦听多路存取(CarrierSenseMultipleAccess/CollisionAvoidance,CSMA/CA)[2]防冲突机制来解决KNX/EIB网络的冲突问题,但CSMA/CA机制导致数据命令帧传输时延抖动非常大。比如调光命令,调光命令由两条数据命令组成,两条数据命令的产生是随机的,采用CSMA/CS算法机制可能会使这两条数据命令发送的延迟时间不同,造成调光无法准确执行;再比如,在总线不繁忙时,一个开灯数
3、据命令或许可以很快地得到发送执行,但是当总线繁忙时,数据命令可能为了避免冲突,回避高优先级或者同优先级优势数据命令的发送,造成很长的传输时延。这种情况在楼宇智能环境下是不能容忍的,而且可能会因此造成严重的误操作。这也使网络的实时性降低。 本文针对KNX/EIB通信协议在双绞线(Tainline)上构成一个域(area),15个域又通过域耦合器(areacoupler)连接到骨干线(backboneline)上组成整个网络[3]。 一般情况下,每个BCU被安装进系统时被分配一个独一无二的独立地址(IndividualAddress,IADRS)。KNX可以通过组地址(GroupAddr
4、ess,GADRS)对BCU进行无限制分组。所有BCU可以通过发送组播式数据命令帧来进行参.L.数共享,甚至可以进行按位读写。 KNX/EiB数据帧格式如图2所示。Octet0中包含了数据命令帧控制信息,其中数据命令帧优先级就包含在其中。Octet1和Octet2为数据命令帧发送源地址,其为BCU的IADRS。 1.2KNX/EIB防冲突机制分析及其对实时性的影响 根据KNX/EIB标准(KNX/EIBS),若一个BCU已经开 始发送信号,则系统禁止其他BCU占用信道。当多个BCU 同时向总线上发送数据时,根据CSMA/CA算法,BCU要检查 每个比
5、特,如果物理层显示总线繁忙或者正在发生碰撞,则低优先级数据命令帧需要立刻停止传送,高优先权数据命令帧开始传送数据,高优先级数据命令帧传送完成后,低优先级数据命令帧重新开始传输判定。KNX/EIB通信协议中,传输数据的优先级分为四级:系统最高级(systempriority)、报警级别(urgentpriority)、普通级别(normalpriority)和低级(lo.unsignedshortAddr; unsignedcharPriority_TR; } .L. 程序后 其中Addr参数是用来存储申请通信授权的从模块的IADRS;而Priority_TR是用来调度从
6、模块的通信申请并进行排序,其初始值为256。 主模块与从模块都需要一个定时器,用来解决总线出现故障时的程序死锁。 3.2调度程序的调度算法 调度算法的目的是对主模块中存储列表Panding_Req_List上的i(i=1,2,)个通信申请进行排序,使得各个从模块获取通信信道的机会均等,使最大通信延迟时间得到确定。 调度程序的伪代码如下: 程序前 Ifi≤1then 按照先入先出原则,进行调度 elsEifi≥2then 按照Panding_Req_List中参数Priority_TR,由小到大进行调度 IfPanding
7、_Req_List中参数Priority_TR存在相等的then 按照Panding_Req_List中参数Adrr,由大到小进行调度 endif Endif 程序后 设置IADRS值大的BCU的优先级高是为了减少劣势数据命令帧的等待时间,以及减少劣势数据帧在总线与优势数据帧发生竞争的几率,使各个从模块之间的传输延迟尽量平均。 当有一个申请被执行,该申
此文档下载收益归作者所有