SQL数据库在过程层和更高层次的企业网络控制层之间的数据是可以进行交换的。本FAQ的解答了如何配置和使用WinCC(TIA Portal)和WinCC flexible Runtime 作为客户端通过脚本与SQL服务器通信 。WinCC (TIA Portal)/WinCC flexible 一般通过脚本访问 SQL 数据库,除了归档变量和报警信息。为了访问 SQL 数据库,SQL server中必须创建数据库实例。WinCC (TIA Portal)/WinCC flexible PC Runtime 作为 SQL 客户端运行。
WinCC (TIA Portal)/WinCC flexible 一般通过脚本访问 SQL 数据库,除了归档变量和报警信息。为了访问 SQL 数据库,SQL server中必须创建数据库实例。WinCC (TIA Portal)/WinCC flexible PC Runtime 作为 SQL 客户端运行。
理论上,基于 Windows CE 的面板不能访问 SQL 数据库。
必要条件:
SQL server1
Windows 中必须创建 SQL 数据源
WinCC (TIA Portal) 或 WinCC flexible Advanced ES
WinCC (TIA Portal) 或 WinCC flexible PC Runtime
1 SQL server 必须和操作系统相匹配,同时也必须和 WinCC (TIA Portal)相匹配。
注释:
样例只是一个建议的方法,当然,可能也会有其它更好的解决方案。
创建数据源
为了创建一个对 ODBC 数据源的访问,必须首先创建一个数据源。在 Windows 控制面板的“管理工具 > 数据源(ODBC)”中创建数据源。以下的例子中使用的数据源是“Database_1”;连接到 SQL server “WINCCFLEXIBLE”。
图. 01
SQL数据库的管理和使用
以下各节说明如何使用SQL数据库,使用VB脚本的摘录。这些脚本也在本条目的项目下载中。
1. 管理
在 SQL 数据库中可以创建一个或多个不同结构的数据表。
1.1 创建 SQL 数据库:脚本“Create_database”
为防止脚本中万一发生错误需要使用“On Error Resume Next”指令。这样一旦错误发生,程序会自动跳到错误的下一行执行。
为了创建到 SQL 数据库的连接需要使用对象“ADODB.Connection”。“ADODB.Recordset”用于创建、编辑或者删除数据库或者表,例如。
只有知道这个数据源的提供者和名字该数据源才能被打开。到数据源连接的建立需要使用“conn”对象的“Open”方法实现。
如果连接过程中出现超时,会产生以下错误,输出系统错误,脚本立即停止。
通过 SQL 命令“CREATE DATABASE”创建并命名一个新的数据库;这些通过“conn”对象的“Execute( SQL Table )”方法实现。
如果数据库已经存在,则执行相应的创建错误判断程序。“Close”方法用于断开和数据源的连接。
图. 02
SQL 语法:
CREATE DATABASE
1.2 删除 SQL 数据库: 脚本"Delete_database"
理论上,其脚本结构和“Create_database”脚本相同。可以使用 SQL 命令“DROP DATABASE”删除数据库和数据库名称。
图. 03
SQL 语法:
DROP DATABASE
2. 表
在任何一个 SQL 数据库中都可以创建一个具有单独结构的数据表。表01的数据结构创建如下:
表的数据结构 | ||||
列 | 1 | 2 | 3 | 4 |
数据类型 | SMALLINT | Char(30) | SMALLINT | SMALLINT |
表 01 - 表的数据结构
表的数据结构可以以任何方式组合。附件的样例程序使用的就是上面的数据结构。
2.1 创建表: 脚本"Create_new_table"
为了打开数据源中的一个数据源以便连接数据库,脚本中需要下面的两个对象:“ADODB.Connection”用于建立连接和“ADODB.Recordset”用于编辑数据源。
“Open”中的“Initial Catalog”参数用于建立和数据源中特定数据库的连接。“Database_1”,在Windows中创建的数据源,用参数“DSN” 表示。
使用 SQL 语法“CREATE TABLE”创建 SQL 表,以及表的名称和布局(数据结构)。
图. 04
SQL 语法:
CREATE TABLE
注意:
对于“CREATE TABLE”命令还有其它可选的扩展参数。
2.2 复制表:脚本 "Copy_table"
连接访问需要用到对象“ADODB.Connection”和“ADODB.Recordset”。
使用 SQL 命令“SELECT * INTO”和扩展参数“FROM”,可将特定表中的所有数据复制到一个新表中。语法“SELECT *”和命令“SELECT ALL”意义相同,通过“FROM”命令表示在前一个表中的所有数据。目的表通过“INTO”定义。
注意:
SQL 语句“SELECT”可以随意的和其它命令参数组合使用。更多的信息请参考相关文献或者互联网。
图. 05
SQL 语法:
SELECT
注意:
对于 SQL 命令“SELECT”还有其它的命令可以选择组合使用。
2.3 删除表:脚本 "Delete_table"
为了删除表,用户必须连接相应的数据源。使用命令“DROP TABLE”从数据库中删除表及其名称。