了解BACnet的对象模型 (三)

2024-04-19 13:44
文章标签 模型 对象 了解 bacnet

本文主要是介绍了解BACnet的对象模型 (三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • 18个对象
    • BACnet 对象的属性
      • 设备对象(Device)的属性
      • 输入输出值对象类型及其属性
    • 在代码中的表达
      • Device对象的属性
      • 模拟输入对象的属性
    • 小结

前言

在楼宇自控网络中,各种设备之间要进行数据交换,为了能够实现设备的互操作,所
交换的数据必须使用一种所有设备都能够理解的“共同语言”。BACnet 的最成功之处就在
于采用了面向对象的技术,定义了一组具有属性的对象(Object)来表示任意的楼宇自控设备
的功能,从而提供了一种标准的表示楼宇自控设备的方式。*在BACnet 中,所谓对象就是
在网络设备之间传输的一组数据结构,对象的属性就是数据结构中的信息,设备可以从数
据结构中读取信息,可以向数据结构写入信息,这些就是对对象属性的操作。*BACnet 网
络中的设备之间的通信,实际上就是设备的应用程序将相应的对象数据结构装入设备的应
用层协议数据单元(APDU)中。对象数据结构中携带的信息就是对象的属性值,接收设备中的应用程序对这些属性进行操作,从而完成信息通信的目的。

18个对象

BACnet 目前定义了18 个对象:

对象名称 应用实例
模拟输入 Analog Input 传感器输入
模拟输出 Analog Output 控制输出
模拟值入 Analog Value 设置的阈值或其它模拟控制系统参数
数字输入 Binary Input 开关输入
数字输出 Binary Output 继电器输出
数字值 Binary Value 数字控制系统参数
模拟输入 Analog Input 传感器输入
时序表 Calendar 为按事件执行程序定义的日期列表
命令 Command 为完成诸如日期设置等待特点操作而向多设备的多对象写多值
设备 Device 其属性表示设备支持的对象和服务以及设备商和固件版本
事件登记 Event Enrollment 描述可能处于错误状态的事件(例如“输入超出范围”),或者其它设备 需要的报警。该对象可直接通知一个设备,也可用通知类(Notification Class)对象通知多对象
文件 File 允许读写访问设备支持的数据文件
组 Group 提供在一个读单一操作下访问多对象的多属性
环 Loop 提供标准化地访问一个“控制环”
多态输入 Multi-state Input 表述一个多状态处理程序的状况,如冰箱的开、关和除霜循环等
多态输出 Multi-state Output 表述一个多状态处理程序的期望状态,如冰箱的开始冷却时间、开始除 霜时间等
通知类 Notification Class 包含一个设备列表,其中包括如果一个事件登记对象确定有一个警告或 报警报文需要发送则将要送给的那些设备
程序 Program 允许设备中的一个程序开始,停止,装载,卸载,以及报告程序当前状 态等
时间表 Schedule 定义一个按周期的操作时间表

每个对象都有一组属性,属性的值描述对象的特征和功能。在BACnet 中,对于每个
对象来说,属性分为必需的和可选的两种。用三个字母表示属性的类型,其意义分别是:
O 表示此属性是可选的,R 表示此属性是必需的且是用BACnet 服务可读的,W 表示此属
性是必需的且是用BACnet 服务可读和可写的。

BACnet 对象的属性

BACnet 要求每个BACnet 设备都要有一个“设备对象”,“设备对象”包含此设备和其
功能的信息。当一个BACnet 设备要与另一个BACnet 设备进行通信时,它必须要获得该
设备的“设备对象”中所包含的某些信息。表2 给出“设备对象”的属性描述。

设备对象(Device)的属性

在这里插入图片描述
在这里插入图片描述
“设备对象”的“对象标识符”属性中的设备实例标号必须是在整个BACnet 互联网中唯一的,这样才能在安装系统时标识设备。
表中的前三项属性,即对象标识符对象名称对象类型是BACnet 设备中的每个对象必须具有的属性。
“对象标识符”是一个32 位的编码,用来标识对象的类型和其实例标号,这两者一起可以唯一地标识对象;
“对象名称”是一个字符串,BACnet 设备可以通过广播某个“对象名称”而建立与包含有此对象的设备的联系,这将使整个系统的设置大为简化;
“设备对象”的属性向BACnet 网络表述了设备的全部信息。例如,“对象列表”属性提供了设备中包含的每个对象的列表。

输入输出值对象类型及其属性

BACnet 定义了6 个输入输出值对象,分别是:模拟输入对象,数字输入对象,模拟输出对象,数字输出对象,模拟值对象和数字值对象。
在这里插入图片描述
在这里插入图片描述

在代码中的表达

现在我们看看这些对象和属性在代码中是如何表达(或描述)的。在Bacnet.Room.Simulator中我们可以找到一个名为DeviceStorage.xml的文件,里面就记录一个BACnet设备包含的一些对象和对象的属性。具体代码如下:

<?xml version="1.0"?>
<DeviceStorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Objects><Object Type="OBJECT_DEVICE" Instance="64237"><Properties><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_DEVICE:64237</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>RoomController.Simulator</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>8</Value></Property><Property Id="PROP_SYSTEM_STATUS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_VENDOR_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>F. Chaxel, Thanks to Morten Kvistgaard, MIT licence, 2015</Value></Property><Property Id="PROP_VENDOR_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>61440</Value></Property><Property Id="PROP_MODEL_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Room_FC_2014</Value></Property><Property Id="PROP_FIRMWARE_REVISION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>0.1.0</Value></Property><Property Id="PROP_APPLICATION_SOFTWARE_VERSION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>0.1.0</Value></Property><Property Id="PROP_PROTOCOL_VERSION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>1</Value></Property><Property Id="PROP_PROTOCOL_REVISION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>14</Value></Property><Property Id="PROP_PROTOCOL_SERVICES_SUPPORTED" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>01111111101111000011101110000000011010101</Value></Property><Property Id="PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000000010101010000000000000000100000000111110111111111</Value></Property><Property Id="PROP_OBJECT_LIST" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"></Property><Property Id="PROP_MAX_APDU_LENGTH_ACCEPTED" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>1476</Value></Property><Property Id="PROP_SEGMENTATION_SUPPORTED" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>3</Value></Property><Property Id="PROP_APDU_TIMEOUT" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>3000</Value></Property><Property Id="PROP_NUMBER_OF_APDU_RETRIES" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>3</Value></Property><Property Id="PROP_DEVICE_ADDRESS_BINDING" Tag="BACNET_APPLICATION_TAG_NULL" /><Property Id="PROP_DATABASE_REVISION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>0</Value></Property><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Free RoomController Simulator, F. Chaxel 2015</Value></Property><Property Id="PROP_LOCATION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>FR</Value></Property></Properties></Object>    <Object Type="OBJECT_ANALOG_INPUT" Instance="0"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature Interieure</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_INPUT:0</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature.Interieure</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>0</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_INPUT" Instance="1"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature eau glicolee</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_INPUT:1</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature.Eau</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>0</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_INPUT" Instance="2"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature exterieure</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_INPUT:2</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature.Exterieure</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>12</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_VALUE" Instance="0"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne Effective</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_VALUE:0</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne.Effective</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>2</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>21</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_VALUE" Instance="1"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne 1</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_VALUE:1</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne.1</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>2</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>21</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_VALUE" Instance="2"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne 2</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_VALUE:2</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne.2</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>2</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>19</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_ANALOG_VALUE" Instance="3"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne 3</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_VALUE:3</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Consigne.3</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>2</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>17</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object><Object Type="OBJECT_CHARACTERSTRING_VALUE" Instance="1"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Textes Consignes Concatenés CSV</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_CHARACTERSTRING_VALUE:1</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>TextesConsignesCSV</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>40</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Mode Confort;Mode Eco+;Mode Absence</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property></Properties></Object><Object Type="OBJECT_BINARY_VALUE" Instance="0"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Fonctionnement du chauffage</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_BINARY_VALUE:0</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Fonctionnement.Chauffage</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>5</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_POLARITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_INACTIVE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Off</Value></Property><Property Id="PROP_ACTIVE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>On</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property></Properties></Object><Object Type="OBJECT_BINARY_VALUE" Instance="1"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Fonctionnement climatisation</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_BINARY_VALUE:1</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Fonctionnement.Clim</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>5</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>0</Value></Property><Property Id="PROP_POLARITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_INACTIVE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Off</Value></Property><Property Id="PROP_ACTIVE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>On</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property></Properties></Object><Object Type="OBJECT_MULTI_STATE_VALUE" Instance="0"><Properties><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_MULTI_STATE_VALUE:0</Value></Property><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Mode de fonctionnement</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Mode.Fonctionnement</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>19</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>2</Value></Property><Property Id="PROP_PRIORITY_ARRAY" Tag="BACNET_APPLICATION_TAG_NULL"><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value><Value></Value></Property><Property Id="PROP_RELINQUISH_DEFAULT" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>2</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_NUMBER_OF_STATES" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>3</Value></Property><Property Id="PROP_STATE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Arret</Value><Value>Chauffage</Value><Value>Climatisation</Value></Property></Properties></Object><Object Type="OBJECT_MULTI_STATE_VALUE" Instance="1"><Properties><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_MULTI_STATE_VALUE:1</Value></Property><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Niveau de Soufflage</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Niveau.soufflage</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>19</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>1</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_NUMBER_OF_STATES" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>4</Value></Property><Property Id="PROP_STATE_TEXT" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Arret</Value><Value>Niveau 1</Value><Value>Niveau 2</Value><Value>Maxi</Value></Property></Properties></Object></Objects>
</DeviceStorage>

代码量看着很多哈,实际上有很多都是重复的,用编辑器将代码折叠一下,结构会更清晰易懂。
在这里插入图片描述
可以看出来这个BACnet设备有13个对象,我们用Yabe扫描这个BACnet设备的所有对象,发现也是13个,和文件上写的保持一致。在这里插入图片描述

下面我们拿其中一两个Object分析一下对象的属性。

Device对象的属性

 <Object Type="OBJECT_DEVICE" Instance="64237"><Properties><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_DEVICE:64237</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>RoomController.Simulator</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>8</Value></Property><Property Id="PROP_SYSTEM_STATUS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_VENDOR_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>F. Chaxel, Thanks to Morten Kvistgaard, MIT licence, 2015</Value></Property><Property Id="PROP_VENDOR_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>61440</Value></Property><Property Id="PROP_MODEL_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Room_FC_2014</Value></Property><Property Id="PROP_FIRMWARE_REVISION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>0.1.0</Value></Property><Property Id="PROP_APPLICATION_SOFTWARE_VERSION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>0.1.0</Value></Property><Property Id="PROP_PROTOCOL_VERSION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>1</Value></Property><Property Id="PROP_PROTOCOL_REVISION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>14</Value></Property><Property Id="PROP_PROTOCOL_SERVICES_SUPPORTED" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>01111111101111000011101110000000011010101</Value></Property><Property Id="PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000000010101010000000000000000100000000111110111111111</Value></Property><Property Id="PROP_OBJECT_LIST" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"></Property><Property Id="PROP_MAX_APDU_LENGTH_ACCEPTED" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>1476</Value></Property><Property Id="PROP_SEGMENTATION_SUPPORTED" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>3</Value></Property><Property Id="PROP_APDU_TIMEOUT" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>3000</Value></Property><Property Id="PROP_NUMBER_OF_APDU_RETRIES" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>3</Value></Property><Property Id="PROP_DEVICE_ADDRESS_BINDING" Tag="BACNET_APPLICATION_TAG_NULL" /><Property Id="PROP_DATABASE_REVISION" Tag="BACNET_APPLICATION_TAG_UNSIGNED_INT"><Value>0</Value></Property><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Free RoomController Simulator, F. Chaxel 2015</Value></Property><Property Id="PROP_LOCATION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>FR</Value></Property></Properties></Object>    

<Object Type="OBJECT_DEVICE" Instance="64237"> 这一句表明了这是一个设备对象,对象标识符的实例标号是 64237.
设备对象之间的Property就是该对象的属性。下表列举了设备对象拥有的属性,以及属性类型和相对应的属性值。

属性 数据类型
PROP_OBJECT_IDENTIFIER (标识符) BACNET_APPLICATION_TAG_OBJECT_ID (对象ID) OBJECT_DEVICE:64237
PROP_OBJECT_NAME 对象名称 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串类型 RoomController.Simulator
PROP_OBJECT_TYPE 对象类型 BACNET_APPLICATION_TAG_ENUMERATED 枚举 8 (代表 object_device)
PROP_SYSTEM_STATUS 系统状态 BACNET_APPLICATION_TAG_ENUMERATED 枚举 0 (Normal)
PROP_VENDOR_NAME 设备商名 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串 F. Chaxel, Thanks to Morten Kvistgaard, MIT licence, 2015
PROP_VENDOR_IDENTIFIER 设备商标识符 BACNET_APPLICATION_TAG_UNSIGNED_INT 无符号整数 61440
PROP_MODEL_NAME 型号名称 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串 Room_FC_2014
PROP_FIRMWARE_REVISION 固件版本 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串 0.1.0
PROP_APPLICATION_SOFTWARE_VERSION 应用软件版本 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串 0.1.0
PROP_PROTOCOL_VERSION 协议版本 BACNET_APPLICATION_TAG_UNSIGNED_INT 无符号整数 1
PROP_PROTOCOL_REVISION 协议修订版本 BACNET_APPLICATION_TAG_UNSIGNED_INT 无符号整数 14

属性太多了,这里就不一一列举完全了,一些枚举类型可以在源码BacnetBase.cs中看到具体代表的意思.这是Yabe中扫描“设备对象”获得的属性,和xml中写的是一样的,我们后续的读写操作都是基于此。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

模拟输入对象的属性

 <Object Type="OBJECT_ANALOG_INPUT" Instance="0"><Properties><Property Id="PROP_DESCRIPTION" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature Interieure</Value></Property><Property Id="PROP_EVENT_STATE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OBJECT_IDENTIFIER" Tag="BACNET_APPLICATION_TAG_OBJECT_ID"><Value>OBJECT_ANALOG_INPUT:0</Value></Property><Property Id="PROP_OBJECT_NAME" Tag="BACNET_APPLICATION_TAG_CHARACTER_STRING"><Value>Temperature.Interieure</Value></Property><Property Id="PROP_OBJECT_TYPE" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_OUT_OF_SERVICE" Tag="BACNET_APPLICATION_TAG_BOOLEAN"><Value>False</Value></Property><Property Id="PROP_PRESENT_VALUE" Tag="BACNET_APPLICATION_TAG_REAL"><Value>0</Value></Property><Property Id="PROP_RELIABILITY" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>0</Value></Property><Property Id="PROP_STATUS_FLAGS" Tag="BACNET_APPLICATION_TAG_BIT_STRING"><Value>0000</Value></Property><Property Id="PROP_UNITS" Tag="BACNET_APPLICATION_TAG_ENUMERATED"><Value>62</Value></Property></Properties></Object>

<Object Type="OBJECT_ANALOG_INPUT" Instance="0">这一句表明了这是一个模拟输入对象,对象实例号是0. 由对象类型和实例号,可以确定一个对象。
下表列举了模拟输入对象拥有的属性,以及属性类型和相对应的属性值。

属性 数据类型
PROP_DESCRIPTION(描述) BACNET_APPLICATION_TAG_CHARACTER_STRING (字符串) Temperature Interieure
PROP_EVENT_STATE 事件状态 BACNET_APPLICATION_TAG_ENUMERATED 枚举 0 (normal)
PROP_OBJECT_IDENTIFIER 对象标识符 BACNET_APPLICATION_TAG_OBJECT_ID 对象ID OBJECT_ANALOG_INPUT:0
PROP_OBJECT_NAME 对象名称 BACNET_APPLICATION_TAG_CHARACTER_STRING 字符串 Temperature.Interieur
PROP_OBJECT_TYPE 对象类型 BACNET_APPLICATION_TAG_ENUMERATED 枚举 0
PROP_OUT_OF_SERVICE 脱离服务 BACNET_APPLICATION_TAG_BOOLEAN 布尔 False
PROP_PRESENT_VALUE 当前值 BACNET_APPLICATION_TAG_REAL 浮点数 0
PROP_RELIABILITY 可靠性 BACNET_APPLICATION_TAG_ENUMERATED 枚举 0 (RELIABILITY_NO_FAULT_DETECTED)
PROP_STATUS_FLAGS 状态标志 BACNET_APPLICATION_TAG_BIT_STRING 位字符串 0000
PROP_UNITS 单位 BACNET_APPLICATION_TAG_ENUMERATED 枚举 62 (UNITS_DEGREES_CELSIUS ℃)

在这里插入图片描述
在这里插入图片描述

小结

1 了解BACnet设备定义的18个对象,每个对象都有其特定的一组属性。

2 BACnet要求每个BACnet设备都要有一个“设备对象”,“设备对象”包含次设备和其功能信息

3 “对象标识符”,“对象名称”和“对象类型”是BACnet 设备中的每个对象必须具有的属性。

这篇关于了解BACnet的对象模型 (三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917702

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者