如何确定 KNX 设备是否能够发送扩展帧?
How to find out if a KNX device is able to send extended frames?
我目前正在努力添加 KNX 设备的自动检测作为 Apache PLC4X KNX 驱动程序的一部分(目前正在开发 Golang 版本)。我在检查 KNX 设备方面取得了很大进展,但刚刚遇到一种情况,设备声称具有 55 字节的最大 APDU,但在读取一些内存时,它仅响应只能携带 12 字节有效负载的标准帧。
我希望能够提前检测设备是否能够发送超过 12 个字节。但我有点不确定该怎么做。设备描述符是 0701,表示 BIM M112 设备。此设备配置文件的 APDU 大小是否固定为 15?我有多个具有相同配置文件的设备,它们不响应最大 APDU(它们 return 计数为 0,表示“不可用”或“不允许”),所以我默认为 15。这个特定的 ABB然而,设备以 55 响应,但不发送超过 12 个字节(这与最大 APDU 为 15 相同)。
非常感谢帮助。
克里斯
不幸的是,有些旧设备原则上支持 MaxApduLength > 15,但对特定服务有限制,例如内存服务限制为 12 字节。
除了反复试验,没有具体的发现。
在任何情况下,您都必须回退到 15 个字节,因为 PID_MAX_APDU_LENGTH 中报告的值可能完全错误(我见过这样的设备...)。此外,接口和目标设备之间可能存在耦合器,进一步限制了可用的 APDU 长度。
我目前正在努力添加 KNX 设备的自动检测作为 Apache PLC4X KNX 驱动程序的一部分(目前正在开发 Golang 版本)。我在检查 KNX 设备方面取得了很大进展,但刚刚遇到一种情况,设备声称具有 55 字节的最大 APDU,但在读取一些内存时,它仅响应只能携带 12 字节有效负载的标准帧。
我希望能够提前检测设备是否能够发送超过 12 个字节。但我有点不确定该怎么做。设备描述符是 0701,表示 BIM M112 设备。此设备配置文件的 APDU 大小是否固定为 15?我有多个具有相同配置文件的设备,它们不响应最大 APDU(它们 return 计数为 0,表示“不可用”或“不允许”),所以我默认为 15。这个特定的 ABB然而,设备以 55 响应,但不发送超过 12 个字节(这与最大 APDU 为 15 相同)。
非常感谢帮助。
克里斯
不幸的是,有些旧设备原则上支持 MaxApduLength > 15,但对特定服务有限制,例如内存服务限制为 12 字节。
除了反复试验,没有具体的发现。
在任何情况下,您都必须回退到 15 个字节,因为 PID_MAX_APDU_LENGTH 中报告的值可能完全错误(我见过这样的设备...)。此外,接口和目标设备之间可能存在耦合器,进一步限制了可用的 APDU 长度。