关于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());
}

时间: 2024-08-01 07:31:28

关于OPC Client 编写2的相关文章

《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及使用步骤。附:3.5 发布与更新说明。

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布

19.设备驱动和OPC Client支持mysql.oracle.sqlite.sqlserver的持久化 19.1     概述 ServerSuperIO支持设备驱动和OPC Client采集的数据信息按标签集合写入mysql.oracle.sqlserver和sqlite数据库.现在还支持写入实时数据库,例如:edna.golden和corert等.同时支持实时数据库和关系数据库主要考虑项目环境和支撑的能力. 本质上还是统一继承IDataPersistence接口,然后扩展完成的操作.如果

用 Lazarus 开发 OPC Client 1 (关于字符集)

其实很早就打算在Lazarus里面做一个,要么在实际应用中时间太紧需要使用OPC了就用Delphi的程序改改,也就用了. 到了FPC3.0之后也就lazarus1.6以后,其核心对UTF8的全面支持,导致Delphi的很多程序都不能直接转移到Lazarus里面.明知山有虎偏向虎山行,OPC里面会大量用到PWideChar和OleVariant这是难点,本身技术上倒不是,但与Lazarus的融合就存在很多不不确定性. OPC客户端的构建流程很简单 建立ActiveX服务器的引用 通过服务器接口的"

用 Lazarus 开发 OPC Client 2 (关于Lazarus 编译器)

Lazarus 其实现在是一个很好的编辑环境了,代码提示和格式化功能都可以较好的工作.甚至可以认为在编辑编辑上部分功能优于DELPHI,但毕竟小众不太完备. Lazarus开发DLL同Delphi一样方便,但在编译过程中可能会出现Delphi中从来不可能遇见的问题,报"XXXXXX.pas(22,1) Error: Undefined symbol: WSRegisterXXXXXX"之类的信息,如下图: 解决的办法就是在程序(库文件)声明引用的地方加入"Interfaces

用 Lazarus 开发 OPC Client 3 (关于接口/Interface)

Delphi/Lazarus 里面有个概念就是接口,这个概念在很多语言里面也都存在,而且发扬,dot Net 就是这样. 提到接口自然而然就想到COM.DCOM.OLE.ActiveX等相关知识,不错,确实可以应用于这些环境,而且Delphi/Lazarus中的Interface功能强大到不仅实现微软基于COM的技术,在Linux或其他系统下Interface的设计理念和方法一样可用.这里我们仅仅记录一下在Windows下的心得. Delphi/Lazarus下面向对象设计中多态.继承.封装利用

【干货】如何通过OPC自定义接口来实现客户端数据的读取?

上篇博文分享了我的知识库,被好多人关注,受宠若惊.今天我把我在项目中封装的OPC自定义接口的程序分享一下.下面将会简单简单介绍下OPC DA客户端数据访问,以及搭配整个系统的运行环境. OPC(OLE for Process Control)其实就是一套标准,我对这套标准理解不多,使用过程中就把它理解一套协议或者规范,主要用于工控领域.OPC中有很多规范,我主要使用OPC DA规范来进行数据的读写操作.还有其他规范,比如OPC UA.OPC HDA等.如果你做的是OPC Server开发查下这方

Java实现OPC通信---utgard

一.OPC 1.使用的OPC server软件: 模拟仿真用的 MatrikonOPCSimulation(50M),https://pan.baidu.com/share/init?surl=9rcHEBGSWGMSkRo1kEY6fQ,密码: mcur 项目使用KEPServer V6(450M,中文),https://pan.baidu.com/share/init?surl=3Bc0gfGxCWo8fddTt-ut-w,密码: ykj2 推荐使用KEPServer V6,配置DCOM步骤

opc

OPC OPC(OLE for Process Control, 用于过程控制的OLE)是一个工业标准,管理这个标准国际组织是OPC基金会. OPC全称是OLE for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立桥梁.在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数.由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担. 系统集成商和开发商急切需要一种具有高效性.可靠性.开放性.可互

[发布]SuperIO v2.2.5 集成OPC服务端和OPC客户端

SuperIO 下载:本站下载 百度网盘 1.修复串口号大于等于10的时候导致IO未知状态. 2.优化RunIODevice(io)函数内部处理流程,二次开发可以重载这个接口. 3.优化IO接收数据,提高运行效率. 4.优化OPC服务器端操作类库. 5.在Demo增加OPC服务端和OPC客户端事例源代码. [SuperIO教程]10.集成OPC Server和OPC Client插件服务 介绍 OPC服务端 OPC客户端 作者QQ:504547114 交流QQ群:54256083 官方网址:ht