Ошибка OPC UA

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Автор
    Записи
  • #29885
    manjey73
    Участник
    2023-10-05 11:20:28 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServer
    2023-10-05 11:20:43 Ошибка при соединении с OPC-сервером:
    System.AggregateException: One or more errors occurred. (BadRequestTimeout)
     ---> Opc.Ua.ServiceResultException: BadRequestTimeout
       at Opc.Ua.Bindings.ChannelAsyncOperation
    1.End(Int32 timeout, Boolean throwOnError)
       at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.EndSendRequest(IAsyncResult result)
       at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.EndSendRequest(IAsyncResult result)
       at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.SendRequest(IServiceRequest request)
       at Opc.Ua.DiscoveryClient.GetEndpoints(RequestHeader requestHeader, String endpointUrl, StringCollection localeIds, StringCollection profileUris, EndpointDescriptionCollection& endpoints)
       at Opc.Ua.DiscoveryClient.GetEndpoints(StringCollection profileUris)
       at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.SelectEndpoint()
       at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.ConnectAsync()
       --- End of inner exception stack trace ---
       at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
       at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
       at System.Threading.Tasks.Task.Wait()
       at Scada.Comm.Drivers.DrvOpcUa.Logic.OpcClientHelper.Connect()

    С чем связана ошибка и как ее исправить ?

    • Тема изменена 2 года, 11 месяцев назад пользователем manjey73.
    #29887
    manjey73
    Участник

    Собственно при отвале от OPC UA сервера данные все зависают, если перезапустить линию, только тогда получаем --- в данных.
    Почему данные не уходят в не валидное состояние? полагаю, что выбрасывает исключение, что выше и далее код не исполняется.

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

    Уточните, проблема в OPC UA сервере или клиенте (драйвере)?

    #29894
    manjey73
    Участник

    Проблема в клиенте. Просто оказалось что сервер недоступен, неправильные настройки VPN, соответственно связь отвалилась.

    В исключение выпало при перезагрузке. При работе просто вроде подвисло (но это не точно)

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

    В коде драйвера есть проверка, что связь потеряна. По идее драйвер должен скинуть статусы тегов и попытать переподключиться. Но может быть это не всегда отрабатывает, т.к. для проверки соединения используются функции библиотек OPC UA, которые неидеальны. И драйвер не идеален.

    Попробуйте принудительно разрывать связь. Будет ли проблема воспроизводиться? И вообще, переподключение будет срабатывать хотя бы иногда?

    • Ответ изменён 2 года, 11 месяцев назад пользователем Mikhail.
    #29902
    Mikhail
    Модератор

    Ещё попробуйте такой вариант, пожалуйста:
    1. Разорвать сетевое соединение.
    2. Перезапустить линию связи и получить ошибку подключения.
    3. Установить сетевое соединение.
    Подключится ли драйвер после пункта 3?

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

    Вот здесь настраивается поддержка соединения живым и переподключение.

    #29905
    manjey73
    Участник

    Быстро проверить не смогу. Но.

    Из Администратора сервер доступен — Админ стоит на ПК, где игр с настройками VPN не проводились, ПК пингуется.

    Коммуникатор стоит на другом ПК, где как раз что-то делали с VPN и подключения нет.
    Фактически OPC клиент пытается ломиться в пустоту, думаю достаточно в Коммуникаторе сменить IP на несуществующий.
    При перезапуске происходит выкидывание исключения.

    А как понимаю, исключения быть не должно. Должно быть сообщение, что сервер недоступен и все переменные в ---
    Вероятно потеряв связь так же выскочило исключение и так как значения переменных были, они и не перевелись в ---

    #29906
    manjey73
    Участник
    2023-10-06 16:51:49 Линия связи [3] OpcUaClient_54 остановлена
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    2023-10-06 16:51:50 Запуск линии связи [3] OpcUaClient_54
    
    2023-10-06 16:51:50 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServer
    2023-10-06 16:52:05 Ошибка при соединении с OPC-сервером:
    System.AggregateException: One or more errors occurred. (BadRequestTimeout)
     ---> Opc.Ua.ServiceResultException: BadRequestTimeout
       at Opc.Ua.Bindings.ChannelAsyncOperation 1.End(Int32 timeout, Boolean throwOnError)
       at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.EndSendRequest(IAsyncResult result)
       at Opc.Ua.DiscoveryClient.GetEndpoints(RequestHeader requestHeader, String endpointUrl, StringCollection localeIds, StringCollection profileUris, EndpointDescriptionCollection& endpoints)
       at Opc.Ua.DiscoveryClient.GetEndpoints(StringCollection profileUris)
       at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.SelectEndpoint()
       at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.ConnectAsync()
       --- End of inner exception stack trace ---
       at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
       at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
       at Scada.Comm.Drivers.DrvOpcUa.Logic.OpcClientHelper.Connect()
    
    2023-10-06 16:52:05 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServer
    

    Перезапуск линии на отсутствующий в доступе UA сервер = исключение
    з.ы. 6.1.5 не пробовал еще, это вроде 6.1.4

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

    При перезапуске нормальное поведение — попытки переподключения.
    Если драйвер увидел обрыв сессии, то он должен написать сообщение в журнал линии связи. Запросы KeepAlive отправляются периодически, но с каким периодом не могу сейчас сказать. Нужно в отладчике посмотреть OpcSession.KeepAliveInterval по умолчанию.

    #29908
    manjey73
    Участник

    Неважно, есть подключение или его нет, не важны попытки. Суть в клиенте самой Scada, он не должен вываливаться в исключение, а должен выполнить InvalidateData и в логе написать, что подключения нет.

    Вот в чем загвоздка. Потому что когда связь отваливается, то все значения зависают на последнем, не происходит их преобразование в невалидное.
    Просто прямые линии на всех графиках на последних значениях/
    А при выбрасывании исключения не продолжается код, который как раз и переведет переменные в невалидное состояние, не выдаст Status и так далее…

    #29909
    manjey73
    Участник

    Какую ошибку выдал трудно посмотреть, логи уже затерты вероятно…

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

    Соединитесь с OPC-сервером, затем отключите VPN, проверьте как будет работать драйвер при этом.

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