【发布时间】:2022-02-03 23:07:56
【问题描述】:
我已经成功地将 S7 1500 PLC 与 SQL-Server 结合使用一段时间了。 我设置了这里提到的所有内容:S7SQL-Guide-Stackoverflow 今天我尝试在我的 SQL 查询中添加第二个参数。所以我做了这样的事情:
select Number1,Number2 from MYTABLE WHERE Apple = red and Sky = blue
S7 发送电报,SQL-Server 回复。到目前为止一切顺利。
我根据我的 wireshark 记录设置了 TokenColumnMetaData 的大小, 编译并将更新发送到我的 PLC。 现在是我不明白的部分:
我希望收到值“12345” 所以我再次使用wireshark来看看我应该期待什么:
所以我得到的是:39 30 00 00,即 12345,只是字节被颠倒了——到目前为止没问题,但是当我在 S7 端检查时,我看到了这个:
我的输入移动了 1 个字节。 我该如何解决这个问题? 不幸的是,我对西门子为此应用程序提供的代码没有更深入的了解。
编辑:
typeUseCaseSpecificTokenrow 的屏幕截图
【问题讨论】:
-
在添加
Number2bigint 列后是否调整了typeUseCaseSpecificTokenRow结构?似乎它仍然期待int(1 个长度字节+ 4 个数据字节)的行,而不是int和bigint(2 个长度字节+ 12 个数据字节)的行。 -
我试过了,但我的问题没有积极的结果。
-
您能否Edit 您的问题包括“PLC 数据类型”中
typeUseCaseSpecificTokenRow结构的屏幕截图?根据您的 Wireshark 捕获,结果中应该只有一行。从d1 ROW标记008D开始是int值,长度为04和数据39 30 00 00(1234),然后是bigint值,长度为08和数据47 94 03 00 00 00 00 00(60049160)。不过,tokenRows数组数据似乎并不同意这一点,因为它只显示了它认为是int的值。
标签: sql sql-server plc siemens tia-portal