PLC S7-1500 SQL-连接 - 接收到的数据移位 1 个字节 -- 为什么?
PLC S7-1500 SQL-Connection - received data shifted by 1 byte --why?
我已经成功地将 S7 1500 PLC 与 SQL-Server 结合使用了一段时间。
我像这里提到的那样设置一切:
今天我尝试向 SQL-Query 添加第二个参数。所以我做了这样的事情:
select Number1,Number2 from MYTABLE WHERE Apple = red and Sky = blue
S7 发送报文,SQL-服务器回复。到目前为止一切顺利。
我根据我的wireshark记录设置了TokenColumnMetaData的大小,
编译并将更新发送到我的 PLC。
现在我不明白的部分:
我希望收到值“12345”
所以我再次使用 wireshark 来查看我应该期待的内容:
所以我得到的是:39 30 00 00,也就是 12345,只是字节被颠倒了——到目前为止没问题,但是当我检查 S7 端时,我看到了这个:
我的输入被移动了 1 个字节。
我该如何解决这个问题?
不幸的是,我对西门子为此应用程序提供的代码没有更深入的了解。
编辑:
UseCaseSpecificTokenrow 类型的屏幕截图
当数据类型包含奇数个字节时,有时会发生奇怪的内存问题。
Siemens 在偶数内存地址上启动每个元素。因此,如果 Length
位于地址 0 而 Data
位于 2-5,则地址 1 可能正在获取用于数据
的第一个字节
Address
Data
Element
00
04
Length 0
01
39
02
30
Data 0, byte 0
03
00
Data 0, byte 1
04
00
Data 0, byte 2
05
08
Data 0, byte 3
06
47
Length 1
07
94
08
03
Data 1, byte 0
09
00
Data 1, byte 1
10
00
Data 1, byte 2
11
00
Data 1, byte 3
12
00
Length 2
13
00
14
FD
Data 2, byte 0
15
10
Data 2, byte 1
16
00
Data 2, byte 2
17
C1
Data 2, byte 3
我已经成功地将 S7 1500 PLC 与 SQL-Server 结合使用了一段时间。
我像这里提到的那样设置一切:
select Number1,Number2 from MYTABLE WHERE Apple = red and Sky = blue
S7 发送报文,SQL-服务器回复。到目前为止一切顺利。
我根据我的wireshark记录设置了TokenColumnMetaData的大小, 编译并将更新发送到我的 PLC。 现在我不明白的部分:
我希望收到值“12345”
所以我再次使用 wireshark 来查看我应该期待的内容:
所以我得到的是:39 30 00 00,也就是 12345,只是字节被颠倒了——到目前为止没问题,但是当我检查 S7 端时,我看到了这个:
我的输入被移动了 1 个字节。 我该如何解决这个问题? 不幸的是,我对西门子为此应用程序提供的代码没有更深入的了解。
编辑:
UseCaseSpecificTokenrow 类型的屏幕截图
当数据类型包含奇数个字节时,有时会发生奇怪的内存问题。
Siemens 在偶数内存地址上启动每个元素。因此,如果 Length
位于地址 0 而 Data
位于 2-5,则地址 1 可能正在获取用于数据
Address | Data | Element |
---|---|---|
00 | 04 | Length 0 |
01 | 39 | |
02 | 30 | Data 0, byte 0 |
03 | 00 | Data 0, byte 1 |
04 | 00 | Data 0, byte 2 |
05 | 08 | Data 0, byte 3 |
06 | 47 | Length 1 |
07 | 94 | |
08 | 03 | Data 1, byte 0 |
09 | 00 | Data 1, byte 1 |
10 | 00 | Data 1, byte 2 |
11 | 00 | Data 1, byte 3 |
12 | 00 | Length 2 |
13 | 00 | |
14 | FD | Data 2, byte 0 |
15 | 10 | Data 2, byte 1 |
16 | 00 | Data 2, byte 2 |
17 | C1 | Data 2, byte 3 |