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

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


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

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

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

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


再次重申本文客戶端是Win7 64位操作系統,而我們的Oracle客戶端使用的是Oracle 10g 32位的安裝軟件,所以要特別注意WinCC 7.3軟件的安裝路徑,默認安裝在Program Files(x86)文件夾下,此時使用建立好的ODBC數據源,在WinCC中通過VBS腳本讀寫ODBC數據源,當腳本程序編制完成后,運行該畫面,發現數據庫中并沒有數據的增加,監測到執行到lconn.Open這條語句時,提示連接ODBC數據源失敗。這是因為WinCC安裝路徑下的括號造成的,此時更換WinCC安裝路徑到Program Files文件夾下,再次運行該畫面,點擊“插入數據”按鈕,則查詢到數據庫中增加一條數據,WinCC寫入數據到Oracle數據庫成功。
本文通過使用ODBC數據源將WinCC和Oracle數據庫進行連接,并實現了數據交互(寫入和讀取),將企業生產管理層(L2系統傳來的數據)與現場設備層(PLC等)安全可靠地連接起來,以備企業報表查詢統計相關數據。
[1] 姜建芳.西門子WinCC組態軟件工程應用技術[M].機械工業出版社,2015.8.
[2] Richard Niemiec.Oracle Database 11gR2性能調整與優化[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 -),女,山東煙臺人,工程師,碩士,主要從事制造執行系統MES軟件的研究與開發。