BACnet 工具 VTS的用法 总结

本文档提供了关于BACnet Visual Test Shell (VTS)的详细使用指导,包括下载地址、配置步骤及如何通过Python脚本进行设备属性读取等关键操作。涉及错误处理与调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 下载地址

https://sourceforge.net/projects/vts/files/
https://sourceforge.net/projects/vts/
https://github.com/JoelBender/bacpypes/issues

使用VTS分析bacnet协议的ReadProperty(一)
https://blog.csdn.net/u010604007/article/details/50946171

https://gitter.im/JoelBender/bacpypes/archives/2017/02/22

涉及到的地址:
http://bacnet.sourceforge.net/
visual test shell for Win32, used for Visually testing a BACnet implementation. It also includes a detailed network sniffer for BACnet messages, and the ability to send any BACnet services. The source code is in the public domain.

2 BACNET之VTS的配置过程

https://blog.csdn.net/qingtian506/article/details/18705809

3

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

:~/bacnet/bacpypes/samples$ python ReadProperty.py

read 20021:22 device:2200 objectName
ERROR:main.ReadPropertyConsoleCmd:exception: ValueError(‘need more than 3 values to unpack’,)
Traceback (most recent call last):
File “ReadProperty.py”, line 103, in do_read
addr, obj_type, obj_inst, prop_id = args[:4]
ValueError: need more than 3 values to unpack
read 20021:22 device 2200 objectName
abccccc-- 20021:22
obj-type- device
pduSource = <Address 20021:22>
pduExpectingReply = 0
pduNetworkPriority = 0
apduType = 7
apduSrv = False
apduInvokeID = 1
apduAbortRejectReason = 65
pduData = x’’

在这里插入图片描述

1

read 192.168.0.100:47808 device 0 objectName
abccccc-- 192.168.0.100:47808
obj-type- device
TD
在这里插入图片描述

https://github.com/JoelBender/bacpypes/issues

read 192.168.0.100:47808 analogInput 0 presentValue
abccccc-- 192.168.0.100:47808
obj-type- analogInput
55.0

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

代码补充:

grep -r “analogInput”

samples/ReadProperty.py.history:read 192.168.0.100:47808 analogInput 0 presentValue
build/lib.linux-x86_64-2.7/bacpypes/primitivedata.py: , ‘analogInput’:0
build/lib.linux-x86_64-2.7/bacpypes/object.py: objectType = ‘analogInput’
build/lib.linux-x86_64-2.7/bacpypes/basetypes.py: { ‘analogInput’:0
.svn/pristine/34/3469aebfe1ccdda48b679e8ba33e71f1368f62ab.svn-base: { ‘analogInput’:0
.svn/pristine/84/848f2afb78bf15fd801835938ad0cb5e5941b9f4.svn-base: objectType = ‘analogInput’
.svn/pristine/76/76ce898590ef1829c16a75fcc0af39938f6abf7d.svn-base: , ‘analogInput’:0
bacpypes/primitivedata.py: , ‘analogInput’:0
bacpypes/object.py: objectType = ‘analogInput’
bacpypes/basetypes.py: { ‘analogInput’:0

看一下文件:
bacpypes/basetypes.py:

class ObjectTypesSupported(BitString):
    bitNames = \
        { 'analogInput':0
        , 'analogOutput':1
        , 'analogValue':2
        , 'binaryInput':3
        , 'binaryOutput':4
        , 'binaryValue':5
        , 'calendar':6
        , 'command':7
        , 'device':8
        , 'eventEnrollment':9
        , 'file':10
        , 'group':11
        , 'loop':12
        , 'multiStateInput':13
        , 'multiStateOutput':14
        , 'notificationClass':15
        , 'program':16
        , 'schedule':17
        , 'averaging':18
        , 'multiStateValue':19
        , 'trendLog':20
        , 'lifeSafetyPoint':21
        , 'lifeSafetyZone':22
        , 'accumulator':23
        , 'pulseConverter':24
        , 'eventLog':25
        , 'globalGroup':26
        , 'trendLogMultiple':27
        , 'loadControl':28
        , 'structuredView':29
        , 'accessDoor':30
        , 'accessCredential':32
        , 'accessPoint':33
        , 'accessRights':34
        , 'accessUser':35
        , 'accessZone':36
        , 'credentialDataInput':37
        , 'networkSecurity':38

111

cpp@cpp-virtual-machine:~/bacnet/bacpypes/samples$ python ReadProperty.py

read 192.168.0.100:47808 device 0 objectName
abccccc-- 192.168.0.100:47808
obj-type- device
TD
read 192.168.0.100:47808 device 0 objectList
abccccc-- 192.168.0.100:47808
obj-type- device
[(‘analogInput’, 0), (‘device’, 0)]

在这里插入图片描述
(稍后补充)

### BACnet MSTP仿真实现的方法 BACnet MSTP(Master-Slave/Token-Passing Protocol)是一种用于楼宇自动化控制网络的通信协议,通常在RS-485物理层上传输数据。为了实现BACnet MSTP仿真,可以通过以下几种方式: #### 1. 使用Kepware Server EX进行MSTP仿真 Kepware Server EX是一款功能强大的工业物联网平台,能够支持多种协议的仿真和转换。对于BACnet MSTP仿真,可以按照以下流程操作: - 创建一个新的通道并选择`BACnet MSTP`作为协议类型。 - 配置通道属性,指定波特率、奇偶校验等串口参数[^3]。 - 添加虚拟设备,并将其配置为模拟模式。 - 定义所需的点位(例如温度传感器、湿度传感器等),并通过软件界面对其进行调试。 #### 2. 利用VTS创建虚拟设备 Virtual Test System (VTS) 是一款专门用于测试和开发BACnet应用的工具。它允许用户创建自定义的虚拟设备及其点位,适用于BACnet IP和BACnet MSTP环境下的仿真需求。具体步骤如下: - 下载并安装VTS软件[^4]。 - 在VTS中创建新的虚拟设备,并为其分配唯一的MAC地址或对象ID。 - 根据实际需求添加各类点位(如二进制输入、模拟量输出等)。 - 启动仿真服务后,其他客户端即可通过标准BACnet协议访问该虚拟设备的数据。 #### 3. 基于开源库构建定制化解决方案 如果现有商业产品无法满足特定场景的需求,则可考虑采用开放源码项目来自行开发BACnet MSTP仿真程序。例如,Java-based library `BACnet4J` 提供了一个全面而灵活的API集合,可用于快速搭建基于不同传输介质(包括MSTP)的应用程序原型。开发者只需遵循官方文档指导完成必要组件初始化工作即可轻松启动一个简单的服务器端实例。 #### 技术注意事项 无论采取哪种途径实施上述方案,在实践过程中均需注意以下几个方面事项以确保最终效果达到预期目标: - **硬件准备**: 对于真实环境中涉及物理连接部分的操作而言(比如使用RS-485接口),可能还需要额外购置相应适配器或者控制器模块. - **性能调优**: 当面对大规模节点部署情况时,合理规划拓扑结构以及优化算法将成为提升整体效率的关键因素之一 . - **安全性考量**: 尤其是在跨网段互联情形下 ,必须充分重视网络安全防护措施以免敏感信息泄露风险. ```python import bacpypes.object as obj from bacpypes.local.device import LocalDeviceObject # 初始化本地设备对象 this_device = LocalDeviceObject( objectName="Simulated Device", objectIdentifier=("device", 1), maxApduLengthAccepted=1024, segmentationSupported="noSegmentation" ) def create_mstp_simulation(): """Function to setup a basic BACnet MSTP simulation.""" pass # Implement your logic here based on chosen method above create_mstp_simulation() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值