当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式系统中BACnet-MS/TP协议栈的实现

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,对协议栈软件进行剪裁配置,协议栈软件中各个模块之间的接口关系。在整个结构中最复杂的是应用层模块,包含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绑定起来存放到一个结构中传送给应用层,这样当应用层需要回复报文时可以得到目标地址。[!--empirenews.page--]

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

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

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

4 结束语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

台湾新竹 – 2024年4月23日 – 著名的微控制器供货商新唐科技公司,与全软件开发生命周期提供跨平台解决方案的全球软件公司Qt Group宣布深化合作,扩展新唐科技人机界面(HMI)平台支持「Qt for MCUs」...

关键字: 微控制器 嵌入式系统 MCU

随着物联网、嵌入式系统以及微控制器技术的飞速发展,微控制器已成为众多智能设备和系统不可或缺的核心组件。而微控制器的正常工作,离不开烧录器的精准操作。C8051F021烧录器,作为一款高效、稳定、易用的微控制器烧录工具,在...

关键字: c8051f021烧录器 联网 嵌入式系统

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

【2024年3月25日,德国慕尼黑和瑞典瓦尔贝格讯】不同汽车的独特性给汽车零部件供应商和OEM厂商等带来了挑战,因为每辆车的驾驶方式、驾驶地点、驾驶者、设计、用途以及道路和交通状况都是独一无二的。为保证每辆汽车都能正常运...

关键字: AI 机器学习 嵌入式系统

GD32F303作为一款先进的微控制器,在嵌入式系统领域有着广泛的应用。本文旨在深入探究GD32F303的发布时间,并分析其背后的技术背景和市场环境。通过对相关资料的梳理和分析,本文揭示了GD32F303发布的历史背景、...

关键字: GD32F303 微控制器 嵌入式系统
关闭
关闭