【问题标题】:E_FAIL IOPCSyncIO2.ReadMaxAgeE_FAIL IOPCSyncIO2.ReadMaxAge
【发布时间】:2020-03-26 23:42:31
【问题描述】:

我正在使用 OpcNetApi.dll 驱动程序连接 Softing opc 服务器,并且我在 Windows 服务中每秒从订阅读取方法中读取几个标签,最初它读取的值可以持续几个小时,例如 10 或 15 小时,但后来我不断每次读取都会出现此 ReadMaxAge 异常,当我重新启动服务器时,它会再次正常工作几个小时。我试图寻找原因,但没有运气。

有没有人知道 ReadMaxAge 异常请帮忙。

【问题讨论】:

    标签: c# opc opc-da


    【解决方案1】:

    在我的例子中,它可以连续保持大约 3 到 4 天。发生这种情况时,重新启动服务将再次起作用。目前我正试图让服务在发生这种情况时自动重启。显然这是暂时的,可以让它继续下去。

    private void OpcServer_OPCError(string flags, Exception e)
        {
            logger.Error("OPC error: {error}", e.Message);
    
            // Let OS to restart service
            this.ExitCode = 1;
            this.Stop();            
        }
    

    一旦服务退出错误,设置服务恢复选项如下; service recovery option

    【讨论】:

      【解决方案2】:

      所以,我对使用 OpcNetApi 编写的 OPC 客户端进行了长期测试(6 天!),连接到 MatrikonOPC 服务器进行仿真,结果完全没有崩溃。我还检查了 OpcNetApi 的代码!底层 COM 对象抛出异常(当然不提供详细信息)。目前我怀疑它崩溃是因为 OPC 服务器本身没有运行。我已在我的“生产”应用程序中添加了额外的日志记录以验证我的怀疑。

      编辑:到目前为止,还没有与“ReadMaxAge”相关的崩溃(服务现在已经运行了一周)。我建议您在发生异常时验证您正在连接的 OPC 服务器是否在线。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2017-08-17
        • 2011-01-21
        相关资源
        最近更新 更多