了解接口上的解码通信

逆向工程 加密 串行通讯 编码 协议
2021-06-17 17:22:14

我目前正在尝试解码比重计的通信。多亏了这个网站上的一个问题,我才能找到描述同一家公司不同比重计通信的PDF 文件我怀疑这两种产品的通信类型相同或相似。

据我所知,我首先需要通过发送一个 10 字节的帧来定义我想要的响应:

在此处输入图片说明

然后请求一个 5 字节帧的响应:

在此处输入图片说明

通过检查附录 1,我为应用程序重置字节选择值“0x00”:

应用重置

但我不知道字节的含义:

  1. C场
  2. 地址
  3. 氯场
  4. 校验和

即使不知道这些字段的含义,我也尝试定义和请求响应,但我很难解释数据,可能是因为我不知道 DIF 和 VIF 列的含义:

在此处输入图片说明

总而言之,我可以通过任何机会获得对这些字段的解释:

  1. C场
  2. 地址
  3. CL场
  4. 校验和
  5. DIF
  6. 维夫
1个回答

您之前问题中的评论指出您的比重计可能使用 M-Bus 或 Meter-Bus 协议,并且您的相关字段都在所述协议 (PDF)文档中进行了彻底解释

C-Field 是控制字段,定义正在执行的功能(上述 PDF 的第 23 页)。它是一个 8 位值,其中最低 4 位确定传输类型(例如,长帧、数据请求等),最高 4 位用作各种操作的控制标志。

地址决定了您正在通话的设备。M-Bus 协议指定了一种主/从设置,其中一个设备可以与同一本地网络上的多个连接设备进行通信。这是必要的,因为它用于计量应用程序,其中单个控制器可能希望能够从大量互连设备查询数据并将数据发送到大量互连设备。在您的情况下,文档使用地址 0xFD 或 253 指定地址在网络层处理(考虑到您通过蓝牙进行通信,这是有道理的)。

CI[sic] 字段是“控制信息”字段;它传达了正在传输的数据类型(上述 PDF 的第 31 页)。您发布的示例使用 0x50 的 CI,这表示应用程序重置。下面的字节指定请求的复位的“类型”,0x00 代表完整的应用层复位。重置时,设备似乎以您发布的图像中指定的相关参数进行响应。

校验和用于验证传输或接收数据的完整性。这些在串行通信协议中是相当标准的,并且通常易于计算。计算 M-Bus 校验和需要将帧中从 C 场开始到传输数据后结束的场的原始值相加(尽管这取决于帧的类型和长度,因此对于短帧,某些场可能不相关)。通过粗略搜索,可以轻松找到该计算以及计算它的代码。

DIF 和 VIF 代表数据信息字段和值信息字段。DIF 告诉您获得的数据类型(因此从您发布的 Diehl PDF 中,0xC 对应于体积,0xB 对应于流速等)。VIF 提供单位和乘数,以便您可以了解特定参数的单位(例如,升、m 3等)

我建议你看一下那个 PDF,因为它对协议的解释非常透彻,并且直接来自协议本身的来源。