分析BACnet协议栈1

合集下载

《BACnet协议》课件

《BACnet协议》课件

BACnet协议的发展历程
总结词
BACnet协议经历了多个版本的发展,从最初的BACnet 1.0到现在的BACnet 2021。
详细描述
BACnet协议的发展历程可以追溯到1990年代初期,经过多年的发展,BACnet协议不断升级和完善。从最初的 BACnet 1.0版本,到现在的BACnet 2021版本,BACnet协议的功能和性能得到了极大的提升。随着物联网技术 的发展,BACnet协议将继续发挥重要作用,推动建筑物自动化的普及和发展。
工业自动化应用
BACnet协议将进一步拓展在工业自动化领域的应用,特 别是在智能制造、智能物流等领域,实现生产过程的自动 化控制和优化。
智慧城市发展
BACnet协议将助力智慧城市的建设,在城市基础设施管 理、公共安全监控、节能减排等方面发挥重要作用。
BACnet协议的未来挑战和机遇
技术创新与标准完善
报文传输
路由和寻址
BACnet协议使用应用层服务报文进行通信 ,报文由APDU(应用数据单元)封装,通 过传输层在网络中进行传输。
BACnet协议支持通过IP网络进行路由和寻 址,能够实现跨网络的设备通信。
BACnet协议的数据格式和通信协议
通信协议
BACnet协议使用ISO 8802-3标准作为其 底层通信协议,支持以太网等多种网络传
安全性。

BACnet协议原理

BACnet协议原理

BACnet协议原理

BACnet(Building Automation and Control Networks)是一种用于建

筑自动化和控制网络的通信协议。本文将详细介绍BACnet协议的原理、功能及其在建筑自动化中的应用。

一、BACnet协议概述

BACnet协议是一种开放的通信协议,旨在通过各种设备和系统之

间的数据交换来实现建筑物自动化与控制管理。它提供了一种标准化

的方式来集成不同的建筑设备和系统,如照明、空调、能源管理等。BACnet协议基于ISO/OSI模型的应用层,使用标准的网络传输层协议(如TCP/IP或UDP)进行数据传输。

二、BACnet协议的工作原理

BACnet协议采用了分布式结构,其中包括多个网络设备和控制器。这些设备通过网络进行通信,并共享数据以实现对建筑设备的监控和

控制。下面将介绍BACnet协议的几个重要原理:

1. 对象模型:

BACnet协议使用了一种称为BACnet对象模型的结构,以表示和组

织建筑设备和系统的数据。每个对象都有唯一的标识符和一组属性,

用于描述设备的特定方面。例如,一个空调对象可以有属性表示温度、湿度等。这种对象模型的使用使得不同设备和系统能够互相理解和交互。

2. 通信机制:

BACnet协议使用了不同的通信机制来实现设备之间的数据交换。其中包括广播、点对点和多播通信。广播通信用于向整个网络发送数据,点对点通信用于在两个特定设备之间进行通信,而多播通信则用于向一组设备发送数据。这些通信机制的使用使得BACnet网络可以高效地传输数据。

3. 层级结构:

BACnet协议

BACnet协议

BACnet是用于智能建筑的通信协议,是国际标准化组织(ISO)、美国国家标准协会(ANSI)及美国采暖、制冷与空调工程师学会(ASHRAE)定义的通信协议。BACnet针对智能建筑及控制系统的应用所设计的通信,可用在暖通空调系统(HVAC,包括暖气、通风、空气调节)也可以用在照明控制、门禁系统、火警侦测系统及其相关的设备。优点在于能降低维护系统所需成本并且安装比一般工业通信协议更为简易,而且提供有五种业界常用的标准协议,此可防止设备供应商及系统业者的垄断,也因此未来系统扩充性与兼容性大为增加[1]。

BACnet为Building Automation and Control networks 的简称,台湾通常翻译为“建筑自动化控制网路通讯协定”[5][6],而中国大陆则译为“楼宇自动化与控制网络”[7]。

协议简介[编辑]BACnet通信协议中定义了几种不同的数据链结层/物理层,包括:

1.ARCNET(ARCNET)。

2.以太网。

3.BACnet/IP。

4.RS-232上的点对点通信(Point-to-point_(telecommunications))。

5.RS-485上的主站-从站/令牌传递(Master-Slave/Token-Passing,简称MS/TP)通信。

6.LonTalk(LonTalk)

BACnet通信协议中定义了许多服务(service),可供各设备之间的通信,服务可以分为五类:有关设备对象管理的服务包括Who-Is、I-Am、Who-Has及I-Have等服务,有关对象访问的服务包括读取属性、写入属性等服务,有关报警与事件的服务包括确认报警、属性改变(change of state)报告等,此外也有有关文件读写及虚拟终端的服务[8]。

bacnet协议

bacnet协议

bacnet协议

BACnet(建筑自动控制网络)是一个通信协议,用于建筑自

动控制系统中的设备之间的数据交换和通信。它是一种开放的标准协议,最初由美国建筑自动化协会(ASHRAE)于1995

年开发,并成为美国国家标准(ANSI / ASHRAE 135-1995)。BACnet协议的目标是促进建筑设备的互操作性和通信。

BACnet协议采用面向对象的方法,设备以对象的方式进行表

示和交互。每个BACnet设备都有一个唯一的设备标识符(Device ID),用于标识设备在网络中的位置。设备可以是

传感器、执行器、控制器或其他类型的设备。BACnet协议定

义了一组标准对象类型,如输入、输出、变量和日志等。每个对象都有属性,用于描述对象的特性和状态。

BACnet协议支持多种通信媒介,包括以太网、RS-485、LonWorks和其他串行接口。设备可以通过这些媒介之一进行

通信,并使用BACnet协议进行数据交换。BACnet协议定义

了一组通信服务,包括读取属性、写入属性、订阅属性和报警等。这些服务允许设备之间进行数据的读取、写入和通知。

BACnet协议还定义了一套通信模型,用于描述设备之间的交

互方式。其中最常见的模型是主从模型,其中一个设备作为主节点,其他设备作为从节点。主节点可以向从节点发送命令,并接收从节点的响应。这种通信模型允许设备之间进行数据的传递和控制。

BACnet协议还支持安全通信,以保证通信的机密性和完整性。

通过使用加密技术和数字签名,设备可以确保通信过程中数据的安全性。此外,BACnet协议还提供了一套权限管理机制,

bacnet协议

bacnet协议

bacnet协议

BACnet协议。

BACnet(Building Automation and Control Networks)是一种用于建筑自动化和控制网络的通信协议,它是一种开放的、通用的协议,被广泛应用于建筑系统中,包括供暖、通风、空调、照明和安全等方面。BACnet协议的出现,使得不同厂家生产的设备可以实现互联互通,为建筑系统的集成提供了可能。

BACnet协议的特点之一是其开放性和通用性。它是一种开放的协议,任何厂家都可以基于BACnet协议开发符合标准的设备和系统。这种开放性使得用户可以更加灵活地选择设备和系统,而不用受限于某一特定厂家的产品。同时,BACnet 协议的通用性也使得不同类型的设备可以通过统一的协议进行通信,实现数据的共享和交互,从而提高了建筑系统的整体效率。

另一个重要特点是BACnet协议的灵活性和可扩展性。建筑系统的需求经常会发生变化,新的设备和功能需要不断地被集成进来。BACnet协议可以满足这种需求,它支持多种不同的通信方式和网络拓扑结构,可以适应不同规模和复杂度的建筑系统。同时,BACnet协议也支持多种不同的数据类型和对象类型,可以灵活地扩展和定制,以满足特定的应用需求。

此外,BACnet协议还具有高效性和可靠性。建筑系统对于数据的实时性和稳定性要求较高,BACnet协议采用了一系列的通信机制和协议规范,以确保数据的及时传输和可靠交换。同时,BACnet协议还支持数据的优先级和访问控制,可以保障重要数据的安全和可靠性。

总的来说,BACnet协议作为建筑自动化和控制网络的通信标准,具有开放、通用、灵活、可扩展、高效和可靠等特点,为建筑系统的集成和管理提供了重要的技术支持。随着智能建筑和物联网技术的发展,BACnet协议将会发挥越来越重要

BACnet通讯分析

BACnet通讯分析

BACnet通讯

1、概述.

系统实现基于BACnet/IP(又称B/IP)网络进行通讯。BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持的定向和广播信息。本实现关于BACnet协议定义主要可分为三层:B/IP 网络虚拟层,BACnet网络层和BACnet应用层.B/IP提供了TCP/IP一样的通讯结构,采用UDP的通讯方式.本文接下来将对此三层结构进行详细的讲解。

APDU:BACnet应用层数据结构,下文进行详细的讲解

2、BACnet/IP。

BVLC Type:0x81,代表BACnet/IP网络

BVLC Function:指定报文的类型,何种作用;本应用使用的报文类型分为两种:

0A:点对点通讯

0B:广播通信

Length:指定报文的长度,包括BVLC Type、BVLC Function以及本身在内NPDU:根据不同情况,报文长短不同,见下文的解析。

APDU:根据NPDU不同以及不同的请求,报文不同,见下文的解析。

3、BACnet NPDU结构.

控制字:BIT7:1表示Message Type存在,为0时Message Type不存在

BIT6:保留,为0

BIT5:1表示DNET DLEN Hop Count存在,当DLEN为0时表明广播网络

DADR不存在;0表示DNET DLEN DADR Hop Count不存在

BIT4:保留,为0

BIT3:1表示SNET SLEN存在,当SLEN为0时表明无效SADR不存在;

bacnet协议

bacnet协议

bacnet协议

BACnet(Building Automation and Control Network)协议是一种广泛应用于建筑自动化控制系统(BAS)的通信协议。该协议被设计用于各种设备间的数据传输和通信,以实现建筑的智能化、高效化和节能化。BACnet协议已经被国际标准化组织(ISO)和欧洲计算机制造商协会(ECMA)确定为ISO 16484-5和ECMA-167标准。

BACnet协议的优点在于其开放性和灵活性,它允许不同品牌、不同类型的设备之间进行互联和通信。该协议支持多种通信技术和传输媒介,如以太网、RS-485、无线电等,并提供多个数据传输方式和协议,如UDP、TCP、IP、SNMP等,以满足不同应用环境的需求。

BACnet协议的数据结构非常灵活,可以支持不同类型的数据,如模拟量、数字量、字符型、日期型等,还可以支持自定义数据类型,以满足各种不同的需求。此外,该协议还提供了不同级别的安全机制,如访问控制、加密通信等,以保护系统的安全性。

BACnet协议也提供了丰富的控制功能,如遥测、遥调、跟踪、趋势分析、警报、事件日志等。这些功能可以帮助建筑管理人员实时监控和管理建筑系统,发现问题,并及时采取措施。

BACnet协议的应用广泛,如商业建筑、工业厂房、医院、学校、酒店等各种建筑类型都可以使用该协议来实现自动化控制。在商业建筑中,BACnet协议被广泛应用于空调系统、照

明系统、安防系统、电力系统等。在工业厂房中,BACnet协

议可以用于自动化控制和监控生产线、工艺流程、设备运行等。在医院和学校中,BACnet协议可以用于自动化控制和监控空调、温湿度、照明、安全等系统。

BACnet协议解析楼宇自动化与控制网络的通信协议详解

BACnet协议解析楼宇自动化与控制网络的通信协议详解

BACnet协议解析楼宇自动化与控制网络的

通信协议详解

楼宇自动化与控制网络在现代建筑中扮演着重要的角色。为了实现楼宇设备之间的互联和数据交换,人们使用了各种通信协议。其中,BACnet协议作为一种通用的开放式标准,被广泛应用于楼宇自动化系统中。本文将对BACnet协议进行详细解析,介绍其在楼宇自动化与控制网络中的作用和特点。

一、BACnet协议概述

BACnet(Building Automation and Control Networks)是楼宇自动化与控制网络的通信协议,由美国国家标准协会(ANSI)制定。它为楼宇设备提供了一个统一的通信接口,实现了设备之间的互联和数据交换。BACnet协议支持多种通信介质,如以太网、RS-485等,可以灵活适配各种网络环境和设备类型。

二、BACnet协议结构

BACnet协议采用分层结构,共分为两个主要层级:物理层和应用层。物理层负责传输数据,而应用层定义了通信协议的规则和数据格式。

1. 物理层

BACnet协议支持多种物理层介质,包括以太网、RS-485等。不同的物理层介质使用不同的传输速率和编码方式,以满足不同的通信需求。物理层的选择要根据具体的楼宇自动化系统和设备来确定。

2. 应用层

BACnet协议的应用层定义了通信协议的规则和数据格式。它包括

了对象模型、通信服务和网络管理等方面的内容。

- 对象模型:BACnet协议使用对象模型来表示楼宇设备和系统中的

各种对象,如传感器、执行器、控制器等。每个对象都具有一组属性,可以通过读写这些属性来实现对对象的控制和监测。

BACnet介绍解读

BACnet介绍解读


应用层具有报文分段传输和可靠性传输的功能,因而BACnet网络 层的功能再次得到简化。 楼宇绝大多数自控设备间交换的信息字节数较少,报文分段情况 较少。
2009-11-01
14
BACnet互联网络拓扑结构

物理网段(Physical Segment):直接连 接一些BACnet设备的一段物理介质。

BACnet网络是拓扑结构非常稳定的自控网络


一旦楼宇自控设备安装完成后,其安装位置在整个生命周期范围 内通常是固定的 路由算法得到简化

固定的拓扑结构 树形拓扑结构:BACnet标准又规定任意两节点间只能有一条路径,不得形成 环路。

BACnet网络层不提供报文分段传输和可靠性传输的功能

BACnet应用层
2009-11-01
5
BACnet应用层规范

BACnet的应用层协议要解决三个问题:


向应用程序提供通信服务的规范, 与下层协议进行信息交换的规范 与对等的远程应用层实体交互的规范

BACnet应用层主要有两个功能:


定义楼宇自控设备的信息模型——BACnet对象模型 定义面向应用的通信服务
APDU
N-UNITDATA.请求 网 络 层 与数据链路层、 MAC层相关的 参数
NPCI 网络层服务数据单元(NSDU)

BACnet协议栈解析及网络开发经验总结

BACnet协议栈解析及网络开发经验总结

BACnet协议栈开发讲解

BACNet这个东西的资料太少了,有用的高效的资料更是少!

资料太少,摸索着实在太辛苦,这是BACnet项目完成之后的一点开发经验,希望对正在摸索的各位同仁,有所帮助。

任务定位:

BACNet分为系统应用和开发应用,购买现有的BACNet设备组网,应用,属于系统应用,放松心情,继续读下去,如果是开发BACNet设备,这里的一点经验就不需耽误时间了。

层次定义:

BACNet既然协议里分了那么多层,我们要做多少呢?

继续放松,BACNet的系统应用来说,我们只需做到应用层+网络层就可以了,不要被协议厚厚的书吓到,我们用到的,很少。

好了,现在知道我们要干什么了,就是拿到BACNet设备进行网络层以上的应用。

资料选择:

BACNet协议,中英文网络上都可以找到,如果网络没搜过到,我的资源里也提供了下载。还推荐一本书,《智能楼宇BACNet原理与应用》董春桥写的,只出版了3000册,如果能搞到,庆幸吧!

知识储备:

既然是网络开发,必备网络编程一点小小的经验,尤其是UDP。

开发工具:

工欲善其事,必先利其器。看协议可以了然于胸,但如果有个智能点的开发工具,效率可以乘以10倍,推荐VTS,网络上应该可以下载到,我的资源里也提供了下载。

软件架构:

对于UDP,相信做这个的不需我多说。

对于BACNet编码,一句话,NPCI+BCLCI+APDU,唯一难一点的,就只有APDU,不过,有VTS的话,轻松很多。

好了,随手涂鸦的几句话,希望对大家有点帮助吧,

QQ:404536204,愿与同仁共同进步!

BACNET协议

BACNET协议

1.BACnet标准

1.1 BACnet协议

进入80年代以后,随着经济活动中心城市化,大都市的高层与超高层建筑如雨后春笋般耸立起来。楼内的各种设备和系统逐渐增多,且日趋复杂,能量的消耗也大幅度上升。如何规范运行,节能,延长设备寿命,确保大楼内工作、生活的安全、舒适、高效和楼内外信息的处理、交换、传输,资源共享成为大楼(智能建筑)重要问题。可喜的是80年代以来,电子、微电子、通讯与计算机、网络、自控技术的迅猛发展,支持与造就了智能建筑各个子系统的诞生和完善。

智能建筑贵在集成,要集成就需要相关的机电设备和子系统具有开放性和互操作性。也就是说,这些设备和系统的数据通讯必须按同一标准协议来进行。

1987年l月ASHRAE(美国供热、制冷及空调工程师协会)组织了世界各地的20余名楼宇自动控制工业部门,包括大学、控制器制造商、政府机构与咨询公司的志愿者组成了一个名为"SPCl35P"的工作组。工作组的目标是制定一个关于楼宇能量管理与控制系统(EMCS)的通讯协议。在长达8年多制定过程中,共收到来自12个国家741份的意见,经过3次公开评审,最后于1995年6月BACnet协议获得通过,成为ASHRAEl35-1995标准。井于同年12月升为美国国家标准。

自从BACnet协议作为美国国家标准发表以来,不但在美国本土引起巨大的反响,同时也引起了世界各国智能建筑业界的广泛注意。在发达国家,已纷纷成立了一些重要的组织,其中最重要的如在北美成立了BIG-NA(BACnet’s Interest Group-North America),在欧洲成立了BIG-Eu(BIG-Europe),在澳大利亚和亚洲成立了BIG-AA(BIG-AustraliaAsia),这些组织在本地区共同推进BACnet协议的实施。

BA系统通讯协议:BACnet

BA系统通讯协议:BACnet
四.BACnet的具体规定
ISO模型中的应用层是用来规定一种步骤,似的软件应用可以访问下层的网络服务BACnet标准在应用层的具体规定体现在下述3方面内容:
●BACnet的对象(Objects)
●BACnet的服务(Services)
●BACnet的功能组(Functional Groups)"对象"是用来规定一种数据结构,这个结构既有数据的存储,也包括在这个对象内处理和记录数据的一系列过程。BACnet具有以下13类对象:
●虚拟操作界面
Fra Baidu bibliotek●虚拟终端
●设备通信
●时间管理
一个控制系统的各个组成部分具有各自不同的功能,这些功能的复杂程度不同,所以并不需要所有设备都具有BACnet规定的全部功能。
为了帮助客户和工程人员确定不同BACnet产品之间的互操作性,需要控制厂商建立一个针对某一设备的BACnet协议符合等级的说明,即PICS(Protocol Implementation Confor- mance Statement),它包括:
为了达到这个目的,BACnet标准的制定者采用了与LonTalk协议不同的思路和实现途径:统一和灵活兼顾。LonTalk协议对ISO/OSI模型的全部七层都做了规定,而BACnet标准仅对ISO/OSI模型中,BAS系统应用最多的四层做了规定,即物理连接层、数据联接层、网络层和应用层。对中间的4、5、6层未作规定,从而保证了协议的灵活性。各楼宇自动化厂商在不破坏标准基本结构的前提下可增加其专有功能。例如,BACnet在以下方面未做具体规定:

分析BACnet协议栈1

分析BACnet协议栈1

从现在开始分析BACnet协议栈了,版本号是bacnet-stack-0.7.1。目录是bacnet-stack-0.7.1\ports\linux\rs485.c

rs485.c文件主要要解决在物理层发送和接收数据的作用。不同的开发板需要移植该文件。

#include <errno.h>

#include <stddef.h>

#include <stdint.h>

#include <stdbool.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

/* Linux includes */

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <termios.h>

#include <unistd.h>

#include <sched.h>

/* Local includes */

#include "mstp.h"

#include "rs485.h"

#include "fifo.h"

#include <sys/select.h>

#include <sys/time.h>

/* Posix serial programming reference:

/~mike/serial/serial.html */

Bacnetip协议浅析

Bacnetip协议浅析

BACNet/IP协议浅析

1 BACnet简化的体系结构

BACnet建立在包含四个层次的简化分层体系结构上,这四层相当于OSI模型中的物理层、数据链路层、网络层和应用层。BACnet标准定义了自己的应用层和简单的网络层,对于其数据链路层和物理层,提供了以下五种选择方案。

第一种选择是ISO 8802-2类型1定义的逻辑链路控制(LLC)协议,加上ISO 8802-3介质访问控制(MAC)协议和物理层协议。ISO 8802-2类型1提供了无连接(Connectionless)不确认(Unacknowledged)的服务,ISO 8802-3则是著名的以太网协议的国际标准。

第二种选择是ISO 8802-2类型1定义的逻辑链路控制协议,加上ARCNET(ATA/ANSI 878.1)。

第三种选择是主从/令牌传递(MS/TP)协议加上EIA-485协议。MS/TP协议是专门针对楼宇自动控制设备设计的,同ISO 8802-2类型1一样,它通过控制EIA-485的物理层,向网络层提供接口。

第四种选择是点对点(PTP)协议加上EIA-232协议,为拨号串行异步通信提供了通信机制。

第五种选择是LonTalk协议。

这些选择都支持主/从MAC、确定性令牌传递MAC、高速争用MAC以及拨号访问。拓扑结构上,支持星型和总线型拓扑。物理介质上,支持双绞线、同轴电缆、光缆。

2 BACnet 应用层服务类型

从对象到对象的属性,然后再到应用层服务,BACnet标准定义了在BACnet设备之间进行通信的所有元素。BACnet定义了18个对象,描述楼宇自控系统中所涉及的与控制和通信相关的事物。通过定义123个属性和35个服务,提供了BACnet设备之间通信所要交换的信息和获取信息的方法。BACnet 应用层服务主要分以下6 个方面,每个方面由具体的服务组成。

BACnet_IP通信协议解析

BACnet_IP通信协议解析





EIA-485 (RS485)
EIA-232 LonTalk (RS232)
数据链路层 物理层
都可以作为 BACnet标准的物理局域网。
2 BACnet 网络与 Internet 互联
智能建筑的发展一直与 Internet 紧密相关, BACnet 网络目前已经得到广泛应用,为了更方便地 实现楼宇自动控制,BACnet网络通过Internet互联成 为了一个必然趋势。
APDU NPDU BVLL 报文 U D P 报文 IP 报文 物理帧
图 2 BACnet/IP 协议报文处理流程图
展性。BACnet互联网是由两个或者多个BACnet网络 所组成的网络。由于 IP 网络的出现,各种 BACnet 网 络互联非常灵活,各种BACnet设备均可以在IP环境 中实现互操作,但是 PAD 和 BACnet/IP 设备之间不 能直接通信,这是构建BACnet互联网时的基本原则 之一。本文提出一种 PAD 与 BACnet/IP 网关模型的 实现方案,以实现二者协议的转换等功能,其体系 结构如图 3 所示。
第 2个字节是一个控制字节,对其结构起着决定作用。
表 4 NPCI 结构图
版本 控制 D N E T (目标网络号) D L E N (目标 M A C 地址的长度) D A D R (目标 M A C 地址) S N E T(源网络号) S L E N (源 M A C 地址的长度) S A D R (源 M A C 地址) Hop Count(转发计数) 报文类型 Vendor ID(生产商表示符)

BACnet协议

BACnet协议

BACnet协议

BACnet英文全称为:Buliding Automation Control network

BACnet是专门为建筑的自动控制网络制定的一种数据通信协议;

最初于1995年由美国制冷采暖空调工程师协会(简称ASHRAE)制定。

其最根本的目的:给建筑自动控制系统实现互操作提供一种方法。

所谓互操作是指一种能力,可以使分布的控制系统设备通过相关信息的数字交换,能够协调地工作,从而完成一个共同的目标。

BACnet解决了建筑自控系统中存在的多厂商系统(如Honeywell、Airtek、Siemen、Johnson、Alerton等品牌)和设备不兼容而难以集成的问题,提供了不同建筑自动控制系统实现互操作的方法,有望成为控制网络中的TCP/IP协议。2003年1月,BACnet成为正式的国际标准(ISO 16484标准)。

BACnet有以下特点:

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

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

目前市场上符合BACnet 的品牌有Honeywell、Airtek、Siemen、Johnson、Alerton等

图1为台湾著名楼宇自控品牌Airtek 的BACnet 架构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从现在开始分析BACnet协议栈了,版本号是bacnet-stack-0.7.1。目录是bacnet-stack-0.7.1\ports\linux\rs485.c

rs485.c文件主要要解决在物理层发送和接收数据的作用。不同的开发板需要移植该文件。

#include

#include

#include

#include

#include

#include

#include

/* Linux includes */

#include

#include

#include

#include

#include

#include

/* Local includes */

#include "mstp.h"

#include "rs485.h"

#include "fifo.h"

#include

#include

/* Posix serial programming reference:

/~mike/serial/serial.html */

/* Use ionice wrapper to improve serial performance:

$ sudo ionice -c 1 -n 0 ./bin/bacserv 12345

*/

/* handle returned from open() */

static int RS485_Handle = -1;

/* baudrate settings are defined in , which is

included by */

static unsigned int RS485_Baud = B38400;//波特率选择38400 bps

/* serial port name, /dev/ttyS0,

/dev/ttyUSB0 for USB->RS485 from B&B Electronics USOPTL4 */

static char *RS485_Port_Name = "/dev/ttyUSB0"; /*系统默认是通过USB转485的,根据需要设置,若你的开发板用485接口,则用static char *RS485_Port_Name = "/dev/ttyS0";代替*/

/* some terminal I/O have RS-485 specific functionality */

#ifndef RS485MOD

#define RS485MOD 0

#endif

/* serial I/O settings */

static struct termios RS485_oldtio;

/* Ring buffer for incoming bytes, in order to speed up the receiving. */ static FIFO_BUFFER Rx_FIFO;

/* buffer size needs to be a power of 2 */

static uint8_t Rx_Buffer[4096];

#define _POSIX_SOURCE 1 /* POSIX compliant source */

/*********************************************************************

* DESCRIPTION: Configures the interface name

* RETURN: none

* ALGORITHM: none

* NOTES: none

*********************************************************************/

void RS485_Set_Interface(

char *ifname)

{

/* note: expects a constant char, or char from the heap */

if (ifname) {

RS485_Port_Name = ifname;

}

}

/*********************************************************************

* DESCRIPTION: Returns the interface name

* RETURN: none

* ALGORITHM: none

* NOTES: none

*********************************************************************/

const char *RS485_Interface(

void)

{

return RS485_Port_Name;

}

/****************************************************************************

* DESCRIPTION: Returns the baud rate that we are currently running at * RETURN: none

* ALGORITHM: none

相关文档
最新文档