智能建筑中BACnet MSTP控制模块研究与实现 - 图文

更新时间:2024-03-26 20:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

硕士学位论文

智能建筑中BACnet MS/TP控制模块

研究与实现

RESEARCH AND IMPLEMENTATION OF BACnet

MS/TP CONTROL MODULE IN SMART BUILDING

冷正龙

哈尔滨工业大学 2012年6月

国内图书分类号:TU855 学校代码:10213 国际图书分类号:697 密级:公开

工学硕士学位论文

智能建筑中BACnet MS/TP控制模块

研究与实现

硕士研究生: 冷正龙 导 师: 马新军副教授 申请学位: 工学硕士 学

科: 电气工程

所 在 单 位: 深圳研究生院 答 辩 日 期: 2012年6月 授予学位单位: 哈尔滨工业大学

Classified Index: TU855 U.D.C: 697

Dissertation for the Master Degree in Engineering

RESEARCH AND IMPLEMENTATION OF BACnet

MS/TP CONTROL MODULE IN SMART BUILDING

Candidate: Supervisor:

Leng Zhenglong

Academic Degree Applied for: Master of Engineering

Electrical Engineering Speciality: Affiliation: Date of Defence:

June, 2012

Asso. Prof. Ma Xinjun

Shenzhen Graduate School

Degree-Conferring-Institution: Harbin Institute of Technology

哈尔滨工业大学工学硕士学位论文 摘 要

随着人们对生活质量的要求提高,智能建筑应用日益广泛。作为楼宇自控中唯一的国际标准,BACnet在全球内获得广泛的应用。MS/TP作为BACnet的成本低廉、实现简单的数据链路选择,在楼宇自控现场级设备中使用广泛。MS/TP是BACnet专门针对楼宇自控开发的,利用令牌环机制实现主从/令牌传递控制。

首先,介绍了BACnet标准,阐述了其体系结构和服务对象,还着重介绍了MS/TP链路层的状态机。其次,对MS/TP介质访问控制算法进行了研究,阐述了令牌传递、多令牌检测和令牌产生等算法思想。

然后,由于传统MS/TP MAC地址的设定,从成本和操作上一定程度限制了MS/TP控制设备的使用。本文研究了一种可以自动动态寻址算法,可以减少拨码开关等硬件成本,对网络中的带宽也影响很小,最主要的是降少了人工误操作和人力成本。对于实际应用具有重要意义。通过制作的实物,实验测试中通过Wireshark报文分析验证了自动寻址算法。

最后,本文对于智能建筑中用于控制开关设备的MS/TP控制模块,从输入电源、通信接口、继电器驱动和负载检测等电路进行了设计,并给出了详细的原理图。另外,对于本模块使用的BACnet协议栈和MS/TP协议流程进行了阐述。同时设计的MS/TP控制模块符通过了BTL的VTS软件测试,符合BACnet一致性要求。

本文设计的MS/TP控制模块是一种智能建筑中使用的直接数字控制设备(DDC)。连同其他BACnet设备,可以形成一套完整的楼宇控制方案。它有利于促进BACnet在国内的应用和发展。

关键词:BACnet;MS/TP;DDC;自动寻址

- I -

哈尔滨工业大学工学硕士学位论文 Abstract

With the improvement of people's life quality, there is a increasingly wide application of intelligent buildings. As the only international standard in building automation, BACnet is used widely in global. MS/TP is an option of data link layer of BACnet, MS/TP is widely used in the field building automation equipment because of its low cost and easy using. MS/TP is a specifically for building automation development, using token ring mechanism to realize master-slave / token-passing control.

Firstly, this paper discusses the system structure, service and object of BACnet protocol. The paper also focused on the MS/TP state machine. Secondly, the paper studied medium access control algorithm, including algorithm of token passing, multiple tokens detection and token generation.

Then, the traditional MS/TP MAC address assignment has the problem of manual mistaken, which on some degree constraints MS/TP devices' using. This paper focuses on the study of an automatic dynamic addressing algorithm, which can reduce hardware cost and have little affect on the network bandwidth, the most important benefit is to decrease the manual mistake operation and manpower cost. Through the analysis of Wireshark message in test could verify the automatic addressing algorithm.

Finally, this thesis designed a MS/TP field control module using in smart building in terms of the input power supply, communication interface, a relay drive and load detection circuit design, and giving a detailed schematic diagram. In addition, the BACnet protocol and MS/TP protocol using in the module are described. Through VTS testing of BTL, the control module conforms to the BACnet conformance requirements.

The MS/TP control module designing is a direct digital control equipment ( DDC ) used in intelligent building .Connecting with the other BACnet devices, can form a complete set of building control scheme. It helps to promote the application and development of BACnet in China.

Keywords: BACnet, MS/TP, DDC, automatic addressing

- II -

哈尔滨工业大学工学硕士学位论文 目 录

摘 要 .......................................................................................................................... I ABSTRACT ................................................................................................................ II 第1章 绪 论 ........................................................................................................... 1 1.1 课题背景及意义 ....................................................................................... 1 1.2 国内外发展现状 ....................................................................................... 2

1.2.1 智能建筑的发展 ........................................................................................ 2 1.2.2 楼宇自控系统的发展现状 ........................................................................ 2 1.2.3 BACnet MS/TP研究现状 ......................................................................... 3 1.3 论文研究内容 ........................................................................................... 4 第2章 BACnet MS/TP理论研究 ............................................................................. 6 2.1 BACnet标准 ............................................................................................. 6 2.1.1 BACnet体系结构 ..................................................................................... 7 2.1.2 BACnet对象和属性 ............................................................................... 11 2.1.3 BACnet服务 ........................................................................................... 12 2.2 MS/TP协议 ............................................................................................. 13 2.2.1 MS/TP协议概述 ..................................................................................... 13 2.2.2 MS/TP状态机 ......................................................................................... 13 2.3 MS/TP介质访问控制算法 ...................................................................... 16 2.3.1 令牌传递算法 .......................................................................................... 16 2.3.2 多令牌检测算法 ...................................................................................... 17 2.3.3 令牌产生算法 .......................................................................................... 18 2.4 本章小结 ................................................................................................ 18 第3章 MS/TP自动寻址算法的研究与实现 ......................................................... 19 3.1 引言 ........................................................................................................ 19 3.2 传统地址设定方法 .................................................................................. 19 3.2.1 工厂固化MAC地址 ............................................................................... 19 3.2.2 手动软件设置MAC地址 ....................................................................... 20 3.2.3 手动硬件设置MAC地址 ....................................................................... 20 3.2.4 采用MAC地址分配设备 ....................................................................... 20 3.3 传统地址设定的缺陷 .............................................................................. 20

- III -

哈尔滨工业大学工学硕士学位论文 3.4 零配置MS/TP MAC地址算法研究 ........................................................ 21 3.4.1 MS/TP节点自动寻址 ............................................................................. 22 3.4.2 零配置接收帧状态机 .............................................................................. 23 3.4.3 零配置主节点状态机 .............................................................................. 25 3.5 零配置MAC地址软件实现 .................................................................... 30 3.6 本章小结 ................................................................................................ 33 第4章 MS/TP控制模块的软硬件设计 ................................................................. 34 4.1 硬件设计 ................................................................................................ 34 4.1.1 系统总体结构 .......................................................................................... 34 4.1.2 CPU模块 ................................................................................................. 35 4.1.3 RS485通信模块 ...................................................................................... 36 4.1.4 电源模块.................................................................................................. 36 4.1.5 继电器驱动电路 ...................................................................................... 38 4.1.6 负载电流检测电路 .................................................................................. 39 4.1.7 实物展示.................................................................................................. 39 4.2软件设计 ................................................................................................. 40 4.2.1 控制模块的BACnet协议栈................................................................... 40 4.2.2 MS/TP协议软件 ..................................................................................... 42 4.3 本章小结 ................................................................................................ 43 第5章 实验及结果分析 ......................................................................................... 44 5.1 引言 ........................................................................................................ 44 5.2 静态节点发现过程 .................................................................................. 45 5.3 自动寻址设备地址分配过程 ................................................................... 45 5.4 控制模块VTS测试 ................................................................................ 47 5.5 本章小结 ................................................................................................ 48 结 论 ....................................................................................................................... 49 参考文献 ................................................................................................................... 50 附录 MS/TP MAC自动寻址相关函数 ................................................................. 54 哈尔滨工业大学学位论文原创性声明及使用授权说明 ....................................... 59 致 谢 ....................................................................................................................... 60

- IV -

哈尔滨工业大学工学硕士学位论文 第1章 绪 论

1.1 课题背景及意义

智能建筑(Intelligent Building,IB)主要由楼宇自动化系统(Building Automation System,BAS)、通信自动化系统(Communication Automation System,CAS)和办公自动化系统(Office Automation System,OAS)等三大部分组成[1,2]。其中,楼宇自动化系统是智能建筑中最基本和最重要的组成部分,代表了整个智能建筑的技术水平和发展方向[3,4]。

楼宇自动化系统的通常模型是自动化金字塔[5],它被分成3个反映BAS不同功能方面的级别。最低级级是现场级,实现技术过程的互操作,如计量、设定和开关等。中间级是自动化级,提供控制功能,如执行基于现场控制级数据的控制环等。最高级是管理级,作为管理和企业应用的接口,在该级主要作用是系统配置、过程数据的可视化和归档。先进的楼宇自控系统需要对楼宇设备进行实时监控。随着自动化楼宇设备和服务的增加,分布式网络控制系统日益普遍[6]。基于网络的控制不仅能够对楼宇设备实时监控,它还能够通过收集、分析和存储相关楼宇信息而有效管理楼宇系统,网络是先进楼宇自动化系统所必须的核心技术之一[7-9]。

BACnet是专门针对楼宇自动化和控制系统开发的一个标准数据通信协议[10]。BACnet标准产生于楼宇自控领域,其目的是使所有楼宇自控设备互联和信息共享,最终实现互动与互操作。它由美国ASHRAE协会开发,并在1995年成为标准。此那以后进行了不断地维护和开发[11],目前的标准是BACnet 2008[12],也成为ISO 16484-5:2010。

BACnet标准作为ISO标准,相续成为美国和欧盟标准,必将在全球范围推广使用。我国作为智能建筑最大潜力的国家,开发BACnet标准产品既是呼应时代的趋势,也是开发自主高技术智能建筑产品打入国际竞争的必然要求。在楼宇自控网络中,设备间要进行通信,就必须传输并遵循一定的结构,要实现介质访问控制、寻址、错误恢复和流量控制等。BACnet提供了多种数据链路层选择,MS/TP是BACnet特有的数据链路层,MS/TP因其成本低廉和实现简单在现场级设备中得到广泛使用[13]。对智能建筑中MS/TP控制模块的研究对于推广BACnet标准在中国的使用具有重要的促进作用。

- 1 -

哈尔滨工业大学工学硕士学位论文 1.2 国内外发展现状

1.2.1 智能建筑的发展

建筑智能系统起源于20世纪80年代,90年代初才逐渐被人们所认同。智能建筑系统是建筑技术、信息技术、自动化技术、电子技术等诸多方面的综合体,其发展的30来年中,一直在随着这些技术的发展而发生着重大变化。当今世界社会已进入数字化、信息化、网络化以及智能化的时代,重新审视智能建筑的需求,智能建筑被赋予更深层的意义[14]。关于智能建筑,国际上尚无统一的定义。人们普遍认同“美国智能建筑学会”(AIBI)的定义,即智能建筑是将建筑、设备、服务和经营四要素各自优化、互相联系、全面综合并达到最佳组合,以获得高效率、高功能、高舒适与高安全的建筑物。

智能建筑虽然历史很短,但前景广阔,在世界各国发展迅猛,已成21世纪建筑发展主流之势。近几年来,随着通讯技术、网络技术、控制技术的飞速发展,智能建筑给我们营造一个现代化的城市带来了新的思路。国内楼宇建设中流行一股“智能化”热潮,冠以“3A 智能建筑”“5A智能大厦” 的广告屡见不鲜,而建筑物智能化水平也在逐步提高,智能化建筑的发展可以分成三个阶段:90年代的智能建筑只有一些智能功能如消防自控,其它方面的设备根本没有自控。十年以前的智能建筑基本具有楼宇、消防、保安等自控功能,计算机为主控机,多采用集中控制方式和DOC操作系统,监视和控制多为简单模式,软件水平较低。近年来落成的智能建筑很多都具有较完善的建筑设备自动化(BA)、通讯自动化(CA)和办公自动化(OA)系统简称3A系统。这些系统多以计算机网络为基础,采用集散式甚至分布式控制,监视和控制可以采用精确方式,且有较先进的Windows操作系统及中文图形方式界面,软件编程方便,面向对象。可见近年来建筑的智能化水平有长足的发展。简单地讲,智能建筑就是信息网络与控制网络的系统集成[15]。

1.2.2 楼宇自控系统的发展现状

过去几十年里,BACS的范畴已经扩展到包括各种各样建筑的信息,正向“智能建筑”迈进[16]。当前有关建筑智能的讨论除了处理诸如安全、通信、用户友好性和环境监控外,还关注楼宇设备怎样使用它们的技术和是否能够拥有该技术。理论上,今天的智能建筑不仅能够拥有系统自动化控制,而且也能够在系统中产生和共享数据以提高整个装置的效率和有效性。在一篇研

- 2 -

哈尔滨工业大学工学硕士学位论文 究报告中[17],智能建筑定义为“一座建筑和它的设施,它能通过使用集成化技术的建筑系统、通信和控制给业主、操作员和居住者提供一个灵活、高效、舒适和安全的环境。”实际上人们对于智能建筑和BACS的概念和期望受各种社会和经济因素的影响而不断的变化着[18]。

楼宇自动化是一个可编程计算的电子设备组成的智能网络,它们监控楼宇服务系统。人们的目的是要建立一个智能高效的建筑以减少楼宇装置的能耗和维修成本。目前,现代建筑通常是通过直接数字控制(DDC)实现自动化,DDC包括带有软件控制逻辑的基于微处理器的控制器[19]。八十年代以来,欧美和日本的BACS和智能建筑发展迅速[20]。生产直接数字控制器的国外著名厂家包括Honeywell(霍尼韦尔)、西门子、江森和Alerton(艾顿)等。现在在国际市场中霍尼韦尔的DDC系列占据领导地位,在中国占有30%的份额[21]。目前,建筑智能化的焦点在通过流水线化建筑操作如空调和照明来削减成本。这方面,楼宇自动化显得尤为重要,主要是因为它可以通过有效监视和优化减少建筑的年度操作成本。大多数最近的楼宇自动化的研究在系统集成方面[22],以及大型建筑的自动化技术受通信技术影响[23]。

1.2.3 BACnet MS/TP研究现状

为了更容易实现控制功能,对于特定控制系统能力如数据收集、归档、通信和远程监控需要通信标准。在楼宇自动化常见的两个标准或协议是BACnet和LonWorks。LonWorks是由Echelon公司为连接楼宇系统和互联网而设计的一个开放平台。该系统包括LonTalk通信协议、一个专门控制器(Neuron芯片)和一个网络管理工具[24]。楼宇自动控制网络协议(BACnet)是专门为处理各种BACS需要而开发的一种数据通信协议。美国ASHRAE在1995年首次发布BACnet协议,随后在2003年1月被国际标准化组织采纳为CEN和ISO标准16484-5。它也被韩国采纳为国家标准,当前在许多其他的国家如俄罗斯、中国和日本,正在积极的推进标准化过程[25]。BACnet标准是一个开发协议,允许来自不同供应商不同协议的集成。现今,BACnet已经不局限于HVAC,也能应用在包括照明、安全和访问控制等各种楼宇系统中[26,27]。理论上,BACnet还兼容将来的楼宇控制系统。BACnet能够通过局域网通信,如Ethernet、ARCnet、MS/TP、PTP和TonTalk。BACS中的数据也可以通过一些IP路由器进行路由,以便可以通过一个BACnet/IP设备实现远程监控。

MS/TP协议是专为楼宇自控系统设计的[28]。 MS/TP网络可以配置为一

- 3 -

哈尔滨工业大学工学硕士学位论文 个主从网络也可以是对等的令牌传递网络,或者两者的混合[29,30]。在MS/TP网络中有主节点和从节点,从节点不能持有令牌,既没有对介质的控制权[31]。令牌根据逻辑环网中的地址从一个主节点向另一个主节点循环传递。持有令牌的主节点最多传送消息的数量有网络配置参数“Nmax_info_frame”决定[32]。在收到50次令牌后,主节点就会发送一个主节点轮询帧去发现想要加入令牌环的新主节点。从节点从不持有令牌,只是在接到主节点的请求时返回一个应答消息[33]。Hong S.H等使用一个仿真模型研究在各种通信条件下MS/TP协议的性能特点[34]。Park T.J等开发了一个MS/TP网络系统的实验模型,对不同网络参数下延时特性做了研究[35]。可见,国外对BACnet的研究主要是开发楼宇自控设备,除了一些参数设置方面的研究外,缺少对于BACnet MS/TP协议令牌传递算法以及自动地址分配算法的研究。国内如华中科技大学和华中理工大学对BACnet做了比较深入的理论研究[36-40],在产品研发方面并未有实质性的进展。

中国是投票赞成BACnet成为国际标准的国家,但是至今没有转换成国家标准[41]。为了促进BACnet的国际交流,2009年成立了BACnet中国协会;它在引进国际先进的楼宇自控技术和推动中国智能建筑的进步发挥着重要作用 [42]。 另外,2011年9月27日在北京召开“智能建筑BACnet技术与标准化研讨会”。目前国际涉及BACnet标准已颁布五项,全部体现在智标委前期已完成的标准体系中,现已完成《建筑自动化和控制系统 第1部分:概述和定义》、《建筑自动化和控制系统 第2部分:硬件》、《建筑自动化和控制系统 第3部分:功能》三项国际标准的国内转化,正在国家标准化管理委员会报批。由于BACnet的普及,国内外公司都有开发MS/TP相关产品,但目前关于MS/TP技术文献只是针对MS/TP协议的带宽分配仿真研究等理论层面。针对MS/TP实际应用中相关问题的研究,以及令牌传递算法和自动寻址等的研究,对于进一步降低MS/TP设备成本,推广其使用具有重要意义。

1.3 论文研究内容

本文是对一种智能建筑中应用比较广泛的MS/TP现场控制模块进行了研究与实现。比较详实的阐述了BACnet MS/TP协议软硬件实现方案,对实际比较关心的带宽问题介质访问控制算法做了分析和研究,重点研究了一种MS/TP自动寻址算法。本文内容安排如下:

第1章首先给出了课题背景和研究意义,并介绍了智能建筑和楼宇自控系统的发展状况,以及BACnet MS/TP的研究现状,展望了智能建筑中MS/TP

- 4 -

哈尔滨工业大学工学硕士学位论文 发展的新机遇。

第2章主要是BACnet MS/TP的理论研究,阐述了BACnet协议的体系结构、服务和对象,介绍了MS/TP的状态机,对MS/TP介质访问控制算法进行了研究,阐述了令牌传递、多令牌检测和令牌产生等算法思想。

第3章研究了一种对MS/TP MAC地址自动寻址算法。对传统静态地址设定的缺陷做出了分析,然后详细阐述了自动寻址思想,并给出了对改进的状态机的详细描述。最后通过C语言实现了该算法。

第4章主要是MS/TP控制模块的软、硬件实现。硬件设计包括双路输入电源、RS485通信模块、负载驱动电路以及负载电流检测等。软件设计包括BACnet协议栈和MS/TP协议软件实现流程。

第5章是实验和数据分析,通过平台搭建,利用报文分析软件Wireshark验证了MS/TP MAC自动寻址算法,另外还通过BTL的VTS软件测试了该控制模块的一致性规范。

- 5 -

哈尔滨工业大学工学硕士学位论文 第2章 BACnet MS/TP理论研究

2.1 BACnet标准

BACnet是由ASHRAE制定的一种楼宇自动控制网络协议。BACnet是为满足楼宇自控系统通信需要而专门设计的,典型应用包括:暖通空调控制、照明控制、门禁安防控制与火警系统。该标准1995年正式公布,该年12月成为美国国家标准(ANSI/ASHARE135-1995),2003年该标准成为国际标准(ISO 16484-5),是智能建筑中楼宇自控领域唯一的国际标准,随后也成为了欧盟(CEN)标准。

BACnet协议的目的是定义一些数据通信的服务和协议,用于采暖、通风、空调与制冷控制设备的监控计算机设备中,也可用在其他楼宇自控系统的计算机设备中。此外,BACnet协议定义了一个抽象的面向对象方法,用于表示这些设备间信息通信方式,以促进楼宇系统使用数字控制技术[43]。BACnet的产生使得楼宇中不同自控设备能够彼此通信,实现了互操作,而且独立于产品供应商。

BACnet标准产生以来,无论在标准化历程还是在在应用推广进程中,都取得了巨大的成功,这和其优秀的特性是分不开的。BACnet标准具有如下的基本特点[44]:

(1)专用于智能建筑中楼宇自控领域,性能高效 BACnet标准是由楼宇自控领域的专家为楼宇自控领域“量身定制”的专用标准,它具有许多楼宇自控系统特有的功能和特性,如日程、趋势等功能。这些特性和功能是其他标准(如Lonwork)所没有的。

(2)完全开放,技术先进 BACnet是非营利学会组织的标准,没有任何技术专利和商业意图。任何人都可以自由开发BACnet设备和产品。这种完全开放的特性使BACnet可以不断的技术更新,保持技术先进性,代表着该领域的发展方向。

(3)具有良好的扩展性 BACnet采用面向对象的分析设计方法,提供了很好的扩展功能。它不仅可以对协议中各部分进行拓展,而且扩展部分和原内容的运行机制保持不变。

(4)有良好的互连特性,多种局域网或者广域网供选择 BACnet的网络层可以屏蔽不同底层差异,这样BACnet就能够包含不同的局域网以及广域网技术。因此,BACnet网络利用不同传输介质和通信速率的网段提高

- 6 -

哈尔滨工业大学工学硕士学位论文 网络互连能力和性价比,使得BACnet应用空间更为广泛。

2.1.1 BACnet体系结构

BACnet是基于开放系统互连(OSI)参考模型的。BACnet网络层和对应的OSI层如图2-1所示。表示层、会话层和传输层的功能是集成到BACnet应用层。

BACnetBACnet应用层(APDU)BACnet网络层(NPDU)ISO 8802-2EthernetARCNETMS/TPEIA-485PTPEIA-232BLVCUDP/IPLonTalkOSI应用层网络层数据链路层物理层 图2-1 BACnet简化的体系结构

BACnet选择简化的四层体系结构是为了减少协议开销和用于数据传输的软件和硬件需要[45]。目的是为了确保内BACnet设备能够低成本开发和生产,BACnet设备可以使用廉价微控制器,与目前的计算机相比,需要更少的计算能力和存储空间。此外,BACnet设备没有硬件驱动器和通风设备,这就使得BACnet设备具有更长的使用寿命而且功耗小[46]。

楼宇自控网络主要是由外部(互联网)接口的局域网。而且楼宇自控设备都是静态的,总是执行相同的功能。

物理层提供了连接BAC设备和传送承载数据的电信号的方式。数据链路层把数据组织成帧或分组、寻址、管理通信介质的访问,以及完成流量控制和一些错误校验。这些都是BACnet系统所需要的功能。

在单个网络中,大多数网络层的功能是没必要的或与数据链路层功能重复。然而,对于有些BACnet系统,网络层是必须的。例如,当两个或更多使用不同数据链路层的子网络通过一个路由器连接时,有必要对本地和全局地址进行区分,把消息路由到合适的网络。BACnet设计为任何设备只能通过一条逻辑通道连接,这样简化了整个路由过程(相对于互联网)。互联网有更多带有不同通道的网络拓扑结构,与BACnet相比,互联网需要更复杂的路由算法来将报文通过不同的通道路由到世界各地的接收方。

传输层的大多数功能和数据链路层类似,如数据分段和流量控制,但范围不一样。数据链路层针对单个网络中两个设备之间点到点的连接,而传输层处理多个网络之间端到端的连接。传输层的功能由BACnet应用层提供。

- 7 -

哈尔滨工业大学工学硕士学位论文 BAC网络中大多数通信都非常简单,因此不需要中断或重启机制。此外,信息的格式不需要改变,数据也不需要压缩,这就意味着BAC网络不需要单独的会话层和表示层。

综上所述,由物理层、数据链路层、网络层和应用层组成的四层简化体系结构是为楼宇自动控制系统的最佳解决方法,可以使得BACnet的软、硬件装置实现简单、成本低廉。

在BACnet中,各层把数据封装起来以创建一个消息(数据帧),如图2-2所示。

AH: 应用层头部DH: 网络层头部DLH:数据链路层头部DLT:数据链路层尾部NH数据单元NPDU 网络层AH数据APDU 应用层DLH数据单元DLT数据链路层位序列物理层

图2-2 BACnet数据的封装

一个应用层头部添加到应用层数据(请求操作对象)中形成一个应用层协议数据单元(APDU)。然后,APDU送往网络层又依次地添加了一个包含全局网络地址的网络层头部。网络层协议数据单元(NPDU)继续送往数据链路层,添加一个包含本地网络地址的数据链路层头部(DLH)。最后,物理层通过传输介质发送数据。在接收方,封装过程相反。 2.1.1.1 应用层

应用层处理和控制、监视、请求和报警等有关的信息的传输。信息是以在应用层协议数据单元的数据部分编码的命定队列形式传输,如图2-3所示。

头部数据应用层协议数据单元(APDU)传输信息,如请求或确认BACnet命令,如操作或请求对象

图2-3 APDU数据编码

BACnet应用层还执行通常和OSI传输层相关的任务。APDU头部包含

- 8 -

哈尔滨工业大学工学硕士学位论文 对应的信息,例如,“确认”服务要求接收者接收到消息时立即响应,如图2-4所示。

客户服务器发送请求数据单元接收接收发送发送图2-4客户/服务器模型

请求站点(客户)必须在指定时间内收到来自服务器的接收确认,否则它将重新发送消息。当客户重新发送消息几次后仍然未收到确认,这时就会通知相关的应用程序。 2.1.1.2 网络层

BACnet网络层用于屏蔽不同局域网的差异,实现各局域网络互连和报文路由等功能。数据链路层只处理本地地址,而网络层必须能够全局寻址。例如,在一个MS/TP网络中有254个MS/TP本地链路地址和一个广播地址。第二个MS/TP网络也会有相同数目的潜在地址。如果连接这两个网络,就需要增加一种在整个网络中区分站点的方法。在BACnet中,这是通过使用一个2字节网络号(最大65535个子网络)来实现的。因此,一个BACnet站点由网络号和MAC地址唯一指定。BACnet网络层协议数据单元结构如图2-5所示。

NPDU的第一个字节包括BACnet协议的版本号。接下来的控制域,指明是一个路由消息还是一个BACnet消息(BACnet应用数据)。除了地址外,还需要提供MAC地址的长度,从1个字节(MS/TP)到7个字节(带神经元ID的LonTalk)。

一个从BACnet站点发给路由器的消息包含目的地址。源地址由数据链路层的本地地址确定。路由器之间NPDU传输包括源地址和目的地址,而从一个路由器到BACnet设备的消息只包含源地址。

转发计数(Hop Count)是一个递减计数器的值,为了保证BACnet消息在一个循环中不能无限期的路由。这只发生在如果配置规则允许任意两个BACnet节点间只有一个单独通道。消息每通过路由器一次,转发计数都会

- 9 -

哈尔滨工业大学工学硕士学位论文 减1,如果该值变为0则放弃消息。

版本控制DNETDLENDADRSNETSLENSADR转发次数报文类型生产商IDAPDU1字节1字节2字节1字节可变字节2字节1字节可变字节1字节1字节2字节N字节控制字节表示是否存在NPCI域目的网络地址目的MAC地址长度目的MAC地址源网络地址源MAC地址长度源MAC地址

图2-5 网络层协议数据单元结构

2.1.1.3 数据链路层和物理层

BACnet数据可以在不同类型的网络中传输,BACnet支持的局域网技术如图2-6所示。

成本ARCNETLONTALKMS/TPEthernet性能

图2-6 四种局域网比较图

这些技术在性能、成本和传输介质类别上存在差异。下面通常作为给BAC网络选择合适LAN技术的一个准则:

(1)传输速率 实际的数据吞吐率通常比传输速率要小。这时因为额

- 10 -

哈尔滨工业大学工学硕士学位论文 外信息(寻址、错误检查等)减少了网络数据吞吐率。

(2)响应时间 发送命令和执行动作所花费的时间。对于非确实传输技术如Ethernet,时间是无法预测的,但由于通常很小可以忽略不计。

(3)设备(节点)数目 (4)最大线缆长度 (5)成本

2.1.2 BACnet对象和属性

BACnet设备里的数据通过一系列对象来组织。每一个对象有一个类型和一组属性。每个设备至少有一个设备对象,它代表本身。其他的对象代表设备数据。从实践的角度讲,考虑一个简单的温控器。我们的例子是一个简单设备,它有一个温度传感器允许本地或远程改变设置点,有一个本地远程选择和报告,用于对内部故障正常/异常状态的报告。

设备对象是在发现设备首先被访问的对象,因为它客户端所需要的基本信息。例如,设备对象的属性有是否设备支持COV报告,是否可以读取多个属性值。在整个网络中,BACnet设备对象例号必须唯一。实际上,只要路由器分开网络段,我们可以使用重复的例号。有些专用系统和控制器设备内的每个对象有唯一的名称,这是因为他们使用名称作为内部索引,这种方法不推荐。BACnet通过“可靠性“属性来判断当前值是否有效。BACnet模拟输入对象的属性及属性值简单描述如表2-1所示。

表2-1 模拟输入对象简单示例 属性 对象标示符 对象名称 对象类型 当前值 脱离服务 事件状态 单位

属性值 模拟输入AI[4] 室内温度 模拟输入 23.5 FALSE 正常 ℃

在Modbus中如果想知道现场设备包含什么数据,需要一张数据表。在BACnet中则没有必要,它可以在线进行,并且发现网络中的设备,然后询问设备以便知道包含哪些数据对象以及每个对象支持那些属性和属性的当前值。对于支持读多个属性又不支持分段的设备,我们不能从单个信息中获得有用的信息,这样限制了对象属性的读取。值得注意的是,大多数BACnet

- 11 -

哈尔滨工业大学工学硕士学位论文 客户端不能发现供应商的专用属性。

2.1.3 BACnet服务

服务是一个BACnet设备对另外设备获取信息、下达命令或通知事件发生的方式[47]。每个发送的服务请求和回复的服务确认变成一个从发送方到接收方网络上的消息报文。BACnet设备上的应用程序发起服务请求,并在接收到时进行处理。应用程序是执行设备操作的实际软件,对于操作者工作站,该软件可能维护几个传感器输入的显示,以便操作者能够周期性的发送服务请求给目标设备适当的对象,以获取收入的最新值。对于被监控的设备,服务请求在它的应用程序中处理,并返回包含请求的数据应答。服务请求和服务应答如图2-7所示。

BACnet设备请求应答对象对象对象请求应答服务请求读属性服务应答数据网络

图2-7 服务请求与应答

BACnet定义了32个服务,并把它们分成五类。这些服务类别是报警和事件、文件访问、对象访问、远程设备管理和虚拟终端服务。对于每个确认服务(期待带数据的答复),BACnet设备有能力发起服务请求,或有能力处理和响应一个接收到的该类型请求,或者两个都可以。对于每个非确认服务(不期待答复),BACnet设备有能力发起服务请求,或处理一个接收到的该类型请求,或者两者都可以。BACnet设备不需要执行每一个单独服务。仅有读属性服务是所有BACnet设备都必须能够处理的。根据设备的功能和复杂度,可以启动或执行额外的服务。

对象访问服务允许设备读写属性, 建立和删除对象,、操作数据列表、搜索Object的细节和属性。 设备管理服务让设备能够被远程控制,例如要求设备重新启动或要求同层设备标识自己。 报警和事件服务允许设备进行报警,状态改变,等其它特别条件的通讯;例如一个传感器度数超出了正常范围,或返回到正常操作,或发生了一个值改变(COV)。文件传输服务允许设备发送或接收封装在一定大小表格中的信息。例如,历史趋势数据,下载控制器程序。虚拟终端服务允许一个操作者通过一个在远程设备上执行的应用程序建立一个双向的基于文本连接。

- 12 -

哈尔滨工业大学工学硕士学位论文 2.2 MS/TP协议

2.2.1 MS/TP协议概述

BACnet MS/TP通常用于把现场设备连接到控制器、路由器和控制应用程序。它使用RS485作为物理层,能够在单个网络中支持多达128设备,物理长度可达4000ft,速度达到115K波特。还可以使用中继器增加长度范围。相应地,Ethernet允许在单段无中继分段网络中传递100米(330ft)。

通用波特率是19200,38400和76800所有设备必须运行在相同的波特率上。越来越多的设备能够自动识别波特率并且自我配置。很多微处理器的UARTS不能准确产生76800波特信号。使用这些微处理器的设备可以说支持76800波特,但有问题时可能会减低网络功能。

只有拥有令牌的设备能够发送应用层消息。它可以发送消息到网络中的任何设备。有些消息要求立即答复,有些不需要。接受设备不需要令牌就能够响应。当一个设备发送完一定数目的应用程序后,它就要传递令牌。

令牌传递网络的优点有: (1)自愈合 (2)自发现

(3)每个设备都有机会

这样就避免了冲突的发生,一定程度上改善了网络性能。令牌系统的缺点是每个设备只能使用有限的带宽。这样设备可能需要先保持着要发送的应用程序序列,等待使用令牌。一些供应商系统填满那些里边,不通知使用者就丢弃后续消息。如果有许多的设备,它们含有较多的对象和感兴趣的属性,有限访问和开销使得很容易就使用完网络带宽。

2.2.2 MS/TP状态机

2.2.2.1 接收帧有限状态机

BACnet使用一种有限状态机来描述BACnet设备MS/TP帧的接收过程,接收帧状态机如图2-8所示。状态之间的转换是通过一系列条件和紧随着满足条件的动作来描述。每个转换最后的动作是进入一个新状态,新状态可以当前状态相同。

空闲状态:节点等待帧的开始。

前导同步状态:节点等待前导字节的第二个字节。 帧头状态:节点等待固定的消息头部。

帧头CRC校验状态:节点验证固定消息头部的CRC。

- 13 -

哈尔滨工业大学工学硕士学位论文 数据状态:节点等待一帧的数据部分。

数据CRC校验状态:节点验证消息数据的CRC。

消除字节消除错误前导同步1CRC校验错误数据CRC校验CRC校验正确空闲超时错误非前导同步前导同步重复前导同步CR帧过C校验错长误无数据前导CRC2非本站无数据帧超超时错误时同步帧类型目的帧头数据CRC 1数据帧头CRC校验帧头校验2错误源长度2长度1数据字节

图2-8 接收帧状态机

2.2.2.2发送帧过程

一个MS/TP帧的发送过程如下:

(1)如果TsilenceTimer

(3)传输前导字节X“55”,X“FF”;每个字节传输完毕TsilenceTimer=0; (4)初始化HeaderCRC= X“FF”;

(5)传输帧类型、目的地址、源地址、数据长度,计算头校验信息,每个字节传输完毕后TsilenceTimer=0;

(6)一个完整的头校验信息传输完毕后TsilenceTimer=0; (7)如果有数据要传输,初始化数据校验位X“FFFF”;

(8)传输数据,计算数据校验值,每个字节传输完毕后TsilenceTimer=0; (9)传输完完整的数据校验信息,每个字节传输完毕后TsilenceTimer=0; (10)在小于Tpostdrive时间内等待校验数据传输完毕后的停止位; (11)禁止数据传输。 (12)返回。 2.2.2.3主节点有限状态机

BACnet MS/TP使用一个有限状态机描述主节点的运行,主节点状态机如图2-9所示。状态之间的转换是通过一系列条件和紧随着满足条件的动作来描述。每个转换最后的动作是进入一个新状态,新状态可以当前状态相同。

初始化状态:当一个主节点上电或重启,它必须无条件进入初始化状态。

- 14 -

哈尔滨工业大学工学硕士学位论文 收到非本站有效帧收到不需要帧收到不正确帧收到数据无应答丢失令牌看见帧收到数据需要应答空闲应答延迟应答应答数据请求收到主节点轮询无令牌站有外效帧帧收到见令用牌使者本本非收到非到到意站收收收令牌有看到意帧外帧效产生令牌重发送令牌传递令牌等待应答主节找到新点轮后续收到询完者主节毕点轮询应答超时不正收到确帧收延迟到应帧答应答主节点轮询轮询下一个主节点发送维护主节点轮询单一主节点重新发送维护主节点轮询单一主节点宣布单一主节点图2-9 主节点状态机

空闲状态:等待一帧的到来。

使用令牌状态:该状态运行节点发送一个或多个数据帧,这些既可以是BACnet数据帧也可以是专有帧。

等待回复状态:节点等待另一个节点的应答。

令牌就绪状态:节点发送另一个数据帧,或者传递令牌,或者启动一个主节点轮询循环。

传递令牌状态:监听一个后续节点是否使用该节点刚才传给它的令牌。 无令牌状态:如果静止计时器大于Tno_token就进入无令牌状态,表示在该段时间内没有网络活动。为了决定该节点是否创建一个令牌,继续延长超时。

主节点轮询:在该状态,为了发现一个后续节点,该节点监听一个事先发送主节点轮询帧的回复。

应答数据请求状态:当收到一个BACnet数据期待回复帧、测试帧或一个期待回复的专有帧时进入该状态。

重置询牌轮令点送节发主护维并发送等待令牌使用完毕无帧发送不等待发送发送另一帧单一主节点使用令牌

- 15 -

哈尔滨工业大学工学硕士学位论文 2.3 MS/TP介质访问控制算法

MS/TP网络的介质访问控制采用令牌机制,只有持有令牌的节点才可以发送数据。为了阐述清楚该算法,对相应的几个参数解释如下:

Npoll:执行主节点轮询前收到或使用的令牌数,默认为50。

Nmax-master:该参数指节点的设备对象中Max_Master属性值。Max_Master值指定了主节点的最高允许地址。Max_Master值必须小于或等于127。如果节点中Max_Master不可写,它的值应设为127。

Nmax_info_frames:该参数指节点的设备对象中Max_Info_Frames属性值。Max_Info_Frames值指定了它传递令牌前可以发送的最大信息帧数。Max_Info_Frames在不同节点可以取不同值。这可用于对特定节点分配大致的可用带宽。如果Max_Info_Frames不可写,它的值应设为1。

2.3.1 令牌传递算法

BACnet MS/TP是一种令牌传递协议。只有拥有令牌才能够发出服务请求,例如请求数据。接收待答复请求的设备没有令牌也能进行响应。基于这种特点,很容易理解MS/TP主节点和从节点的区别。一个从节点是只能响应的设备。一个主节点可以是服务请求的发起者。

只允许拥有令牌的主节点发起消息交换提供了一种机制,一个网络中可以存在多个主节点,并且可以避免争抢和冲突。Ethernet使用不同系统,它总允许冲突并提供一种回复机制。通过改善令牌传递规则例如指定拥有令牌主节点传送帧数目,可以提供一种在单个网络中平衡不同设备性能的机制。

如果增加一个从设备,至少需要对网络中的一个主节点编程以实现与该从节点的数据交换。如果增加一个能够接受令牌的主节点,在它作为主节点之前,网络中其他设备需要先发现该新设备。网络中的每个主节点都会周期性的轮询新的主节点。每个主节点知道网络中下一个主节点,因为那就是它将要传递令牌的节点。因此,每个主节点都必须在其自身地址和下个主节点地址范围之间进行主节点轮询。这样,如果地址1主节点的下个主节点地址为11,那么它必须在地址2到10之间寻找新的主节点。主节点11必须从地址12开始寻找,依此类推。最高数字的主节点必须以…127,0,…方式轮询新的主节点。当设备接受到主节点询问帧时(叫“主节点轮询”消息),它应该立即回应。在上面例子,如果主节点1不能发现主节点2,那它就应该试着去发现3号节点。

该规范只要求主节点每接受或使用50次令牌就至少进行一次主节点轮

- 16 -

哈尔滨工业大学工学硕士学位论文 询。我们可以看出,如果每个主节点频繁地轮询大量新主节点,将会花费很多的带宽。因此在BACnet MS/TP中有一个叫做Max_Master的参数。每个主节点都可以设定自己的Max_Master值。通常它设置为127,但假设主节点50是网络中最高主节点,并且它的Max_Master设置为64。这样它就永远也发现不了地址比Max_Master大的新主机点,也就是它没法发现地址在65到127间的主节点。这通常是在网络中新设备不被发现的原因。

一个BACnet MS/TP设备在它获得至少Npoll-1次令牌后才开始搜索新的主节点。如果一设备存在大网络中(20个节点以上),并且Npoll设为一个很高的值,那么从它自身地址和下一站地址间发现新设备将花费很长时间。

例如,网络中有三个设备:0x02、0x03和0x07,这些设备的Npoll都是255,并接受了254次令牌。

0x02收到令牌,TokenCount增至255。0x02就会进入主节点轮询模式,试图发现新设备。NS(下一站)恰巧也是PS(轮询站),TokenCount归零,没有发送出主节点轮询消息。0x02把令牌传递给0x03。

0x03收到令牌,TokenCount增至255。0x03就会进入主节点轮询模式,试图发现新设备。它会在0x04-0x06之间轮询新的主节点。如果没发现新主节点就会把令牌传递给0x07。

0x07收到令牌,TokenCount增至255。0x07会进入主节点轮询模式,试图发现新设备。它会在0x08-Nmax-master以及0x00-0x01之间轮询新主节点。但是0x07的Nmax_info_frames是5,它只能轮询5个新主节点就要把令牌传递给0x02。0x07下次收到令牌将继续每5帧一次从上次的位置轮询新主节点。

2.3.2 多令牌检测算法

如果在MS/TP网络中出现多个令牌,尽管网络会继续运行,但会发送冲突,影响网络的流量。因此,最好不出现多了令牌现象。一旦检测到多个令牌存在网络中,应该采取措施,丢失令牌,进入空闲状态运行令牌产生算法。当出现下列情况之一时,可以判断为网络中存在多个令牌:

(1)当主节点发出主节点轮询帧后,会等待被轮询主节点的应答;如果等待应答的过程中收到了不是被轮询主节点发出的如何帧,则说明有多个令牌存在。则主节点进入空闲状态。

(2)当主节点发出期待回复数据帧后,进入等待应答状态。不过等待应答过程中收到的应答帧目的地址不等于本站地址,或帧类型不是测试响应帧、不期待答复的BACnet数据帧或专有帧,则说明收到了一个意外帧。也说明有多个令牌存在,主节点进入空闲状态。

- 17 -

哈尔滨工业大学工学硕士学位论文 2.3.3 令牌产生算法

MS/TP网络令牌丢失后,必须有一个产生令牌的算法,而且要求只产生一个令牌,避免同时产生多个令牌。

一旦令牌丢失,网络进入空闲状态,此时所有节点处于监听状态。如果网络在规定时间Tno_token内没有任何信息传输,可以认为令牌已经丢失,运用下面算法产生一个令牌。

假设某一个主节点的本站地址为TS,如果该主节点在(Tno_token+(Tslot ×(TS+1)))内,没有监听到任何信息传输,则该主节点产生一个令牌,并成为持有令牌的主节点。Tslot为节点产生令牌的时间间隔。

由上述算法可知,主节点分配的地址越低,产生令牌的权力就越大。即令牌丢失时,令牌是由网络中为空闲状态且地址分配最低的主节点产生。

2.4 本章小结

本章对BACnet标准的基本概念进行了阐述,包括BACnet的体系结构、对象和服务。然后就MS/TP的状态机做了介绍,对MS/TP介质访问控制算法做了研究,为下面各章提供了理论基础。

- 18 -

哈尔滨工业大学工学硕士学位论文 第3章 MS/TP自动寻址算法的研究与实现

3.1 引言

在BACnet MS/TP网络中,每个在网络中通信的设备都需要一个唯一地址。地址包括一个网络号(0到65535)和一个1字节的设备媒介访问控制(MAC)地址。该一个字节地址空间分为两个不同范围,地址0-127既可以被主节点使用,可以被从节点使用。地址128-255只能被从节点使用。这样使得地址空间可以根据特定应用的需要来配置。在BACnet互联工作网中,BACnet MS/TP设备可以使用相同的MAC地址。多个网络可以通过使用路由器配置成互联工作网来通信。通过不同的接口设备可以实现BACnet协议和其他专有通信方式的转换。

考虑到第三方在建筑或建筑工地对BACnet MS/TP设备安装和上电的随机性,它们的地址分配显得很复杂。电工通常按照楼宇布局与施工进度,以相对随机的方式安装控制器和输入输出设备。当各种设备定位安装后,电工把它们连接到电源、通信网络和其他相关设备上。在安装过程中,设备单元可能需要多次通断电以测试本地性能。网络可能会分段,单个网段可能随时会被上电以及与其他网络互联。有些BACnet MS/TP设备,例如控制器,内置有应用程序(VAV单元),不管它们的网络连接状态都需要执行本地功能。

因此,在建立低成本MS/TP设备时,配置它们的MAC地址希望不要用到硬件(LCD和按键,DIP开关,数字拨码器,跳接头等)。需要有一种机制能够把MS/TP设备加入到线路中,并且自动接收它们到令牌传递中来。在线路上的设备有执行自动寻址能力,就不需要预先设置地址,使得安装和配置更加简单。

3.2 传统地址设定方法

通常对DDC HVAC设备中BACnet MS/TP的MAC传统地址设定方法有四种。

3.2.1 工厂固化MAC地址

在工厂,使用额外的制造过程把预先确定好的MAC地址下载到设备中,比如把MAC地址烧进设备的固件中。为了唯一标志特定的产品,很多非BACnet网络设备都有一个制造商分配的6字节(48位)永久MAC地址,它

- 19 -

哈尔滨工业大学工学硕士学位论文 是一个由制造商烧进每个网络产品的唯一地址。由于在BACnet MS/TP中MAC地址只有1个字节(8位),制造商必须对于不同网络中的产品使用相同的MAC地址。由于BACnet MS/TP地址可以重复,制造商和安装者都必须特别小心,不能把拥有相同预设MAC地址的两个DDC设备安装到相同网络中。在制造时候的地址预先设定可以导致由于不合适的安装位置引起的昂贵和费时的错误。

3.2.2 手动软件设置MAC地址

操作者可以在安装完控制器后,通过软件手动分配BACnet MS/TP的MAC地址。BACnet MS/TP 的MAC地址手动分配通常是一个繁琐的过程,需要安装者有一定的相关知识,为了连接每个网络使其运行还需要额外的安装时间。实际上同所有手动安装方式一样,BACnet MS/TP的MAC地址手动分配也可能会带来人工误操作。

3.2.3 手动硬件设置MAC地址

安装者使用一个硬件接口比如拨码开关设定BACnet MS/TP 的MAC地址。尽管通常相对于手动软件设置,使用硬件设定MAC地址对安装者知识要求不高,但它需要接触到每个设备,这在安装完成后是困难的。和手动软件设置过程一样,手动硬件设置MAC地址可能存在人工误操作。

3.2.4 采用MAC地址分配设备

制造商可以在网络中引入一个特殊的产品(硬件和软件),通过操作者互动来分配地址。尽管所有这些现有的方法增加了产品或安装劳力成本,增加一个特殊的MAC分配产品尤其昂贵。

3.3 传统地址设定的缺陷

对传统地址设定方法除了存在人工误操作、增加劳力和成本增加,使问题更复杂的是,BACnet MS/TP协议使用的通信电子局限于半双工运行,这就意味着有些BAS设备没有监视它们自己通信传输的能力。因此它们不能在其传输过程中检测信息冲突。BACnet协议没有提供一种设备能够自动检测这种冲突的方法,就如在著名的IEEE802.3 Ethernet标准中的冲突检测方法。这使得没有预先设定的唯一MAC地址时,BAS设备很难井然有序地加入到BACnet MS/TP网络中。在BACnet MS/TP网络中只有拥有令牌的设备才能

- 20 -

哈尔滨工业大学工学硕士学位论文 够传输信息,令牌传递通常通过含地址的数据帧来完成,由BACnet协议定义该数据帧的格式。例如,常用的“Who-Is”、“Who-Has”、“I-Have”、“ReadProperty”和“WriteProperty”BACnet服务都是基于包含已建立的MAC地址的数据帧定义上的。在给所有的网络设备正确地建立MAC地址之前,网络信息流通可能变得混乱甚至不可能。

即使在MAC地址成功分配后没有冲突,网络性能可能效率不高。BACnet协议没有指定提高效率的方法。BACnet MS/TP网络性能或效率的一个标准是“令牌循环时间”,它是任何特定主节点设备陆续持有令牌的时间量。作为网络简直性的一种方法,BACnet协议要求主节点设备自动寻找其他主设备。使用标准方法,主节点设备将会检测下一主节点设备的MAC地址。如果一个主节点设备的MAC地址和下一设备的数量差大于1,那么就会存在一个“MAC间隙”。协议需要主节点周期性地在该间隙中寻找主节点设备。这种寻找需要花费时间,从而大大降低了网络性能,也加大了令牌循环时间。在这种情况下,令牌循环时间增加量使得系统既不能作为一个整体功能化,也不便于操作者监视或控制。

3.4 零配置MS/TP MAC地址算法研究

由于大量安装好的设备运作在现行规则上,所以需要避免破坏任何现有的功能。此外,也不应该给线路造成不必要的负担。任何自动寻址的基本要求是:

(1)在相同线路上必须兼容自动地址设定设备和原先静态地址设定设备。

(2)必须能够兼容主节点和从节点设备。 (3)不得带来额外的消息造成不必要的开销。

(4)没有自动寻址设备添加时,不得在现有网络上造成不必要的交通。也就是说,它只能用于新设备需要寻址时。

然而,MS/TP主节点设备需要一个MAC地址以便加入令牌传递中,如果设备没有接收一个消息就不能分配一个MAC地址,而且由于任何潜在的发送者不知道设备的MAC地址,它也不能接收消息。

该节将阐述了一种解决方案,允许设备在监听MS/TP线路中可用MAC地址后选择它们自己的MAC地址,监听过程是通过无回答主节点轮询(unanswered PollForMaster)帧来指示的。由于其不需要手动硬件或软件配置,该MAC地址分配方法我们称之为零配置MS/TP MAC地址。

(1)假设零配置过程中存在执行目前135-2004或更早状态机的静态配

- 21 -

哈尔滨工业大学工学硕士学位论文 置节点,由于令牌在节点之间快速传递,只有在主节点轮询队列的时候才有机会插入信息报文。

(2)假定节点侦听令牌传递一段时间后,从看似可用的地址列表中随机选择一个地址(或一个先前使用过的地址)。地址从64到127之间选择,地址0到64留给固定地址节点,这样将减少因可变启动时间而冲突的概率。

(3)简单地发送一个主节点轮询回复不足以使地址得到证实,因为根本无法通过它们的UIDs来区分,也不能把动态地址节点与同时在线的静态配置节点区分开来。

(4)在获得一个在可用地址的主节点轮询回复帧响应后,就会接收一个令牌帧,进而希望声明地址的节点将发送一个测试请求帧。该测试请求帧会在它的数据部分包含一些唯一的信息。这将使得主节点轮询和令牌发送节点回复一个包括唯一数据的测试响应。

(5)零配置节点已有一个对等节点列表,能够简单发送令牌给下一站,继续正常的主节点状态机。

(6)零配置节点将监听所有的MS/TP通路,当它看到另一个节点使用相同的源MAC地址就会停止使用它选择到的MAC地址。与此同时,零配置节点将开始寻找另一个MAC地址。通过对接收节点有限状态机非本站数据(DataNotForUs)转换和跳越数据(SKIP_DATA)状态的一些更改,可是很容易地实现监听。

3.4.1 MS/TP节点自动寻址

尽管许多MS/TP节点通过DIP开关、旋轮拨码、或专有软件配置工具来配置一个静态地址,实际上某些实现也可以通过一种自动寻址机制来动态配置。

一个零配置自动寻址主节点是一个不起初就预先设定MS/TP地址的MS/TP主节点,它在监听帧获得一个未被使用地址选做MS/TP地址。该节点使用特定的测试请求和测试响应实现地址确认,它们包含该节点唯一帧的数据部分中的一些信息。此外,该节点将会一直监听所有的MS/TP帧,如果看到另一个使用相同MAC地址的节点,就会选择另一个MAC地址。一旦节点选择了一个MS/TP MAC地址,它将在令牌传递中使用该地址。在设备重启和失电时不需要维护该地址,尽管它可能使用该地址作为重启时优先的随机地址。该节点应该使用从64到127(64个地址)的MS/TP地址范围,这样允许在0到63(64个地址)存在固定地址。该节点的Max_Master固定为127。

下面给出实现零配置MS/TP MAC地址需要新增的变量:

- 22 -

哈尔滨工业大学工学硕士学位论文 (1)零配置主节点(ZeroConfigurationMaster) 一个布尔标志,如果该节点是一个零配置主节点,由主节点状态机设置为TRUE。

(2)地址列表(Address List) 由零配置主节点使用的一个列表,跟踪使用和可用的MS/TP地址,该过程中设备已经传递一个令牌或主节点轮询帧(主节点)。

(3)收到非本站有效帧(ReceivedValidFrameNotForUs) 一个布尔标志,如果收到一个地址不是TS的有效帧,由接收状态机设置为TRUE。由主状态机设置为FALSE。

(4)零配置地址(ZeroConfigurationAddress) 一个从地址列表中随机选择的主节点地址。一个成功选择到的地址在设备重启和失电时存储到非易失性存储器中,并应该在第一次尝试确认地址时被使用。如果必要,后面的地址确认需要使用一个随机选择地址以避免死锁。配置成功是通过响应一个该节点的BACnet数据期待回复或一个BACnet数据不期待回复帧来指示的。

(5)零配置唯一数据(ZeroConfigurationUniqueData) 一系列4个或更多字节,用于唯一地指定该节点。这些字节应该取自带有BACnet应用层节点的BACnet设备对象供应商标识号属性、模块名字属性以及串口号属性。

下面给出实现零配置MS/TP MAC地址需要新增的参数。

Tconfirmation_timeout:一个节点必须等待站点开始答复一个测试请求,没有数据可用或接收错误事件的最小时间。

3.4.2 零配置接收帧状态机

本小节描述BACnet设备采用零配置MAC地址算法的MS/TP帧的接受过程。为了实现零配置MAC地址,在MS/TP原来的接受帧状态机上引入跳越数据(SKIP_DATA)和跳越数据CRC校验(SKIP_DATA_CRC)两个状态,并对状态之间的转换做了更改。这种转换是用一系列条件和紧随的一系列满足条件时要执行的动作来描述的。接收帧状态机独立于主节点状态机运行,通过标记以及一些变量来实现和主状态机的通信。而且假定主节点状态机可以在下一帧开始前,处理完已收到帧和接收帧状态机的其他指示。还假定节点不接收由它自己发送的帧。

零配置接收状态机如图3-1所示。下面只对在零配置MAC地址算法中所涉及的相关状态作出充分描述。

- 23 -

哈尔滨工业大学工学硕士学位论文 消除字节消除错误前导同步1CRC校验错误数据CRC校验CRC校验正确空闲超时错误非前导同步前导同步重复前导同步确C校超验正长帧过误验错校CRC数据无据帧无数站非本C校前导时CR同步帧类型目的帧头超时错误C2误CR验错数据CRC 1跳越数据CRC校验帧CRC1头校数据字节跳越数据超时错误CR验2误错数据跳越数据字节图3-1 零配置接收帧状态机

3.4.2.1 帧头校验(HEADER_CRC)状态

在HEADER_CRC状态,节点使用固定的信息头证实CRC。

(1)循环冗余校验错误(BadCRC) 如果HeaderCRC的值不为X“55”,则设置收到不正确帧为TRUE,表示在接受帧过程中发送错误,再进入空闲状态等待下一帧开始。

(2)非本站帧(NotForUs) 如果HeaderCRC的值是X“55”,数据长度为0,目的地址的值不等于TS(本站)或255(广播地址),则设置收到非本站有效帧为TRUE,指示接收到一个没有数据非本站帧,再进入空闲状态等待下一帧开始。

(3)非本站数据帧(DataNotForUs) 如果HeaderCRC的值是X“55”,但数据长度不为0,目的地址的值不等于TS(本站)或255(广播地址),则设置索引为0,设置DataCRC为X“FFFF”,再进入跳越数据状态接收该帧的数据和数据CRC部分。

3.4.2.2 跳越数据(SKIP_DATA)状态

在跳越数据状态,节点等待接收完一个帧的数据部分,忽略其内容,或由零配置自动寻址主节点使用。

(1)超时(Timeout) 如果静止计时器大于Tframe_abort,则把收到不正确帧设置为TRUE,指示在接受帧过程中发生错误,进入空闲状态等

- 24 -

CRC2源长度2长度1数据字节站本帧非据数帧头CRC校验

哈尔滨工业大学工学硕士学位论文 待下一帧开始。

(2)错误(Error) 如果收到错误为TRUE,则设置接收到错误为FALSE,设置静止计数器为0,设置收到不正确帧为TRUE,指示在帧接收过程中发送错误,进入空闲状态等待下一帧开始。

(3)数据字节(DataOctet) 如果接收错误为FALSE,数据可用为TRUE,索引小于数据长度加1且索引小于输入缓冲大小,则设置数据可用为FALSE,设置静止计数器为0,把DataRegister的内容累加到DataCRC中;保存DataRegister内容到InputBuffer[Index]中,Index自增1,进入跳越数据状态。

(4)跳越数据字节(SkipDataOctet) 如果接收错误为FALSE,数据可用为TRUE,索引小于数据长度加1且索引小于输入缓冲大小,则设置数据可用为FALSE,设置静止计数器为0,把DataRegister的内容累加到DataCRC中;保存DataRegister内容到InputBuffer[Index]中,Index自增1,进入跳越数据状态。

(5)循环冗余校验1(CRC1) 如果接收错误为FALSE,数据可用为TRUE,索引等于数据长度,则设置数据可用为FALSE,设置静止计数器为0,把DataRegister的内容累加到DataCRC中;保存DataRegister内容到InputBuffer[Index]中,Index自增1,进入跳越数据状态。

(6)循环冗余校验2(CRC2) 如果接收错误为FALSE,数据可用为TRUE,索引等于数据长度加1,则设置数据可用为FALSE,设置静止计数器为0,把DataRegister的内容累加到DataCRC中;保存DataRegister内容到InputBuffer[Index]中,Index自增1,进入跳越数据CRC校验符状态。 3.4.2.3 跳越数据CRC校验符(SKIP_DATA_CRC)状态

在跳越数据CRC校验符状态,节点证实非本站消息数据的CRC。 (1) 循环冗余校验错误(BadCRC) 如果DataCRC的值不为X'F0B8',则设置收到不正确帧为TRUE,指示在接受帧过程中发送错误,再进入空闲状态等待下一帧开始。

(2) 循环冗余校验正确(GoodCRC) 如果DataCRC的值为X'F0B8',则设置收到非本站有效帧为TRUE,指示一个非本站有效帧完全接收,再进入空闲状态等待下一帧开始。

3.4.3 零配置主节点状态机

本小节通过一个改进的有限状态机来描述实现零配置MAC地址算法时

- 25 -

哈尔滨工业大学工学硕士学位论文 主节点的运行。零配置主节点状态机如图4-2所示,它是在MS/TP原来的主节点状态机基础上引入了四个新状态:零配置空闲状态、零配置主节点轮询状态、零配置令牌状态和零配置确认状态。状态之间的转换通过一系列条件和紧随的一系列满足条件时要执行的动作来描述的, 每个转换最后的处理都是进入新状态,新状态可以与当前状态相同。下面只对在零配置MAC地址算法中所涉及的相关状态作出充分描述。 发本往来自本站帧零配置主节点轮询发本往有可用地址站牌令丢失令牌来自本站测试请求来自本站主节点轮询存储潜在地址站主点节无效帧收到帧丢失令牌零配置确认确认失败无效帧轮询无可用地址来自本站帧零配置空闲非本站令牌帧无效帧丢失令牌零配置令牌收到来自本站有效零配置收初始化收到非本站有效帧完成初始化收到主节点轮询收到数据无应答到来自站本功效有成确认收到不需要帧收到不正确帧无令牌收到来自本站有效丢失令牌看见帧收到数据需要应答空闲应答延迟应答收到非应答数据请求到非收本站到意有效外帧帧看见令用牌使者令牌收到本站超时收收到意有效帧确认外帧产生令牌重发送令牌传递令牌等待应答主节找到新点轮后续收到询完者主节毕点轮询应答超时不正收到确帧延收到迟帧应答应答主节点轮询轮询下一个主节点发送维护主节点轮询单一主节点重新发送维护主节点轮询单一主节点宣布单一主节点图4-2 零配置主节点状态机

3.4.3.1 初始化(INITIALIZE)状态

当一个主节点上电或复位,它应该无条件地进入初始化状态。

- 26 -

重置询牌轮令点送节发主护维发送并等待令牌使用完毕无帧发送不等待发送发送另一帧单一主节点使用令牌 哈尔滨工业大学工学硕士学位论文 (1)零配置(ZeroConfiguration) 如果节点的站地址不可知,节点支持MS/TP自动寻址,则设置零配置主节点为TRUE,设置TS为255,进入ZERO_CONFIGURATION状态。

(2)初始化完成(DoneInitializing) 如果节点的站地址已知,设置TS等于该节点的站地址,设置NS等于TS(指示下一站未知),设置PS等于TS,设置令牌计数器值为Npoll(致使该节点第一次接收令牌发送一个主节点轮询),设置零配置主节点为FALSE,设置单一主节点为FALSE,设置收到有效帧和收到不正确帧为FALSE,进入空闲状态。 3.4.3.2 零配置空闲(ZERO_CONFIGURATION_IDLE)状态

当一个节点的站地址不可知时,进入零配置空闲状态。

(1)收到广播(ReceivedBroadcast) 如果收到有效帧为TRUE,源地址不在地址列表中,则源地址正被使用。把帧中的源地址存储在地址列表中,指示地址被使用。设置收到有效帧为FALSE,进入零配置空闲状态等待下一帧。

(2)收到帧(ReceivedFrame) 如果收到非本站有效帧为TRUE,帧类型不是主节点轮询,则源地址被使用,把帧中的源地址存储在地址列表中,指示地址被使用,并在数据地址帧标注该帧是否是一个令牌帧(以便该节点发现对等节点)。设置收到非本站有效帧为FALSE,进入零配置空闲状态等待下一帧。

(3)不正确帧(InvalidFrame) 如果收到不正确帧为TRUE,则一个不正确帧被接收到。设置收到不正确帧为FALSE,进入零配置空闲状态等待下一帧。

(4)存储潜在地址(StorePotentialAddress) 如果收到非本站有效帧为TRUE,帧类型等于主节点轮询,目的地址没有在地址列表标记为主节点轮询地址,则该地址可能未被使用。存储该帧的目的地址到地址列表中,标明该地址是一个主节点轮询帧。设置收到非本站有效帧为FALSE,进入零配置空闲状态等待下一帧。

(5)有可用地址(ValidAddressAvailable) 如果收到非本站有效帧为TRUE,帧类型等于主节点轮询,目的地址在地址列表中标明为主节点轮询地址,则已经完成对所有设备的主节点轮询循环。设置TS为零配置地址,从在地址列表中所有未使用地址选择的地址都标明为主节点轮询地址。设置收到有效帧为FALSE,设置收到非本站有效帧为FALSE,进入零配置主节点轮询状态等待下一帧。

- 27 -

哈尔滨工业大学工学硕士学位论文 (6)无可用地址(NoAddressAvailable) 如果收到有效帧为TRUE,获知收到非本站有效帧为TRUE,源地址在地址列表中,并且地址列表中在64至127没有未被使用的地址。则地址监听循环完成。设置收到有效帧为FALSE,设置收到非本站有效帧为FALSE,进入零配置空闲状态等待下一帧。

(7)丢失令牌(LostToken) 如果静止计数器大于等于Tno_token+ (127 * Tslot) + TS* Tslot(这里TS为零配置地址)则假定令牌已经丢失。设置TS为零配置地址,从地址列表中选择一个64至127的未被使用地址。调用发送帧过程给TS发送一个测试请求帧,在该帧的数据部分带有零配置唯一数据,再进入零配置确认状态等待一个测试响应。

3.4.3.3 零配置主节点轮询(ZERO_CONFIGURATION_PFM)状态

当一个节点等待一个发送给选择到的零配置地址的主节点轮询帧时,进入零配置主节点轮询状态。

(1)来自本站测试请求(TestRequestFromUs) 如果收到有效帧为TRUE,或者收到非本站有效帧为TRUE,帧类型为测试请求,源地址等于TS或目的地址等于TS,则另一个节点选择了该地址。清空地址列表中的所有标志和地址,设置收到有效帧为FALSE,设置收到非本站有效帧为FALSE,设置TS为255,进入零配置空闲状态等待下一帧。

(2)来自本站主节点轮询(PollForMasterFromUs) 如果收到有效帧为TRUE或收到非本站有效帧为TRUE,帧类型为主节点轮询,源地址等于TS,则另一个节点正使用本站地址,清空数据列表中所有标志和地址,设置收到有效帧为FALSE,设置收到非本站有效帧为FALSE,设置TS为255,进入零配置空闲状态等待下一帧。

(3)发往本站主节点轮询(PollForMasterForUs) 如果收到有效帧为TRUE,帧类型为主节点轮询,目的地址等于TS,则响应。调用发送帧过程发送一个主节点轮询回复帧给该节点,其地址有源地址(轮询的源地址)指定;设置收到有效帧为FALSE,进入主节点轮询令牌状态等待一个令牌帧。

(4)来自本站帧(FrameFromUs) 如果收到有效帧为TRUE,或者收到非本站有效帧为TRUE,帧类型不是测试请求,帧类型不是主节点轮询,源地址等于TS,则另一个节点选择了本站地址。清空地址列表中所有标志和地址,设置收到有效帧为FALSE,设置收到非本站有效帧为FALSE,设置TS为255,进入零配置空闲状态等待下一帧。

(5)不正确帧(InvalidFrame) 如果收到不正确帧为TRUE,则等待另一帧。进入零配置主节点轮询状态等待一个地址为本站的主节点轮询帧。

- 28 -

哈尔滨工业大学工学硕士学位论文 4.1.6 负载电流检测电路

负载电流检测电路如图4-7所示,电流变比为10A-10mA的电流互感器从负载干线上采样电流信号,R29为电流采样电阻,用于把电流信号变为电压信号。OPA348是一种低电压低功耗轨至轨输入和输出运算放大器。

图4-7 负载电流检测电路

U5A电路和U5B电路分别为同相放大器和反相放大器,它们的放大倍数相同。由于OPA349单电源供电,两个放大器都相当于半波整流。再经后面的电阻电容滤波电路组合后,可以获得比较平稳的电压信号。

4.1.7 实物展示

根据MS/TP硬件框图和各模块的电路图,开发出硬件实物如图4-8所示。

图4-8 硬件实物图

- 39 -

哈尔滨工业大学工学硕士学位论文 该MS/TP控制模块采用双层PCB板以减少成本,元器件的摆放配合结构,以便于楼宇设备中标准的导轨式安装,其能够监控4路开关负载。

最右边的是采用拨码开关手动设置MAC地址的控制模块,左边的是采用上一章自动寻址算法动态MAC分配的控制模块,由图中可知,后者减少了拨码开关。

4.2软件设计

4.2.1 控制模块的BACnet协议栈

本文的BACnet MS/TP控制模块的BACnet协议栈和固件如图4-9所示。 协议栈的实现分为六个部分:物理层(UART)、数据链路层(DL)、网络层(NL)、应用层服务实体(ASE)、用户单元和应用程序。

物理层部分使用通用异步收发器,用于发送和接收MS/TP帧。当一个主节点持有令牌时,MS/TP主节点状态机发送传送器队列(TxQ)中的MS/TP帧,最多传送帧的个数有网络配置参数“Nmax_info_frames”决定。MS/TP接收状态机接收从UART中的字节流,并使用帧校验序列检验接收帧是否正确。当接收完一个完整的MS/TP帧,MS/TP主节点状态机就会把该接收帧存储到接收器队列(RxQ)中。

数据链路层维持MS/TP主节点状态机和BACnet MS/TP数据链路层功能。数据链路层使用DL_UNITDATA.request和DL_UNITDATA.indication原语,同网络层交换MPCI(MAC层协议控制信息)和NPDU(网络层协议数据单元)。“NL”使用NL_UNITDATA.request和NL_UNITDATA.indication原语,同应用层层交换NPCI(网络层协议控制信息)和APDU(应用层协议数据单元)。

BACnet应用层由两部分组成,分别是用户单元(User Element)和BACnet应用层服务元素ASE(Application Service Element)。

在用户单元中实现设备对象和应用对象。这些BACnet应用对象通过API和应用程序交换应用层相关信息。BACnet是基于客户/服务器通信模型的,在交互过程中,担当客户的BACnet用户称为请求方BACnet用户,担当服务器的BACnet用户称为响应方BACnet用户。MS/TP控制模块在它产生一个BACnet应用层服务请求时充当请求方BACnet用户(客户),在它接收BACnet应用层服务请求时充当响应方BACnet用户(服务器)。TSM(事务处理状态机)由应用层协议状态机中的请求方BACnet用户(客户)状态机和响应方BACnet用户(服务器)状态机来维持。

- 40 -

哈尔滨工业大学工学硕士学位论文 应用程序系统运行软/硬件输入API用户单元设备对象BO-01BO-04AI-01BACnet应用对象BO-02AI-02BO-03● ● ●软/硬件输出ASC应用ASEBACnet 应用服务APCI,服务相关参数BACnet解码器APCI,APDUAPCI,服务相关参数BACnet编码器APCI,APDU应用层协议状态机请求状态机响应状态机N_UNITDATA.reqN_UNITDATA.ind(NPCI,APDU)(NPCI,APDU)NL(网络层)DL_UNITDATA.reqDL_UNITDATA.ind(MPCI,NPDU)(MPCI,NPDU)DL(数据链路层)TxQMS/TP主节点状态机UART(物理层)RxQ发送帧MS/TP接收帧状态机PCI:协议控制信息PDU:协议数据单元

图4-9 控制模块的BACnet协议栈

在BACnet应用层服务元素ASE中执行“Who-Is”、“I-Am”、“ReadProperty”和“Write-Property”服务,以及BACnet APDU编码和解码。BACnet编码器使用本地BACnet用户产生的应用层服务原语中APCI和服务相关参数组成一个BACnet APDU。BACnet解码器在收到来自对等BACnet用户的应用层服务原语时,接收响应方状态机中的APCI和APDU。BACnet解码器从接收到的APDU中提取服务相关参数,给响应方应用层服务单元发送APCI和服务相关参数。

应用程序执行系统操作任务、硬件输入输出任务和ASC应用层任务。系

- 41 -

哈尔滨工业大学工学硕士学位论文 统操作任务维护内部应用层参数和本地操作(如按键、状态指示灯)控制。硬件输入输出任务采集6个模拟输入和驱动4路继电器输出。

4.2.2 MS/TP协议软件

MS/TP软件部分主要包括三个模块:接收帧状态机、发送帧过程和主节点状态机。程序流程图如图4-10所示。

开始系统初始化使能串口中断使能主节点状态机主节点空闲5ms计时器使能接收帧状态机否接收缓冲有数据是发送缓冲有数据接收数据并CRC校验接收前导字节正确错误持有令牌发送帧否接收完成是设置标志位否发送是否完成是设置两状态机为空闲主节点状态机

图4-10 MS/TP程序流程图

接收帧状态机接收物理层的完整数据帧,进行帧和数据CRC校验。发送帧过程根据MS/TP协议把数据帧发送给物理层。主节点状态机除了提供网络级连接外,主要负责令牌维护和管理。MS/TP协议要求很高的实时性,需要一个精确的时钟。时间精度太高可能加大系统负荷,太小又不能满足系统要求。该文选择5ms精度的计时器,协议中时间参数相应的为5ms的倍数。

接收帧状态机从物理层正确地接收帧,它的运作独立于主节点状态机。在接收过程中,通过标志位来进行通信。当串口有需要接收的数据,串口中断,然后使能接收帧状态机。在接收并CRC校验数据帧后,如果接收正确,则设置收到正确帧为TRUE。如果在接收的过程中发生错误,则设置收到正

- 42 -

哈尔滨工业大学工学硕士学位论文 确帧为FALSE,相应地根据MS/TP协议进行错误处理过程。

发送帧过程根据MS/TP协议把网络层传下来的消息变成帧,它以字节为单位填充串口传输寄存器,直至完成整个发送过程。

主节点状态机负责令牌维护和管理,其运作主要与令牌有关,数据信号帧发送只是其中一个或两个状态的行为或活动。根据MS/TP协议和接收帧状态机中的数据进行状态的转换。

4.3 本章小结

本章对智能建筑中用于控制开关设备的MS/TP控制模块,从双路电源、通信接口、继电器驱动和负载检测等电路进行了设计,给出了详细的原理图并制作出实物。由于采用上一章的自动寻址算法,硬件上减少了拨码开关。另外对本模块使用的BACnet协议栈和MS/TP协议软件实现流程进行了阐述。

- 43 -

本文来源:https://www.bwwdw.com/article/ggcr.html

Top