楊少霞,李蒙蒙,唐海林,游曉航,何宏宏
(1.北京機械工業(yè)自動化研究所 自控中心,北京 100120;2.北京機械工業(yè)自動化研究所 機器人中心,北京 100102)
關于WinCC與Oracle連接以及數(shù)據(jù)交互的研究與應用
楊少霞1,李蒙蒙1,唐海林1,游曉航1,何宏宏2
(1.北京機械工業(yè)自動化研究所 自控中心,北京 100120;2.北京機械工業(yè)自動化研究所 機器人中心,北京 100102)
介紹了西門子監(jiān)控軟件WinCC與Oracle數(shù)據(jù)庫連接以及數(shù)據(jù)交互的實現(xiàn),軟件平臺和結構特點,特別是ODBC數(shù)據(jù)源的建立和使用,將生產(chǎn)管理層與現(xiàn)場設備層安全可靠地連接起來。
Oracle;數(shù)據(jù)庫;WinCC;ODBC
上海某鋼廠原料輸入系統(tǒng)大修改造,需要從L2系統(tǒng)接收任務數(shù)據(jù),存儲在Oracle數(shù)據(jù)庫中,WinCC監(jiān)控系統(tǒng)調用該任務數(shù)據(jù),在監(jiān)控系統(tǒng)中顯示,并下發(fā)到PLC控制系統(tǒng);同時WinCC從PLC采集的數(shù)據(jù),需要存儲Oracle數(shù)據(jù)庫中,以備報表查詢。如何使用ODBC數(shù)據(jù)源將Oracle 中存儲的數(shù)據(jù)讀寫到PLC 中,將是本篇研究的重點。
開放數(shù)據(jù)庫連接(Open Database Connectivity,ODBC)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關數(shù)據(jù)庫的一個組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標準API(應用程序編程接口)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。開放數(shù)據(jù)庫互連(ODBC)是Microsoft提出的數(shù)據(jù)庫訪問接口標準。開放數(shù)據(jù)庫互連定義了訪問數(shù)據(jù)庫API的一個規(guī)范,這些API獨立于不同廠商的DBMS,也獨立于具體的編程語言。
WinCC想要訪問Oracle數(shù)據(jù)庫,必須通過ODBC管理器注冊一個ODBC數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的位置、類型及Oracle ODBC驅動程序等信息,建立起ODBC與Oracle數(shù)據(jù)庫的聯(lián)系。這樣,只要WinCC將數(shù)據(jù)源名提供給ODBC,ODBC就能建立起與數(shù)據(jù)庫的連接。因此就可以實現(xiàn)通過ODBC將數(shù)據(jù)庫中的數(shù)據(jù)讀取到WinCC和PLC中的目的。
在數(shù)據(jù)庫服務器Win server 2012上安裝數(shù)據(jù)庫軟件Oracle 11g 64位服務器端和專門面向Oracle數(shù)據(jù)庫存儲的程序單元的集成開發(fā)環(huán)境PLSQL Developer v10。在需要訪問數(shù)據(jù)庫的本地計算機,安裝西門子的WinCC 7.3 sp1外,還需要安裝Oracle客戶端oracle 10g 32位,用以在本機配置ODBC數(shù)據(jù)源管理器。系統(tǒng)軟硬件開發(fā)環(huán)境如表1所示。

表1 系統(tǒng)軟硬件組成
1)配置Oracle本地服務名
在oracle客戶端配置好與數(shù)據(jù)庫服務器的本地連接。在D:Oracleproduct10.1.0Client_1NETWORK ADMIN nsnames.ora文件中增加如下配置即可:


2)建立ODBC數(shù)據(jù)源
在32位操作系統(tǒng)下建立ODBC數(shù)據(jù)源時,找到控制面板管理工具“數(shù)據(jù)源(ODBC)”,雙擊,彈出窗口ODBC數(shù)據(jù)源管理器,在“系統(tǒng)DSN”中單擊“添加”,出現(xiàn)驅動程序選擇窗口,選擇Microsoft ODBC for Oracle,此時彈出數(shù)據(jù)源設置對話框。填寫相應參數(shù),包括數(shù)據(jù)源名、用戶名、端口號和全局數(shù)據(jù)庫名。
本文客戶端是win7 64位旗艦版的操作系統(tǒng),依次打開“控制面板 ->系統(tǒng)安全 ->管理工具 ->數(shù)據(jù)源(ODBC) ->用戶DNS/系統(tǒng)DNS ->添加”發(fā)現(xiàn)已安裝的SQL Server,MySQL有相應驅動,但沒有Oracle驅動。所以不能用控制面板里的ODBC數(shù)據(jù)源進行配置,要運行c:windowssysWOW64odbcad32.exe進行ODBC數(shù)據(jù)源建立。

圖1 ODBC數(shù)據(jù)源管理器界面
點擊“添加”按鈕,顯示如圖2所示界面。

圖2 添加數(shù)據(jù)源界面
在如上界面中,驅動程序列表中,根據(jù)本機環(huán)境不同,有可能會出現(xiàn)兩個Oracle的數(shù)據(jù)源驅動程序,要選擇Microsoft ODBC for Oracle,在如下操作界面輸入相應的連接參數(shù):
數(shù)據(jù)源名稱:可自定義,用于在編程代碼中使用。
用戶名稱:需要和數(shù)據(jù)庫的管理員取得。
服務器:之前oracle客戶端配置的服務名ORCL_BG。

圖3 參數(shù)輸入
3)應用Excel測試Oracle的ODBC數(shù)據(jù)源創(chuàng)建是否成功
打開Excel 2010,單擊“數(shù)據(jù)”“自其他來源”“來自數(shù)據(jù)連接向導”,出現(xiàn)“選擇數(shù)據(jù)源”對話框,選擇ODBC DSN,點擊下一步,然后選擇配置好的數(shù)據(jù)源ORCL_BG,點擊下一步,輸入用戶名對應的密碼(用戶名為bguser,密碼為bguser),測試連接是否成功。成功后,選擇表格對話框,選擇表CODE_ COMPANY,點擊完成,將表CODE_COMPANY中的數(shù)據(jù)讀取到Excel中。本部分測試工作完成后,則可以專心WinCC腳本程序的開發(fā)工作了。
ODBC數(shù)據(jù)源定義完成后,在WinCC需要點擊的按鈕觸發(fā)腳本中編寫VBS腳本程序進行測試:


再次重申本文客戶端是Win7 64位操作系統(tǒng),而我們的Oracle客戶端使用的是Oracle 10g 32位的安裝軟件,所以要特別注意WinCC 7.3軟件的安裝路徑,默認安裝在Program Files(x86)文件夾下,此時使用建立好的ODBC數(shù)據(jù)源,在WinCC中通過VBS腳本讀寫ODBC數(shù)據(jù)源,當腳本程序編制完成后,運行該畫面,發(fā)現(xiàn)數(shù)據(jù)庫中并沒有數(shù)據(jù)的增加,監(jiān)測到執(zhí)行到lconn.Open這條語句時,提示連接ODBC數(shù)據(jù)源失敗。這是因為WinCC安裝路徑下的括號造成的,此時更換WinCC安裝路徑到Program Files文件夾下,再次運行該畫面,點擊“插入數(shù)據(jù)”按鈕,則查詢到數(shù)據(jù)庫中增加一條數(shù)據(jù),WinCC寫入數(shù)據(jù)到Oracle數(shù)據(jù)庫成功。
本文通過使用ODBC數(shù)據(jù)源將WinCC和Oracle數(shù)據(jù)庫進行連接,并實現(xiàn)了數(shù)據(jù)交互(寫入和讀取),將企業(yè)生產(chǎn)管理層(L2系統(tǒng)傳來的數(shù)據(jù))與現(xiàn)場設備層(PLC等)安全可靠地連接起來,以備企業(yè)報表查詢統(tǒng)計相關數(shù)據(jù)。
[1] 姜建芳.西門子WinCC組態(tài)軟件工程應用技術[M].機械工業(yè)出版社,2015.8.
[2] Richard Niemiec.Oracle Database 11gR2性能調整與優(yōu)化[M].清華大學出版社,2013,12.
Research and application of winCC and Oracle connection and dataexchange
YANG Shao-xia1,LI Meng-meng1,TANG Hai-lin1,YOU Xiao-hang1,HE Hong-hong2
TP29
A
1009-0134(2016)09-0146-03
2016-08-17
楊少霞(1977 -),女,山東煙臺人,工程師,碩士,主要從事制造執(zhí)行系統(tǒng)MES軟件的研究與開發(fā)。