利用ODBC访问WINCC的历史数据库 点击:1665 | 回复:8



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-12-05 11:02:00
楼主
     下面的方法是针对wincc5.x版本,对于wincc6.x版本和下面的描述有所不同,因为使用数据库变为sqlsever。但是原理和方法是一致的。大家也可以参照“wincc的n个经典问题解答之一”中第5个问题解答来实现。

     WINCC作为一个工控软件,有着工控软件的一系列特征:能显示实时数据,历史数据,生成实时数据曲线与历史数据曲线,并能生成报表。然而WINCC与其它的工控软件包有不同的地方:它的数据是保存在标准的及功能强大的Sybase SQL Anywhere数据库中,所以,我们可以像访问一般的数据库一样,通过ODBC直接访问WINCC的历史数据库。

一、      通过Sybase Central 4.0访问显示数据
    Wincc 在安装时就把Sysbase数据引擎与Sybase Central 4.0一同安装到系统中,你可以在Program FilesSybaseShared   中找到Sybase Central 4.0   ,你可在在其目录下java中发现  scjview.exe,该程序功能相当于SQL server 的企业管理器。你可以通过其查看你在WinCC中的归档数据。

使用方法:

1) 运行WINCC,这时WINCC会在ODBC中添加两条数据源:

CC_FY_02-10-16_10:40:18

CC_FY_02-10-16_10:40:18R

其中CC_FY_02-10-16_10:40:18R  是可以通过  Sybase Central 4.0  及别的一些工具不用用户名与密码读取的。这就是我们WinCC的历史数据库。

  注意:这两条ODBC名不是一成不变的,它是结构如下

     CC_FY_02-10-16_10:40:18R

CC:     固有的,指明是WinCC生成的ODBC。

FY :    项目名,这是我这个WinCC项目名称

02-10-16:最后一次修改的日期。

10:40:18:最后一次修改的时间。

R:      表示是运行库。

2)、运行scjview.exe,点击Adaptive Server AnyWhere 7 按右键,选择Connect。将会弹出Connect配置界面。

    在Identification的页面,选中ODBC SOURCE NAME 点BROWSE则会列出所有对Sybase数据引擎的ODBC名,选择CC_FY_02-10-16_10:40:18R,点击“OK“、“OK“即可。

这时在Adaptive Server AnyWhere 7下面会出现你的计算机名,并已连通了你的WINCC历史数据库。

好了,我们现在可以查看WinCC的历史数据了。

展开:Adaptive Server AnyWhere 7(DBA)

   展开:TABLE

  我们现在可以看到数据库的表名与表结构了:

  表名:PDE#HQZ#GAS_PRE   组成方式如下

   PDE:固有

 HQZ:归档名称

   GAS_PRE:变量名。

表结构:有三个字段:T, V, F  

T:时间

V:值

F:标志

    由于没有可靠的资料可查,其F的名值表示的含义就不得而知,不过,在我的使用中,我将F值8392705作为一个合法值,在WINCC的处理中没有出过错,但别的FLAG值的含义,只能问西门子公司了。

二、      利用VB编写程序访问WINCC历史数据库。
    上面已明确描述了WINCC的历史数据库的结构组成与表结构,那么我们就可以通过编程访问WINCC的历史数据库。如其它通过ODBC访问的数据一样。如下面的小例子

在VB中,先引用ADO组件。并声明ADO变量。

Private cn As ADODB.Connection

Private rs As ADODB.Recordset

Const dsn = “CC_FY_02-10-16_10:40:18R”

Private sub insertData(nowValue as double)

Dim nowtime as string 

Nowtime =now

cn.Open dsn, "", ""

sqlstr=” insert into PDE#HQZ#GAS_PRE(T,V,F) Values(‘”+ Nowtime +”’,”+ nowValue +”, 8392705) ”

cn.Execute sqlstr

cn.close

End sub

 

本程序中的子程序只处理了数据插入,其它读出就更为简单,与其它的ADO访问是一模一样的,这里就不多说了。

 

三、      结语
    通过ODBC访问WINCC的历史数据,给我们提供了更多了解决办法,特别是在企业信息化平台上使用非实时数据方面,可以人为给WINCC添加正确的历史数据,使WINCC的功能更为强大。

    由于ODBC名与项目的修改时间有关,所以在项目频繁变化时,请不要使用这个功能。

    WinCC在启动时自动添加ODBC名,在关闭时自动删除,所以,在WINCC关闭后,不能再通过ODBC访问ODBC。



shibaoyou

  • 精华:1帖
  • 求助:0帖
  • 帖子:97帖 | 346回
  • 年度积分:0
  • 历史总积分:633
  • 注册:2005年11月27日
发表于:2006-03-21 20:01:00
1楼
hao

ado

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2005年3月22日
发表于:2006-03-26 15:36:00
2楼
真的不错

Dengjt_jg

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2005年12月30日
发表于:2006-11-13 09:59:00
3楼
能访问实时数据吗

CONSATANT

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 137回
  • 年度积分:0
  • 历史总积分:185
  • 注册:2003年11月13日
发表于:2006-11-13 10:45:00
4楼
已经可以实时监控了,还访问数据库干吗呢

Dengjt_jg

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2005年12月30日
发表于:2006-11-13 13:43:00
5楼
我要的是它实时数据库中的数据给其他的系统用

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-11-13 20:00:00
6楼
老大,5.1的数据库基本不大用了,6.0的数据库和5.1的有很大的差别

bushiba

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 16回
  • 年度积分:0
  • 历史总积分:86
  • 注册:2006年5月09日
发表于:2006-11-14 17:29:00
7楼
LS的,看看这是哪个年代的帖子吧

hmm2lmm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2009年4月13日
发表于:2009-04-15 17:54:22
8楼

WinCC/PLC 学习交流高级群 QQ群号:80542773 大家一起学习,一起进步!希望高手加入!


热门招聘
相关主题

官方公众号

智造工程师