使用 GetLogTimePresent 命令读取采用 KMP 协议的卡姆鲁普 flowIQ 2200 水表

问题描述 投票:0回答:2

最近,我安装了卡姆鲁普 flowIQ 2200 水表。由于我已经在通过红外头读取功率表和通过脉冲计数来读取煤气表,因此我也想读取我的新水表。

此 KMP(卡姆鲁普仪表协议)请求

x80 x3f x10 x01 x00 x44 x4d xc0 x0d
非常适合使用 USB 连接的红外头读取 flowIQ (
x10
) 一个 (
x01
) 寄存器 (
x00 x44
) 和总音量。我得到了正确的 m3 数,该数也显示在仪表显示屏上。

由于仪表在读取后不久就会休眠,因此必须通过将磁铁放置在正确的位置来启动新的读取。我使用微伺服来做到这一点;-) 为了不因多次读取而耗尽电池,我想使用 flowIQ 数据记录器的大量读数。仪表应该允许使用 KMP 命令

GetLogTimePresent

但是,这个要求

x80 x3F xA0 x01 x01 x00 x44 x0C x80 x17 x05 x09 x17 x2D x00 x00 x00 x00 xF1 x0D
不起作用。它应该使用 GetLogTimePresent (
xA0
) 从默认数据记录器 01 (
x01
) 读取一个 (
x01
) 变量 (
x00 x44
),具有 12 个值 (
x0C
) 和最大值。从时间戳(仅作为示例)“09.05.2023 23:45:00”(
x80
) 或更晚开始的 128 条记录的响应缓冲区 (
x17 x05 x09 x17 x2D x00
)。

与成功的单个读数相反,我没有得到有意义的答案,并且仪表以与请求几乎相同的字节进行响应

x80 x3F xA0 x01 x01 x00 x44 x0C x1B x7F x17 x05 x09 x17 x2D x00 x00 x00 x00 xF1 x0D
,这是没有意义的。

我在 Raspberry Pi 4 上使用here的 C 解决方案。因此,计算 XModem CRC16 值、请求/响应字符串的字节填充、连接到 /dev/ttyUSB0 等基本任务已经存在。

知道出了什么问题吗?

communication-protocol
2个回答
0
投票

只是为了结束这个话题。通过使用卡姆鲁普 LogView HCW 软件和 USB 记录器分析与 IR 头之间的 USB 通信,我可以了解读取过去(最多 100)天的总音量值所需的几乎所有字节序列。水表。现在我有了一个高效的设置,其中带有钕磁铁的伺服系统每天激活仪表一次(模拟连接红外头),我的 PHP 和 C 软件读取这些值以进行进一步的使用分析。完成所有 USB 通信分析是一项艰巨的工作。不幸的是,我没有从仪表制造商卡姆鲁普那里获得协议描述。但最终一切都正常了:-)


0
投票

我也想做类似的设置。我有卡姆鲁普眼。是否可以分享一下信息。怎么pm你呢?

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.