**BACnet写属性命令详解** BACnet(楼宇自动化控制网络)是一种国际标准协议,用于楼宇自动化系统中的设备通信。在BACnet-stack-0.8.3库中,`bacwp`程序是一个用于演示如何执行BACnet写属性操作的工具。本文将详细介绍如何使用`bacwp`进行设备属性的读写,并解析其相关的参数。 1. **启动BACnet服务端程序** 在使用`bacwp`之前,首先需要启动服务端程序`bacserv`。在这个例子中,我们将设备实例号设为1234。`bacserv`是一个模拟BACnet设备的示例程序,用于接收和响应来自客户端的请求。 2. **使用bacwp客户端** `bacwp`是BACnet写属性的客户端示例,它接受一系列参数来指定要写入的属性。下面是`bacwp`的基本用法和参数解释: - **设备实例**:这是与目标设备通信的标识符,如例子中所示,设备实例号为1234。 - **对象类型**:表示你要操作的对象类型,是BACNET_OBJECT_TYPE枚举值。例如,模拟输出的类型为1。 - **对象实例**:每个对象都有一个唯一的实例号,比如模拟输出2的实例号是2。 - **属性**:要修改的属性,由BACNET_PROPERTY_ID枚举值表示,如当前值属性的ID为85。 - **优先级**:写入属性时的优先级,优先级为0时不指定优先级,按BACnet标准,未指定优先级时默认为最低优先级16。 - **索引号**:如果属性是数组,可以指定要写入的数组元素的索引。-1表示忽略索引。 - **标记**:表示要写入的值的数据类型,如REAL值的标记为4。 - **值**:要写入的具体数据,ASCII表示形式。 3. **示例用法** A. 修改设备1234的模拟输出0的当前值为100,优先级为16: ``` ./bacwp 1234 1 0 85 16 -1 4 100 ``` B. 将设备1234的开关量输出0设置为开(值为1),优先级为16: ``` ./bacwp 1234 4 0 85 16 -1 9 1 ``` C. 发送放弃命令到设备1234的同一个对象(模拟输出0),将当前值设回初始状态: ``` ./bacwp 1234 1 0 85 16 -1 0 0 ``` 4. **验证修改** 使用`bacnet scan`工具可以查看并验证`bacwp`命令执行后设备属性的变化情况。 5. **BACnet栈的实现** BACnet-stack-0.8.3是一个开源实现,包含C语言编写的BACnet协议栈,提供了各种BACnet服务的示例程序,如`bacserv`和`bacwp`,便于开发者理解和测试BACnet通信。 总结起来,BACnet写属性命令`bacwp`通过指定设备实例、对象类型、对象实例、属性、优先级等参数,实现对BACnet设备属性的修改。在Linux环境中,结合BACnet-stack库,可以便捷地进行楼宇自动化系统的设备控制和调试。
- 粉丝: 2564
- 资源: 43
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助