VB與西門(mén)子S7300的OPC通信
一、通過(guò)STEP7軟件建立一個(gè)新項(xiàng)目OPC,在項(xiàng)目中添加SIMATIC300站和一個(gè)PC站,其中PLC站中第四個(gè)槽安裝的CP343模塊。PC站的第一個(gè)槽為OPCSERVER,第三個(gè)槽為IEGENERAL,然后在NETPRO下配置PLC和PC站的網(wǎng)絡(luò)連接:(注意:是在PC站上新建的網(wǎng)絡(luò)連接,連接類(lèi)型選的S7連接)
二、通過(guò)stationconfigurator軟件配置本機(jī)的PC站(要和STEP7中配置的相同),然后把PLC和PC站都下載下去(注意:下載PC站的時(shí)候要把S7ONLINE(STEP7)--->;PCinternal(local))。
三、打開(kāi)OPCScout,(Start>;SIMATIC>;SIMATICNet>;OPCScout),雙擊“OPC
SimaticNet”在隨之彈出的“ADDGroup”對(duì)話(huà)框中輸入組名,本例命名為“OPC”。
點(diǎn)擊OK確認(rèn);雙擊已添加的連接組(OPC),即彈出“OPCNavigator”對(duì)話(huà)框,此窗口中顯示所有的連接協(xié)議。雙擊“S7”,在PCStation組態(tài)NetPro中所建的連接名會(huì)被顯示(S7connection_1)。雙擊此連接,即可出現(xiàn)有可能被訪(fǎng)問(wèn)的對(duì)象樹(shù)(bbbbbbstree),在PLC
CPU中已存在的DB塊也會(huì)出現(xiàn)以上完成的OPCSERVER部分的配置。
四、用VB編寫(xiě)了OPC客戶(hù)端應(yīng)用程序。主要程序代碼如下:
在VB中引在VB中還要引用siemensopcdaautomation2.0
(1)連接OPC服務(wù)器
DimWithEventsMyOPCServerAsOPCServer‘定義服務(wù)器對(duì)象變量MyOPCServer
DimWithEventsMyOPCGroupAsOPCGroup‘定義OPC組對(duì)象變量MyOPCGroup
SetMyOPCServer=NewOPCServer
MyOPCServer.Connect"OPC.SimaticNET"‘連接SIMATICNET的OPC服務(wù)器
(2)添加OPC組對(duì)象
SetMyOPCGroup=MyOPCServer.OPCGroups.Add("Group1")
‘添加OPC組對(duì)象
MyOPCGroup.IsSubscribed=True
‘設(shè)置該組數(shù)據(jù)為后臺(tái)刷新
MyOPCGroup.IsActive=True
‘設(shè)置該組為激活狀態(tài)
MyOPCGroup.UpdateRate=1000
‘設(shè)置數(shù)據(jù)刷新時(shí)間為1000
(3)添加數(shù)據(jù)項(xiàng)
DimabItemIDs()Asbbbbbb‘項(xiàng)標(biāo)識(shí)符
DimabClientHandles()AsLong‘客戶(hù)端句柄
DimabServerHandles()AsLong‘服務(wù)器端句柄
DimabErrors()AsLong
DimiAsLong
ItemCount=3
abItemIDs(1)="S7:[S7connection_1]IB1"
abItemIDs(2)="S7:[S7connection_1]MB1"
abItemIDs(3)="S7:[S7connection_1]QB1"
fori=1t03
abClientHandles(i)=i‘給客戶(hù)端句柄賦值
Next
MyOPCGroup.OPCItems.AddItemsItemCount,abItemIDs,abClientHandles,abServerHandles,abErrors‘添加數(shù)據(jù)項(xiàng)操作
(4)同步數(shù)據(jù)讀寫(xiě)
OPC數(shù)據(jù)存取有同步方式和異步方式兩種。異步讀寫(xiě)數(shù)據(jù)復(fù)雜,需要與事件結(jié)合使用,與同步相比速度慢但準(zhǔn)確性高。同步讀寫(xiě)數(shù)據(jù)簡(jiǎn)單,直接使用OPCItem的方法即可。
DimOneAsOPCItem
DimIndexAsLong
‘Index為標(biāo)簽順序號(hào)
DimOneReadAsbbbbbb
DimXieAsbbbbbb
SetOne=MyOPCGroup.OPCItems(Index)
One.ReadOPCCache
OneRead=One.Value‘讀數(shù)據(jù)
MyOPCGroup.SyncWriteItemCount,ServerHandles,valuess,Errors‘同步寫(xiě)數(shù)據(jù)
MyOPCGroup.SyncReadOPCCache,ItemCount,ServerHandles,ReadValue,Errors‘同步讀數(shù)據(jù)
One.Write(Xie)‘寫(xiě)數(shù)據(jù)
若只讀取數(shù)據(jù),可以使用DataChange事件,當(dāng)控制器中所要訪(fǎng)問(wèn)的數(shù)據(jù)一旦發(fā)生改變時(shí)將會(huì)觸發(fā)該事件,并將該數(shù)據(jù)自動(dòng)讀到TxtValue文本框。
PrivateSubMyOPCGroup_DataChange(ByValTransbbbbbbIDAsLong,ByValNumItemsAsLong,ClientHandles()AsLong,ItemValues()AsVariant,Qualities()AsLong,TimeStamps()AsDate)‘自動(dòng)刷新數(shù)據(jù)
DimiAsLong
Fori=1ToNumItems
txtValue(ClientHandles(i))=ItemValues(i)‘獲取項(xiàng)的值
txtTime(ClientHandles(i))=TimeStamps(i)‘獲取項(xiàng)的時(shí)間戳
txtQuantity(ClientHandles(i))=GetQualitybbbbbb(Qualities(i))‘獲取項(xiàng)的品質(zhì)
Nexti
EndSub
(5)斷開(kāi)OPC服務(wù)器
MyOPCServer.OPCGroups.RemoveAll‘移除所有OPCGroup,空出資源
SetMyOPCGroup=Nothing
MyOPCServer.Disconnect‘?dāng)嚅_(kāi)連接
本文標(biāo)簽:VB與西門(mén)子S7300的OPC通信
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《VB與西門(mén)子S7300的OPC通信》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“VB與西門(mén)子S7300的OPC通信”的更多資訊
個(gè)人求購(gòu)










