回覆列表
  • 1 # 在這等你了

      可利用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  ‘斷開連線  

  • 中秋節和大豐收的關聯?
  • 買法拍房應該注意什麼?求大師指導?