问题标签 [bacnet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
serialization - BACnet 反序列化:我如何知道新的列表元素是否开始
我正在实现一个通用的 BACnet 解码器并遇到了以下问题,我似乎无法在 BACnet 标准中找到答案。“20.2.1.3.2 Constructed Data”一章没有回答我的问题,或者我可能没有完全理解它。
假设我有一个 List (SEQUENCE OF),其中包含 Record (SEQUENCE) 类型的元素。所述记录有4个字段,由上下文标签标识,其中字段0和1是可选的。我进一步假设这些字段被序列化的顺序可以是任意的(因为它们是由它们的上下文标签标识的)。数据可能如下所示(数字表示字段/列): [{ "3", "0", 2" }, {"1", "2", "3"}]
通过网络,我假设我得到的唯一“结构信息”是列表的打开/关闭标签。这意味着:
在读取第一个列表项的最后一列数据(“2”)后,我怎么知道我必须开始解码第二项,从列“1”的值开始?
我的哪个假设是错误的?
谢谢你和亲切的问候
帕斯卡
raspberry-pi - 树莓派上的 Bacnet
目前,我正在使用 bacnet 协议模拟 SCADA 系统,以便与我的 Raspberrry Pi 进行网络通信,用于我的最后一年项目。
当前状态:Raspberry Pi 2 能够运行 openplc(类似于 PLC)完成安装 ScadaBR(类似于 SCADA 系统)
当前问题:如何实现数据链路的 bacnet 协议以在 Raspberry Pi 和我的工作站之间建立连接?
我试图研究 bacnet 堆栈协议,实现一些开源但没有运气。但是我使用了 youtube 视频的演示(http://www.youtube.com/watch?v=0TJIrnAPsw4)。它使树莓派充当 bacnet 服务器。代码运行良好。如何找到在我的 Raspberry Pi 上运行的 bacnet 协议(客户端版本)。
这是我无法找到的一些问题:
哪个 bacnet 堆栈能够控制 PLC (Raspberry Pi) 和 ScadaBR 之间的 bacnet 通信?
Raspberry Pi(预装 openPLC)如何与 ScadaBR 通信?
使用 which bacnet 堆栈来实现这两个工作站。
javascript - Bacmove readDeviceObjectProperty()
有人可以告诉我如何在 Bacmove 中使用 JSInterface.readDeviceObjectProperty 吗?他们的文档毫无用处。我的代码:
}
我用 HTML 中的按钮调用这个函数。
段落更改为未定义。
java - BACnet 客户端未使用 BACnet4j 连接到 BACnet 接口
我是 BACnet 和其他自动化协议的新手。我们将编写一个 BACnet 客户端,该客户端预计将连接到 BACnet 接口以获取对象,然后我们将在微服务层中摄取这些对象。我们的服务器基础架构包含 LumInsight将数据推送到 BACnet 接口的桌面。我们指的是一个示例代码,但在运行它时我遇到了以下问题:
java - 从 BACnet 接口读取对象和属性
我正在尝试从 BACnet 接口读取对象和属性。我们正在使用 BACnet4J 的示例代码,我们的客户端代码预计将与 LumInsight Desktop(专有软件)提供的 BACnet 接口进行通信。
所以,在我们的例子中,设备发现已经完成,但是我们被困在如何从 BACnet 接口读取设备级别和对象级别信息。
这是我目前得到的输出:
SLF4J:加载类失败
“org.slf4j.impl.StaticLoggerBinder”。SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder。初始化打印地址...地址 [networkNumber=0, macAddress=[a,2c,37,5,ba,c0]] RemoteDevice(instanceNumber=10001, address=Address [networkNumber=0, macAddress=[a,2c,37 ,5,ba,c0]]) ObjectIdentifier:Device 10001 getName:LumInsight Virtual Router getModelName:LIBI-01 Remote Device(instanceNumber=10001, address=Address [networkNumber=0, macAddress=[a,2c,37,5 ,ba,c0]]) 用户数据:模拟输入:模拟输入 12 模拟输入 12 com.serotonin.bacnet4j.exception.PropertyValueException
请找到随附的源代码供您参考。
master-slave - 如何使用 bacnet 演示服务器和 bacnet 演示客户端发现两个或多个从站?
我正在使用 Bacnet 堆栈(0.8.3)来开发 Bacnet MSTP 客户端。最初,我运行演示服务器并通过 MSTP 读取属性客户端。它正在工作。
https://sourceforge.net/projects/bacnet/
现在,我正在尝试运行两个具有不同对象实例和不同 MAC 地址的不同服务器,通过在 Bacnet 客户端(readprop)的控制台端提供对象实例,依次与 Bacnet 客户端建立通信。我能够在客户端和服务器 1 之间建立通信,但不能与服务器 2 建立通信。
请帮助我,如何使用 Bacnet 演示 readproperty 客户端发现更多从站?
问候,P.维杰
protocols - Modbus TCP/IP 转 BACnet
首先,我对此并不陌生,我曾尝试在谷歌上搜索答案,但认为最好问问专家。
有一个使用 BACnet 协议的楼宇管理系统 (BMS),但我的设备记录器只有 Modbus TCP/IP。我知道市场上有一个转换器,但我想知道这个概念。
Modbus TCP/IP 具有专门用于读取特定参数的注册表值(例如 40135)。转换器如何在 BACnet BMS 中读取此注册表值?您是否必须在转换器软件中为 BACnet 的输出指定此注册表值?
一般情况下,BACnet端读取接收功率等设备参数应该输入什么?
在这种情况下,BACnet BMS 是否将 MASTER 和设备视为 SLAVE?
我希望有人可以花一些时间来消除我对此的怀疑。会很感激的。
谢谢你。
java - 来自 Raspberry OS 的 BacNet/IP 广播不工作
请找到以下代码,该代码在 Windows 10 系统上运行良好,并且能够通过网络发现远程设备。在 Linux 上,我们从代码中创建一个 jar 并使用java -jar test.jar运行它
在 Linux 上,我们无法发现在 Windows 操作系统上运行的设备,但在 Windows 上运行的应用程序能够发现 Linux BacNet localDevice。代码相同,但仍然无法在 Linux 上发现 BacNet 设备。
请帮助我们找到任何解决方案。
lua - 在 Lua 中调用/评估动态字符串的其他方法?
我正在使用具有一些 Lua 实现并在 BACnet 中通信的第三方设备。该文档非常简陋,没有为任何更高级的编程想法提供任何帮助。很简单,“这就是你设置变量的方式......”。所以,我只是想弄清楚,希望大家能提供帮助。
我需要将一长串变量设置为某些值。我有一个用户数据“ME”,有一堆名为 MVXX 的变量(例如 - MV21、MV98、MV56 等)。
(这是 BACnet 的各种背景。) BACnet 中的变量都有 17 个“优先级”,即每个 BACnet 变量实际上是一个由 17 个值组成的列表,优先级 16 是默认值。因此,通常情况下,如果我说ME.MV12 = 23
MV12 的优先级 16 设置为所需的值 23。
但是,我需要将优先级设置为 17。我可以在提供的 Lua 实现中通过说ME.MV12_PV[17] = 23
. 我可以通过索引那个 PV 来设置我想要的任何优先级。(推论——什么是 PV?什么是下划线?我如何获得这些对象?或者它们只是从 Lua 解释为后端 C 中的某个函数?)
话虽如此,我需要使该变量名动态化,以便我可以根据其他一些代码设置我需要设置的任何值。我已经做了几次尝试。
这告诉我 object( MV12_PV[17]
) 不存在:
但这很好用,将优先级 16 设置为 23:
我试图尝试某种我认为称为评估或评估的方法。但是,这只是打印出function
一些随机的 8 位数字:
有什么帮助吗?抱歉,如果我不清楚 - tbh,我远远落后于 8 球,我几乎抓住了稻草。
java - 使用 bacnet4j 发现不同网络中的 BACnet 设备
我正在使用 bacnet4j 库来发现远程 BACnet 设备。在同一个网络中,一切都按预期工作。但我找不到位于不同网络中的 BACnet 控制器设备。
上面的代码片段在同一网络中查找具有给定 remoteId 的远程设备。但它找不到位于不同网络中的设备。这里有什么问题吗?