1. 简介 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等 BACnetIPSvr.dll是根据BACnet协议开发出来的快速开发工具,其具有以下特点: 1. 使用C++开发,执行效率高。 2. 可移植性好,可以被C++、VB、C#、Delphi等开发语言调用。 3. 跨平台,源码可方便地移植到WinCE平台、Linux平台下。 4. 实现了BI、BO、BV、AI、AO和AV对象的访问。 5. 可以被其它BACnetIP客户端发现,并实现自动搜索。 6. 通过多个厂家的测试、譬如霍尼韦尔的EBI、西门子的Insight、江森的Matasys等软件的测试。 7. API函数个数少,简单易用。 2. API函数介绍 a. BOOL WINAPI StartBacnetIPServer(DWORD dwInstanceNum, WORD wPort); 说明:用于初始化BACnetIP服务器,设置设备的Instance号,以及UDP端口号。默认端口号为47808 b. BOOL WINAPI StopBacnetIPServer(); 关闭BacnetIP服务器,释放系统资源。 c. BOOL WINAPI SetBacnetIPValue(WORD wObjType, DWORD dwInstanceNum, DWORD dwData); 往BACnetIP服务器写值,第一个参数是对象类型的ID号。 #define OBJECT_ANALOG_INPUT 0 #define OBJECT_ANALOG_OUTPUT 1 #define OBJECT_ANALOG_VALUE 2 #define OBJECT_BINARY_INPUT 3 #define OBJECT_BINARY_OUTPUT 4 #define OBJECT_BINARY_VALUE 5 第二个参数是对象实例的ID号,相当于寄存器地址,最后一个为写入的数据。 d. DWORD WINAPI GetBacnetIPValue(WORD wObjType, DWORD dwInstanceNum); 说明:从BACnetIP服务器里取得数据,第一个参数是实例类型,第二个参数是对象实例的ID号。 e. BOOL WINAPI EnableBacnetIPWriteNofity(BACNETIPNOTIFYPROC fnCallback); 说明:开启写回调函数。当BACnetIP客户端对开发包写操作的时候,会调用该回调函数。 f. BOOL WINAPI ResetBacnetIPValue(); 说明:清空BACnetIP服务器里的所有数据,设置当前值为0。 g. BOOL WINAPI SetTagHandle(WORD wObjType, DWORD dwInstanceNum, HANDLE hTag); 说明:辅助函数,方便定位。用于设置外部的Handle到BACnetIP服务器内部。 h. HANDLE WINAPI GetTagHandle(WORD wObjType, DWORD dwInstanceNum); 说明:辅助函数,方便定位。从BACnetIP服务器内部取得外部的Handle。 |