• 大小: 131KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-03
  • 语言: C#
  • 标签: C#  

资源简介

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.Length; i++)//item初始化赋值
            {
                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


评论

共有 条评论