-1

对我来说是第一次使用 OPC UA。我加快了速度,我下载了库 OPCDAAuto.dll,我注册了它,我复制了一些 codo 来测试它,但我会犯错误。我尝试了其他方式,但我得到了相同的结果。

我的代码,带有 OPDAAuto.dll 是:

 public partial class Form1 : Form
{
    OPCServer ObjOPCServer;
    OPCGroups ObjOPCGroups;
    OPCGroup ObjOPCGroup;
    string OPCServerName;

    public Form1()
    {
        try
        {
            InitializeComponent();
            OPCServerName = "opc.tcp://co15:62841/TVM_CNC_NY16006/uaPLUS";
            ObjOPCServer = new OPCServer(); //error appears at this point (*)
            ObjOPCServer.Connect(OPCServerName, "");
            ObjOPCGroups = ObjOPCServer.OPCGroups;
            ObjOPCGroup = ObjOPCGroups.Add("OPCGroup1");
            ObjOPCGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(ObjOPCGroup_DataChange);
            ObjOPCGroup.OPCItems.AddItem("{tag name or address (like {plc name on server}!%mw0)}", 1);
            ObjOPCGroup.UpdateRate = 10;
            ObjOPCGroup.IsActive = true;
            ObjOPCGroup.IsSubscribed = true;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }

此时出现错误:ObjOPCServer = new OPCServer(); (*):

System.Runtime.InteropServices.COMException (0x800d0154):恢复具有 CLSID {serial-number} 的组件的 COM 类工厂失败,原因是以下错误:80040154 {REGDB_E_CLASSNOTREG}

有人可以帮助我吗?请

4

1 回答 1

0

根据您在 OPCServerName 中输入的 URL 以及您在介绍中所写的内容,您正在尝试连接到 OPC UA 服务器。

但是您使用的库是用于 OPC“经典”数据访问的。它不能用于连接到 OPC UA 服务器。

你需要一个不同的库。有一些免费库(例如,来自 OPC Foundation 的 UA-.NETStandard 存储库, https ://github.com/OPCFoundation/UA-.NETStandard )或一些商业库(例如 QuickOPC,https://www.opclabs. com/products/quickopc/languages-and-tools/csharp)。免责声明:我是 QuickOPC 作者。

于 2019-12-06T08:50:57.050 回答