資源簡介
C#使用OpcNetApi_dll和OpcNetApi_Com_dll操作OPCServer,支持所有的OPCSERVER

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading;
using?Opc;
using?Opc.Da;
using?OpcCom;
namespace?OPCAPITest
{
????class?Tester
????{
????????private?Opc.Da.Server?m_server?=?null;//定義數據存取服務器
????????private?Opc.Da.Subscription?subscription?=?null;//定義組對象(訂閱者)
????????private?Opc.Da.SubscriptionState?state?=?null;//定義組(訂閱者)狀態,相當于OPC規范中組的參數
????????private?Opc.IDiscovery?m_discovery?=?new?OpcCom.ServerEnumerator();//定義枚舉基于COM服務器的接口,用來搜索所有的此類服務器。
????????public?void?Work()
????????{
????????????//查詢服務器
????????????Opc.Server[]?servers?=?m_discovery.GetAvailableServers(Specification.COM_DA_20““??null);
????????????//daver表示數據存取規范版本,Specification.COMDA_20等于2.0版本。
????????????//host為計算機名,null表示不需要任何網絡安全認證。
????????????if?(servers?!=?null)
????????????{
????????????????foreach?(Opc.Da.Server?server?in?servers)
????????????????{
????????????????????//server即為需要連接的OPC數據存取服務器。
????????????????????if?(String.Compare(server.Name?“OPC.SimaticNET“?true)?==?0)//為true忽略大小寫
????????????????????{
????????????????????????m_server?=?server;//建立連接。
????????????????????????break;
????????????????????}
????????????????}
????????????}
????????????//連接服務器
????????????if?(m_server?!=?null)//非空連接服務器
????????????????m_server.Connect();
????????????//設定組狀態
????????????state?=?new?Opc.Da.SubscriptionState();//組(訂閱者)狀態,相當于OPC規范中組的參數
????????????state.Name?=?“測試“;//組名
????????????state.ServerHandle?=?null;//服務器給該組分配的句柄。
????????????state.ClientHandle?=?Guid.NewGuid().ToString();//客戶端給該組分配的句柄。
????????????state.Active?=?true;//激活該組。
????????????state.UpdateRate?=?100;//刷新頻率為1秒。
????????????state.Deadband?=?0;//?死區值,設為0時,服務器端該組內任何數據變化都通知組。
????????????state.Locale?=?null;//不設置地區值。
????????????//添加組
????????????subscription?=?(Opc.Da.Subscription)m_server.CreateSubscription(state);//創建組
????????????//定義Item列表
????????????//對應類型為:{ByteByteCharShortStringWordBoolean}
????????????string[]?itemName?=?{?“BPJ.DB1.dbb0“?“BPJ.DB1.dbb1“?“BPJ.DB1.dbc2“?“BPJ.DB1.dbi3“
????????????????????????????????????“BPJ.DB1.dbs4“?“BPJ.DB1.dbw5“?“BPJ.DB1.dbx6“?};
????????????
????????????//定義item列表
????????????Item[]?items?=?new?Item[7];//定義數據項,即item
????????????int?i;
????????????for?(i?=?0;?i?????????????{
????????????????items[i]?=?new?Item();//創建一個項Item對象。
????????????????items[i].ClientHandle?=?Guid.NewGuid().ToString();//客戶端給該數據項分配的句柄。
????????????????items[i].ItemPath?=?null;?//該數據項在服務器中的路徑。
????????????????items[i].ItemName?=?itemName[i];?//該數據項在服務器中的名字。
????????????}
????????????//添加Item
????????????subscription.AddItems(items);
????????????//注冊回調事件
????????????subscription.DataChanged?+=?new?Opc.Da.DataChangedEventHandler(this.OnDataChange);
????????????
????????????//以下測試同步讀
????????????//以下讀整個組
????????????ItemValueResult[]?values?=?subscription.Read(subscription.Items);
????????????//以下檢驗item的quality
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????144??2011-03-07?15:54??OPCAPITest\app.config
?????文件???????4690??2011-03-07?15:54??OPCAPITest\OPCAPITest.csproj
?????文件????????452??2011-03-07?15:54??OPCAPITest\OPCAPITest.csproj.user
?????文件?????200704??2005-11-25?17:07??OPCAPITest\OpcNetApi.Com.dll
?????文件?????225280??2005-11-25?17:07??OPCAPITest\OpcNetApi.dll
?????文件???????8392??2009-03-25?16:21??OPCAPITest\Program.cs
?????目錄??????????0??2011-08-31?15:10??OPCAPITest
-----------?---------??----------?-----??----
???????????????439662????????????????????7
評論
共有 條評論