OpcRcw.Comn.Package 2.0.4
OpcRcw.Comn
OPC Foundation COM 互操作通用接口库。提供 OPC 规范的 Runtime Callable Wrapper (RCW),用于 .NET 应用程序与 COM-based OPC 服务器的互操作。
功能特性
COM 互操作核心接口
- IConnectionPoint - COM 连接点接口
- IConnectionPointContainer - 连接点容器接口
- IEnumConnectionPoints - 连接点枚举器
- IEnumConnections - 连接枚举器
OPC 通用接口
- IOPCCommon - OPC 服务器公共接口,提供基本的客户端/服务器交互功能
- IOPCServerList - OPC 服务器列表接口,用于枚举本地或远程计算机上的 OPC 服务器
- IOPCServerList2 - OPC 服务器列表接口 v2.0,提供更多服务器信息
- IOPCShutdown - OPC 服务器关闭通知接口
枚举器接口
- IOPCEnumGUID - GUID 枚举器
- IEnumGUID - 标准 GUID 枚举接口
- IEnumString - 字符串枚举器
- IEnumUnknown - IUnknown 对象枚举器
数据结构
- tagCONNECTDATA - 连接数据结构
安装
通过 NuGet 包管理器
dotnet add package OpcRcw.Comn
通过 Package Manager Console
Install-Package OpcRcw.Comn
使用示例
枚举本地 OPC 服务器
using OpcRcw.Comn;
using System;
using System.Runtime.InteropServices;
// 创建 OPC 服务器列表对象
Type serverListType = Type.GetTypeFromProgID("OPC.ServerList.1");
object serverListObj = Activator.CreateInstance(serverListType);
IOPCServerList serverList = (IOPCServerList)serverListObj;
// 枚举 OPC DA 服务器
Guid catid = new Guid("63D5F432-CFE4-11D1-B2C8-0060083BA1FB"); // CATID_OPCDAServer20
IOPCEnumGUID enumGuid;
serverList.EnumClassesOfCategories(
1,
new Guid[] { catid },
0,
null,
out enumGuid);
// 获取服务器 CLSID
Guid[] clsids = new Guid[100];
int fetched;
enumGuid.Next(100, clsids, out fetched);
// 获取服务器详细信息
for (int i = 0; i < fetched; i++)
{
string progID, userType, verIndProgID;
serverList.GetClassDetails(
ref clsids[i],
out progID,
out userType,
out verIndProgID);
Console.WriteLine($"服务器: {userType}");
Console.WriteLine($"ProgID: {progID}");
Console.WriteLine($"CLSID: {clsids[i]}");
Console.WriteLine();
}
// 释放资源
Marshal.ReleaseComObject(enumGuid);
Marshal.ReleaseComObject(serverList);
使用 IOPCCommon 接口
using OpcRcw.Comn;
// 假设已经创建了 OPC 服务器对象
IOPCCommon opcCommon = (IOPCCommon)opcServer;
// 设置客户端名称
opcCommon.SetClientName("MyOPCClient");
// 获取服务器的本地化 ID
int localeID;
opcCommon.GetLocaleID(out localeID);
Console.WriteLine($"服务器本地化 ID: {localeID}");
// 查询可用的本地化 ID
int count;
int[] localeIDs;
opcCommon.QueryAvailableLocaleIDs(out count, out localeIDs);
Console.WriteLine($"可用的本地化 ID 数量: {count}");
系统要求
- .NET Framework 2.0 或更高版本
- Windows 操作系统(因为 OPC 基于 COM/DCOM)
- 已安装的 OPC 服务器(用于测试和运行)
注意事项
COM 互操作要求
- 必须在 Windows 平台上运行
- 需要正确的 COM 注册和权限设置
- 使用完 COM 对象后应使用
Marshal.ReleaseComObject释放资源
线程模型
- OPC 服务器通常使用单线程单元(STA)模型
- 在 STA 线程中调用 COM 接口以避免跨线程问题
DCOM 配置
- 远程访问需要正确配置 DCOM 权限
- 防火墙设置可能需要调整
依赖关系
- 此库通常与
OpcRcw.Da配合使用 - 需要目标系统上安装相应的 OPC 服务器
- 此库通常与
相关项目
- OpcRcw.Da - OPC DA (Data Access) 接口库
- HL.OPC - HL 框架的高级 OPC 封装库
- HL.AdsOPC - Beckhoff ADS OPC 实现
- HL.S7OPC - Siemens S7 OPC 实现
技术规范
本库实现了 OPC Foundation 的以下规范:
- OPC Common Definitions and Interfaces Specification
- OPC Custom Interface Standard
- 符合 OPC Foundation 标准
许可证
MIT License
Copyright © 2015 贵州慧联科技有限公司
技术支持
如有问题或建议,请联系技术支持团队或访问项目仓库。
Showing the top 20 packages that depend on OpcRcw.Comn.Package.
| Packages | Downloads |
|---|---|
|
HL.OPC
通用 OPC DA 客户端组件,支持标准 OPC DA 2.0 协议。提供服务器连接、组管理、数据读写、变化订阅等功能。
|
0 |
初始版本发布
This package has no dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 2.0.4 | 0 | 08/19/2026 |