0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统中BACnet-MS/TP协议栈的实现

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-17 14:55 次阅读

1 引言

20世纪90年代,Internet经历了爆炸性发展,成为垄断全球的计算机网络。以Cisco和Sun为代表的一批公司借助这一浪潮发展成为世界上顶尖的大公司。而在智能建筑领域,也正在重现这一过程。上世纪80年代,直接数字控制器(DDC)的出现大大改善了建筑控制系统的精度和灵活性。但随着智能建筑涉及领域的不断延伸,如HVAC、照明、消防、安防等等领域,分立式控制设备已经不能满足设备间互操作和系统间通讯的需求;另一方面,随着建筑控制系统的集成度越来越高,不仅要求一栋楼宇或者一个小区的设备之间可以通讯,甚至地区、国家乃至全球的控制设备之间都可以进行通讯。因此,建立一个可以在异构系统、不同厂商设备之间的通讯机制,成为建筑智能化的迫切需求。BACnet协议就在这样一种情况下应运而生了。

2 BACnet协议介绍

BACnet是专门为建筑自动控制网络制定的一种数据通信协议,最初由美国制冷采暖空调工程师协会(简称ASHRAE)于1995年制定。其最根本的目的是要提供给建筑自动控制系统实现互操作的方法。所谓互操作是指一种能力,可以使得分布的控制系统设备通过相关信息的数字交换,能够协调地工作,从而完成一个共同的目标。BACnet解决了建筑自控系统中存在的多厂商系统和设备不兼容而难以集成的问题,提供了不同建筑自动控制系统实现互操作的方法,有望成为控制网络中的TCP/IP协议。2003年1月,BACnet成为正式的国际标准(ISO 16484标准)。

BACnet有以下特点:

•开放性:是美国现行的国家标准和ISO国际标准。

•面向对象:BACnet协议采用面向对象的技术,因此具有可扩展性和可复用性。

•互操作性:ASHRAE的BACnet委员会提出了一种新的描述自动控制系统功能性的方法,称为“互操作域(Interoperability Areas)”,其中规定了5个互操作域,分别是:数据共享、报警和事件管理、时序安排、趋势记录、设备与网络管理。

2.1 BACnet体系结构

BACnet以OSI模型为参考,结合建筑自动控制领域的实际需求,形成了一个简化模型。BACnet充分利用现有成熟的网络技术,在底层兼容5种网络结构,降低了开发成本,同时也利于系统集成。

2.2 应用层

应用层协议数据单元(APDU)传送包含在应用服务原语和相关参数中的信息。因为BACnet采用简化的OSI体系结构,不包含任何表示层的功能,必须预先定义好通信设备一致遵守的编码规则。BACnet的编码规则设计考虑到了楼宇自动控制体系对简单化、紧凑化的要求。因此,这个编码规则在一些方面与ISO 8825有所不同。但是仍然允许使用ASN.1对BACnet的APDU进行编码。

2.3 网络层

网络层提供网络路由功能,使得报文可以被直接传递到一个远程设备、一个远程网络上的所有设备、或者所有网络上的所有设备。一个BACnet设备由一个网络号码和一个MAC地址唯一确定。由于BACnet协议规定两个BACnet设备之间只能有一条有效路径,这个限制大大降低了网络层的复杂性,简化了路由算法

2.4 数据链路层(MS/TP)

数据链路层负责将报文从一个设备传送到另一个单独设备,或者所有本地网设备。在本文中,只讨论MS/TP网络。MS/TP使用主/从令牌来控制对总线网络的访问。MS/TP协议向上为网络层提供与ISO 8802-2逻辑链路控制协议一样的服务;向下使用EIA-485物理层提供的服务。

3 程序实现

3.1 协议栈软件结构

在高端机器(如工作站)上,我们可以很好地利用C++语言的面向对象特性,完整实现整个BACnet协议栈。但在低端MCU上,程序空间和数据空间非常有限,因此需要尽可能简化协议栈软件的体系结构。同时根据不同型号的DDC,对协议栈软件进行剪裁配置。图2(略)表示了协议栈软件中各个模块之间的接口关系。在整个结构中最复杂的是应用层模块,包含BACnet对象模块,基本数据类型模块,APDU解析/分发模块和APDU组装模块。

3.2 应用层模块

BACnet协议为了简化其层次结构,使得BACnet应用层涵盖了开放系统互联参考模型(OSI)中会话层、表示层和应用层的功能。BACnet应用层模块是BACnet应用软件的基础,它实现BACnet协议应用层内容,负责提供工作站的各功能模块与物理设备直接的通信服务。根据应用层的功能分析,可以将应用层划分为如下几个模块:对象模块、服务模块、基本数据类型模块。

对象模块定义了BACnet对象。BACnet对象按其功能可分为两类:一类是采集数据的对象,如模拟输入/输出对象,这类对象需要访问设备硬件;另一类对象是在采集的数据基础上完成复杂功能,如环对象以及其他实现报警事件功能的对象,这类对象不需访问硬件。另外,某些对象的属性(如趋势登录对象的缓存器大小属性)需要设备厂商根据DDC型号进行初始配置,协议栈提供对这些属性的配置函数接口。

服务模块用于处理报文的分发、解析和组装。对于从网络层上来的APDU,服务模块根据APDU的类型和服务选择参数,调用相应的服务解析模块。服务解析模块对APDU的信息进行解码,并根据需要与DDC中的BACnet对象进行交互。另一方面,DDC会发出响应报文(如读属性响应),或者主动发出某些报文(如事件与报警服务),因此服务模块还提供服务报文组装的函数接口。

基本数据类型模块是一个工具类库,包含对基本数据类型的定义及其编、解码函数。BACnet包含13种应用数据类型以及其他基本数据类型。BACnet应用数据类型可以直接进行编、解码。BACnet基本数据类型对应着ASN.1中的复合数据类型,它是由BACnet应用数据类型配合标记按照一定的结构组合而成。因此,基本数据类型的编/解码实际上是按一定的规则调用应用数据类型以及标记的编/解码方法来实现的。

3.3 网络层模块

对于DDC来说,网络层向应用层提供一个不确认的无连接数据单元传输服务。网络层与应用层交互的服务原语是网络层数据单元请求(N-UNITDATA.request)和网络层数据单元指示(N-UNITDATA.indication)。其原语参数如下:
N-UNITDATA.request(destination_address, data, network_priority,data_expecting_reply)
N-UNITDATA.indication(source_address, destination_address,data, network_priority,data_expecting_reply)

当DDC收到来自链路层数据,解析出相应的地址信息,并把地址信息和APDU绑定起来存放到一个结构中传送给应用层,这样当应用层需要回复报文时可以得到目标地址。

3.4 数据链路层(MS/TP)模块

MS/TP是一个主从/令牌传递的数据链路协议,物理层采用RS-485半双工通信标准。MS/TP层包含两个状态机,分别是主节点状态机和接收帧状态机;接收帧状态机负责帧的接收,如是数据帧则调用与网络层接口上传给网络层,主节点状态机负责帧(包括数据帧和控制帧)的发送。两个状态机分时实现,根据两者之间的关系,接收帧状态机可放在主节点状态机中统一调度。图3(略) BACnet数据链路层模块结构图,图3显示了BACnet数据链路层的子模块:其中,接收模块实现接收帧状态机;发送模块实现主节点状态机;串口控制模块实现串口驱动与收发控制,串口读写采用中断方式;

网络层接口模块定义接口及接口函数调用模块,使用服务原语DL_UNITDATA.request()和DL_UNITDATA.indication()来实现。

4 结束语

本文提出了BACnet-MS/TP协议在MCU中的软件实现方案,解决了BACnet控制器的通讯功能。如果进一步采用嵌入式操作系统实现多任务处理,配合数据采集、控制和组态模块,就可以开发出实用的BACnet控制器。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16992

    浏览量

    350313
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3567

    浏览量

    129229
  • 应用层
    +关注

    关注

    0

    文章

    46

    浏览量

    11493
  • BACnet
    +关注

    关注

    0

    文章

    92

    浏览量

    14978
收藏 人收藏

    评论

    相关推荐

    SIP协议嵌入式Linux实现

    嵌入式系统由于本身资源的限制,现有的SIP协议直接应用于嵌入式便携设备还有困难。为满足SIP协议嵌入式
    发表于 10-12 12:22 2207次阅读
    SIP<b class='flag-5'>协议</b>在<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>中</b>的<b class='flag-5'>实现</b>

    TCP_IP协议嵌入式系统实现

    本帖最后由 eehome 于 2013-1-5 10:03 编辑 TCP_IP协议嵌入式系统
    发表于 08-24 23:05

    基于BACnet-MS/TP协议实现嵌入式系统

    操作和系统间通讯的需求;另一方面,随着建筑控制系统的集成度越来越高,不仅要求一栋楼宇或者一个小区的设备之间可以通讯,甚至地区、国家乃至全球的控制设备之间都可以进行通讯。因此,建立一个可以在异构系统、不同厂商设备之间的通讯机制,成
    发表于 06-25 07:44

    嵌入式SIP协议怎么设计?

    ,凭借SIP自身的特性可有效提高嵌入式网络设备的互操作性和接入网络的便利性。但SIP协议本身只给出SIP消息的文法定义以及自然语言描述的消息处理,并未给出SIP协议
    发表于 10-29 08:14

    嵌入式系统USB-HOST协议该如何设计?

    USB协议的基本知识包括哪些?嵌入式系统USB-HOST协议
    发表于 04-27 07:10

    怎么实现嵌入式TCP/IP协议的设计?

    本文阐述在一种异构网络互联——CAN总线与以太网互联系统设计方案嵌入式TCP/IP协议的设计与实现
    发表于 06-07 06:28

    主流的小型嵌入式网络协议

    新产品、新技术也是层出不穷,本章节就为大家介绍当前主流的小型嵌入式网络协议。目录第1章 当前主流的小型嵌入式网络协议
    发表于 12-23 06:18

    在TMS320VC5402 上实现嵌入式TCP IP协议

    实现一个运行在16 位数字信号处理器TMS320VC5402 上的小型嵌入式TCP/IP 协议。对TCP/IP 协议
    发表于 05-16 14:55 28次下载

    嵌入式WEB服务器TCP/IP协议的设计与实现

    嵌入式TCP/IP 协议能扩展非智能设备的网络功能,是信息智能化的一种有效手段。 本文从嵌入式WEB 服务器入手,分析了嵌入式T
    发表于 06-19 09:03 35次下载

    在ARM平台上实现MS TP协议

    MS/TP 主-从/令牌数据链路协议为现场控制总线提供可靠、实时数据传输服务。为了降低MS/TP 开发成本,本文在ARM 和μC/OS 操作
    发表于 01-20 14:50 14次下载

    嵌入式小型TCPIP协议

    一个专为嵌入式系统编写的小型TCP/IP协议 TCP/IPLean
    发表于 10-08 17:23 50次下载

    在FPGA实现嵌入式TCP/IP通信协议

    研究了嵌入式TCP/IP通信协议在Xilinx FPGA上的实现,介绍了其软硬件的系统组成和原理,提出一种实时操作
    发表于 11-17 17:05 8030次阅读
    在FPGA<b class='flag-5'>中</b><b class='flag-5'>实现</b><b class='flag-5'>嵌入式</b>TCP/IP通信<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    基于和欣嵌入式操作系统实现的一个构件化的网络协议设计浅析

    Internet 技术。要实现嵌入式设备的网络化,需要实现TCP/IP网络协议,但由于Internet上各种通信
    发表于 02-20 14:59 1287次阅读
    基于和欣<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b><b class='flag-5'>实现</b>的一个构件化的网络<b class='flag-5'>协议</b><b class='flag-5'>栈</b>设计浅析

    BACnet MS/TP转MQTT网关的详细介绍

    BACnet MS/TP协议的网关。采用嵌入式 Linux 系统开发的产品,具有高度的稳定性。
    发表于 03-12 09:10 853次阅读

    钡铼BACnet MS/TPBACnet IP协议转Modbus协议网关BL120BN

    在涉及WinCC系统需与广泛BACnet协议设备实现数据交互的项目中,钡铼技术的BACnet协议
    的头像 发表于 08-06 17:27 284次阅读
    钡铼<b class='flag-5'>BACnet</b> <b class='flag-5'>MS</b>/<b class='flag-5'>TP</b>和<b class='flag-5'>BACnet</b> IP<b class='flag-5'>协议</b>转Modbus<b class='flag-5'>协议</b>网关BL120BN