楊曉光,劉明陽(yáng),張大為,王克斌
(1. 水力發(fā)電設(shè)備國(guó)家重點(diǎn)實(shí)驗(yàn)室,哈爾濱 150040;2. 哈爾濱電機(jī)廠有限責(zé)任公司,哈爾濱 150040)
OPC(OLE for Process Control)是用于過(guò)程控制的OLE ,OLE(Object Linking and Embedding)是對(duì)象連接和嵌入。OPC是基于微軟的OLE/COM技術(shù),為解決工業(yè)及其他客戶機(jī)與各種設(shè)備驅(qū)動(dòng)程序間相互通訊而產(chǎn)生的工業(yè)技術(shù)規(guī)范和標(biāo)準(zhǔn)。OPC技術(shù)規(guī)范是由OPC基金會(huì)制定的,它提供了標(biāo)準(zhǔn)的統(tǒng)一的數(shù)據(jù)訪問(wèn)軟件及硬件的接口。由于OPC技術(shù)比傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式更具有開放性和先進(jìn)性,已得到越來(lái)越多的工控領(lǐng)域硬件和軟件制造商的認(rèn)可。目前已經(jīng)成為工業(yè)控制軟件上各個(gè)軟硬件制造商的公認(rèn)標(biāo)準(zhǔn)。
在發(fā)電設(shè)備行業(yè)中有大量的非標(biāo)準(zhǔn)設(shè)備和專用設(shè)備。比如應(yīng)用于沖片生產(chǎn)的沖槽機(jī)、涂漆線、點(diǎn)焊機(jī)、線圈的包帶機(jī)、漲型機(jī)及四角焊機(jī)等很多專用的數(shù)控設(shè)備。這些設(shè)備無(wú)論是從工藝編程、設(shè)備的維護(hù)、生產(chǎn)的管理等都需要由專人專管。這樣,在從生產(chǎn)的前期準(zhǔn)備到生產(chǎn)的過(guò)程控制及設(shè)備的維護(hù)都要投入大量人力和物力來(lái)進(jìn)行管理。為了能夠?qū)崿F(xiàn)設(shè)備的標(biāo)準(zhǔn)化管理,在哈電機(jī)的數(shù)控沖槽機(jī)上進(jìn)行了嘗試,引入了OPC技術(shù)進(jìn)行軟件的開發(fā),使得OPC技術(shù)在數(shù)控沖槽機(jī)上得到了初步的實(shí)現(xiàn)。
在采用 OPC 技術(shù)以前,傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方法主要是通過(guò)驅(qū)動(dòng)程序和動(dòng)態(tài)數(shù)據(jù)交換兩種方法。
驅(qū)動(dòng)程序法是在應(yīng)用程序中掛接“驅(qū)動(dòng)程序”來(lái)存取現(xiàn)場(chǎng)控制設(shè)備和數(shù)據(jù)庫(kù)的數(shù)據(jù)。這種方法需要每一個(gè)特定的硬件必須為每一個(gè)應(yīng)用程序編寫“驅(qū)動(dòng)程序”另外多個(gè)程序不能同時(shí)存取同一設(shè)備的數(shù)據(jù)。
動(dòng)態(tài)數(shù)據(jù)交換法是基于 Windows的消息傳遞而建立的技術(shù)。所以具有數(shù)據(jù)的傳遞速度較慢,沒(méi)有安全機(jī)制,數(shù)據(jù)傳遞安全性差,開發(fā)比較困難等缺點(diǎn)。
隨著信息技術(shù)的發(fā)展,自動(dòng)化系統(tǒng)對(duì)大范圍信息共享的要求越來(lái)越強(qiáng)烈,因而對(duì)工業(yè)系統(tǒng)控制的開放性提出了越來(lái)越高的要求,因此需要一種通用的方法,使應(yīng)用程序可以方便地存取任何一臺(tái)設(shè)備或多臺(tái)設(shè)備的數(shù)據(jù),為不同廠商生產(chǎn)的軟硬件提供系統(tǒng)集成和數(shù)據(jù)交換的途徑。正是在這種情況下,OPC技術(shù)應(yīng)運(yùn)而生,其目的就是要建立大量數(shù)據(jù)源的標(biāo)準(zhǔn)機(jī)制,這些數(shù)據(jù)源可以是工廠的設(shè)備或控制室數(shù)據(jù)庫(kù)。OPC 技術(shù)是 OPC基金會(huì)組織制定的工業(yè)控制軟件相互操作性的規(guī)范,也是微軟為了把 Windows 應(yīng)用于控制系統(tǒng)共同推出的一項(xiàng)技術(shù)。它是以微軟的COM/DCOM(組件對(duì)象模型和分布式組件對(duì)象模型)技術(shù)為基礎(chǔ),為工業(yè)控制軟件定義了一套標(biāo)準(zhǔn)的對(duì)象、接口和屬性。OPC 技術(shù)在硬件供應(yīng)商和軟件開發(fā)者之間搭上了一座橋梁,它提供一種機(jī)制從數(shù)據(jù)源并且以一個(gè)標(biāo)準(zhǔn)的方式將這些數(shù)據(jù)傳送到任意客戶端應(yīng)用程序。OPC規(guī)范了接口函數(shù),不管現(xiàn)場(chǎng)設(shè)備以何種形式存在,客戶都以統(tǒng)一的方式去訪問(wèn)。從而實(shí)現(xiàn)了系統(tǒng)的開放性,易于實(shí)現(xiàn)與其他系統(tǒng)的接口。利用OPC使接口標(biāo)準(zhǔn)化可以構(gòu)成圖1所示的系統(tǒng)。
圖1
數(shù)控沖槽機(jī)是一種專為大型交直流電機(jī)生產(chǎn)鐵心矽鋼片的專用設(shè)備,是一種三軸聯(lián)動(dòng)的數(shù)控機(jī)床,該機(jī)床的數(shù)控系統(tǒng)采用西門子的 840D數(shù)控系統(tǒng)及S7-300 PLC硬件系統(tǒng),伺服驅(qū)動(dòng)系統(tǒng)采用611D,該設(shè)備不同于一般的通用數(shù)控機(jī)床。需要進(jìn)行外部的工藝編程及控制。這些工作如果在西門子的840D數(shù)控系統(tǒng)上實(shí)現(xiàn)難度相當(dāng)大,而且在產(chǎn)品發(fā)生變化時(shí)改變起來(lái)也非常麻煩,所以這些工作需要在上位機(jī)上進(jìn)行,而不是在數(shù)控系統(tǒng)上完成。這樣就存在一個(gè)上位機(jī)和西門子的840D及S7-300PLC進(jìn)行通信的問(wèn)題。為了能夠?qū)崿F(xiàn)上位機(jī)和西門子840D及S7-300 PLC通信。我們采用了西門子提供的標(biāo)準(zhǔn)的 OPC Server接口來(lái)實(shí)現(xiàn),這樣就完成了程序、數(shù)據(jù)的交換及控制過(guò)程的相互通信。
上位機(jī)是本項(xiàng)目中完成電機(jī)沖片生產(chǎn)工藝及加工程序的主要平臺(tái),還要完成和西門子 840D的程序數(shù)據(jù)的交換,以及和S7-300 PLC的控制聯(lián)絡(luò)及監(jiān)控。我們采用Profibus DP 工業(yè)現(xiàn)場(chǎng)總線作為OPC的聯(lián)絡(luò)通道。西門子的數(shù)控及PLC產(chǎn)品也提供這種開放的接口,通過(guò)西門子提供的開放標(biāo)準(zhǔn)接口 OPC Server 在上位機(jī)上Windows XP操作系統(tǒng)采用 Visual Basic 6.0高級(jí)語(yǔ)言進(jìn)行編程。既可以向西門子的840D數(shù)控系統(tǒng)傳輸程序和數(shù)據(jù),同時(shí)也可以和S7-300 PLC進(jìn)行控制聯(lián)絡(luò)。圖2是OPC Server 在Visual Basic 中所提供的接口方式。
最上層是西門子向 WindowsXP 提供的 OPC Server,然后是OPC 組的集合,在組的集合下面分成了各個(gè)組,每個(gè)組里面有自己的標(biāo)簽集合,每一個(gè)標(biāo)簽集合分為標(biāo)簽變量。
這些變量可以通過(guò)OPC瀏覽器來(lái)進(jìn)行編輯。
圖2
下面是在Visual Basic 公共部分中聲明OPC的變量以及設(shè)定OPC服務(wù)器的初始狀態(tài)程序。
Dim WithEvents AnOPCServer As OPCServer
Dim ARealOPCServer As String
Dim ARealOPCNodeName As String
Dim AnOPCServerBrowser As OPCBrowser
Dim MyGroups As OPCGroups
Dim DefaultGroupUpdateRate As Long
Dim OneGroup As OPCGroup
Dim AnOPCItemCollection As OPCItems
Dim AnOPCItem As OPCItem
Dim ClientHandles(100)As Long
Dim AnOPCItemIDs(100)As String
Dim AnOPCItemServerHandles() As Long
Dim AnOPCItemServerErrors() As Long
Set AnOPCServer = New OPCServer
ARealOPCServer=“VendorX.DataAccessCustomSe rver”
ARealOPCNodeName=“SomeComputerNodeName”
AnOPCServer.Connect(ARealOPCServer,ARealOP CNodeName)
Set MyGroups = AnOPCServer.OPCGroups
MyGroups.DefaultGroupIsActive = True
Set OneGroup=MyGroups.Add(“AnOPCGroupName”)
Set AnOPCItemCollection = OneGroup.OPCItems
作為 OPC 的一個(gè)應(yīng)用,首先必須要建立一個(gè)OPC服務(wù)器,這個(gè)OPC服務(wù)器包含了OPC組的集合和瀏覽器。然后客戶端要在這個(gè)服務(wù)器中定義自己組的集合,這個(gè)組的集合包含了客戶和OPC服務(wù)器連接的所有通道,也就是說(shuō)在設(shè)備制造商通過(guò)OPC向用戶開放的接口,在我們這個(gè)例子中也就是我們的上位機(jī)要與西門子840D 數(shù)控系統(tǒng)的S7-300PLC進(jìn)行數(shù)據(jù)交換和聯(lián)絡(luò)的通道。
下面是Visual Basic 與S7的連接過(guò)程(部分程序)
在客戶端上位機(jī)啟動(dòng)Station Configuration彈出對(duì)話框,如圖3所示,我們可以對(duì)該窗口進(jìn)行配置。
圖3
我們可以在相應(yīng)的槽號(hào)上選擇組件,配置完成后就可以進(jìn)行激活,當(dāng)激活連接成功后連接相應(yīng)的變量,這些變量可以是西門子840D S7-300PLC的各種變量。這樣,我們就可以通過(guò)OPC進(jìn)行數(shù)控設(shè)備和上位機(jī)的標(biāo)準(zhǔn)化連接。通過(guò)高級(jí)語(yǔ)言VC、VB、VBA等(我們這里使用的是 VB)就可以很方便地對(duì)專用設(shè)備進(jìn)行各種操作。以上是連接西門子數(shù)控系統(tǒng) S7-300 的部分VB程序,通過(guò)OPC Server 實(shí)現(xiàn)了用上位機(jī)和專用數(shù)控機(jī)床的連接過(guò)程,目前該設(shè)備已經(jīng)在哈爾濱電機(jī)廠運(yùn)行了4年,設(shè)備運(yùn)行穩(wěn)定,數(shù)據(jù)存儲(chǔ)方便,為專用設(shè)備的標(biāo)準(zhǔn)化連接提供一條很方便實(shí)用的渠道。并且在專用設(shè)備的開發(fā)和改造上也起了非常大的作用,為哈電機(jī)專用設(shè)備的升級(jí)維修維護(hù)和改造起到非常大的作用。
在專用設(shè)備的標(biāo)準(zhǔn)化接口方面我們已經(jīng)取得了一些有意義的經(jīng)驗(yàn),對(duì)生產(chǎn)企業(yè)在生產(chǎn)及設(shè)備方面的標(biāo)準(zhǔn)化管理提供了堅(jiān)實(shí)的基礎(chǔ)。為將來(lái)的遠(yuǎn)程設(shè)備數(shù)據(jù)交換,設(shè)計(jì)和工藝部門通過(guò)標(biāo)準(zhǔn)的接口實(shí)現(xiàn)CAD 和CAM 提供了有利的條件。設(shè)備部門通過(guò)標(biāo)準(zhǔn)接口實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)監(jiān)控。生產(chǎn)部門通過(guò)標(biāo)準(zhǔn)接口了解生產(chǎn)情況,收集生產(chǎn)數(shù)據(jù)提供了很好的渠道。