工業(yè)實(shí)時(shí)數(shù)據(jù)采集傳送軟件開(kāi)發(fā)設(shè)計(jì)_第1頁(yè)
工業(yè)實(shí)時(shí)數(shù)據(jù)采集傳送軟件開(kāi)發(fā)設(shè)計(jì)_第2頁(yè)
工業(yè)實(shí)時(shí)數(shù)據(jù)采集傳送軟件開(kāi)發(fā)設(shè)計(jì)_第3頁(yè)
工業(yè)實(shí)時(shí)數(shù)據(jù)采集傳送軟件開(kāi)發(fā)設(shè)計(jì)_第4頁(yè)
工業(yè)實(shí)時(shí)數(shù)據(jù)采集傳送軟件開(kāi)發(fā)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.OPCDataAccessCustomInterfaceSpecificationIOPCServer:GetStatus<>formoredetails.Whenyouaccessthisproperty,youwillgetthevaluethattheautomationserverhasobtainedfromthecustomserverviatheGetStatus<>interface.

AnerroroccursiftheclienthasnotconnectedtoaDataAccessServerviatheConnectmethod..ExampleDimServerStateAsLong

ServerState=AnOPCServer.ServerStateLocaleIDDescription<Read/Write>Thispropertyidentifiesthelocale,whichmaybeusedtolocalizestringsreturnedfromtheserver..ThisLocaleIDwillbeusedbytheGetErrorStringmethodonthisinterfaceSyntaxLocaleIDAsLongRemarksItshouldalsobeusedasthe‘default’LocaleIDbyanyotherserverfunctionsthatareaffectedbyLocaleID.AnerroroccursiftheclienthasnotconnectedtoaDataAccessServerviatheConnectmethod.Example‘<gettingtheproperty>:

DimLocaleIDAsLong

LocaleID=AnOPCServer.LocaleID

‘<settingtheproperty>:

AnOPCServer.LocaleID=LocaleID1介紹1.1背景用于多種數(shù)據(jù)源的一種標(biāo)準(zhǔn)。不管是在工廠車間,還是在控制室內(nèi)的數(shù)據(jù)庫(kù)或者設(shè)備的有機(jī)規(guī)范。標(biāo)準(zhǔn)機(jī)構(gòu)將包括針對(duì)允許的VisualBasic應(yīng)用程序,以及其他的自動(dòng)化功能的應(yīng)用程序進(jìn)行通信,用在上述指定的數(shù)據(jù)源的標(biāo)準(zhǔn)自動(dòng)化的接口。制造商需要從車間訪問(wèn)數(shù)據(jù),并將其整合到他們現(xiàn)有的采集系統(tǒng)。制造商必須能夠利用現(xiàn)成的工具〔SCADA軟件包,數(shù)據(jù)庫(kù),電子表格等,以組建一個(gè)系統(tǒng),來(lái)滿足他們的需求。關(guān)鍵是開(kāi)放的,有效的通信架構(gòu)集中數(shù)據(jù)訪問(wèn)和數(shù)據(jù)的不同類型。我們通過(guò)架構(gòu)并指定一個(gè)標(biāo)準(zhǔn)的自動(dòng)化接,OPC數(shù)據(jù)訪問(wèn)自定義接口,方便了使用自動(dòng)化接口來(lái)訪問(wèn)工廠底層數(shù)據(jù)的應(yīng)用程序來(lái)解決這方面的需求。1.2目的我們需要的是用于自動(dòng)化應(yīng)用到從像裝置或數(shù)據(jù)庫(kù)中的任何數(shù)據(jù)源訪問(wèn)數(shù)據(jù)的常用方法。OPC數(shù)據(jù)訪問(wèn)自動(dòng)化定義了一個(gè)標(biāo)準(zhǔn),其中自動(dòng)化應(yīng)用程序可以訪問(wèn)過(guò)程數(shù)據(jù)。該接口提供相同的功能的自定義界面。鑒于使用自動(dòng)化來(lái)訪問(wèn)其他軟件環(huán)境〔如:RDBMS,MSOffice應(yīng)用程序,WWW對(duì)象,該接口已針對(duì)緩解應(yīng)用程序的開(kāi)發(fā),而不消除自定義接口定義的功能。下圖顯示了一個(gè)自動(dòng)化客戶端調(diào)用到使用"包裝"DLL的OPC數(shù)據(jù)訪問(wèn)服務(wù)器。由服務(wù)器和客戶端所需的自動(dòng)化接口提供的自定義接口之間的這種包裝轉(zhuǎn)換。需要注意的是,一般的自動(dòng)化客戶端與自動(dòng)化服務(wù)器之間的連接是"在線連接",而自動(dòng)化服務(wù)器和自定義服務(wù)器之間的連接可以是在工藝,本地或遠(yuǎn)程。1.3適用范圍該文件規(guī)定了OPC規(guī)范的1.0版本中指定的OLE自動(dòng)化接口的修訂版。這些修訂最重要的是:?使界面更容易由VisualBasic程序員使用?運(yùn)用VisualBasic的新功能的優(yōu)勢(shì)〔如事件?允許創(chuàng)建一個(gè)共同的包裝DLL這可以通過(guò)所有的供應(yīng)商共享本文假設(shè)讀者熟悉設(shè)置在OPC數(shù)據(jù)訪問(wèn)自定義接口規(guī)范的信息。該文提供的OPC功能的概述以及各種功能行為的詳細(xì)描述。1.4參考資料克雷格Brockschmidt,內(nèi)部OLE,第二版,微軟出版社,華盛頓州雷德蒙市,1995年。微軟系統(tǒng)雜志,Q&A,1996年4月,第89-101。OLE自動(dòng)化編程參考,微軟出版社,華盛頓州雷德蒙德,1996。OLE2編程參考,卷.1,微軟出版社,華盛頓州雷德蒙市,1994年。OPC數(shù)據(jù)訪問(wèn)自定義接口標(biāo)準(zhǔn),2.0版,1998OPC基金會(huì)。1.5讀者此規(guī)范是為OPC自動(dòng)化客戶端所需要的OPC數(shù)據(jù)訪問(wèn)自定義接口的開(kāi)發(fā)的參考材料。開(kāi)發(fā)人員將需要一些基本的自動(dòng)化概念和一些術(shù)語(yǔ)知識(shí)。2構(gòu)架設(shè)計(jì)的基本目標(biāo)是,這個(gè)接口是通過(guò)自定義接口提供的功能對(duì)現(xiàn)有的OPC數(shù)據(jù)訪問(wèn)自定義接口的服務(wù)器提供一個(gè)方便的自動(dòng)化機(jī)制。2.1功能要求?自動(dòng)化接口提供了幾乎所有的OPC數(shù)據(jù)訪問(wèn)自定義接口的必需和可選接口的功能。自動(dòng)化接口一般不支持在該自定義接口做同樣的方式和可選功能。如果底層的自定義接口省略了一些可選功能,那么相應(yīng)的自動(dòng)化功能和屬性將在此文檔后面詳細(xì)描述的一些合理的默認(rèn)行為表現(xiàn)出來(lái)。?該接口完全支持VC++和VisualBasic5.0。他們?cè)试S其具有一個(gè)OLE自動(dòng)化接口〔如VBVC++,并啟用VB應(yīng)用程序根據(jù)各應(yīng)用程序的限制來(lái)訪問(wèn)OPC接口的任何應(yīng)用程序。?本說(shuō)明書中描述的界面,以一個(gè)單獨(dú)的包裝來(lái)開(kāi)發(fā),以適應(yīng)VBScript和Java腳本的需求。2.2OPC自動(dòng)化服務(wù)器對(duì)象模型OPCOPC服務(wù)器OPC組對(duì)象〔集合OPC項(xiàng)對(duì)象OPC項(xiàng)OPC組OPC瀏覽器圖2-1自動(dòng)化對(duì)象層次對(duì)象名說(shuō)明OPC服務(wù)器OPC服務(wù)器對(duì)象在使用其他OPC對(duì)象前必須生成。OPC服務(wù)器自動(dòng)含有一個(gè)OPC組集合對(duì)象,并可在其基礎(chǔ)上生成一個(gè)OPC瀏覽器對(duì)象OPC組集合OPC服務(wù)器中添加的所有的OPC組集合。OPC組OPC組對(duì)象是用于組的狀態(tài)管理以及利用項(xiàng)集合為單位的數(shù)據(jù)訪問(wèn)。OPC標(biāo)簽集合在對(duì)OPC組中添加的所有的OPC標(biāo)簽集合。OPC標(biāo)簽含有OPC標(biāo)簽的定義,現(xiàn)在值,狀態(tài),以及最后更新時(shí)間等信息對(duì)象。OPC瀏覽器用于瀏覽OPC服務(wù)器的名稱空間對(duì)象。2.3OPC數(shù)據(jù)訪問(wèn)自動(dòng)化對(duì)象模型該OPCServe對(duì)象提供了一種以一組數(shù)據(jù)源來(lái)〔讀/寫訪問(wèn)或通信,。在該服務(wù)器上執(zhí)行可用資源的功能。一個(gè)OPC自動(dòng)化客戶端連接到OPC自動(dòng)化服務(wù)器的通信,通過(guò)這里所描述的自動(dòng)化對(duì)象提供功能的基礎(chǔ)數(shù)據(jù)源〔如:OPC數(shù)據(jù)訪問(wèn)自定義服務(wù)器。該OPC服務(wù)器提供了一個(gè)〔OPCGroups自動(dòng)化集合對(duì)象來(lái)保持OPCGroup對(duì)象的集合。該OPCGroup對(duì)象允許客戶組織他們想要訪問(wèn)的數(shù)據(jù)。一個(gè)OPCGroup可作為一個(gè)單元激活和去激活。一個(gè)OPCGroup還提供了一種方法為客戶端"訂閱"項(xiàng)目的列表中,以便它可以發(fā)生變化時(shí)被通知。該OPCGroup對(duì)象提供OPCItems的OPCItem集合。該OPCItem對(duì)象提供的基礎(chǔ)數(shù)據(jù)源中單個(gè)數(shù)據(jù)項(xiàng)的連接。2.4數(shù)據(jù)同步一個(gè)要求,即VB的客戶端能夠讀取或接收數(shù)據(jù),使得所述值,質(zhì)量和時(shí)間戳信息保持同步。基本上,客戶端需要得到保證,該數(shù)據(jù)的質(zhì)量和所述時(shí)間戳的值匹配。如果客戶端獲得并且使用任何方法讀取它的值,時(shí)間戳和質(zhì)量屬性將與對(duì)方同步。如果客戶端通過(guò)注冊(cè)DataChange事件獲得的數(shù)據(jù),則該值,時(shí)間戳和質(zhì)量將是同步的事件處理程序的范圍之內(nèi)。如果客戶端混合這兩種方法就不可能實(shí)現(xiàn)客戶端,以保證該項(xiàng)目的屬性是完全同步的,因?yàn)樗淖兞丝蛻魴C(jī)訪問(wèn)的各種屬性和時(shí)間之間可能發(fā)生的事件。2.5異常和事件簡(jiǎn)述2.5.1異常這里描述的大多數(shù)屬性和方法與OPC定制服務(wù)器通信。在OLE自動(dòng)化,有沒(méi)有簡(jiǎn)單的方法訪問(wèn)屬性時(shí)返回一個(gè)錯(cuò)誤?解決這一問(wèn)題的最佳方式是自動(dòng)化服務(wù)器,如果基礎(chǔ)數(shù)據(jù)源中發(fā)生這樣的錯(cuò)誤產(chǎn)生異常。這意味著客戶端需要具有異常邏輯就位來(lái)處理錯(cuò)誤。設(shè)置屬性時(shí)發(fā)生的錯(cuò)誤是使用標(biāo)準(zhǔn)的VisualBasic錯(cuò)誤對(duì)象報(bào)告。2.5.2事件自動(dòng)化接口支持被提供用VisualBasic5.0事件通知的機(jī)制。自動(dòng)化服務(wù)器響應(yīng)異步刷新,異步讀取和寫入異步方法調(diào)用觸發(fā)的事件。此外,自動(dòng)化服務(wù)器根據(jù)客戶端規(guī)范數(shù)據(jù)變化時(shí)觸發(fā)事件。實(shí)施自動(dòng)化客戶端有能力處理這些事件。2.6數(shù)組按照慣例,OPC自動(dòng)化接口假設(shè)數(shù)組是基于1。如果一個(gè)數(shù)組傳遞給一個(gè)函數(shù),比計(jì)數(shù)或Items的參數(shù)時(shí),只計(jì)算或Items的元素將被使用,開(kāi)始于索引1。這僅適用于在自動(dòng)化接口中的職能和活動(dòng)參數(shù)。這不適用于項(xiàng)目值,其中該項(xiàng)目的值的數(shù)據(jù)類型本身是一個(gè)數(shù)組。為了避免錯(cuò)誤故建議VB代碼使用"OptionBase1"。2.7集OLE自動(dòng)化集合是支持計(jì)數(shù),項(xiàng)目,和隱藏屬性稱為_(kāi)NewEnum對(duì)象。具有這些特性的接口的一部分的任何對(duì)象都可以稱為集合。在VB中,一個(gè)集合可以使用兩種語(yǔ)言迭代。第一種方法明確地使用次數(shù)和項(xiàng)目索引集合的元素。ForI=1Toobject.Count

element=object.Item<I> ‘or…element=object<I>

NextI通過(guò)使用隱藏_NewEnum功能的可用項(xiàng)目第二種方法迭代:ForEachelementInobject

‘dosomethingwithelement

Nextelement在對(duì)于迭代的集合中的每個(gè)方法比顯式Item方法更快。產(chǎn)品還可以用于訪問(wèn)特定索引,如第〔3。它并不需要被一個(gè)循環(huán)內(nèi)使用。2.8可選參數(shù)可選參數(shù)由關(guān)鍵字"可選"表示??蛇x參數(shù)可以從一個(gè)方法調(diào)用,如果省略默認(rèn)行為是可以接受的。OLE自動(dòng)化要求,可選參數(shù)的Dim'd為Variant,雖然他們可能持有一個(gè)字符串,數(shù)組,等等。2.9參數(shù)方法方法參數(shù)被假定為通過(guò)byval除非指定要為byref的byref參數(shù)得到填充并由該方法并傳回。2.10庫(kù)類型VB采用OPC自動(dòng)化類型庫(kù)定義以下接口。確?!苍赩isualBasic5.0屬性|引用了"OPCAutomation2.0"檢查。3關(guān)于OPC數(shù)據(jù)訪問(wèn)自動(dòng)化包裝DLLOPC基金會(huì)提供的數(shù)據(jù)訪問(wèn)自動(dòng)化接口OPC基金會(huì)成員提供了一個(gè)自動(dòng)化接口,OPC數(shù)據(jù)訪問(wèn)自定義接口服務(wù)器使用的參考樣本。參考樣本是作為一個(gè)完整的DLL與VisualC++源代碼。供應(yīng)商可以直接提供DLL和他們的產(chǎn)品。選擇供應(yīng)商修改源代碼,甚至只是建立從源代碼〔不變之前包括或運(yùn)送DLL必須做到以下幾點(diǎn)。OPC自動(dòng)化DLL的名字必須從OPCDAAuto.dll更改為一個(gè)特定供應(yīng)商的唯一的名稱。OPC自動(dòng)化IDL〔opcauto.idl文件的名稱應(yīng)改為一個(gè)特定供應(yīng)商的唯一的名稱。在IDL文件中的helpstring〔"OPCAutomation2.0"必須改變,以反映您的特定供應(yīng)商的OPC自動(dòng)化接口。這是顯示在自動(dòng)化類型庫(kù)的名稱。使用您的供應(yīng)商構(gòu)建自動(dòng)化的OPC接口DLLVisualBasic應(yīng)用程序?qū)―LL使用類型庫(kù)。所有的GUIDIDL文件必須改為使用GUIDGEN工具生成的新的工具。這是為了防止供應(yīng)商建立自動(dòng)化界面庫(kù)被混淆內(nèi)置自動(dòng)化庫(kù)或OPC基金會(huì)提供的自動(dòng)化庫(kù)的另一個(gè)供應(yīng)商。賣方為鼓勵(lì)不改變現(xiàn)有的自動(dòng)化接口。如果附加的功能是理想的,一個(gè)新的對(duì)象和接口應(yīng)該被添加,并應(yīng)復(fù)制將被加入到現(xiàn)有的對(duì)象的所有功能。OPC基金會(huì)還提供了一個(gè)演示數(shù)據(jù)訪問(wèn)自動(dòng)化接口的使用一個(gè)VisualBasic樣本。此示例的目的僅展示在OPC數(shù)據(jù)訪問(wèn)自動(dòng)化接口的功能。OPC數(shù)據(jù)訪問(wèn)自動(dòng)化對(duì)象和接口4.1OPCServe對(duì)象描述客戶端創(chuàng)建OPCServe自動(dòng)化對(duì)象。然后客戶端"連接"到一個(gè)OPC數(shù)據(jù)訪問(wèn)自定義接口〔參見(jiàn)"連接"的方法。該OPCServe對(duì)象現(xiàn)在可以用于獲得關(guān)于一個(gè)OPC服務(wù)器的一般信息以及創(chuàng)建和操縱OPCGroup對(duì)象的集合。OPCServe語(yǔ)句備注所述Withevents語(yǔ)法促使對(duì)象以支持在對(duì)特定對(duì)象的聲明的事件。對(duì)于OPC服務(wù)器,定義的唯一事件是ServerShutDown。所述OPCGroup〔后述具有所有與DataChange和以支撐OPCGroup對(duì)象的異步方法所需的事件相關(guān)聯(lián)的事件。舉例DimWithEventsAnOPCServerAsOPCServer

SetAnOPCServer=NewOPCServer4.1.1屬性摘要開(kāi)始時(shí)間當(dāng)前時(shí)間更新時(shí)間主要版本次要版本建立次數(shù)供應(yīng)商信息服務(wù)器狀態(tài)區(qū)域ID組寬OPC組集合公用組名服務(wù)器名服務(wù)器節(jié)點(diǎn)客戶端名4.1.2方法綜述獲取OPC服務(wù)器連接斷開(kāi)創(chuàng)建瀏覽器獲取錯(cuò)誤字符查詢有效區(qū)域設(shè)置ID查詢可用屬性獲取項(xiàng)目屬性尋找項(xiàng)ID4.1.3事件摘要服務(wù)器關(guān)閉4.1.4OPC服務(wù)器屬性開(kāi)始時(shí)間描述〔只讀返回服務(wù)器開(kāi)始運(yùn)行的時(shí)間。這是客戶端已指定到連接到服務(wù)器的開(kāi)始時(shí)間。連接到同一臺(tái)服務(wù)器多個(gè)客戶可以放心,每個(gè)客戶端會(huì)從服務(wù)器讀取此屬性的相同值。句法StartTimeAsDate備注自動(dòng)化服務(wù)器預(yù)計(jì)使用自定義接口的getStatus〔,獲得的值對(duì)于該屬性,以及許多的定義為OPCServe屬性的其它性能。如果客戶端還沒(méi)有連接到服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DimAnOPCServerTimeAsDateAnOPCServerTime=AnOPCServer.StartTime當(dāng)前時(shí)間描述〔只讀返回服務(wù)器的當(dāng)前時(shí)間。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口的定制服務(wù)器獲得的值。句法CurrentTimeAsDate備注如果客戶端還沒(méi)有連接到,通過(guò)連接方法的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DimAnOPCServerTimeAsDate

AnOPCServerTime=AnOPCServer.CurrentTime最后刷新時(shí)描述〔只讀返回來(lái)自服務(wù)器的最后更新時(shí)間。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口的定制服務(wù)器獲得的值。句法LastUpdateTimeAsDate備注如果客戶端還沒(méi)有連接到通過(guò)連接方法的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤,返回最后的時(shí)間數(shù)據(jù)從服務(wù)器發(fā)送到客戶端應(yīng)用程序。舉例DimAnOPCServerTimeAsDate

AnOPCServerTime=AnOPCServer.LastUpdateTime主要版本描述〔只讀返回服務(wù)器版本號(hào)的主要部分〔例如,在1.32版本的"1"。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口定制服務(wù)器獲得的值。句法MajorVersionAsInteger備注如果客戶沒(méi)有通過(guò)Connect方法連接數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤舉例DimAnOPCServerMajorVersionAsString

AnOPCServerMajorVersion=Str<AnOPCServer.MajorVersion>次要版本描述〔只讀返回的服務(wù)器版本號(hào)〔1.32版本"32"的小部分。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口定制服務(wù)器獲得的值。句法MinorVersionAsInteger備注如果客戶端還沒(méi)有連接到通過(guò)連接方法連接的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DimAnOPCServerMinorVersionAsString

AnOPCServerMinorVersion=Str<AnOPCServer.MinorVersion>建立時(shí)間描述〔只讀返回服務(wù)器的版本號(hào)。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口定制服務(wù)器獲得的數(shù)值。句法BuildNumberAsInteger備注如果客戶端還沒(méi)有連接到通過(guò)連接方法連接的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DimBuildNumberasInteger

BuildNumber=AnOPCServer.BuildNumber版本號(hào)描述〔只讀返回服務(wù)器的版本號(hào)。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口定制服務(wù)器獲得的數(shù)據(jù)。句法BuildNumberAsInteger備注如果客戶端還沒(méi)有連接到通過(guò)連接方法連接的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DimBuildNumberasInteger

BuildNumber=AnOPCServer.BuildNumber供應(yīng)商信息描述〔只讀返回服務(wù)器的供應(yīng)商信息的字符串。當(dāng)你訪問(wèn)這個(gè)屬性,你會(huì)得到的自動(dòng)化服務(wù)器已經(jīng)從通過(guò)的getStatus〔接口的定制服務(wù)器獲得的值。句法VendorInfoAsString備注如果客戶端還沒(méi)有連接到通過(guò)連接方法連接的數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤。舉例DiminfoAsString

info=AnOPCServer.VendorInfo區(qū)域設(shè)置ID描述〔讀/寫該屬性標(biāo)識(shí)的區(qū)域設(shè)置,其可以用于從服務(wù)器返回字符串進(jìn)行本地化。。這的區(qū)域設(shè)置ID將這個(gè)接口上使用的GetErrorString方法句法LocaleIDAsLong備注如果客戶沒(méi)有通過(guò)Connect方法連接到數(shù)據(jù)訪問(wèn)服務(wù)器時(shí)發(fā)生錯(cuò)誤舉例DimLocaleIDAsLong

LocaleID=AnOPCServer.LocaleID

‘<settingtheproperty>:

AnOPCServer.LocaleID=LocaleID致謝隨著畢業(yè)日子的到來(lái),畢業(yè)設(shè)計(jì)也接近了尾聲。經(jīng)過(guò)好幾周的奮戰(zhàn)我的畢業(yè)設(shè)計(jì)終于完成了。在沒(méi)有做畢業(yè)設(shè)計(jì)以前覺(jué)得畢業(yè)設(shè)計(jì)只是對(duì)這幾年來(lái)所學(xué)知識(shí)的單純總結(jié),但是通過(guò)這次做畢業(yè)設(shè)計(jì)發(fā)現(xiàn)自己的看法有點(diǎn)太片面。畢業(yè)設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高。通過(guò)這次畢業(yè)設(shè)計(jì)使我明白了自己原來(lái)知識(shí)還比較欠缺。自己要學(xué)習(xí)的東西還太多。通過(guò)這次畢業(yè)設(shè)計(jì),我才明白學(xué)習(xí)是一個(gè)長(zhǎng)期積累的過(guò)程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。在此特別要感謝趙正天趙老師對(duì)我畢業(yè)設(shè)計(jì)的指導(dǎo),當(dāng)遇到自己不能解決的問(wèn)題時(shí),總是能悉心的指導(dǎo)我完成并且解決問(wèn)題。是自己能順利的完成畢業(yè)設(shè)計(jì)。附錄DimcnAsNewADODB.ConnectPublicmydbconnAsNewADODB.ConnectionDimWithEventsOPCServerObjAsOPCServer'聲明OPC服務(wù)器DimWithEventsOPCGroupObjsAsOPCGroups'聲明OPC組集合DimWithEventsOPCGroupObjAsOPCGroup'聲明OPC組對(duì)象DimOPCItemsAsOPCItems'聲明OPC項(xiàng)集合DimOPCItemAsOPCItem'聲明OPC項(xiàng)對(duì)象DimOne<10>AsOPCItemPublicstrProgIDAsStringPublicstrNodeAsStringDimaServerhandle<10>AsLongPrivateFunctionDBInsert<ByVal現(xiàn)場(chǎng)數(shù)據(jù)采集AsString,ByRefShuXing<>AsString,ByRefShuXingZhi<>AsVariant>將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)Dimsql<3>AsStringDimsqlAsStringDimiAsLongsql<0>="INSERTINTO"&現(xiàn)場(chǎng)數(shù)據(jù)采集&"<"Fori=1TonStep1sql<1>=sql<1>&ShuXing<i>Ifi=nThenElsesql<1>=sql<1>&","EndIfNextisql<2>=">VALUES<"Fori=1TonStep1sql<3>=sql<3>&"'"&ShuXingZhi<i>&"'"Ifi=nThensql<3>=sql<3>&">"Elsesql<3>=sql<3>&","EndIfNextisql=sql<0>&sql<1>&sql<2>&sqll<3>mydbconn.ExecutecolumnEndFunctionPrivateSubCombo1_Click<>'選擇opc服務(wù)器IfCombo1.ListIndex=0ThenstrProgID="OPC.SimaticNET"Command2.Enabled=TrueEndIfIfCombo1.ListIndex=1ThenstrProgID="RslinxOPCServer"Command2.Enabled=TrueEndIfEndSubPrivateSubCombo2_LostFocus<>'opc服務(wù)器的TCP/IP地址strNode=Combo2.TextEndSubPrivateSubCommand1_Click<>cn.ConnectionString="DSN=cigl;uid=sa;pwd=sa;"cn.ConnectionTimeout=10cn.OpenEndWithMsgBox"連接數(shù)據(jù)庫(kù)成功",,"提示"Command1.Enabled=FalseCommand5.Enabled=TrueEndSubPrivateSubCommand2_Click<>IfOPCServerObjIsNothingThenSetOPCServerObj=NewOPCServer'創(chuàng)建OPC服務(wù)器EndIfIfOPCServerObj.ServerState=OPCDisconnectedThenOPCServerObj.ConnectstrProgID,strNodeEndIfMsgBox"連接OPC服務(wù)器成功",,"提示"Command2.Enabled=FalseCommand3.Enabled=TrueText1.Enabled=TrueSetOPCGroupObj=OPCServerObj.OPCGroups.Add<"group">'添加OPC組對(duì)象OPCGroupObj.IsSubscribed=True'設(shè)置該組數(shù)據(jù)為后臺(tái)刷新OPCGroupObj.IsActive=True'設(shè)置該組為激活狀態(tài)OPCGroupObj.UpdateRate=1000'設(shè)置數(shù)據(jù)刷新時(shí)間為1000EndSubPrivateSubCommand3_Click<>Text1.Locked=FalseText2.Locked=FalseText3.Locked=FalseOPCServerObj.Disconnect'斷開(kāi)OPC服務(wù)器SetOPCServerObj=NothingMsgBox"斷開(kāi)OPC服務(wù)器",,"提示"Command3.Enabled=FalseCommand2.Enabled=TrueEndSubPrivateSubCommand4_Click<>讀現(xiàn)場(chǎng)數(shù)據(jù)將數(shù)據(jù)讀入Text<>IfText1.Locked=TrueThenSetOne<0>=OPCGroupObj.OPCItems<1>One<0>.ReadOPCCacheText5.Text=One<0>.ValueText6.Text=One<0>.QualityText7.Text=One<0>.TimeStampaServerhandle<0>=One<0>.ServerHandleEndIfIfText2.Locked=TrueThenSetOne<1>=OPCGroupObj.OPCItems<2>One<1>.ReadOPCCacheText8.Text=One<1>.ValueText9.Text=One<1>.QualityText10.Text=One<1>.TimeStampaServerhandle<1>=One<1>.ServerHandleEndIfIfText3.Locked=TrueThenSetOne<2>=OPCGroupObj.OPCItems<3>One<2>.ReadOPCCacheText11.Text=One<2>.ValueText12.Text=One<2>.QualityText13.Text=One<2>.TimeStampaServerhandle<3>=One<2>.ServerHandleEndIfEndSubPrivateSubCommand5_Click<>Setcncmd=NothingSetmydbconn=Nothingcn.CloseMsgBox"斷開(kāi)數(shù)據(jù)庫(kù)成功",,"提示"Command5.Enabled=FalseCommand1.Enabled=TrueEndSubPrivateSubCommand6_Click<>數(shù)據(jù)賦值DimShuXingMing<4>AsStringDimShuXingZhi<4>AsVariantDimcont_nAsLongIfmydbconn.State=1Thencont_n=4ShuXingMing<1>="FUDIANSHU"ShuXingMing<2>="ZIFUCHUAN"ShuXingMing<3>="SHIJIAN"ShuXingMing<4>="ITEM"IfText1.Locked=TrueThenShuXingZhi<1>=Text5.TextShuXingZhi<2>=Text6.TextShuXingZhi<3>=Text7.TextShuXingZhi<4>=Text1.TextCallDBInsert<"CHARUBIAO",ShuXingMing<>,cont_n,ShuXingZhi<>>EndIfIfText2.Locked=TrueThenShuXingZhi<1>=Text8.TextShuXingZhi<2>=Text9.TextShuXingZhi<3>=Text10.TextShuXingZhi<4>=Text2.TextCallDBInsert<"CHARUBIAO",ShuXingMing<>,cont_n,ShuXingZhi<>>EndIfIfText3.Locked=TrueThenShuXingZhi<1>=Text11.TextShuXingZhi<2>=Text12.TextShuXingZhi<3>=Text13.TextShuXingZhi<4>=Text3.TextCallDBInsert<"CHARUBIAO",ShuXingMing<>,cont_n,ShuXingZhi<>>EndIfEndIfEndSubPrivateSubCommand7_Click<>EndSubPrivateSubForm_Load<>IfCombo1.ListIndexThenCommand2.Enabled=FalseCommand3.Enabled=FalseEndIfCommand5.Enabled=FalseText1.Enabled=FalseText2.Enabled=FalseText3.Enabled=FalseText4.Enabled=FalseEndSubPrivateSubLabel9_Click<>EndSubPrivateSubText1_LostFocus<>DimabItemIDsAsString'項(xiàng)標(biāo)識(shí)符DimabClientHandlesAsLong'客戶端句柄IfOPCServerObj.ServerState=1Thenitemcount=1abItemIDs=Text1.TextabClientHandles=1'

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論