可利用OPC伺服器來完成,比較方便。可適用於各類PLC。 下面以西門子PLC為例說下實現方法: 一、透過STEP7軟體建立一個新專案OPC,在專案中新增SIMATIC 300站和一個PC 站,其中PLC站中第四個槽安裝的CP343模組。PC站的第一個槽 為OPC SERVER ,第三個槽為 IE GENERAL,然後在NETPRO下配置PLC和PC站的網路連線:(注意:是在PC站上新建的網路連線,連線型別選的S7連線) 二、透過station configurator軟體 配置本機的PC站(要和STEP7中配置的相同),然後把PLC和PC站都下載下去(注意:下載PC站的時候要把S7ONLINE (STEP7)--->;PC internal(local))。 三、開啟OPC Scout,(Start>;SIMATIC>;SIMATICNet>;OPC Scout), 雙擊“OPC SimaticNet”在隨之彈出的“ADD Group”對話方塊中輸入組名,本例命名為“OPC”。 點選OK 確認 ; ;雙擊已新增的連線組(OPC),即彈出“OPC Navigator”對話方塊,此視窗中顯示 所有的連線協議。雙擊“S7”,在PC Station 組態NetPro 中所建的連線名會被顯示(S7 connection_1)。雙擊此連線,即可出現有可能被訪問的物件樹(objects tree),在PLC CPU 中已存在的DB 塊也會出現 以上完成的OPC SERVER部分的配置。 四、用VB編寫了OPC客戶端應用程式。主要程式程式碼如下: 在VB中引在VB中還要引用 siemens opc daautomation 2.0 (1) 連線OPC伺服器 Dim WithEvents MyOPCServer As OPCServer ‘定義伺服器物件變數MyOPCServer Dim WithEvents MyOPCGroup As OPCGroup ‘定義OPC組物件變數MyOPCGroup Set MyOPCServer = New OPCServer MyOPCServer.Connect " OPC.SimaticNET" ‘連線SIMATICNET 的OPC伺服器 (2) 新增OPC組物件 Set MyOPCGroup=MyOPCServer.OPCGroups.Add("Group1") ‘新增OPC組物件 MyOPCGroup.IsSubscribed= True ‘設定該組資料為後臺重新整理 MyOPCGroup.IsActive = True ‘設定該組為啟用狀態 MyOPCGroup.UpdateRate=1000 ‘設定資料重新整理時間為1000 (3) 新增資料項 Dim abItemIDs() As String ‘項識別符號 Dim abClientHandles() As Long ‘客戶端控制代碼 Dim abServerHandles() As Long ‘伺服器端控制代碼 Dim abErrors() As Long Dim i As Long ItemCount=3 abItemIDs(1) = " S7:【S7 connection_1】IB1" abItemIDs(2) = " S7:【S7 connection_1】MB1" abItemIDs(3) = " S7:【S7 connection_1】QB1" for i=1 to 3 abClientHandles(i) = i ‘給客戶端控制代碼賦值 Next MyOPCGroup.OPCItems.AddItems ItemCount, abItemIDs, abClientHandles, abServerHandles, abErrors ‘新增資料項操作 (4) 同步資料讀寫 OPC資料存取有同步方式和非同步方式兩種。非同步讀寫資料複雜,需要與事件結合使用,與同步相比速度慢但準確性高。同步讀寫資料簡單,直接使用OPCItem的方法即可。 Dim One As OPCItem Dim Index As Long ‘Index為標籤順序號 Dim OneRead As String Dim Xie As String Set One = MyOPCGroup.OPCItems(Index) One.Read OPCCache OneRead = One.Value ‘讀資料 MyOPCGroup.SyncWrite ItemCount, ServerHandles, valuess, Errors ‘同步寫資料 MyOPCGroup.SyncRead OPCCache, ItemCount, ServerHandles, ReadValue, Errors ‘同步讀資料 One.Write (Xie) ‘寫資料 若只讀取資料,可以使用DataChange事件,當控制器中所要訪問的資料一旦發生改變時將會觸發該事件,並將該資料自動讀到TxtValue文字框。 Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date) ‘自動重新整理資料 Dim i As Long For i = 1 To NumItems txtValue(ClientHandles(i)) = ItemValues(i) ‘獲取項的值 txtTime(ClientHandles(i)) = TimeStamps(i) ‘獲取項的時間戳 txtQuantity(ClientHandles(i))=GetQualityString(Qualities(i)) ‘獲取項的品質 Next i End Sub (5) 斷開OPC伺服器 MyOPCServer.OPCGroups.RemoveAll ‘移除所有OPC Group,空出資源 Set MyOPCGroup = Nothing MyOPCServer.Disconnect ‘斷開連線
可利用OPC伺服器來完成,比較方便。可適用於各類PLC。 下面以西門子PLC為例說下實現方法: 一、透過STEP7軟體建立一個新專案OPC,在專案中新增SIMATIC 300站和一個PC 站,其中PLC站中第四個槽安裝的CP343模組。PC站的第一個槽 為OPC SERVER ,第三個槽為 IE GENERAL,然後在NETPRO下配置PLC和PC站的網路連線:(注意:是在PC站上新建的網路連線,連線型別選的S7連線) 二、透過station configurator軟體 配置本機的PC站(要和STEP7中配置的相同),然後把PLC和PC站都下載下去(注意:下載PC站的時候要把S7ONLINE (STEP7)--->;PC internal(local))。 三、開啟OPC Scout,(Start>;SIMATIC>;SIMATICNet>;OPC Scout), 雙擊“OPC SimaticNet”在隨之彈出的“ADD Group”對話方塊中輸入組名,本例命名為“OPC”。 點選OK 確認 ; ;雙擊已新增的連線組(OPC),即彈出“OPC Navigator”對話方塊,此視窗中顯示 所有的連線協議。雙擊“S7”,在PC Station 組態NetPro 中所建的連線名會被顯示(S7 connection_1)。雙擊此連線,即可出現有可能被訪問的物件樹(objects tree),在PLC CPU 中已存在的DB 塊也會出現 以上完成的OPC SERVER部分的配置。 四、用VB編寫了OPC客戶端應用程式。主要程式程式碼如下: 在VB中引在VB中還要引用 siemens opc daautomation 2.0 (1) 連線OPC伺服器 Dim WithEvents MyOPCServer As OPCServer ‘定義伺服器物件變數MyOPCServer Dim WithEvents MyOPCGroup As OPCGroup ‘定義OPC組物件變數MyOPCGroup Set MyOPCServer = New OPCServer MyOPCServer.Connect " OPC.SimaticNET" ‘連線SIMATICNET 的OPC伺服器 (2) 新增OPC組物件 Set MyOPCGroup=MyOPCServer.OPCGroups.Add("Group1") ‘新增OPC組物件 MyOPCGroup.IsSubscribed= True ‘設定該組資料為後臺重新整理 MyOPCGroup.IsActive = True ‘設定該組為啟用狀態 MyOPCGroup.UpdateRate=1000 ‘設定資料重新整理時間為1000 (3) 新增資料項 Dim abItemIDs() As String ‘項識別符號 Dim abClientHandles() As Long ‘客戶端控制代碼 Dim abServerHandles() As Long ‘伺服器端控制代碼 Dim abErrors() As Long Dim i As Long ItemCount=3 abItemIDs(1) = " S7:【S7 connection_1】IB1" abItemIDs(2) = " S7:【S7 connection_1】MB1" abItemIDs(3) = " S7:【S7 connection_1】QB1" for i=1 to 3 abClientHandles(i) = i ‘給客戶端控制代碼賦值 Next MyOPCGroup.OPCItems.AddItems ItemCount, abItemIDs, abClientHandles, abServerHandles, abErrors ‘新增資料項操作 (4) 同步資料讀寫 OPC資料存取有同步方式和非同步方式兩種。非同步讀寫資料複雜,需要與事件結合使用,與同步相比速度慢但準確性高。同步讀寫資料簡單,直接使用OPCItem的方法即可。 Dim One As OPCItem Dim Index As Long ‘Index為標籤順序號 Dim OneRead As String Dim Xie As String Set One = MyOPCGroup.OPCItems(Index) One.Read OPCCache OneRead = One.Value ‘讀資料 MyOPCGroup.SyncWrite ItemCount, ServerHandles, valuess, Errors ‘同步寫資料 MyOPCGroup.SyncRead OPCCache, ItemCount, ServerHandles, ReadValue, Errors ‘同步讀資料 One.Write (Xie) ‘寫資料 若只讀取資料,可以使用DataChange事件,當控制器中所要訪問的資料一旦發生改變時將會觸發該事件,並將該資料自動讀到TxtValue文字框。 Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date) ‘自動重新整理資料 Dim i As Long For i = 1 To NumItems txtValue(ClientHandles(i)) = ItemValues(i) ‘獲取項的值 txtTime(ClientHandles(i)) = TimeStamps(i) ‘獲取項的時間戳 txtQuantity(ClientHandles(i))=GetQualityString(Qualities(i)) ‘獲取項的品質 Next i End Sub (5) 斷開OPC伺服器 MyOPCServer.OPCGroups.RemoveAll ‘移除所有OPC Group,空出資源 Set MyOPCGroup = Nothing MyOPCServer.Disconnect ‘斷開連線