刚刚学会在博途中利用VB脚本向SQL数据库写数据,将经验总结为一篇短文供大家讨论,文中包括如何建立SQL数据库及表格,如何写脚本以及如何触发脚本。
1、安装TIA时,SQL Server Management Studio不会自动安装到电脑中,所以需要自己安装,我安装的是“SQL
Server 2016”,事实证明建立表格并写数据都没问题。
2、打开SQL
Server
Management Studio,会出现图1对话框,点击连接到服务器;
图1:
3、鼠标右键点击数据库,选择新建数据库,出现图2对话框,数据库名称写Wincc,所有者为默认,因为数据量比较小,所以初始大小和自动增量没有进行修改,但最大大小需要实际情况进行设置;建好后的数据库如图3;(注:SQL
Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置。通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL
Server磁盘空间耗尽的事情发生。)
图2:
图3:
4、在Wincc数据库中建立表格,右键点击Wincc中“表”,选择“表...”建立表格。在表格中选择列名和数据类型,示例表中建立了3列数据,分别是TTime、TON和CV01,其中TTime为系统时间,由系统自动生成(默认值或绑定一栏写(getdate())),列名和数据类型如图4所示;
图4:
5、建好表格后开始别写VB脚本,在编写脚本之前应先建立内部变量用于程序中中间数据的存储,内部变量见图5;
图5:
6、在博途脚本中建立“DayReport”脚本,脚本类型为“Sub”,脚本程序如下:
Dim objConnection '
Dim strConnectionString '
Dim lngValue '
Dim strSQL '
Dim objCommand '
Dim LocalMinite '
Dim LocalHour '
Dim TON_Last
Dim TON_Now
Dim TON_Value
strConnectionString=
"Provider=SQLOLEDB.1;Integrated
Security=SSPI;Persist Security Info=False;Initial
Catalog=WINCC;Data Source=.\WINCC"
'If
SmartTags("SyncDateAndTime_MCC3_DateAndTime.Value.PLC.DateAndTime.MIN")=25
Then
TON_Last = SmartTags("TON_Last")
TON_Now =
SmartTags("BeltScale_MCC3_BS01_TonHour_TON")
TON_Value = CCur(TON_Now-TON_Last)
strSQL="INSERT INTO [day]
([TON],[CV01]) "
strSQL=strSQL & " VALUES
('"& TON_Value &"','"& TON_Value &"') ;"
Set objConnection=
CreateObject("ADODB.Connection") '
objConnection.ConnectionString=
strConnectionString '
objConnection.Open
'
Set objCommand=
CreateObject("ADODB.Command") '
With objCommand
.ActiveConnection=
objConnection
.CommandText= strSQL
End With
objCommand.Execute
'
Set objCommand= Nothing '
objConnection.Close '
Set objConnection= Nothing
'End If
注:脚本类型如果选Function就会一直报错,尚未找到原因。7、脚本编写完成后还需要触发才能执行,方法是建立1个新的计划任务“day”,调用写好的脚本,设定脚本每分钟执行一次。如图6;
图6:
8:运行后每分钟会生产1条信息,如图7;
图7: