西门子WinCC flexible的SQL数据库操作
2011-07-25肖振宇
肖振宇
(中色科技股份有限公司,河南 洛阳471039)
西门子WinCC flexible 是一种应用广泛的HMI系统,是操作人员与过程(机器/设备)之间的接口,是操作人员与实际控制单元例如PLC之间的接口,它主要完成以下工作。
① 过程可视化
过程显示在HMI 设备上。 HMI 设备上的画面可根据过程变化动态更新。 这基于过程的变化。
② 操作员对过程的控制
操作员可以通过GUI (图形用户界面)来控制过程。 例如,操作员可以预置控件的参考数值或者启动电机。
③ 显示报警
过程的临界状态会自动触发报警,例如,当超出设定值时。
④ 归档过程值和报警
HMI 系统可以记录报警和过程值。 该功能使您可以记录过程值序列,并检索以前的生产数据。
⑤ 过程值和报警记录
HMI 系统可以输出报警和过程值报表。 例如,您可以在某一轮班结束时打印输出生产数据。
⑥ 过程和设备的参数管理
HMI 系统可以将过程和设备的参数存储在配方中。 例如,可以一次性将这些参数从HMI设备下载到PLC,以便改变产品版本进行生产。
其中对于过程值以及报警记录的归档是WinCC flexible 的重要特色功能之一,但其自带的历史数据功能较为简单,具有一定的局限性,无法很好的满足实际工程中的各种灵活应用,不过在WinCC flexible 中提供了对于运行脚本的支持,为完成各种更加复杂的任务提供了良好的手段。因此可以借助脚本工具,通过功能强大的专业数据库SQL来实现要求更高,运用更灵活的各种应用。要实现WinCC flexible 对SQL数据库的操作需要完成三个工作:SQL数据库自身的设置,建立WinCC flexible和SQL数据库的连接,在WinCC flexible中通过脚本最终实现对SQL数据库的交互操作。现以WindowsXP操作系统、Microsoft SQL Server 2005 数据库和WinCC flexible 2007 为平台进行介绍,以前两步—SQL数据库自身的设置,建立WinCC flexible和SQL数据库的连接—为重点。至于第三步在WinCC flexible中通过脚本最终实现对SQL数据库的交互操作,更加深入的知识可以参考其它各种SQL数据库操作指令的描述及说明,本文仅给出简单实例。
1 SQL数据库自身的设置
首先运行Microsoft SQL Server 2005的管理工具SQL Server Management Studio,服务器选择“计算机名WinCC flexible”,进入SQL数据库管理界面,并通过右键点击“数据库”添加自己的数据库名为“JL”,其中各选项保持默认设置即可,添加完成后结果如图1所示。
在对象资源管理器中点击“安全”展开树状图,通过右键登录名来建立我们需要的用户并设定其权限,其目的是防止其它非法用户对我们的数据进行操作,具体权限可根据各种不同的实际应用需求进行设置。这里我们建立用户“JLUser”,登录方式选择 SQL身份验证,设置并二次确认该用户的登录密码,这个密码在后期WinCC flexible脚本中需要用到,只有两者一致才能够建立起与SQL数据库的连接从而完成对其的操作。默认数据库选择我们建立的“JL”,服务器角色选择“sysadmin”,这里可根据具体实际使用要求进行设置。完成后分别如图2,图3所示。
图1
图2
图3
通过以上操作,我们在SQL数据库系统中建立了自己所需要的数据库,创建了用户,并对其设置了权限。但在该数据库中并没有任何表以及操作,这些将全部通过WinCC flexible的脚本运行系统来实现,这也正是这种方法的灵活性所在,可以最大限度的来满足我们在实际工程中各种复杂的应用。
2 建立WinCC flexible和SQL数据库的连接
我们是通过数据源管理器ODBC来实现WinCC flexible和SQL数据库的连接的。ODBC是开放数据库互连Open Database Connectivity的缩写,是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
首先打开数据源管理器ODBC,其位于“设置 > 控制面板 > 管理工具”。选择最左侧标签栏“用户DSN”,点击添加按钮,选择SQL Sever,并点击完成,如图4所示。
图4
单击完成后,会自动弹出配置窗的第一窗口,在该窗口内主要有三项设置:数据源名称,数据源描述,以及服务器。第一项数据源名称可随意设定,这里设置为winccflexibleJLTEST,需注意的是该名称即是在WinCC flexible脚本编程时所调用的数据源名称,二者必须完全相同。第二项数据源描述则可以完全随意填写,也可不填。第三项服务器是指该数据源所连接的数据库服务器,我们选择本地计算机上的WinCC flexible服务器,即“计算机名WinCC flexible”,注意这里也可以选择网络上的其它计算机,甚至Internet上的计算机,从而实现将过程数据归档记录到异地的专用数据服务器上,如图5所示。
图5
点击下一步,进入SQL Sever 登录验证选项,选择“使用用户输入登录ID和密码的SQL Sever验证”。然后选中下面“连接SQL Sever以获取其它配置选项的默认设置”,同时输入在SQL管理工具中设置的用户名和密码,这样在下面的配置过程中数据源管理器ODBC将自动连接SQL Sever,从中读出其设置,而无需再手动填写,如图6所示。
图6
接下来所有设置窗口均直接点击下一步,直至完成。在最终点击“完成”按钮后,会弹出该数据源的配置列表,经核对无误后可以点击该窗口左下角“测试数据源”按钮,系统将按照刚才的设置来对该数据源自动进行检测,显示检测步骤并给出最终检测的结果,如图7所示。
图7
至此,在数据源管理器ODBC中添加了名为winccflexibleJLTEST的数据源,它指向本地计算机的WinCC flexible 数据库服务器中的名为JL的数据库,当前该数据库为空数据库,其中既没有任何用户表,也没有任何操作,对该数据库的所有操作将在WinCC flexible 的脚本运行系统中完成。
3 WinCC flexible对SQL数据库的脚本操作
由于关于SQL数据库操作指令介绍的文档和资料较多,参考查阅较为方便,这里仅给出一个简单实例进行说明,更加复杂的应用需读者自行学习研究。
实例描述:当轧机速度稳定达到150m/min时自动检查数据库中是否具有名为“参数150”的记录表,如果没有,则在数据库中添加该表,并在表中写入当前卷材的一些相关数据记录。如果数据库中已经存在该表,则在该表中添加当前卷材的一些相关数据记录。
在WinCC flexible中添加并编写脚本如下。
Dim conn, rst ’定义变量conn和rst
Set conn = CreateObject("ADODB.Connection") ’创建一个 Connection 连接的实例
Set rst = CreateObject("ADODB.Recordset") ’创建一个 Recordset 数据集的实例
conn.Open "Provider=MSDASQL;Persist Security Info=False;User ID=JLUser;
pwd= JLUser1000;Data Source=winccflexibleJLTEST"
’使用 Connection 集合的 Open 方法与数据库建立连接,其中参数User ID和pwd的赋值必须和前面建立数据库时设置的用户名以及密码相符,参数Data Source则是在数据源管理器ODBC中建立的数据源的名称
Dim sql ’定义变量 sql
sql="If object_id('参数150') is null " &_
" begin " &_
" CREATE TABLE 参数150 ( 采集时间 datetime , 卷号 CHAR(12) )"&_
" INSERT INTO 参数150 VALUES ( getdate() , '"&SmartTags("触摸屏字符串转换DB.PI_CoilID")&"')"&_
" end " &_
’以上操作检查数据库中如果没有表“参数150”则在数据库中建立该表,并在表中写入数据记录
" Else " &_
" INSERT INTO 参数150 VALUES ( getdate(), '"&SmartTags("触摸屏字符串转换DB.PI_CoilID")&"')"
’以上操作检查数据库中如果已经具有表“参数150”则在其中添加数据记录
Set rst = conn.Execute(sql) ’执行以上对数据库的操作
在脚本编写完成后,只要轧机速度达到150m/min时在WinCC flexible中给其一个触发信号,便可自动在SQL数据库中记录当时料卷的相关数据。