這裏以西門子PLC為例,實現方法如下:
1.通過STEP7軟件建立壹個新的項目OPC,在項目中增加SIMATIC 300站和壹個PC站,其中CP343模塊安裝在PLC站的第四個插槽中。PC站第壹個槽是OPC服務器,第三個槽是IE通用,然後在NETPRO下配置PLC和PC站的網絡連接:(註意:是PC站上新的網絡連接,連接類型是S7連接)。
第二,通過站配置器軟件配置本機的PC站(與STEP7配置的相同),然後同時下載PLC和PC站(註意:下載PC站時要把S7聯機(Step 7)->;PC內部(本地).
第三,打開OPC Scout,(Start & gt;SIMATIC & gt;SIMATICNet & gt;Opscout),雙擊&;ldquo(同OligomericProanthoCyanidins)原花青素
西門子網絡公司;rdquo在隨後彈出的&;ldquo添加組& amprdquo對話框中,輸入組和。在本例中,它被命名為&;ldquoOPC & amprdquo。
單擊“確定”進行確認;
;雙擊添加的連接組(OPC),然後將&;ldquoOPC導航器& amprdquo對話框,其中顯示
所有的連接協議。雙擊&;ldquoS7 & amprdquo,將顯示PC站配置NetPro中內置的連接名稱(S7
connection_1).雙擊此連接,將出現壹個可以訪問的對象樹。在PLC中,
CPU中已經存在的數據庫塊也會出現。
以上完成了OPC服務器部分的配置。
第四,用VB編寫了OPC客戶端應用程序。主程序代碼如下:
VB中也要引用西門子opc daautomation 2.0。
(1)連接OPC服務器。
dimwithevents MyOPCServer as OPC server '定義了服務器對象變量MyOPCServer。
' dimwithevents MyOPCGroup as OPC group '定義OPC組對象變量MyOPCGroup。
設置MyOPCServer =新的OPCServer
我的OPC服務器。連接“OPC。SIMATICNET " '連接SIMATIC NET的OPC服務器。
(2)添加OPC組對象
設置MyOPCGroup=MyOPCServer。OPCGroups.Add("Group1 ")
添加OPC組對象
MyOPCGroupissued = True
將這組數據設置為後臺刷新。
MyOPCGroupIsActive = True
將該組設置為活動。
MyOPCGroup更新率=1000
將數據刷新時間設置為1000。
(3)添加數據項
Dim abItemIDs()作為字符串
項目標識符
Dim abClientHandles()壹樣長
客戶端句柄
Dim abServerHandles()壹樣長
服務器端句柄
Dim abErrors()壹樣長
暗淡我壹樣長
ItemCount=3
abItemIDs(1) = " S7:S7連接_1IB1 "
abItemIDs(2) = " S7:S7連接_1MB1 "
abItemIDs(3) = " S7:S7連接_1QB1 "
對於i=1到3
abClientHandles(i) = i
給客戶端句柄賦值
然後
MyOPCGroupOPCItems.AddItems ItemCount,abItemIDs,abClientHandles,abServerHandles,abErrors
添加數據項操作
(4)同步數據讀寫
OPC數據訪問有兩種模式:同步模式和異步模式。異步讀寫數據比較復雜,需要結合事件。與同步相比,它速度慢但很準確。同步讀寫數據很簡單,直接用OPCItem的方法就可以了。
將壹個調暗為操作項
Dim索引為Long
索引是標簽序列號。
Dim OneRead As String
黯然謝如弦
Set One = MyOPCGroup。操作項目(索引)
壹個。讀取OPCCache
OneRead = One。價值
讀出數據
MyOPCGroupSyncWrite項目計數,服務器句柄,無值,錯誤
同步寫入數據
MyOPCGroupSyncRead OPCCache,ItemCount,ServerHandles,ReadValue,Errors
同步讀取數據
壹個。寫(謝)
寫入數據
如果只讀取數據,可以使用DataChange事件,當控制器中要訪問的數據發生變化時會觸發該事件,數據會自動讀入TxtValue文本框中。
private Sub MyOPCGroup _ data change(ByVal transaction id為Long,ByVal NumItems為Long,ClientHandles()為Long,ItemValues()為Variant,Qualities()為Long,TimeStamps()為Date)
自動刷新數據
暗淡我壹樣長
對於i = 1到NumItems
txt value(client handles(I))= item values(I)
獲取項目的值
txtTime(ClientHandles(i)) =時間戳(I)
獲取項目的時間戳
txt quantity(client handles(I))= GetQualityString(Qualities(I))
獲取項目的質量
接下來我
末端接頭
(5)斷開OPC服務器。
MyOPCServer。OPCGroups.RemoveAll
刪除所有OPC組,為資源騰出空間。
設置MyOPCGroup = Nothing
MyOPCServer。拆開
拆開