EndSub/<font>
/<font>
'---------------------------------------------------------------------/<font>
'Sub StopClient()/<font>
'Purpose: Release the objects and disconnect from the server/<font>
'---------------------------------------------------------------------/<font>
SubStopClient()/<font>
'-----------Release the Group and Server objects/<font>
MyOPCGroupColl.RemoveAll/<font>
'-----------Disconnect from the server and clean up/<font>
MyOPCServer.Disconnect/<font>
SetMyOPCItemColl = Nothing/<font>
SetMyOPCGroup = Nothing/<font>
SetMyOPCGroupColl = Nothing/<font>
SetMyOPCServer = Nothing/<font>
EndSub/<font>
/<font>
'---------------------------------------------------------------------/<font>
'Sub MyOPCGroup_DataChange()/<font>
'ouPru rGproosuep: hTahsi sc heavnegnetd is fired when a value, quality ortimestamp in/<font>
'---------------------------------------------------------------------/<font>
'-----------If OPC-DA Automation 2.1 is installed, use:/<font>
PrivateSub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long,ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long,TimeStamps() As Date)/<font>
'-----------Set the spreadsheet cell values to the values read/<font>
Range("B2").Value= CStr(ItemValues(1))/<font>
Range("C2").Value= Hex(Qualities(1))/<font>
Range("D2").Value= CStr(TimeStamps(1))/<font>
EndSub/<font>
/<font>
'-------------------------------------------------------------------/<font>
'Sub worksheet_change()/<font>
'wrPiutrep oas en:e wT hviasl ueev ent is fired when our worksheet changes, so wecan/<font>
'---------------------------------------------------------------------/<font>
PrivateSub worksheet_change(ByVal Selection As Range)/<font>
'-----------Only if cell "B3" changes, write this value/<font>
IfSelection <> Range("B3") Then Exit Sub/<font>
Values(1)= Selection.Cells.Value/<font>
'-----------Write the new value in synchronous mode/<font>
MyOPCGroup.SyncWrite1, ServerHandles, Values, Errors/<font>
EndSub/<font>
7.點擊“保存”,並且選擇“關閉並返回到Microsoft Excel”/<font>
2. 在WinCCOPC DA Server中添加用於傳送的變量/<font>
/<font>
1.打開WinCC,創建新的項目,並在TagManagement 的Internaltags下創建一個類型為“Signed16-bit value”的變量“OPC_Excel”。/<font>
3. 實現WinCC與Excel的OPC通信,傳送變量/<font>
/<font>
2.在Excel表的A1格中填入本機計算機名,在A2格中填入要連接傳送的變量名“OPC_Excel”。/<font>
3.在Excel中點擊“工具”,“/<font>宏”,選擇“宏”打開。
4.在出現的“宏”窗口中,選擇“Sheet1.StartClient”宏,點擊“執行”。
4. 實驗結果/<font>
1.運行“Sheet1.StartClient”宏後,可以看到,在Excel表的B2格中顯示了運行的WinCC中“I/O域”中變量的值。C2 格中顯示的是OPC“質量代碼”,D2格中顯示的是“時間戳”。/<font>
2.在Excel的B3格中輸入更改了的WinCC變量值,可以看到WinCC中的變量值發生了改變。
/<font>
3.在退出程序時,需要釋放WinCC與Excel之間的OPC連接。具體方法是:在Excel中點擊“工具”,“宏”,選擇打開“宏”。在出現的“宏”窗口中,選擇“Sheet1.StopClient”宏,點擊“執行”。/<font>
/<font>
總結: /<font>
本實驗是僅針對通過OPC實現WinCC與MS Excel之間的簡單通信。實驗中的VB代碼有相關的說明,讀者也可以參照此方法通過OPC接口來實現諸多功能,如數據採集與監控,數據存檔,通信等等。在今後的實驗或工作中,還將在其它應用中研究OPC。/<font>
/<font>