桓楠百科网

编程知识、经典语录与百科知识分享平台

WINCC保存数据到MySQL(wincc保存数据时发生错误)

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等主流数据库。具体使用方法参见这里:

说说通用报表控件

下图展示了查询效果。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言