其中,对象标志符用来惟一标识对象;BACnet设备可以通过广播自身包含的某个对象的对象名称,与包含相关对象的设备建立联系。因此进行BACnet对象的定义,解决楼宇自控设备的互相识别、访问是实现楼宇自控设备互操作的关键。BACnet设备使用相关的对象进行描述,每一对象都有一组属性,设备的特征可以通过属性值表现出来。......
2023-08-29
1.APDU分类
BACnet的APDU可以分为两种:一种是由请求方BACnet用户(客户)发送的;另一种是由响应方BACnet用户(服务器)发送的。所有的BACnet设备都应能工作在响应方BACnet用户状态,从而能够接收请求方BACnet用户发来的APDU。另一方面,许多设备还可以工作在请求方BACnet用户状态,接收响应方BACnet用户发来的APDU。
(1)请求方BACnet用户(客户)发送的APDU
1)BACnet无证实请求PDU(BACnet-Unconfirmed-Request-PDU);
2)BACnet有证实请求PDU(BACnet-Confirmed-Request-PDU);
3)BACnet分段确认PDU(BACnet-SegmentACK-PDU)(参数‘服务器(server)’=FALSE);
4)BACnet中止PDU(BACnet-Abort-PDU)(参数‘服务器’=FALSE)。
(2)响应方BACnet用户(服务器)发送的APDU
1)BACnet简单确认PDU(BACnet-SimpleACK-PDU);
2)BACnet复杂确认PDU(BACnet-ComplexACK-PDU);
3)BACnet差错PDU(BACnet-Error-PDU);
4)BACnet拒绝PDU(BACnet-Reject-PDU);
5)BACnet分段确认PDU(BACnet-SegmentACK-PDU)(参数‘服务器’=TRUE);
6)BACnet中止PDU(BACnet-Abort-PDU)(参数‘服务器’=TRUE)。
请求方和响应方BACnet用户为每一个事务处理都要创建并且维护一个TSM。该TSM在事务开始时创建,在事务结束时中止。其过程如下:由空闲(IDLE)状态转变进入到TSM状态,建立TSM;由TSM状态转变到空闲状态,中止TSM。一个事务处理由客户BACnet地址(BACne-tAddress)、服务器BACnet地址和调用标识符(如果存在的话)惟一确定。
当一个PDU从网络层传递给应用层时,应用层软件检查PDU的类型、源BACnet地址、目的BACnet地址、调用标识符(如果存在的话),确定PDU的类型(是请求方还是响应方BACnet用户)以及应送给哪个TSM处理。如果不存在对应的TSM,必须新建一个TSM。
当一个请求从应用程序传递给应用层时,应用层软件检查请求的类型、源BACnet地址、目的BACnet地址、调用标识符(如果存在的话),确定请求的类型(是请求方还是响应方BACnet用户)以及应送给哪个TSM处理。如果不存在对应的TSM,必须新建一个TSM。
为了简化状态机的描述,这里仅给出应用实体所进行分段的情况,应用程序所进行的分段也是存在的。在这种情况下,当前的TSM无论是接收一个分段还是一组分段或是发送分段确认,分段都将通过更新后的TSM传递给应用程序,而分段确认则只沿着从应用程序通过分段确认请求(SEGMENT_ACK.request)原语这个方向传递。当更新的状态机接收到分段确认PDU,就向应用程序传递一个分段确认指示(SEGMENT_ACK.indication)原语。
2.变量、参数与函数
(1)变量
在每个事务处理状态机的实例中,都使用了一些变量,部分变量定义如下:
1)重发计数(RetryCount):用于计数APDU重发的次数。
2)分段重发计数(SegmentRetryCount):用于计数分段重发的次数。
3)分段发送完毕(SentAllSegments):用于控制APDU的重发及接收服务器的响应。
4)最近序号(LastSeqenceNumber):用于保存顺序接收的最近一个分段的序号。
(2)InWindow函数和FillWindow函数
1)InWindow函数:函数“InWindow”用于完成对两个序号(由无符号8位整数构成)的模256运算。所有的计算和比较都是在8位无符号整数基础上模256运算。
对于函数InWindow(seqA,seqB)
① 如果参数seqA减去参数seqB的差再模256,其结果少于实际窗口尺寸,则返回TRUE。
② 否则返回FALSE。
2)FillWindow函数:函数“FillWindow”用于发送一组PDU分段,该PDU分段序列的数目或者正好填充窗口,或者是一个报文的最后部分分段。在收到一个分段确认APDU到发送下一个分段序列,时间间隔不能大于Tseg值。分段序列中两个相邻分段发送的时间间隔,也不能大于Tseg值。
3.请求方BACnet用户(客户)状态机
(1)空闲状态
在空闲状态,设备等待着本地应用程序请求服务。可以发送:
1)发送无证实请求(SendUnconfirmed);
2)发送有证实不分段请求(SendConfirmedUnsegmented);
3)发送有证实分段请求(SendConfirmedSegmented)。
可以接收到:
1)意外分段信息(UnexpectedSegmentInfoReceived);
2)意外PDU(UnexpectedPDU Received)。
(2)分段请求状态
在分段请求状态,设备等待接收针对BACnet有证实请求PDU所发出的一个或几个分段的BACnet分段确认PDU的确认报文。
1)接收到重复确认PDU(DuplicateACK Received);
2)接收到新确认PDU(NewACK Received);
3)接收到最后一个确认PDU(FinalACK Received);
4)分段超时(Timeout);
5)最终超时(FinalTimeout);
6)接收到中止PDU(AbortPDU Received);
7)接收到简单确认PDU(SimpleACK Received);
8)接收到不分段复杂确认PDU(UnsegmentedComplexACK Received);
9)接收到分段复杂确认PDU(SegmentedComplexACK Received);
10)接收到差错PDU(ErrorPDU_Received);
11)接收到拒绝PDU(RejectPDU_Received);
12)接收到意外PDU;
13)发送中止PDU(SendAbort)。
(3)等待证实状态
在等待证实状态,设备等待接收针对BACnet有证实请求PDU所发出的响应。
1)接收到简单确认PDU;
2)接收到不分段复杂确认PDU;
3)接收到分段复杂确认PDU;
4)接收到差错PDU;
5)接收到拒绝PDU;
6)接收到放弃PDU;
7)接收到分段确认PDU;
8)接收到意外PDU;
9)请求超时不分段(TimeoutUnsegmented);
10)请求超时分段(TimeoutSegmented);
11)最终超时;
12)发送放弃PDU。
(4)分段证实状态
在分段证实状态,设备等待接收一个或者几个针对BACnet分段确认PDU的响应分段。
1)接收到新分段但无空间保存(NewSegmentReceived NoSpace);
2)接收到新的分段;
3)接收到一组分段中的最后分段(LastSegmentOfGroupReceived);
4)确认PDU,重启分段计时器,最后进入分段证实状态,等待接收后续分段;
5)接收到复杂确认的最后分段(LastSegmentOfComplexACK Received);
6)接收到乱序分段(SegmentReceivedOutOfOrder);
7)接收到中止PDU;
8)接收到意外PDU;
9)分段超时;
10)发送中止PDU。
4.响应方BACnet用户(服务器)状态机
(1)空闲状态
在空闲状态,设备等待从网络层传递来一个PDU。
1)接收到无证实请求PDU;
2)接收到不分段有证实请求PDU;
3)接收到分段证实请求PDU且不支持;
4)接收到分段证实请求PDU;
5)接收到中止PDU;
6)接收到意外PDU。
(2)分段请求状态
在分段请求状态,设备等待接收BACnet有证实请求PDU的分段。
1)接收到新的分段;
2)接收到一组分段中的最后分段;
3)接收到报文最后分组;
4)接收到乱序分段;
5)接收到中止PDU;
6)接收到意外PDU;
7)分段超时;
8)发送中止PDU。
(3)等待响应状态
在等待响应状态,设备等待本地应用程序针对BACnet有证实请求PDU所做出的响应。
1)发送简单确认PDU;
2)发送不分段复杂确认PDU;
3)无法发送分段复杂确认PDU(CannotSendSegmentedComplexACK);
4)发送分段复杂确认PDU;
5)发送差错PDU;
6)发送中止PDU;
7)发送拒绝PDU;
8)接收到中止PDU;
9)接收到重复的请求PDU;
10)接收到重复分段PDU;
11)接收到意外PDU;
12)分段超时。
(4)分段响应状态
在分段响应状态,设备等待接收一个BACnet分段确认PDU,此PDU用于对BACnet复杂确认PDU中的一个或几个分段进行确认。
1)接收到重复确认PDU;
2)接收到新确认PDU;
3)接收到最后一个确认PDU(FinalACK_Received);
4)分段超时;
5)最终超时;
6)接收到中止PDU;
7)接收到意外PDU;
8)发送放弃PDU。
有关BACnet标准与楼宇自控系统技术的文章
其中,对象标志符用来惟一标识对象;BACnet设备可以通过广播自身包含的某个对象的对象名称,与包含相关对象的设备建立联系。因此进行BACnet对象的定义,解决楼宇自控设备的互相识别、访问是实现楼宇自控设备互操作的关键。BACnet设备使用相关的对象进行描述,每一对象都有一组属性,设备的特征可以通过属性值表现出来。......
2023-08-29
网络层协议报文是指BACnet网络层控制和管理报文,主要用于BACnet路由器配置和管理、路由表的维护、网络层拥塞控制、PTP链路控制和管理以及网络层功能查询等。有10种网络层协议报文,说明如下:1.Who-Is-Router-To-Network报文该报文类型域是X‘00’,有2B的网络号,并可由网络中任意节点产生,用广播方式发送和转发。该类报文由BACnet路由器产生,作用是一个拒绝报文,直接发给生成被拒绝的报文的节点,网络号就是被拒绝报文中的网络号。......
2023-08-29
BACnet标准采用了4层结构:应用层、网络层、数据链路层和物理层,并为数据链路层和物理层提供了6种选择方案,其中一种就是选择主从/令牌传递协议加上EIA-485标准。MS/TP协议定义了MS/TP帧结构,这部分内容如第4章的“MS/TP局域网规范”所述。MS/TP协议还定义了MS/TP网络采用惟一的一种总线拓扑结构和主站点与从站点以及采用令牌机制的媒质访问控制方法。......
2023-08-29
冷水机组台数控制有三种基本方法,其中电流比台数控制方法最精确可靠。冷水机组在运行时的多余冷量从旁通或者平衡管回流,会造成很大的冷量损失,因此仅开启满足冷负荷需求的冷机台数对建筑节能贡献最大。通过BACnet互联得到的数值与机组内部设定值相同,控制逻辑与机组内部控制逻辑一致,相比管道安装的传感器,可能产生偏差外,DDC对冷水机组的起/停控制命令通过BACnet网关送达冷水机组,中间经过冷水机组的内部安全监测。......
2023-08-30
下面简要介绍BACnet标准的各个部分,关于内容的深度分析和讨论放在后面的专门章节中。每一个BACnet设备必须至少包含一个标准对象。网络层的功能就是实现连接两个使用不同数据链路层协议的BACnet局域网。BACnet网络层向应用层提供的服务是不确认的无连接形式的数据单元传送服务。......
2023-08-29
施耐德TAC Vista BAS的一个工作界面如图10-43所示。图10-43 TAC Vista系统的一个工作界面1.TAC BAS架构施耐德TAC Vista系统是基于开放的LonWorks技术的BAS,控制网络使用LonWorks网络,通过LonWorks路由器把分布在不同建筑内和不同楼层的DDC便捷地连接起来。图10-44 施耐德TAC BAS的架构TAC Xenta OP是一个小型的操作终端,通过面板与DDC连接。图10-45 细致的组件连接关系2.控制器及编程软件施耐德TAC BAS中的DDC是TAC Xenta系列控制器。LonWorks网络通信使用3120神经元芯片,中央处理器是32位、10MHz主频的CPU。......
2023-08-30
据估计,仅仅移动互联网的地址需求预计将达到5亿~9亿个,物联网的发展对IP地址资源的需求也极为巨大,IPv6能够提供海量地址,完全可以满足以上技术发展的需求。IPv6体制增强了组播支持和对流的支持。在IPv6体系中,对协议进行了改进和扩展,使得网络管理更加方便和快捷,安全性大幅度提升。......
2023-08-30
相关推荐