Beckhoff ADS 解码

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

我正在尝试为我在空闲时间做的小项目解码 ADS 数据。我想检索尽可能多的信息。到目前为止我成功解码了大部分符号信息。

我正在尝试解码这个:

[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 129, 24, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 4, 0, 70, 66, 95, 68, 101, 114, 0, 0, 0, 87, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 130, 0, 0, 0, 5, 0, 21, 0, 0, 0, 0, 0, 0, 0, 97, 84, 101, 115, 116, 0, 65, 82, 82, 65, 89, 32, 91, 48, 46, 46, 49, 53, 93, 32, 79, 70, 32, 66, 79, 79, 76, 0, 0, 167, 31, 223, 55, 169, 37, 128, 33, 86, 37, 201, 179, 183, 194, 6, 67, 83, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 0, 0, 0, 33, 0, 0, 0, 130, 16, 0, 0, 9, 0, 4, 0, 0, 0, 0, 0, 0, 0, 98, 83, 112, 101, 99, 105, 102, 105, 99, 0, 66, 79, 79, 76, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 3, 0, 70, 111, 111, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 42, 0, 0, 0, 2, 0, 0, 0, 130, 16, 0, 0, 6, 0, 19, 0, 0, 0, 0, 0, 0, 0, 97, 65, 114, 114, 97, 121, 0, 65, 82, 82, 65, 89, 32, 91, 49, 46, 46, 52, 93, 32, 79, 70, 32, 73, 78, 84, 0, 0, 165, 96, 169, 71, 39, 250, 206, 0, 194, 86, 209, 251, 162, 169, 100, 90, 1, 0, 4, 0, 87, 111, 111, 100, 0, 0, 76, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 65, 0, 0, 0, 130, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 102, 98, 68, 101, 114, 95, 49, 0, 70, 66, 95, 68, 101, 114, 95, 49, 0, 0, 99, 0, 3, 238, 29, 32, 193, 228, 75, 222, 172, 84, 117, 36, 185, 44, 46, 246, 109, 72, 201, 122, 121, 97, 174, 100, 244, 43, 146, 84, 29, 58, 2, 0, 129, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 4, 0, 0, 0, 1, 0, 109, 101, 116, 104, 50, 0, 66, 79, 79, 76, 0, 0, 61, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 6, 0, 4, 0, 0, 0, 98, 73, 110, 112, 117, 116, 0, 66, 79, 79, 76, 0, 0, 195, 1, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0, 1, 0, 0, 0, 4, 0, 4, 0, 0, 0, 6, 0, 77, 69, 84, 72, 0, 85, 73, 78, 84, 0, 0, 61, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 6, 0, 4, 0, 0, 0, 98, 73, 110, 112, 117, 116, 0, 66, 79, 79, 76, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 7, 0, 4, 0, 0, 0, 98, 73, 110, 112, 117, 116, 50, 0, 66, 79, 79, 76, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 7, 0, 4, 0, 0, 0, 98, 73, 110, 112, 117, 116, 51, 0, 66, 79, 79, 76, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 7, 0, 4, 0, 0, 0, 98, 79, 117, 116, 112, 117, 116, 0, 66, 79, 79, 76, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 149, 25, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 8, 0, 4, 0, 0, 0, 98, 79, 117, 116, 112, 117, 116, 50, 0, 66, 79, 79, 76, 0, 0, 74, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 24, 32, 218, 102, 239, 17, 94, 166, 151, 84, 70, 239, 64, 130, 149, 47, 0, 0, 6, 0, 17, 0, 0, 0, 98, 73, 110, 79, 117, 116, 0, 82, 69, 70, 69, 82, 69, 78, 67, 69, 32, 84, 79, 32, 66, 79, 79, 76, 0, 0, 3, 0, 4, 0, 87, 111, 111, 100, 0, 0, 3, 0, 70, 111, 111, 0, 0, 12, 9, 84, 99, 73, 109, 112, 108, 101, 109, 101, 110, 116, 115, 0, 73, 84, 70, 59, 73, 84, 70, 95, 49, 0, 0, 0, 0, 0, 0, 0, 0]

进入(这些实际上是不同的符号,但这就是我手头上的。只是为了显示输入数据和结果):

// Structure of ADS Symbol:
// Metadata size: 4 bytes,
// Group: 4 bytes,
// Offset: 4 bytes,
// Size of the variable: 4 bytes,
// Base type: 4 bytes,
// Flags: 2 bytes,
// Legacy array dim: 2 bytes,
// Name len.: 2 bytes,
// Type name len.: 2 bytes,
// Comment len.: 2 bytes
// Name: Name len. bytes + termination byte(0),
// Type name: Type name len. bytes + termination byte(0),
// Comment: Comment len. bytes + termination byte(0),
// GUID: 4 bytes, 2 bytes, 2 bytes, 2 bytes, 6 bytes,
// Number of attributes: 2 bytes,
// Repeat for each attribute:
// Attribute len.: 1 byte(..=44, after that null termination needs to be found manually),
// Attribute argument len.: 1 byte (assumed as above),
// Attribute: Attribute len. + leftover bytes + termination byte,
// Attribute argument: Attribute argument len. + leftover bytes + termination byte,
// A few unknown bytes! To be investigated.

以及大部分类型信息。我说大多数是因为我没有讨论边缘情况。我最终可以通过暴力破解它,但这似乎很麻烦,我宁愿避免。

所以我的问题是。有没有描述 ADS 符号和类型数据结构的文档?

ads plc twincat twincat-ads twincat-ads-.net
1个回答
0
投票

Beckhoff Infosys 页面上没有明确的信息,但您可以检查 Github 上的代码:

https://github.com/Beckhoff/ADS/blob/master/AdsLib/SymbolAccess.cpp

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