将 PLC Siemens S7-1500 连接到 SQL Server 数据库

Pey*_*idi 14 c# sql-server plc tia-portal siemens

连接指南在这里。我跟踪指南并做了很多事情。PLC和SQL服务器连接正常,我已经成功登录SQL。
我可以insert到表update,并执行store procedures

但是当我运行select查询时,我不知道如何检索数据和读取值。

传送门

我使用 TIA PORTAL v16。

PLC:S7 1200西门子

我有一个简单的表,我想简单地读取一个整数,首先是一行!然后扩展我的工作。

这是我的表结构:

CREATE TABLE MyTable(
[id] [int] IDENTITY(1,1) NOT NULL,
[value] [int] NOT NULL,
)
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

这是我的select查询:

SELECT [value]
FROM [dbo].[MyTable]
WHERE id = 12033
Run Code Online (Sandbox Code Playgroud)

预期结果:

20
Run Code Online (Sandbox Code Playgroud)

SQL 镜头

https://support.industry.siemens.com/tf/ww/en/posts/connecting-an-plc-siemens-s7-1500-to-an-sql-server-database/239392/?page=0&pageSize=10 #post939400

更新

我回答了我自己的问题,请注意,西门子最近 (11/20/2020) 发布了直接将 S7-* 系列连接到 Microsoft SQL Server 数据库的文档。所以经过验证的 anwser 是将 PLC 连接到 SQL Server 的经典和正常方式,下一个答案是最新的本机解决方案。玩得开心

Pey*_*idi 5

显着更新!!!

西门子最近(二○二○年十一月二十〇日)公布了一份文件有关连接S7- *系列到Microsoft SQL Server数据库,直接NO中间件样OPC ServersS7netplus包。这意味着您可以像selectinsert通过 PLC 中的内部函数一样运行 SQL 查询。
这是一个更快的本地解决方案。

首先,通过 TiaPortal,我在程序块中创建了一个字符串数组。 sqlcommands 数组

您应该设置如下图所示的连接字符串,Microsoft Sql Server 的 IP 地址是172.16.62.1

在此处输入图片说明

然后我按照西门子发布的这些pdf中的说明制作了一个内置的PLC功能。 设置plc功能

我在预定义的字符串数组中有一堆查询,我通过其索引选择其中一个作为 PLC 函数的输入参数。
然后我将更改下载到 PLC。结果我hello world在 MSSQL Server 中。在此处输入代码 你好,世界 到目前为止,我通过 PLC 本身运行了 SQL Server 查询!
让我们运行另一个查询和最难的一个:select
我说的是最难的,因为select有一堆具有各种数据类型的记录:比如varchar, bool, DateTime

“选择”指令 使用“选择”指令,您可以从数据库表中读取数据并在您的控制器中对它们执行其他操作。下面,我们使用一个示例来展示此指令的工作原理以及您需要为查询进行哪些修改。该示例使用以下查询:

Select * from Mytable
Run Code Online (Sandbox Code Playgroud)

查询的数据存储在数据类型结构“typeUseCaseSpecificData”中的“SqlReceive”数据块中。您必须为每个查询单独修改这些数据类型。您可以按如下方式执行此操作: 1. 启动 Wireshark 记录以查找元数据的数据包长度。2. 运行查询“Select Amount from PLCDATA_2 where Fruit = $'Apple$'”。3. 停止 Wireshark 记录并使用过滤器“TDS”从 SQL 服务器搜索响应帧。4. 选择框架并单击“Token – ColumnMetaData”行。

好的,现在我想select在 sqlqueries 数组中选择查询:

SELECT _barcode FROM mytable where id = 4
Run Code Online (Sandbox Code Playgroud)

选择

我再次激活/停用输入然后我得到我的结果,在这里我通过它的 id 得到“Peyman Majidi”字符串。

选择结果

输出:

'佩曼·马吉迪'

我可以Wireshark通过听tds协议向你展示它是如何工作的。
表格数据流协议 (TDS) 使您能够与 Microsoft SQL 服务器建立直接连接。使用TDS,您可以登录SQL Server 数据库并传输SQL 指令。这样就可以从数据库中读取数据,或者将它们发送到数据库进行存储。

线鲨