Стартовая страница › Форумы › Ошибки в работе › Отваливается линия связи с OPC
Помечено: opc ua
- В этой теме 34 ответа, 8 участников, последнее обновление 5 месяцев, 1 неделя назад сделано
GreatAlex.
-
АвторСообщения
-
15.11.2023 в 07:22 #30357
RX9COZ
Участникv6.1.5, примерно раз в несколько дней (от 3 до 5, точно не скажу) происходит разрыв соединения с OPC сервером, в вэбе и в архив при этом пишутся последние «замороженные» данные и если не открыть график, то и не поймёшь, что данные недостоверны и не менялись уже несколько часов. Показалось, что все разрывы были примерно в одно и то же время — в районе полуночи. В старой версии v5.8.4 такого не наблюдалось. К OPC серверу вроде претензий нет, он просто говорит что подключенных клиентов нет и всё. При этом для возобновления работы достаточно перезапустить службы сервера и коммуникатора.
И как на зло подробный журнал линий связи я отключил, т.к. они сильно шерстят жёсткий диск. Придётся в этот раз включить и понаблюдать.
OPC сервер от Логики. Знаю, что есть уже драйвер, который должен работать напрямую с прибором без OPC, но я пока не разобрался как правильно его установить, поэтому использую по старинке.Обычные Modbus-TCP линии связи тоже иногда отваливаются, но это предмет разговора для другой темы.
15.11.2023 в 09:47 #30359
a80808Участникт.к. они сильно шерстят жёсткий диск.
У вас журналы на RAM диске? Еще один момент — отключите антивирусу проверку журналов.15.11.2023 в 10:21 #30361
manjey73УчастникДрайвера устанавливаются как и все остальные, надо прописать в базу «Типы устройств» по аналогии с другими начиная с 1001-го канала в любой свободный, и скопировать файлы в папки Коммуникатора и Сервера.
После перезагрузки Scada увидит дополнительные компоненты.А вот с шаблонами под приборы надо будет возиться ручками, так как приборы Логика конфигурируемые на разное количество трубопроводов и т.д. Но примеры вроде есть в папке драйверов.
Вообще не должны отваливаться линии сами по себе, должны быть причины.
-
Ответ изменён 2 года, 2 месяца назад пользователем
manjey73.
15.11.2023 в 10:46 #30363
JurasskParkУчастникМоя любимая тема. 🙂
1. DrvOPCClassic (если Михаил ничего не менял, про режим синхронного чтения я помню), по умолчанию работают в режиме Подписка. Это означает, что клиент подключил, отдал информацию о себе (подписался) и ждем информацию. Там режима переподключения я не помню, т.е. на любой разрыв или ошибку, драйвер останавливается и переподключаться не будет.
2. На каждом производстве или в компании, сетевые админы, а также ИБ ставит таймеры на сессию. Даже Ростелеком. 🙂 Т.е. сессия бесконечно висеть не будет никогда. Поэтому или по длительности сессии или по точке времени, сетевое оборудование «рвёт» «зависшие» сессии.Выходов много. Просто «раньше», когда вы этого не наблюдали, могло быть другое оборудование, другой админ или безопасник. 🙂
15.11.2023 в 13:38 #30367
MikhailМодераторВ драйвере DrvOpcClassic недавно были изменения, связанные с переподключением к OPC-серверу. Попробуйте обновление Ссылка
15.11.2023 в 19:11 #30370RX9COZ
УчастникДрайвер обновил, посмотрим понаблюдаем.
На счёт RAM диска думал, но подумал если всё работает нормально, то зачем эти логи. Будут возникать ошибки — включу. Вот, включил. И то только на одну линию.
Антивирус отключен на компьютере где стоит Scada. Помучался, но отключил, Win10 22H2, т.к. с компа в интернет выходит только Scada и удалённый рабочий стол.Выходов много. Просто «раньше», когда вы этого не наблюдали, могло быть другое оборудование, другой админ или безопасник. ?
не-не, оборудование то-же самое и стоит оно у меня дома в локальной сети, тут я хозяин ))
16.11.2023 в 06:39 #30371RX9COZ
УчастникПосле обновления драйвера проработало несколько часов и зависло, на этот раз в журнале линии отобразилось вот это:
2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted
16.11.2023 в 08:45 #30372
manjey73Участникблин, переползайте уже на Linux, если есть такая возможность.
16.11.2023 в 10:57 #30373
JurasskParkУчастник2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted
Интересненько. Откуда взялся WCF…
А что в логах Windows на 2023-11-16 03:50:13?16.11.2023 в 12:45 #30374
manjey73УчастникВозможно сам OPC сервер на NET Framework 4.8 писан и ошибка из его глубин ?
по этому и WCF ?
-
Ответ изменён 2 года, 2 месяца назад пользователем
manjey73.
16.11.2023 в 14:31 #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", _ => "" }; }16.11.2023 в 14:33 #30377
JurasskParkУчастникВозможно сам OPC сервер на NET Framework 4.8 писан и ошибка из его глубин ?
операционная система Microsoft Windows 7/10, 32-разрядный режим;
установка Microsoft .NET Framework 4.7.2Вы правы.
16.11.2023 в 14:45 #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); }Дело раскрыто. Падает сервер и не может подняться. Михаил не виноват!
16.11.2023 в 15:14 #30379
MikhailМодератор@jurasskpark, выше — исходники этого OPC-сервера?
2023-11-16 03:50:13 OPC DA сервер отключен. Причина: srv WCF channel faulted
Вопрос в том, зависает ли подключение намертво или есть возможность переподключиться. Скопируйте бОльшую часть лога, пожалуйста, которая включает сообщения до и после ошибки.
16.11.2023 в 15:17 #30380
MikhailМодераторКроме того, при обнаружении сбоя данные тегов должны стать
---. Это произошло? -
Ответ изменён 2 года, 2 месяца назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.