MySQL
MySQL作为一款老牌的开源数据库,在信息化系统中使用非常广泛。现在也有很多场景下要求将一些生产数据保存到MySQL数据库。满足这种需求的方法有很多,本文我们主要讨论如何通过上位机WINCC系统将数据保存到MySQL。
在WINCC中,如果需要将部分变量数据保存到MySQL数据库,可以使用VBS脚本来实现。但是MySQL不属于微软产品,所以大家首先需要去官网下载MySQL的ODBC驱动。
需要注意的是,WINCC是32位应用,只能安装上图中的X86,32-bit版本。否则会连接失败。
创建数据库
然后我们在MySQL里面创建一个数据库,名为“Test”,再创建一个名为“eventlog”的数据表,参见下图所示。
WINCC脚本
为了便于演示,我们把WINCC对数据库的操作放到一个按钮事件里面。先拖一个按钮到画面上,在鼠标点击事件中输入下面代码:
On Error Resume Next
Dim dbConnection
Dim dbConnectionString
Dim dbSQL
Dim dbCommand
'************************************************************
'这里是需要写入数据库的'
'************************************************************
Dim val1,val2
Set val1=HMIRuntime.Tags("Tag1")
Set val2=HMIRuntime.Tags("Tag2")
val1.Read
val2.Read
Dim valTime,v1,v2
valTime=Now
v1=val1.Value
v2=val2.Value
dbSQL = "INSERT INTO EventLog VALUES (' " & valTime & " ',' " & val2.Name & " ','停止设备一 ');"
dbConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=Huangwei123@"
Set dbConnection = CreateObject("ADODB.Connection")
dbConnection.ConnectionString = dbConnectionString
dbConnection.Open
Set dbCommand = CreateObject("ADODB.Command")
With dbCommand
.ActiveConnection = dbConnection
.CommandTexT = dbSQL
End With
dbCommand.Execute
Set dbCommand = Nothing
dbConnection.Close
Set dbConnection = Nothing
If Err.Number<>0 Then
Err.Clear
End If
激活WINCC,点击按钮,就可以看到数据了。
如何查询数据
通常我们会使用MSFlexGrid来进行查询。但是这种方式使用起来不方便,一方面是样式比较有年代感,其次是需要自己写脚本,另外就是打印和导出也不方便。这里推荐使用我们的通用报表控件。它支持MySQL、SQL Server和Oracle等主流数据库。具体使用方法参见这里:
说说通用报表控件
下图展示了查询效果。