Отваливается линия связи с OPC

Стартовая страница Форумы Ошибки в работе Отваливается линия связи с OPC

Помечено: 

Просмотр 15 сообщений - с 1 по 15 (из 35 всего)
  • Автор
    Сообщения
  • #30357
    RX9COZ
    Участник

    v6.1.5, примерно раз в несколько дней (от 3 до 5, точно не скажу) происходит разрыв соединения с OPC сервером, в вэбе и в архив при этом пишутся последние «замороженные» данные и если не открыть график, то и не поймёшь, что данные недостоверны и не менялись уже несколько часов. Показалось, что все разрывы были примерно в одно и то же время — в районе полуночи. В старой версии v5.8.4 такого не наблюдалось. К OPC серверу вроде претензий нет, он просто говорит что подключенных клиентов нет и всё. При этом для возобновления работы достаточно перезапустить службы сервера и коммуникатора.
    И как на зло подробный журнал линий связи я отключил, т.к. они сильно шерстят жёсткий диск. Придётся в этот раз включить и понаблюдать.
    OPC сервер от Логики. Знаю, что есть уже драйвер, который должен работать напрямую с прибором без OPC, но я пока не разобрался как правильно его установить, поэтому использую по старинке.

    Обычные Modbus-TCP линии связи тоже иногда отваливаются, но это предмет разговора для другой темы.

    #30359
    a80808
    Участник

    т.к. они сильно шерстят жёсткий диск.
    У вас журналы на RAM диске? Еще один момент — отключите антивирусу проверку журналов.

    #30361
    manjey73
    Участник

    Драйвера устанавливаются как и все остальные, надо прописать в базу «Типы устройств» по аналогии с другими начиная с 1001-го канала в любой свободный, и скопировать файлы в папки Коммуникатора и Сервера.
    После перезагрузки Scada увидит дополнительные компоненты.

    А вот с шаблонами под приборы надо будет возиться ручками, так как приборы Логика конфигурируемые на разное количество трубопроводов и т.д. Но примеры вроде есть в папке драйверов.

    Вообще не должны отваливаться линии сами по себе, должны быть причины.

    • Ответ изменён 2 года, 2 месяца назад пользователем manjey73.
    #30363
    JurasskPark
    Участник

    Моя любимая тема. 🙂
    1. DrvOPCClassic (если Михаил ничего не менял, про режим синхронного чтения я помню), по умолчанию работают в режиме Подписка. Это означает, что клиент подключил, отдал информацию о себе (подписался) и ждем информацию. Там режима переподключения я не помню, т.е. на любой разрыв или ошибку, драйвер останавливается и переподключаться не будет.
    2. На каждом производстве или в компании, сетевые админы, а также ИБ ставит таймеры на сессию. Даже Ростелеком. 🙂 Т.е. сессия бесконечно висеть не будет никогда. Поэтому или по длительности сессии или по точке времени, сетевое оборудование «рвёт» «зависшие» сессии.

    Выходов много. Просто «раньше», когда вы этого не наблюдали, могло быть другое оборудование, другой админ или безопасник. 🙂

    #30367
    Mikhail
    Модератор

    В драйвере DrvOpcClassic недавно были изменения, связанные с переподключением к OPC-серверу. Попробуйте обновление Ссылка

    #30370
    RX9COZ
    Участник

    Драйвер обновил, посмотрим понаблюдаем.

    На счёт RAM диска думал, но подумал если всё работает нормально, то зачем эти логи. Будут возникать ошибки — включу. Вот, включил. И то только на одну линию.
    Антивирус отключен на компьютере где стоит Scada. Помучался, но отключил, Win10 22H2, т.к. с компа в интернет выходит только Scada и удалённый рабочий стол.

    Выходов много. Просто «раньше», когда вы этого не наблюдали, могло быть другое оборудование, другой админ или безопасник. ?

    не-не, оборудование то-же самое и стоит оно у меня дома в локальной сети, тут я хозяин ))

    #30371
    RX9COZ
    Участник

    После обновления драйвера проработало несколько часов и зависло, на этот раз в журнале линии отобразилось вот это:

    2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted

    #30372
    manjey73
    Участник

    блин, переползайте уже на Linux, если есть такая возможность.

    #30373
    JurasskPark
    Участник

    2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted

    Интересненько. Откуда взялся WCF…
    А что в логах Windows на 2023-11-16 03:50:13?

    #30374
    manjey73
    Участник

    Возможно сам OPC сервер на NET Framework 4.8 писан и ошибка из его глубин ?

    по этому и WCF ?

    • Ответ изменён 2 года, 2 месяца назад пользователем manjey73.
    #30376
    JurasskPark
    Участник

    Ну тут как бы у сервера нет такого статуса… Ну в стандартах…
    А речь идет именно об OPCServer Логика?

    
            public static string ServerStatus(OpcServerState status)
            {
                return status switch
                {
                    OpcServerState.Unknown => Locale.IsRussian ? "Состояние сервера неизвестно" : "The server state is not known",
                    OpcServerState.Operational => Locale.IsRussian ? "Сервер работает в обычном режиме" : "The server is running normally",
                    OpcServerState.Faulted => Locale.IsRussian ? "Сервер не работает из-за неисправности" : "The server is not operational due to a fault",
                    OpcServerState.NeedsConfiguration => Locale.IsRussian ? "Сервер запущен, но на него не загружена информация о конфигурации, и поэтому он не может нормально функционировать" : "The server is running but has no configuration information loaded and thus cannot function normally",
                    OpcServerState.OutOfService => Locale.IsRussian ? "Сервер был временно приостановлен с помощью какого-либо метода, специфичного для конкретного поставщика, и не получает и не отправляет данные" : "The server has been temporarily suspended via some vendor specific method and is not getting or sending data",
                    OpcServerState.Diagnostics => Locale.IsRussian ? "Сервер находится в режиме диагностики" : "The server is in Diagnostics Mode",
                    OpcServerState.NotConnected => Locale.IsRussian ? "Сервер не работает" : "The server is not operational",
                    OpcServerState.Initializing => Locale.IsRussian ? "Сервер не работает, потому что он запускается" : "The server is not operational because it is starting up",
                    OpcServerState.Aborting => Locale.IsRussian ? "Сервер работает, но он завершает работу и прерывает все свои клиентские контексты" : "The server is operational but it is shutting down and aborting all of its client contexts",
                    OpcServerState.NotOperational => Locale.IsRussian ? "Сервер не работает и причина неизвестна" : "The server is not operational, but the reason is not known",
                    _ => ""
                };
            }
    
    #30377
    JurasskPark
    Участник

    Возможно сам OPC сервер на NET Framework 4.8 писан и ошибка из его глубин ?

    операционная система Microsoft Windows 7/10, 32-разрядный режим;
    установка Microsoft .NET Framework 4.7.2

    Вы правы.

    #30378
    JurasskPark
    Участник
    
        public new int CreateServerItems(string pszParamas)
        {
          try
          {
            if (this.srv == null)
            {
              if (this.loggingEnabled)
              {
                AppPlugin.configureLogging();
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(this.CurrentDomain_UnhandledException);
                AppDomain.CurrentDomain.ProcessExit += new EventHandler(this.CurrentDomain_ProcessExit);
              }
              this.Log(NLog.LogLevel.Trace, string.Format("------------ init: CreateServerItems() called, PID={0} --------------", (object) Process.GetCurrentProcess().Id));
              this.Log(NLog.LogLevel.Trace, "starting DAS.exe instance");
              Loader.StartDAS(Loader.ActivatorType.Toolkit);
              string serverUri = Loader.GetServerUri(ConfigurationManager.AppSettings["DataServerPort"], "da");
              DuplexChannelFactory<IDaServer> duplexChannelFactory = new DuplexChannelFactory<IDaServer>(new InstanceContext((object) this), (Binding) Loader.netTcpBinding);
              Loader.SetMaxItemsInObjectGraph(duplexChannelFactory.Endpoint);
              this.srv = duplexChannelFactory.CreateChannel(new EndpointAddress(serverUri));
              if (this.srv == null)
              {
                this.Log(NLog.LogLevel.Error, "server creation failed");
                return -2147467259;
              }
              ((ICommunicationObject) this.srv).Faulted += new EventHandler(this.srvChannel_Faulted);
              ((ICommunicationObject) this.srv).Closing += new EventHandler(this.srvChannel_Closing);
              ((ICommunicationObject) this.srv).Open();
              this.Log(NLog.LogLevel.Trace, "registering callbacks on server");
              this.srv.DA_RegisterClient();
              this.wcfKeepaliveTimer = new Timer(new TimerCallback(this.wcfKeepaliveTimerProc), (object) null, 30000, 30000);
            }
          }
          catch (Exception ex)
          {
            this.Log(NLog.LogLevel.Fatal, "exception in CreateServerItems()", ex);
            Environment.Exit(-2147467259);
            return -2147467259;
          }
          this.Log(NLog.LogLevel.Trace, "CreateServerItems() competed successfully");
          return 0;
        }
    
        private void srvChannel_Faulted(object sender, EventArgs e)
        {
          string str = "srv WCF channel faulted";
          this.Log(NLog.LogLevel.Fatal, str);
          this.hardStop(str);
        }
    

    Дело раскрыто. Падает сервер и не может подняться. Михаил не виноват!

    #30379
    Mikhail
    Модератор

    @jurasskpark, выше — исходники этого OPC-сервера?

    2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted

    Вопрос в том, зависает ли подключение намертво или есть возможность переподключиться. Скопируйте бОльшую часть лога, пожалуйста, которая включает сообщения до и после ошибки.

    #30380
    Mikhail
    Модератор

    Кроме того, при обнаружении сбоя данные тегов должны стать ---. Это произошло?

Просмотр 15 сообщений - с 1 по 15 (из 35 всего)
  • Для ответа в этой теме необходимо авторизоваться.