首页 上一页 1 2 3 4 5 下一页 尾页

使用VB或VBS访问WINCC6.0历史数据库(原创:工控网独此一页),建议版主加精,不然我就没动力了 点击:13374 | 回复:85



wincc123

    
  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-22 14:41:00
楼主
   从WINCC6.0开始,就开始采用SQL3000SP3做为WINCC的后台数据了.而这个SQL2000SP3是由SIEMENS为WINCC做了二次开发的,采用了一些独有的技术,一些是我们知道的,一些是我们所不知道的.所以当我们打开SQL管理器和用高级语言访问时,和常规的SQL访问的方法是有一些出入的.即使我们能够很轻易的访问ACCESS,普通的SQL2000的数据库,不见的你就能顺利的访问到WINCC的历史数据.

   官方的资料显示:
   1:WINCC的数据有设计时数据库和运行时数据库,分别放在相关的目录,对于数据使用者而言,我们知道就可以了.设计时数据库我们了解没有什么意义.但运行时数据库至少我们要知道它的名.他的名一般是"CC_工程名_年_月_日_时_分_秒R"的名,这个对于我们使用者而言,是很重要的的,无论你准备以DSN或OLEDB的方式访问数据库,你都需要它.如果你实在不知道它的名,你可以将WINCC激活,然后在'ODBC管理器"或"SQL企业管理器下的"DATABASE"可以看到它,它就蹲在那里.....
   2:运行时库的表的问题.
其实,这个是很多的用户很关心的问题,包括我自己在内.常规的使用过高级语言访问SQL的技术人员都知道,很多的SQL语句,如SELECT ,INSERT INTO等等,都需要指明在某一库的表中对它进行操作.因此,这个表的问题可能就是你访问SQL的拦路虎.
   先告诉大家:WINCC6.0的SQL库操作是不需要表名的,因为他有自己定义的SQL语句.细节一会儿在描述.
其实,WINCC在运行时,根据WINCC的设置,数据归档是以一定时间做为基准,形成数据片段.
大体上有三个用户需要了解的表.
(未完待续)
  



wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-22 16:02:00
1楼
续:
在数据片段下,有三个表是我们所关心的
1:ARCHIVE(用户归档记录)
2:TAGPRESSED(TAGUNPRESSED)(压缩/非压缩变量归档记录)
3:MSARCLONG(报警记录)
事实上,我们在操作数据时,还是并不能直接使用常规的SQL来操作这些表,甚至不允许修改它,MSARCLONG情况好一些,允许插入/修改等.


TAGPRESSED的数据和WINCC内设置的变量管理下的归档是对应的,
MSARCLONG的数据和WINCC内设置的报警记录下的设置是对应的.
ARCHIVE的数据和WINCC内的用户归档数据是对应的.

一般的,当我们使用WINCC制作在线表格和在线趋势使用的都是变量管理器下的归档.
因此,我们打开TAGPRESSED的表,可以看到的一些都是变量记录的内容,通常也是在这里归档了用户的生产数据.因此,我们访问WINCC历史数据库,实际上是访问这里的变量记录

3:访问历史数据库的方法/连接字符/SQL语句
  访问数据库的方法:
A:WINCCOLEDB访问压缩归档,也可以访问非压缩归档
B:MS ADO/OLEDB只能访问非压缩归档
对于这种说法,我只严正了WINCCOLEDB的方法,后者没有测试.

  连接字符:
WINCCOLEDB的连接字符为(本地):
provider=winccoledbprovider.1,catalog=.\wincc,data source=
数据库名,user id=DBA,password=SQL
对于远程连接,因为没有条件测试,所以就不说了,希望有哪位朋友日后通过了测试,到这里告诉一下
待续

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-23 08:39:00
2楼
关于VB访问SQL的例子已经完成测试.如果大家想看看,就顶这个帖子

lostcity.blog.zj.com

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 246回
  • 年度积分:0
  • 历史总积分:350
  • 注册:2005年7月11日
发表于:2006-03-23 10:39:00
3楼
咋就没了呢

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-23 10:55:00
4楼
续:
现在开始讲访问用户归档,过程值归档和消息归档的方法和语法:
1:查询过程值归档和消息归档的连接字符串
SET CON=Createobject("adodb.connection")
con.open
Provider=winccoledbprovider.1;catalog=cc_工程名_年_月_日_时_分_秒R,data source=.\wincc,user id=DBA,password=SQL
说明:按照WINCC规定的连接字符串,创建到数据库的连接,并且打开这个连接.其中,我们经常需要修改的是Catalog的值,这个值根据不同的工程和创建的时间不同,我们可以在ODBC管理器下或SQL的库中看到.

查询过程值归档和用户归档的SQL语句
TAG:R,'变量名1','起始时间','终止时间' where条件
说明:WHERE子句只对用户归档有效,对过程值归档无效.
变量名:这个变量名要和WINCC下的变量管理器的过程值归档名要一致.其格式为:归档名/变量名.
起始时间和终止时间可以用相对时间和绝对时间,一般绝对时间比较容易理解,就是从开始时间到终止时间就好了.例如,查询从2006/3/12 12:20:20秒到2006/3/13/ 12:20:20秒的数据,则应该写成'2006-3-12 12:20:20' '2006-3-13 12:20:20'就好了.
当然拉,也可以用相对时间格式,就是比目前时间的相对值,有个前移后移的问题,很简单的.

这里特别需要注意的是:记录到SQL数据库的时间都是格林威治时间,和中国的东8区有8个小时的时间差,也就是说记录的时间比本机PC时区晚8小时,这一点我们在测试是尤其重要.
因为你是时间不正确,可能数据就没有显示,而导致你怀疑连接/命令/记录的有效性
待续

dingdang0888

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 47回
  • 年度积分:0
  • 历史总积分:154
  • 注册:2005年1月25日
发表于:2006-03-23 11:09:00
5楼
接着传阿

阿胜

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 23回
  • 年度积分:0
  • 历史总积分:1190
  • 注册:2005年2月03日
发表于:2006-03-23 11:16:00
6楼
下面呢

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-23 11:35:00
7楼
怎么传啊?我临时写的,我还要工作的,一天写一点

nickwang

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 17回
  • 年度积分:0
  • 历史总积分:200
  • 注册:2002年9月09日
发表于:2006-03-23 12:37:00
8楼
支持!

山水

  • 精华:4帖
  • 求助:0帖
  • 帖子:128帖 | 2238回
  • 年度积分:0
  • 历史总积分:3675
  • 注册:2004年1月06日
发表于:2006-03-23 12:47:00
9楼
ding

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-25 13:05:00
10楼
续:
访问SQL数据库的方法过程描述.
这和访问普通的数据库的方法大致上是相同,唯一的就是由于WINCC的数据是经过了压缩的.
1:定义连接字符串,就是前面所讲到的.
2:创建ADODB的CONNECTION对象,在VB中直接用CREATEOBJECT(ADODB.CONNECTION)函数,在ASP的VB脚本中,需要使用内置SERVER对象创建CONNECTIONG对象.
3:打开到数据库的连接,使用CONNECTION的OPEN函数
4:创建COMMAND对象,并定义COMMAND对象采用用CMDTEXT方法,表明将要使用命令文本的方式来获取数据记录.
5:创建RECORDSET对象,并用COMMAND对象的返回记录集填充这个记录集.

6:RECORDSET对象的数据就可以被你任意的使用了

pp311

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 256回
  • 年度积分:0
  • 历史总积分:390
  • 注册:2006年3月08日
发表于:2006-03-27 11:03:00
11楼
请求多写些,谢谢

天涯浪子……

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2006年3月29日
发表于:2006-04-18 15:11:00
12楼
很有受益,多谢搂主。

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-04-19 09:11:00
13楼
用于VB连接数据库的例子已经在西门子的深入浅出wincc6一书中已经详细说明了。

yghsky1983

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2005年10月20日
发表于:2006-06-08 14:01:00
14楼
dddddddddddd

cui

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 39回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2002年10月19日
发表于:2006-06-13 21:07:00
15楼
very good

一次又一次

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 70回
  • 年度积分:0
  • 历史总积分:393
  • 注册:2004年1月05日
发表于:2006-07-07 16:06:00
16楼
哈哈,写得还一般,不知道实际情况怎么样

扬过

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2005年6月03日
发表于:2006-08-01 11:57:00
17楼
纸上谈兵!不知道楼主,实现过了吗?

扬过

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2005年6月03日
发表于:2006-08-01 12:10:00
18楼
呵呵!

我是WINCC初学者

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 11回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2006年7月16日
发表于:2006-08-01 15:09:00
19楼
为什么我没有能查出来归档数据呢?(报警归档显示完全正确)

变量归档除了有个归档时间以外,还有一列尖括号显示的内容

下次来截个图让大家看看,给个帮组,谢谢啊

呆板吧

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 220回
  • 年度积分:0
  • 历史总积分:340
  • 注册:2006年4月14日
发表于:2006-08-01 17:00:00
20楼
hao 

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 4 5 下一页 尾页