1

我已经成功地将 S7 1500 PLC 与 SQL-Server 结合使用一段时间了。我设置了这里提到的所有内容:S7SQL-Guide-Stackoverflow 今天我尝试向我的 SQL-Query 添加第二个参数。所以我做了这样的事情:

select Number1,Number2 from MYTABLE WHERE Apple = red and Sky = blue

S7 发送电报,SQL-Server 回复。到现在为止还挺好。

令牌列元数据

我根据我的 wireshark 记录设置了 TokenColumnMetaData 的大小,编译并将更新发送到我的 PLC。现在我不明白的部分:

我期待收到值“12345”所以我再次使用wireshark来看看我应该期待什么: Wireshark 数据

所以我得到的是:39 30 00 00,即 12345,只是字节被反转了——到目前为止没问题,但是当我在 S7 端检查时,我看到了这个:S7-Watchtable

我的输入移动了 1 个字节。我该如何解决这个问题?不幸的是,我对西门子为此应用程序提供的代码没有更深入的了解。

编辑:

typeUseCaseSpecificTokenrow 的截图

typeUseCaseSpecificTokenrow

4

1 回答 1

1

当数据类型包含奇数个字节时,有时会发生奇怪的内存问题。

西门子在偶数内存地址上开始每个元素。因此,如果Length位于地址 0 且Data位于 2-5,则地址 1 可能正在获取用于数据的第一个字节

地址 数据 元素
00 04 长度 0
01 39
02 30 数据 0,字节 0
03 00 数据 0,字节 1
04 00 数据 0,字节 2
05 08 数据 0,字节 3
06 47 长度 1
07 94
08 03 数据 1,字节 0
09 00 数据 1,字节 1
10 00 数据 1,字节 2
11 00 数据 1,字节 3
12 00 长度 2
13 00
14 FD 数据 2,字节 0
15 10 数据 2,字节 1
16 00 数据 2,字节 2
17 C1 数据 2,字节 3
于 2022-01-14T13:56:47.943 回答