如何快速开发BACnet产品

 

1.      前言:

BACnet协议是在楼宇自控领域的一个国际标准协议,现在国内有不少厂家在自已的产品中要增加对此协议的支持,无非两种情况,一种让自已的产品提供软件接口能将数据通过BACnet协议接入至楼宇系统(如尼亚加拉,西门子等),另一种将协议栈嵌入自已产品中,在硬件上支持此协议;

因为市场竞争原因,厂家往往不想花太多精力,为此事从头开发编代码(目前网上BACnet开源项目只对C++语言支持,且是有限支持,很多对象及相关属性和服务都没有实现,代码中存在不少bug),希望能有一种工具能快速让自已的产品全面支持此协议,但目前在国内BACnet解决方案少之又少,所以本文推荐一个第三方开发包,以解决快速开发BACnet产品的问题;

2.      BACnetLib开发包:

BACnetLib是最近在网上出现的一个专门用于快速开发BACnet产品的第三方开发包(www.bacnetlib.com),支持 C , C++ ,Java , C# 四种语言,核心代码是由C语言实现,通过增加外壳方式,支持C , C++ , Java , C#语,平台支持windows , linux , android , ios平台,并支持单片机程序运行,但需要厂家定制;

具体支持功能如下:

l  支持浏览远程设备,保存本地对象,添加虚拟设备,应用包分段传输的功能;

l  支持COV报告,内部报告,算法改变报告;

l  在链路层支持PTP,MSTP,BIP,Ethernet,四种不同链路的连接;

l  应用层全面支持BACnet2004版的24种对象,35种服务;

l  不限对象点数;

 

3.      BACnet基础知识:

在作BACnet开发之前,要先了解一些基本概念,如下:

网络号:在BACnet世界中网络号是个重要概念,每个设备都有一个地址,地址是由mac地址和网络号构成,不同网络号之间如有数据交换,必须采用BACnet路由器实现数据包的路由;

本地设备:地址为本机物理地址的设备;

虚拟设备:用户在同一物理设备上采用虚拟的设备;具体请参看BACnet协议;

远程设备;非本地网络设备;

分段传输:应用层数据包可实现多个分段传输至目标设备的功能。具体请参看协议;

COV报告:值改变幅度报告;

内部报告:值改变后通过通告类来发送报告的方式;

算法改变报告:通过事件登记类来自定义算法的报告;

PTP:      一种点对点传输的协议;

MSTP:     令牌/主从传输协议;

BIP:      BACnet IP传输协议,是一种基于UDP的协议;

Ethernet: 以太网传输协议,是一种将数据直接基于Ethernet接口发送的协议;

对象 : 每个BACnet设备包含N个对象,每个对象都有多个属性,每个属性都有自已的独特用途;

服务:设备之间的数据互访问,采用服务的方式进行,一个设备允许读写另一个设备的对象,但协议规定一些对象属性只能读不能写,一些对象属性可写,这要看具体对象待定;

启动过程:协议规定当设备启动成功后,要在本地网络内,广播Whois服务,以获取本网络内其他设备的信息,其他设备将回复Iam服务,以告知对方“我”的存在;

4.      开发环境搭建:

为方便演示,以下是在Windows7 操作系统32位机器上的搭建过程;

为测试方便,链路层采用BIP方式通讯,数据包分析工具使用Wireshark抓包工具;

  •  开发包C++语言环境搭建:

1.      安装Visual Studio开发工具,推荐安装VS2010或VC6.0

2.      在运行时有很多网友电脑提示缺少某DLL,其实是缺少npptools.dll,这个文件是windows的一个核心文件,但有时杀毒软件也会将其当病毒干掉,上网下一个也行,不过之后笔者的演示代码中已有提供;

3.      下载并安装Wireshark工具;

           https://1.eu.dl.wireshark.org/win32/Wireshark-win32-1.12.6.exe

4.      安装winpcap软件,这是个网络开发包,BACnetLib正是基于此开发包来实现的BIP,Ethernet通讯,用户在安装wireshark软件的同时,会自动安装winpcap软件,所以不必单独安装;

5.      在完成以上操作后,网友们可以下载演示代码;

http://www.bacnetlib.com/down/CPP_Case/readallobject.rar

 

  •  开发包支持Java语言环境搭建:

1.      下载并安装Eclipse For Java 开发工具;

           Eclipse IDE for Java Developers        

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/R/eclipse-java-mars-R-win32.zip

配置Java环境变量;(这些教程在网上都能找到,这里就不细说)

总之能作到让eclipse能正常运行java代码就可以了;

2.      下载并安装Wireshark工具;

         https://1.eu.dl.wireshark.org/win32/Wireshark-win32-1.12.6.exe

3.      在完成以上操作后,网友们可以下载演示代码;

http://www.bacnetlib.com/down/Java_Case/JBACnet.rar

 

  • 开发包支持C#语言环境搭建:

1.      安装Visual Studio开发工具,推荐安装VS2010,安装时添加对C#的支持;

2.      安装.Net Frame 3.5以上版本;

3.      在完成以上操作后,网友们可以下载演示代码;

http://www.bacnetlib.com/down/CSharp_Case/CSharp_Example.rar


5. 代码编写:

  • C++语言开发;

1.      打开工程:

           如何快速开发BACnet产品_第1张图片

          如果网友安装的是vs2010或更高版本,请选择.sln文件打开;

如果网友安装的是VC6版本,请选择.dsw文件打开;

 

2.      更改初始化IP地址及网络号;

           如何快速开发BACnet产品_第2张图片

          注1:请将IP地址改为本机IP地址;

          注2:网络号不用更改;

 

3.      运行;

如何快速开发BACnet产品_第3张图片

        注:这是一个客户端例子,所以会将远程设备的对象包括AI,AO,AV,Bi,BO,BV对象当前值打印出来;

  • Java语言开发;

1.      运行Eclipse,并导入JBACnet工程;

如何快速开发BACnet产品_第4张图片

2.      更改引用路径;

如何快速开发BACnet产品_第5张图片


            注:请将JBACnet\jni路径下,BACLib.dll,BACnetJNILib.dll 这两个文件拷贝至

            C:\Program Files\Java\jdkX.X.X_X\bin目录下,这样可保证jni库的路径能正确被java虚拟机引用;

3.      更改本地IP地址;

如何快速开发BACnet产品_第6张图片


            注:请将以上IP地址改为本机IP地址;

4.      运行演示代码;

如何快速开发BACnet产品_第7张图片

  • C#语言开发;

1.      运行vs2010,并打开工程;

如何快速开发BACnet产品_第8张图片


2.      更改本地IP地址;

 如何快速开发BACnet产品_第9张图片

3.      运行演示代码;

 如何快速开发BACnet产品_第10张图片

2.      结束语:

以上内容简单介绍了BACnetLib的运行开发环境搭建及相关BACnet基本概念,关于BACnetLib的使用,以后会陆续提出专题博文,希望大家多给建议,谢谢。

   对BACnet有兴趣的网友可以直接联系我;

   QQ: 2979430184

   Email: [email protected]

 




 

 

你可能感兴趣的:(bacnet,bacnet开发)