连接指南在这里。我会跟踪指南并做很多事情。PLC和SQL Server之间的连接正常,我已成功登录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]
这是我的select
查询:
SELECT [value]
FROM [dbo].[MyTable]
WHERE id = 12033
预期结果:
20
我回答了我自己的问题,请注意,西门子最近(2020年11月20日)发布了有关直接将S7- *系列连接到Microsoft SQL Server数据库的文档。因此,经过验证的解决方案是将PLC连接到SQL Server的经典且正常的方法,下一个答案是最新的本机解决方案。玩得开心
西门子最近(二○二○年十一月二十○日)公布了一份文件有关连接S7- *系列到Microsoft SQL Server数据库,直接与NO中间件样OPC Servers
或S7netplus
包。这意味着你可以运行SQL查询,如select
与insert
通过在PLC的内部函数。
这是一个更快的本地解决方案。
首先,通过TiaPortal,我在Program块中创建了一个字符串数组。
你应该如下图所示设置连接字符串,Microsoft Sql Server的IP地址为172.16.62.1
:
然后,我按照Simense发行的这些pdf中的说明制作了内置的PLC功能。
我在预定义的字符串数组中有一堆查询,我通过其索引选择其中一个作为PLC函数的输入参数。
然后我将更改下载到PLC。结果,我hello world
在MSSQL Server中。在此输入代码
到目前为止我跑由PLC本身就是一个SQL Server查询!
让我们运行另一个查询,也是最困难的查询:select
。
我说最难的,因为select
有一堆的各种数据类型的记录:喜欢varchar
,bool
,DateTime
。
“选择”指令使用“选择”指令,你可以从数据库表中读取数据并在控制器中对其执行其他操作。下面,我们使用一个示例来显示此指令的工作方式以及你需要对查询进行哪些修改。该示例使用以下查询:
Select * from Mytable
查询的数据存储在数据类型结构“ typeUseCaseSpecificData”中的“ SqlReceive”数据块中。你必须为每个查询分别修改这些数据类型。你可以按照以下步骤进行操作:1.启动Wireshark记录以查找元数据的数据包长度。2.运行查询“从PLCDATA_2选择其中水果= $'Apple $'的金额”。3.停止Wireshark记录,并使用过滤器“ TDS”从SQL Server搜索响应帧。4.选择框架,然后单击“ Token – ColumnMetaData”行。
好的,现在我想select
在sqlqueries数组中选择查询:
SELECT _barcode FROM mytable where id = 4
再次,我激活/停用输入,然后得到结果,在这里,通过其ID获得“ Peyman Majidi”字符串。
输出:
佩曼·马吉迪(Peyman Majidi)
我可以Wireshark
通过听tds
协议来告诉你它是如何工作的。
表格数据流协议(TDS)使你能够与Microsoft SQL Server建立直接连接。使用TDS,你可以登录到SQL Server数据库并传输SQL指令。这样,可以从数据库读取数据,或将其发送到数据库进行存储。