zoukankan      html  css  js  c++  java
  • 关于OPC Client 编写2

    最近在搞到一个OPC动态库OPCAutomation.dll,该动态库在http://www.kepware.com/可下载,下面介绍如何用C#进行OPC Client开发。

    1.新建C#应用程序,命名为OPC Client,将OPCAutomation.dll引用,如图。
    using OPCAutomation;


    2. 定义OPC的三个接口类OPCServer类、OPCGroup类和OPCItem类;

    OPCServer KepServer;
    OPCGroups KepGroups;
    OPCGroup KepGroup;
    OPCItems KepItems;
    OPCItem KepItem;

    3. 枚举网络OPC服务器

    枚举OPC服务器用到GetOPCServers()函数

    //获取计算机IP,计算机名称
    IPHostEntry IPHost = Dns.Resolve(Environment.MachineName);
    if (IPHost.AddressList.Length > 0)
    {
    strHostIP = IPHost.AddressList[0].ToString();
    }
    else
    {
    return;
    }
    //通过IP来获取计算机名称,可用在局域网内

    IPHostEntry ipHostEntry = Dns.GetHostByAddress(strHostIP);
    strHostName = ipHostEntry.HostName.ToString();//获取本地计算机上的OPCServerName
    try
    {
    KepServer = new OPCServer();
    object serverList = KepServer.GetOPCServers(strHostName);


    //枚举网络所有OPC服务器并写入ComboBox控件


    foreach (string turn in (Array)serverList)
    {
    cmbServerName.Items.Add(turn);
    }


    cmbServerName.SelectedIndex = 0;
    btnConnServer.Enabled = true;
    }
    catch (Exception err)
    {
    MessageBox.Show("枚举本地OPC服务器出错:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    4. 连接OPC服务器
    try
    {
    KepServer.Connect(remoteServerName, remoteServerIP);


    if (KepServer.ServerState == (int)OPCServerState.OPCRunning)
    {
    tsslServerState.Text = "已连接到-" + KepServer.ServerName + " ";
    }
    else
    {
    //这里你可以根据返回的状态来自定义显示信息,请查看自动化接口API文档
    tsslServerState.Text = "状态:" + KepServer.ServerState.ToString() + " ";
    }

    }
    catch (Exception err)
    {
    MessageBox.Show("连接远程服务器出现错误:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    return false;
    }

    5. 创建组和列出OPC服务器中所有节点
    //创建组
    try
    {
    KepGroups = KepServer.OPCGroups;
    KepGroup = KepGroups.Add("OPCDOTNETGROUP");
    SetGroupProperty();
    KepGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);
    KepGroup.AsyncWriteComplete += new DIOPCGroupEvent_AsyncWriteCompleteEventHandler(KepGroup_AsyncWriteComplete);
    KepItems = KepGroup.OPCItems;
    }
    catch (Exception err)
    {
    MessageBox.Show("创建组出现错误:"+err.Message,"提示信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
    return false;
    }

    //列出OPC服务器中所有节点


    //展开分支
    oPCBrowser.ShowBranches();
    //展开叶子
    oPCBrowser.ShowLeafs(true);
    foreach (object turn in oPCBrowser)
    {
    listBox1.Items.Add(turn.ToString());
    }

  • 相关阅读:
    那些离不开的 Chrome 扩展插件
    Spring Boot 实战 —— 入门
    Maven 学习笔记
    Linux lvm 分区知识笔记
    Linux 双向 SSH 免密登录
    CentOS Yum 源搭建
    Ubuntu 系统学习
    iOS 测试三方 KIF 的那些事
    Swift 网络请求数据与解析
    iOS Plist 文件的 增 删 改
  • 原文地址:https://www.cnblogs.com/zjoch/p/4333046.html
Copyright © 2011-2022 走看看