MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

WINCC保存数据到Oracle

2024-11-26 17:20 huorong 数据库 5 ℃ 0 评论

Oracle

Oracle是甲骨文公司的一款关系型数据库管理系统。它是一款在数据库领域一直处于领先地位的产品,是目前最流行的关系型数据库。目前制造业的信息化系统,比如MES等有很多采用Oracle来存储数据。现在自动化项目也有很多场景下要求将一些生产数据保存到Oracle数据库。满足这种需求的方法有很多,本文我们主要讨论如何通过上位机WINCC系统将数据保存到Oracle。

在WINCC中,如果需要将部分变量数据保存到Oracle数据库,可以使用VBS脚本来实现。但是Oracle不属于微软产品,所以大家首先需要去官网下载Oracle的ODBC驱动。

需要注意的是,WINCC是32位应用,只能安装上图中的X86,32-bit版本。否则会连接失败。下载后的安装非常简单,首先管理员模式下运行cmd,通过cd切换到驱动文件夹。

然后执行命令odbc_install,参见下图所示。

创建数据库并写入数据

然后我们在ORACLE里面创建一个名为“EVENTLOG”的数据表,参见下图所示。

为了便于演示,我们把WINCC对数据库的操作放到一个按钮事件里面。先拖一个按钮到画面上,在鼠标点击事件中输入下面代码:

Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)                                                                           
On Error Resume Next
    Dim conn
    Dim cmd
    Dim dbName
    Dim SqlString
    Dim valTime
   
    
    dbName = "Driver={Oracle in instantclient_11_2};pwd=sh;uid=SH;dbq=your db server;"
    Set conn=CreateObject("ADODB.Connection")
    ' 打开数据库
    conn.Open dbName


    valTime=Now
    SqlString="INSERT INTO EVENTLOG VALUES ('"& valTime &"','Motor1','出口压力高');"
    Set cmd = CreateObject("ADODB.Command")
    With cmd
      .ActiveConnection = conn
      .CommandTexT = SqlString
    End With
    cmd.Execute


    ' 关闭连接
    conn.Close
 
If Err.Number<>0 Then
  Msgbox Err.Number & Err.Description & Err.Source
  err.clear
End If
End Sub

激活WINCC,点击按钮,就可以看到数据了。

如何查询

通常我们会使用MSFlexGrid来进行查询。但是这种方式使用起来不方便,一方面是样式比较有年代感,其次是需要自己写脚本,另外就是打印和导出也不方便。这里推荐使用我们的通用报表控件。它支持MySQL、SQL Server和Oracle等主流数据库。具体使用方法参见这里:

说说通用报表控件

下图展示了查询效果。

Tags:oracle insert into

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