|
使用VB或VBS訪問(wèn)WINCC6.0歷史數(shù)據(jù)庫(kù)
使用VB或VBS訪問(wèn)WINCC6.0歷史數(shù)據(jù)庫(kù)
使用VB或VBS訪問(wèn)WINCC6.0歷史數(shù)據(jù)庫(kù)
從WINCC6.0開(kāi)始,就開(kāi)始采用SQL3000SP3做為WINCC的后臺(tái)數(shù)據(jù)了.而這個(gè)SQL2000SP3是由SIEMENS為WINCC做了二
次開(kāi)發(fā)的,采用了一些獨(dú)有的技術(shù),一些是我們知道的,一些是我們所不知道的.所以當(dāng)我們打開(kāi)SQL管理器和用高級(jí)語(yǔ)言訪問(wèn)時(shí),和常規(guī)的SQL訪問(wèn)的方法是
有一些出入的.即使我們能夠很輕易的訪問(wèn)ACCESS,普通的SQL2000的數(shù)據(jù)庫(kù),不見(jiàn)的你就能順利的訪問(wèn)到WINCC的歷史數(shù)據(jù).
官方的資料顯示:
1:WINCC的數(shù)據(jù)有設(shè)計(jì)時(shí)數(shù)據(jù)庫(kù)和運(yùn)行時(shí)數(shù)據(jù)庫(kù),分別放在相關(guān)的目錄,對(duì)于數(shù)據(jù)使用者而言,我們知道就可以了.設(shè)計(jì)時(shí)數(shù)據(jù)庫(kù)我們了解沒(méi)有什么意義.但
運(yùn)行時(shí)數(shù)據(jù)庫(kù)至少我們要知道它的名.他的名一般是"CC_工程名_年_月_日_時(shí)_分_秒R"的名,這個(gè)對(duì)于我們使用者而言,是很重要的的,無(wú)論你準(zhǔn)備以
DSN或OLEDB的方式訪問(wèn)數(shù)據(jù)庫(kù),你都需要它.如果你實(shí)在不知道它的名,你可以將WINCC激活,然后在'ODBC管理器"或"SQL企業(yè)管理器下
的"DATABASE"可以看到它,它就蹲在那里.....
2:運(yùn)行時(shí)庫(kù)的表的問(wèn)題.
其實(shí),這個(gè)是很多的用戶很關(guān)心的問(wèn)題,包括我自己在內(nèi).常規(guī)的使用過(guò)高級(jí)語(yǔ)言訪問(wèn)SQL的技術(shù)人員都知道,很多的SQL語(yǔ)句,如SELECT
,INSERT INTO等等,都需要指明在某一庫(kù)的表中對(duì)它進(jìn)行操作.因此,這個(gè)表的問(wèn)題可能就是你訪問(wèn)SQL的攔路虎.
先告訴大家:WINCC6.0的SQL庫(kù)操作是不需要表名的,因?yàn)樗凶约憾x的SQL語(yǔ)句.細(xì)節(jié)一會(huì)兒在描述.
其實(shí),WINCC在運(yùn)行時(shí),根據(jù)WINCC的設(shè)置,數(shù)據(jù)歸檔是以一定時(shí)間做為基準(zhǔn),形成數(shù)據(jù)片段.
大體上有三個(gè)用戶需要了解的表.
在數(shù)據(jù)片段下,有三個(gè)表是我們所關(guān)心的
1:ARCHIVE(用戶歸檔記錄)
2:TAGPRESSED(TAGUNPRESSED)(壓縮/非壓縮變量歸檔記錄)
3:MSARCLONG(報(bào)警記錄)
事實(shí)上,我們?cè)诓僮鲾?shù)據(jù)時(shí),還是并不能直接使用常規(guī)的SQL來(lái)操作這些表,甚至不允許修改它,MSARCLONG情況好一些,允許插入/修改等.
TAGPRESSED的數(shù)據(jù)和WINCC內(nèi)設(shè)置的變量管理下的歸檔是對(duì)應(yīng)的,
MSARCLONG的數(shù)據(jù)和WINCC內(nèi)設(shè)置的報(bào)警記錄下的設(shè)置是對(duì)應(yīng)的.
ARCHIVE的數(shù)據(jù)和WINCC內(nèi)的用戶歸檔數(shù)據(jù)是對(duì)應(yīng)的.
一般的,當(dāng)我們使用WINCC制作在線表格和在線趨勢(shì)使用的都是變量管理器下的歸檔.
因此,我們打開(kāi)TAGPRESSED的表,可以看到的一些都是變量記錄的內(nèi)容,通常也是在這里歸檔了用戶的生產(chǎn)數(shù)據(jù).因此,我們?cè)L問(wèn)WINCC歷史數(shù)據(jù)庫(kù),實(shí)際上是訪問(wèn)這里的變量記錄
3:訪問(wèn)歷史數(shù)據(jù)庫(kù)的方法/連接字符/SQL語(yǔ)句
訪問(wèn)數(shù)據(jù)庫(kù)的方法:
A:WINCCOLEDB訪問(wèn)壓縮歸檔,也可以訪問(wèn)非壓縮歸檔
B:MS ADO/OLEDB只能訪問(wèn)非壓縮歸檔
對(duì)于這種說(shuō)法,我只嚴(yán)正了WINCCOLEDB的方法,后者沒(méi)有測(cè)試.
連接字符:
WINCCOLEDB的連接字符為(本地):
provider=winccoledbprovider.1,catalog=.\wincc,data source=
數(shù)據(jù)庫(kù)名,user id=DBA,password=SQL
對(duì)于遠(yuǎn)程連接,因?yàn)闆](méi)有條件測(cè)試,所以就不說(shuō)了,希望有哪位朋友日后通過(guò)了測(cè)試,到這里告訴一下
現(xiàn)在開(kāi)始講訪問(wèn)用戶歸檔,過(guò)程值歸檔和消息歸檔的方法和語(yǔ)法:
1:查詢過(guò)程值歸檔和消息歸檔的連接字符串
SET CON=Createobject("adodb.connection")
con.open
Provider=winccoledbprovider.1;catalog=cc_工程名_年_月_日_時(shí)_分_秒R,data
source=.\wincc,user id=DBA,password=SQL
說(shuō)明:按照WINCC規(guī)定的連接字符串,創(chuàng)建到數(shù)據(jù)庫(kù)的連接,并且打開(kāi)這個(gè)連接.其中,我們經(jīng)常需要修改的是Catalog的值,這個(gè)值根據(jù)不同的工程和創(chuàng)建的時(shí)間不同,我們可以在ODBC管理器下或SQL的庫(kù)中看到.
查詢過(guò)程值歸檔和用戶歸檔的SQL語(yǔ)句
TAG:R,'變量名1','起始時(shí)間','終止時(shí)間' where條件
說(shuō)明:WHERE子句只對(duì)用戶歸檔有效,對(duì)過(guò)程值歸檔無(wú)效.
變量名:這個(gè)變量名要和WINCC下的變量管理器的過(guò)程值歸檔名要一致.其格式為:歸檔名/變量名.
起始時(shí)間和終止時(shí)間可以用相對(duì)時(shí)間和絕對(duì)時(shí)間,一般絕對(duì)時(shí)間比較容易理解,就是從開(kāi)始時(shí)間到終止時(shí)間就好了.例如,查詢從2006/3/12
12:20:20秒到2006/3/13/ 12:20:20秒的數(shù)據(jù),則應(yīng)該寫成'2006-3-12 12:20:20'
'2006-3-13 12:20:20'就好了.
當(dāng)然拉,也可以用相對(duì)時(shí)間格式,就是比目前時(shí)間的相對(duì)值,有個(gè)前移后移的問(wèn)題,很簡(jiǎn)單的.
這里特別需要注意的是:記錄到SQL數(shù)據(jù)庫(kù)的時(shí)間都是格林威治時(shí)間,和中國(guó)的東8區(qū)有8?jìng)€(gè)小時(shí)的時(shí)間差,也就是說(shuō)記錄的時(shí)間比本機(jī)PC時(shí)區(qū)晚8小時(shí),這一點(diǎn)我們?cè)跍y(cè)試是尤其重要.
因?yàn)槟闶菚r(shí)間不正確,可能數(shù)據(jù)就沒(méi)有顯示,而導(dǎo)致你懷疑連接/命令/記錄的有效性
訪問(wèn)SQL數(shù)據(jù)庫(kù)的方法過(guò)程描述.
這和訪問(wèn)普通的數(shù)據(jù)庫(kù)的方法大致上是相同,唯一的就是由于WINCC的數(shù)據(jù)是經(jīng)過(guò)了壓縮的.
1:定義連接字符串,就是前面所講到的.
2:創(chuàng)建ADODB的CONNECTION對(duì)象,在VB中直接用CREATEOBJECT(ADODB.CONNECTION)函數(shù),在ASP的VB腳本中,需要使用內(nèi)置SERVER對(duì)象創(chuàng)建CONNECTIONG對(duì)象.
3:打開(kāi)到數(shù)據(jù)庫(kù)的連接,使用CONNECTION的OPEN函數(shù)
4:創(chuàng)建COMMAND對(duì)象,并定義COMMAND對(duì)象采用用CMDTEXT方法,表明將要使用命令文本的方式來(lái)獲取數(shù)據(jù)記錄.
5:創(chuàng)建RECORDSET對(duì)象,并用COMMAND對(duì)象的返回記錄集填充這個(gè)記錄集.
6:RECORDSET對(duì)象的數(shù)據(jù)就可以被你任意的使用了 |
|